Members

IdeaFileStatusSummaryKatz
assessmentreqlan rq/site/certs.rqdoneA named quiz with a stable id, a title, a blurb, and sections of questions. Questions live in ["../../site/src/content/assessment.ts"] per ["./site.rq".copy]. Current sole quiz id `core`. Sections: ontology, installation, syntax, graph, cli. Ontology covers [idea], [ideaset], [file], [base], [attribute], [attribute_body], [reference]. Advanced syntax covers imports, file refs, wildcards, and comment refs. CLI covers click and `reqlan check` for reference integrity in CI / CD. Pass at 80 %. Then collect a display name and mint a certificate token. The token claim `a` identifies this assessment. After mint, go to [certificate_page] with the token and the just-completed query param.0.065
assessment_pagereqlan rq/site/certs.rqdone`/certs/assessment/` shows the sole [assessment] quiz when there is one. When there is more than one [assessment], it lists them. `/certs/assessment/[id]/` is that assessment's quiz. Unknown ids are not found. Legacy `/assessment/` and `/tutorials/assessment/` redirect here and keep the query string. The home ["./site.rq".quiz_sticker_tab] links here. It does not run the quiz in the tab.0.075
certificate_pagereqlan rq/site/certs.rqdone`/certs/certificate/` shows a minted certificate. Token query param `c` holds the packed claims, including [assessment] id `a`. Query param `just=1` marks the just-completed view: - show the certificate - show a shareable link that omits `just` - embed the sticker form per [sticker_form_embed] Without `just`, the page is the shareable certificate only. Do not embed the form. Invalid or missing tokens send the user back to [assessment_page]. The completion line on a valid certificate names the [assessment] and links to that quiz. Legacy `/tutorials/certificate/` redirects here and keeps the query string.0.062
certsreqlan rq/site/certs.rqdoneCertification lives under `/certs/`. Pages: - [assessment_page] at `/certs/assessment/` ( sole quiz when one [assessment]; catalog when more ) - one quiz per [assessment] at `/certs/assessment/[id]/` - [certificate_page] at `/certs/certificate/` The tutorials catalog and ["./support-page.rq".support_page] advocacy link send the user to [assessment_page]. Tokens are honor-system claims in ["../../site/src/lib/certificate-token.ts"]. Claim `a` is the [assessment] id ( not a section id ).0.054
sticker_form_embedreqlan rq/site/certs.rqdoneThe just-completed [certificate_page] embeds phonebook link id `sticker-form` as a Google Form iframe. Href comes from [phonebook], not a hardcoded URL in the view. Convert the href to an embed `src` ( `viewform` plus `embedded=true` ). Keep a direct link to the same phonebook href if the iframe does not load. Hide the form when the user prints the certificate.0.048
absorbed_and_droppedreqlan rq/site/site.rqAbsorbed into the eleven: glue-semantics splits into [firmware_cloud_contract_showcase] and [module_surface_showcase]. agentic-planning and feature-tracking fold into [agent_context_showcase]. compliance becomes [audit_trail_showcase]. scattered-docs becomes [legacy_archaeology_showcase]. test-explanation upgrades into [test_proves_showcase]. arbitrary-attributes upgrades into [attribute_dialect_showcase]. static-connection upgrades into [firmware_cloud_contract_showcase]. data-not-ideas expands into [antipatterns_showcase]. graph-traversal upgrades into [graph_view_showcase]. control-system-sequencing upgrades into [interlock_showcase]. module-interface upgrades into [module_surface_showcase]. Dropped: todo-triage — too thin; triage is a byproduct of [agent_context_showcase], not a page. docs-attribute — sells tooling that does not exist; file refs to markdown belong inside other pages.0.040
accurate_rq_snippets_must_parsereqlan rq/site/site.rqdoneEvery site snippet that demonstrates accurate reqlan must parse against the Langium grammar. In scope: language- " rq " blocks ( landing syntax pairs, the example slice, the hero snippet, showcase `.rq` blocks ). Out of scope: ts / md / py snippets that only show `rq:` comment links. Invalid-on-purpose samples must not be labelled language- " rq ". Enforced by tests plus the content parse gate in ["../../site/scripts/validate-showcase-rq.mts"]. Showcases are a subset per [every_rq_block_must_parse] / [phase_1_parse_gate].0.090
agent_context_showcasereqlan rq/site/site.rqdoneFlagship. Context for the agent, not the repo. An agent answers a question about session expiry. Show the repo-dump cost, then MCP click returning compact file context, then the plan the agent writes. Absorbs former agentic-planning and feature-tracking pages.0.050
antipatterns_showcasereqlan rq/site/site.rqdoneDepth. Three ways to write. rq badly. Data instead of pointers, prose restating code, one monolithic file. Showing negative space is a taste signal. Absorbs former data-not-ideas page; expands it.0.045
assetsreqlan rq/site/site.rqthis site is published in in gh pages at the `/reqlan` path. Any assets in the / public folder should be referenced as `/reqlan/assets/...`. Embedded spec export hrefs follow the same base via [spec_html_export] / [html_export.html_export_url_base].0.046
attribute_dialect_showcasereqlan rq/site/site.rqdoneDepth. Attributes as a domain dialect. The full attribute grammar: flags, negated flags, block values, nested and named lists — forms nobody currently knows about. Absorbs former arbitrary-attributes page.0.045
audit_trail_showcasereqlan rq/site/site.rqdoneDepth. An audit trail you can export. Custom clause / evidence / verified_by attributes, then Completion Status showing the coverage gap, then HTML export as the auditor's deliverable. Domain: regulated software — IEC 62304 or SOC 2. Absorbs former compliance page.0.045
bidirectional_comment_linksreqlan rq/site/site.rqrq-comment refs in TS, Python, C, ST, etc. Code points back, with working document links. A product story bound this way is [story_codebase_showcase].0.051
brandreqlan rq/site/site.rqmust be aligned with ["../brand.rq"]0.059
broken_links_showcasereqlan rq/site/site.rqdoneFlagship. Links that break loudly. Someone renames a file. Show the diagnostic, the quick-fix menu, and the rewritten refs. Then the same issue from ["../core_analysis/check.rq".check] ( `reqlan check`, exit 1 ) and that command as a CI step so a merge cannot land rot. This is the argument against a wiki. Domain: refactor safety, any stack.0.190
claim_cyclereqlan rq/site/site.rqdoneShow one claim at a time and cycle in order. Pause on hover or focus. Tracks jump to a claim. The active claim sits in the vertical centre of a slot sized for the longest claim, so shorter lines do not jump to the top.0.056
claim_expandreqlan rq/site/site.rqdoneA toggle expands every [elevator_pitch_section] claim into one list. The rotating cycle stays the default. Expanding pauses the cycle. Collapsing returns to the cycle. Reduced motion still starts on the list per [claim_reduced_motion].0.056
claim_progressreqlan rq/site/site.rqdoneA track per claim shows hold-time state: past tracks are full, the current track fills left to right, later tracks stay empty. Pause holds the fill. The fill and the cycle share one clock so they do not drift.0.056
claim_reduced_motionreqlan rq/site/site.rqdoneWhen the visitor prefers reduced motion, show the full claim list with no cycle and no progress animation.0.064
code_block_stylingreqlan rq/site/site.rqCode blocks should be styled per language as a function of a classname; or by using an appropriate lightweight external dependency. Language ids live in ["../../site/src/content/types.ts"]. CodeLanguage —. rq,. ts,. md,. py, plus st / c / json / yaml for showcases. If using a dependency, it should parse at build, not in the browser.0.052
componentsreqlan rq/site/site.rq- sidebar per [sidebar_nav] - footer per [footer] - hero per [hero_section] - sticky page nav graph per [nav_graph] - links / contact per [links] - showcases - tutorials per [tutorials_section] - certification per [certs_reqs.certs] - FAQ per [faq_page] - support per [support_page_reqs.support_page] - content per [copy] - elevator pitch per [elevator_pitch_section] - featured-in social proof per [featured_in_section] - motivation per [motivation_section] - syntax per [syntax_section] - example per [example_section] - roadmap per [roadmap_section] - CTA: - install the extension and the CLI per [cta_icon] per [install_cli_menu] - GitHub star on the hero action row per [hero_github_star] - sticky draggable action buttons per [sticky_cta_node] - home-only quiz sticker edge tab per [quiz_sticker_tab] - 404 page ( just something silly / a redirect )0.050
copyreqlan rq/site/site.rqdoneMarketing copy lives in typed TS modules under ["../../site/src/content"], composed by ["../../site/src/content/site.ts"]. Shared types: ["../../site/src/content/types.ts"]. Copy stays decoupled from layout / styling. Copy should be really super minimal and concise if at all. ( show don't tell ) Copy should be user facing; not simply a description of the feature requirements. Production code doesn't have latent dev notes in visible components. Landing modules: [hero_section], [elevator_pitch_section], [featured_in_section], [motivation_section], [syntax_section], [example_section], [roadmap_section], [nav_graph], [faq_page], [sidebar_nav], [links], [footer], [sticky_cta_node], [quiz_sticker_tab].0.336
cta_iconreqlan rq/site/site.rqdoneThe hero has a separate " Install extension " menu button. The menu lists Cursor, VS Code, and Download VSIX. It must not include Open VSX. Open VSX stays on [quickstart_page]. It must not assume the user's editor or pre-select one silently. The CLI control is a separate button per [install_cli_menu]. Get-started CTA copy lives in ["../../site/src/content/hero.ts"] per [hero_section]. Each menu row shows the target's icon beside its full label; icons resolve through [phonebook_icon_registry] via the quickstart icon set / name refs in ["../../site/src/content/install-actions.ts"]. per [components] per [development_core.iconify_stack]0.078
diagrams_are_never_dressed_as_codereqlan rq/site/site.rqASCII arrow diagrams must not sit inside language- " rq " blocks. They get their own visually distinct block kind. aligns with [showcase_module]0.052
elevator_pitch_sectionreqlan rq/site/site.rqdoneLanding `#elevator-pitch` after [hero_section] and before [featured_in_section]. This is the home " Why reqlan " destination: [sidebar_nav] child and [nav_graph] Why node use this id. One-line thesis plus rotating claims. Copy lives in ["../../site/src/content/meta.ts"] per [copy]. Thesis follows ["../constitution.rq".elevator_pitch]. Behaviours: [claim_cycle], [claim_progress], [claim_reduced_motion], [claim_expand]. Styling per [styling_architecture]. Must stay compatible with [simple_lightweight_and_static].0.123
every_rq_block_must_parsereqlan rq/site/site.rqEvery language- " rq " block in showcase content files must parse against the langium grammar. Prefer enforcement via a build step that runs the real parser over content. Site-wide ( landing + showcases ): [accurate_rq_snippets_must_parse]. aligns with [phase_1_parse_gate]0.057
every_showcase_ends_in_a_payoffreqlan rq/site/site.rqA diagnostic, a query response, a coverage report, or a graph. If there is no tooling output, it is not a showcase.0.051
example_sectionreqlan rq/site/site.rqdoneLanding `#example`: one worked graph slice ( imports, file anchors, wildcards, status, tags, tests ). Copy lives in ["../../site/src/content/example.ts"] per [copy]. The slice must parse as accurate reqlan per [accurate_rq_snippets_must_parse].0.091
faq_driftreqlan rq/site/site.rqdoneThe FAQ includes this question: How do you keep `.rq` files from drifting once the code moves on? `.rq` files are code. They are the source of truth. They are not a document. Specify material work as an idea first. Implementation and tests point back with rq-comments per [development_core.code_comment_references] and [development_core.testing]. A check requires each test to serve a requirement. Agents see only the ideas that attach to the files they touch. Mark a replaced idea deprecated and point to the new idea. The indexer flags missing references like a compile check. Copy lives in ["../../site/src/content/faq.ts"] ( item id `drift` ) per [copy] and [faq_page]. The sidebar nests this question as a same-page child per [sidebar_nav].0.057
faq_pagereqlan rq/site/site.rqdoneThe site exposes `/faq/` as a statically generated page answering a short set of common questions. Copy lives in ["../../site/src/content/faq.ts"] and stays minimal per [copy]. Support answers point at [support_page_reqs.support_page] and at phonebook surfaces ( GitHub stars, marketplace stars, issues / contribution, GitHub Sponsors, Discord ) rather than inventing URLs. Required topics: - how reqlan supports token efficiency - whether reqlan is the de facto standard for efficient developer-centric context management and semantic mapping - when to use reqlan - how `.rq` files stay in sync with code per [faq_drift] - how to support reqlan ( GitHub stars, GitHub Sponsors, VS Marketplace stars, Discord, contribution, bug reporting ) Sidebar nests FAQ question anchors as same-page children per [sidebar_nav]. Landing nav graph includes FAQ as a page node.0.132
featured_in_sectionreqlan rq/site/site.rqdoneLanding `#featured-in` after [elevator_pitch_section] and before [motivation_section]. Rolling social-proof banner: label " As featured in: " plus catalogue cards that scroll slowly in a continuous loop. Each card shows an icon and an outbound link label. Required listings ( labels match the catalogue names ): - agentlanguages. dev → https://agentlanguages.dev/languages/reqlan/ - awesome-spec-driven-development → https://github.com/Engineering4AI/awesome-spec-driven-development - awesome-docs → https://github.com/testthedocs/awesome-docs Copy and icons live in ["../../site/src/content/featured.ts"] per [copy]. Icons resolve through [phonebook_icon_component] / [icon_registry]. Links open in a new tab with `rel="noopener noreferrer"`. Pause the scroll on hover or focus. When the visitor prefers reduced motion, show a static row of the same cards with no scroll. Do not put these URLs in the phonebook footer / contact list. Styling per [styling_architecture]. Must stay compatible with [simple_lightweight_and_static].0.122
features_not_demonstratedreqlan rq/site/site.rqDeliberately not demonstrated — they do not exist yet. Typed relation kinds, hover cards, autoformatting, JSON / CSV export palette commands, PDF binary, vector-embedding search. Keyword-scored search must not be marketed as semantic search / embeddings.0.040
features_tier_1reqlan rq/site/site.rqThe reasons to adopt. All verified as shipping today.0.040
features_tier_2reqlan rq/site/site.rqThe depth. Also shipping.0.040
firmware_cloud_contract_showcasereqlan rq/site/site.rqdoneFlagship. The contract between firmware and cloud. A 10 Hz sample rate and a 50 ms ingest deadline: one invariant, two codebases, neither of which can express it alone. Absorbs half of former glue-semantics and static-connection.0.050
footerreqlan rq/site/site.rqdoneThe site footer is on every page via ["../../site/src/components/SiteShell.tsx"]. Copyright copy lives in ["../../site/src/content/meta.ts"] per [copy]. The footer shows phonebook `links` where `show-in-footer` is not false per [phonebook_reqs.show_in_footer]. Icons render through [phonebook_icon_component].0.109
get_started_cta_motionreqlan rq/site/site.rqdoneThe get-started control on [hero_section] shows a moving colour wash on the border and on the button fill. The wash uses the aqua and rust brand colours. The border wash and the fill wash share one spin period and one spin direction. When the visitor prefers reduced motion, show a static fill and a static border. per [styling_architecture]0.058
graph_view_showcasereqlan rq/site/site.rqdoneDepth. See the whole graph. Needs real captured screenshots or a short loop from the actual Cytoscape view — not fake ASCII arrows dressed as. rq. Aligns with [diagrams_are_never_dressed_as_code].0.050
hero_github_starreqlan rq/site/site.rqdoneThe [hero_section] action row shows a Star on GitHub control next to get-started and the install controls. The control opens the GitHub repository from [phonebook_reqs.phonebook] in a new tab. The icon comes from [phonebook_icon_component]. Copy lives in ["../../site/src/content/hero.ts"] per [copy]. The hero control is in addition to [sticky_cta_node] and [support_page_reqs.support_page].0.064
hero_sectionreqlan rq/site/site.rqdoneLanding `#hero`: mascot plus a short `.rq` snippet. Copy lives in ["../../site/src/content/hero.ts"] per [copy]. The snippet must parse as accurate reqlan per [accurate_rq_snippets_must_parse]. Install controls are [cta_icon] and [install_cli_menu]; get-started CTA href is `/quickstart` per [quickstart_page]. Get-started motion follows [get_started_cta_motion]. A GitHub star control sits in the action row per [hero_github_star].0.135
icon_registryreqlan rq/site/site.rqdone[phonebook_icon_registry] maps phonebook icon keys to bundled Iconify data for the site. A link or package can omit `icon`. If `icon` is present, it must have a matching registry entry. The module throws at startup if a present icon does not resolve. When you add or change an icon in ["../phonebook.json"], update the registry import for that slug. per [development_core.iconify_stack] per [development_core.phonebook_icon_keys]0.064
imagesreqlan rq/site/site.rqThe source logo is in the / public folder. A sharp dev script is used to generate pngs and favicons etc which should be executed if the svg source logo changes. The script also writes the Open Graph image `/og.png` ( 1200 × 630 ) per [meta_tags].0.046
install_cli_menureqlan rq/site/site.rqdoneThe hero has a separate " Install CLI " control. It must not nest inside [cta_icon]. The primary action copies the selected package manager command for [cli_package.cli_package] per [package_manager_preference]. A chevron menu lists npm, pnpm, yarn, and bun. Each command uses the CLI package name from [phonebook_reqs.npm_packages]. A click copies the selected command to the clipboard and stores the preference. The [quickstart_page] CLI and MCP install rows use the same package manager options and the same preference. A copy must not change the last-used editor.0.099
interlock_showcasereqlan rq/site/site.rqdoneFlagship. The interlock that must not fail. `["./plc/interlock.stL#41-58"]` A safety requirement bound to that PLC symbol and line range, line range, to a vitest case by test name, with an rq-comment in the ST source pointing back. Domain: industrial control / IEC 61131.0.050
legacy_archaeology_showcasereqlan rq/site/site.rqdoneDepth. Archaeology on inherited code. An undocumented function, an rq-comment seeded into it, @ deprecated on the old path, then Deprecation Impact listing everything that breaks. Absorbs former scattered-docs page.0.045
link_iconsreqlan rq/site/site.rqThe contact link row in [contact_component] renders an icon beside each phonebook link label that has an icon. Footer links that have an icon render through [phonebook_icon_component] per [footer]. per [links] per [development_core.current_link_icons]0.057
linksreqlan rq/site/site.rqper [phonebook_reqs.phonebook] per [phonebook_reqs.npm_packages] per [phonebook_reqs.show_in_footer] Contact copy lives in ["../../site/src/content/contact.ts"] per [copy]. Contact shows phonebook `links` that are not opted out of the footer, then a Packages subsection for phonebook `packages`. per [link_icons] per [package_icons]0.131
logoreqlan rq/site/site.rq- there is a logo in the sidebar.0.040
meta_tagsreqlan rq/site/site.rqdoneThe site HTML head must include a document title, a description, a canonical URL, Open Graph tags, and Twitter card tags. Canonical origin is the phonebook `site` href per [phonebook_reqs.phonebook]. Default title and description live in ["../../site/src/content/meta.ts"] per [copy]. Root layout ["../../site/src/app/layout.tsx"] sets the shared metadata: title template `%s · reqlan`, description, icons, manifest, theme colour, Open Graph image, and Twitter `summary_large_image`. Each marketing page must set a title and a description. Showcase and tutorial detail pages use the item title and summary. Open Graph image is 1200 × 630 PNG at `/og.png`, generated with favicons per [images]. Compatible with [simple_lightweight_and_static]. Do not index the presentation player route per [presentation_player_route].0.051
module_surface_showcasereqlan rq/site/site.rqdoneDepth. A module's published surface. billing / interface. rq exports an ideaset; checkout. rq imports only that; reaching past the boundary is an unresolved-import error. Ideasets-as-public-API is undemonstrated today. Absorbs half of former glue-semantics and module-interface.0.045
motivation_sectionreqlan rq/site/site.rqdoneLanding `#motivation` after [featured_in_section]: what / why slides for language, extension, CLI, and MCP. Copy lives in ["../../site/src/content/motivation.ts"] per [copy].0.108
nav_graphreqlan rq/site/site.rqdoneSticky landing page graph. Node / edge model and labels live in ["../../site/src/content/nav.ts"] per [copy] / [sidebar_nav]. Section nodes match home anchors; page nodes match top-level routes in [routes].0.123
one_worked_example_per_pagereqlan rq/site/site.rqConsistent identifiers across every block on a page. The reader should trace one name from requirement to source to test to search result without re-orienting.0.051
package_iconsreqlan rq/site/site.rqThe contact Packages row in [contact_component] renders an icon beside each phonebook package label that has an icon. Package entries come from ["../phonebook.json"]. packages per [phonebook_reqs.npm_packages]. per [links] per [development_core.current_link_icons]0.070
package_manager_preferencereqlan rq/site/site.rqdoneThe site keeps one global JavaScript package manager value: npm, pnpm, yarn, or bun. The default is npm. All CLI and MCP install commands read and write this one value. Do not keep a separate choice on each control. The value persists in the browser across pages and reloads. Surfaces: [install_cli_menu], [quickstart_page]. Compatible with [simple_lightweight_and_static].0.068
phase_0_honesty_auditreqlan rq/site/site.rqpendingIn parallel with content rewrite. Fix what the honesty audit surfaced.0.040
phase_1_parse_gatereqlan rq/site/site.rqdoneMake dishonesty impossible. Add a build step that runs the Langium parser over every language- " rq " block in showcase content files and fails on parse errors or unresolved local refs. Do this first so the rewrite cannot reintroduce the current problem. Also expand Shiki language set per [showcase_languages].0.071
phase_2_content_schemareqlan rq/site/site.rqdoneExtend ShowcaseBlock union and Showcase type per [showcase_module]. Presentation polish can follow in [phase_5_detail_layout]; schema first.0.040
phase_3_reqs_as_truthreqlan rq/site/site.rqdoneThis file is the source of truth: one idea per showcase with mechanism, domain, and status; [showcase_set] listing them; refs into showcase content files. Reqlan's own showcase plan is tracked in reqlan.0.040
phase_4_write_the_elevenreqlan rq/site/site.rqdoneWrite the eleven, one at a time, each validated by [phase_1_parse_gate] before moving on. Flagships first — [agent_context_showcase], [interlock_showcase], [broken_links_showcase], [firmware_cloud_contract_showcase] — so the format can be judged before committing to all eleven.0.040
phase_5_detail_layoutreqlan rq/site/site.rqdoneDetail page layout: beats with captions, mechanism badges distinct from tags, and cross-block highlighting of the shared identifier.0.045
phase_6_capture_mediareqlan rq/site/site.rqdoneCapture real media from the extension for [broken_links_showcase] ( diagnostics / quick-fix ) and [graph_view_showcase] ( Cytoscape ).0.040
phonebook_icon_componentreqlan rq/site/site.rq[phonebook_icon_tsx_component] is the site's single render entry point for phonebook icons ( `@iconify/react` ). It accepts an optional phonebook `icon` ref. If the ref is absent, it renders nothing. If the ref is present, it renders an inline SVG with `aria-hidden`. Default sizing uses the `.phonebook-icon` class in ["../../site/src/styles/globals.css"]. Must remain compatible with static export per [simple_lightweight_and_static]. per [development_core.iconify_stack]0.102
presentation_player_routereqlan rq/site/site.rqdone`/presentations/player/` is a statically exported Next page that loads runtime deck JSON from `/presentations/decks/` and Reveal from `/presentations/vendor/reveal.js/`. Runtime JSON is generated from authored JSONC by [sync_presentations]. It must not use SiteShell; it is iframe-hosted by tutorial detail pages. Do not place `public/presentations/player/index.html` — that path is owned by the App Router export.0.068
quickstart_pagereqlan rq/site/site.rqdoneThe site exposes `/quickstart/` as the install / get-started page. Primary path: editor install chooser. Also explains headless [cli_package.cli_package] ( `@reqlan/cli` ) and ["../core-architecture.rq".mcp_package] ( `@reqlan/mcp` ) on the same `.reqlan` index. Package npm hrefs come from [phonebook_reqs.npm_packages], not hardcoded URLs. CLI and MCP install commands offer npm, pnpm, yarn, and bun per [install_cli_menu]. They share one stored preference per [package_manager_preference]. After install steps, it links onward to Tutorials, Showcases, and FAQ so visitors can continue without returning to the home nav. Related link copy lives in ["../../site/src/content/quickstart.ts"] per [copy]. Sidebar nests Extension / CLI / MCP as same-page children per [sidebar_nav].0.113
quiz_sticker_tabreqlan rq/site/site.rqdoneHome only: a right-edge tab on the home page. It does not mount in root layout or on other routes. Collapsed: a vertical label and the [phonebook_reqs.phonebook] `sticker-form` icon. Open: a short panel. The CTA is a link to [certs_reqs.assessment_page] through ["../../site/src/lib/certs-paths.ts"]. It is not an in-place quiz. Copy lives in ["../../site/src/content/quiz-sticker.ts"] per [copy]. Style with CSS modules per [styling_architecture] and [brand]. Use theme colour tokens. Hide on narrow viewports so it does not cover content. Keep it compatible with [simple_lightweight_and_static] and [sticky_cta_node]. No looping decorative motion. Open and close may change width once. When the visitor prefers reduced motion, do not animate.0.101
roadmap_sectionreqlan rq/site/site.rqdoneLanding page section `#roadmap` after example and before links. Compact vertical scaled-center carousel ( snap + distance-based scale / opacity peeks ). Flat Now / Next / Later items — one focused at a time; neighbours peek smaller. Copy lives in ["../../site/src/content/roadmap.ts"] ( per [copy] ); nav and sticky page graph include the section. Keep the list honest and thin — no fake dates, no wall of tickets.0.091
routesreqlan rq/site/site.rqMarketing routes are statically generated App Router pages under ["../../site/src/app"]. Home `/` hosts landing sections; other top-level pages include quickstart per [quickstart_page], tutorials, showcase, FAQ per [faq_page], support per [support_page_reqs.support_page], certification per [certs_reqs.certs], and the embedded `/spec` export. per [sidebar_nav] per [faq_page] per [quickstart_page] per [support_page_reqs.support_page] per [certs_reqs.certs]0.056
showcasereqlan rq/site/site.rqdoneEvery showcase demonstrates a mechanism, not a metaphor. Domain problem, the. rq that binds it, the real artifact in another language it binds to, and the thing the tooling hands back. Content is authored in TS objects per [showcase_module], not generated from this file at runtime. This file is the source of truth for intent, ordering, and editorial rules.0.040
showcase_languagesreqlan rq/site/site.rq. rq blocks use the custom site tokenizer. Non-. rq blocks need Shiki coverage beyond today's ts / md / py — add st, c, json, yaml for the flagship domains. aligns with [phase_1_parse_gate]0.049
showcase_modulereqlan rq/site/site.rqdoneShowcases are standardised and typed in TS content objects. Types live in ["../../site/src/content/showcases/types.ts"]. Each showcase is its own file under ["../../site/src/content/showcases"]. ["../../site/src/content/showcases/index.ts"] composes them in [showcase_set] order. Each showcase file carries rq: comment references to its showcase idea and to the product ideas it demonstrates. Short version ( list card ): id, title, summary, tags, mechanism badge. Long version ( detail page ): full blocks array including payoff. Exist as a list page and as a full page per slug. Routes: `/showcase/` and `/showcase/[slug]/` — static export. Block kinds needed beyond today's code | features union: callout — the one-sentence point of the page exchange — query + response, terminal-styled diagnostic — editor-style error with quick-fixes diagram — visually distinct from code; never language- " rq " caption / mechanism fields on the showcase object Copy stays minimal and show-don ' t-tell, aligned with site copy rules.0.057
showcase_planreqlan rq/site/site.rqIdeaset (showcase_plan)0.040
showcase_problemsreqlan rq/site/site.rqThree concrete failures of the current set: Invalid reqlan. Samples use illegal attribute forms ( colon-list tags, pipe-scalar plans, nested reference objects ) that do not parse against the langium grammar. For a language project, shipping invalid samples on the marketing site is an own-goal. Prose dressed as semantics. A file ref followed by the word " implements " and an idea ref reads like a typed relation, but " implements " is body text. Reqlan has five edge kinds ( references, wildcard_reference, file_reference, ideaset_member, import, comment_link ) and none are user-declared. We imply a feature that does not exist while hiding the ones that do. Vapor features. Graph showcase tells people to run Reqlan: Export JSON, which is not registered. The docs-attribute page is built around an attribute with no special tooling.0.040
showcase_rulesreqlan rq/site/site.rqFour editorial rules. Enforced in content and, where possible, at build time. See [every_rq_block_must_parse], [every_showcase_ends_in_a_payoff], [one_worked_example_per_page], [diagrams_are_never_dressed_as_code].0.040
showcase_rules_setreqlan rq/site/site.rqIdeaset (showcase_rules_set)0.040
showcase_setreqlan rq/site/site.rqIdeaset (showcase_set)0.053
showcase_thesisreqlan rq/site/site.rqCurrent showcases demonstrate the syntax, not the toolset. A reader who finishes them thinks: you can write sentences in curly brackets. Nothing shows what you get back — no query and answer, no diagnostic, no graph, no round trip. The upgrade thesis: every showcase demonstrates one mechanism against a real domain problem. Code in, artifact out. No showcase ships without a payoff block.0.040
sidebar_navreqlan rq/site/site.rqdoneThe site sidebar is a hierarchical page nav, not a flat list of mixed anchors and routes. Top-level entries are pages ( or the home hub ). Same-page section anchors nest as children under their parent page. Children render only while the visitor is on that parent page — off-page section lists stay collapsed so the sidebar reflects the current route. Until pathname is known after mount, children stay closed ( do not default to Home ) so static HTML / hydration does not flash a mismatched hierarchy. The active page uses `aria-current="page"`; the in-view same-page section uses `aria-current="location"` when known. Nav model and labels live in ["../../site/src/content/nav.ts"] per [copy]; the Sidebar client reads pathname ( and hash / section when on home ) to decide expansion and current markers. FAQ is a top-level page entry per [faq_page]. Support is a top-level page entry per [support_page_reqs.support_page]. Sidebar nests Support section anchors as same-page children.0.187
simple_lightweight_and_staticreqlan rq/site/site.rqmust be fully statically exported for GitHub Pages. All routes, including showcase detail pages, are generated at build time. The deploy workflow must upload only static HTML, JS, and assets from site / out. Build also embeds the workspace requirement graph under `/spec` per [spec_html_export].0.116
sitereqlan rq/site/site.rqthe / site folder contains a static Next. js App Router landing page for reqlan. should align with [brand] Copy modules: [copy] Document head: [meta_tags]0.040
spec_html_exportreqlan rq/site/site.rqdoneThe site static build exports the workspace requirement graph ( excluding `*.secret.rq` ) under `out/spec/` via `reqlan export`. It must pass [html_export.html_export_url_base] for `/spec` ( honouring `SITE_BASE_PATH`, e. g. `/reqlan/spec` in production ) so `/spec` loads with or without a trailing slash. It must pass [html_export.html_export_header_link] pointing at the marketing site home so readers can leave the embedded spec and return to the parent site. Embedded `/spec` graph pages inherit [html_export.html_export_graph_background_load] so large workspace graphs do not freeze the page while settling. Pipeline: ["../../site/scripts/build-static.mts"] → ["../../site/scripts/export-spec.mts"] → ["../../site/scripts/verify-static-export.mts"]. Host options come from [html_export.html_export] / CLI [cli_package.commands], including native CLI export via ["../core_analysis/rust_port.rq".native_bridge]. CI must build / stage host `reqlan-napi` before this pipeline ( [distribution_reqs.site_distribution] ); the loader probes repo-root `crates/target`, not `packages/crates`.0.142
sticky_cta_nodereqlan rq/site/site.rqdoneRoot layout ["../../site/src/app/layout.tsx"] hosts a sticky, draggable button tray on marketing pages. The tray stays in the viewport. Drag starts from a dedicated handle only — action links must not capture pointer or begin a drag. The drag / hit box is the button tray only ( `width` / `height`: fit-content ). Labels and tooltips overlay outside that box; they must not enlarge it. Compact state is icon-only. Hover / focus expands the matching label as a tooltip beside ( web ) or above ( mobile ) the icon, flipped if the tray is near that viewport edge. Narrow ( mobile ) viewports show one action: star the GitHub repository. Wider ( web ) viewports also show " Try the extension ", which opens [quickstart_page]. GitHub href and icons come from [phonebook_reqs.phonebook] / [phonebook_icon_component], not hardcoded URLs or ad-hoc glyphs. Copy lives in ["../../site/src/content/sticky-cta.ts"] per [copy]. Do not show the tray on the presentation player route per [presentation_player_route].0.114
story_codebase_showcasereqlan rq/site/site.rqdoneFlagship. A story that ships with the code. Write the feature as one idea. Bind source with @ implementation. Bind proof with @ tests. Point back with rq: comments. Click on that name returns the bound files — not a ticket outside the repo. Domain: product delivery. One worked name across every block per [one_worked_example_per_page]. Payoff is click output per [every_showcase_ends_in_a_payoff] and ["../cli/click.rq".click]. Uses [development_core.code_comment_references] and [development_core.testing]. Demonstrates [sub_file_binding] and [bidirectional_comment_links].0.046
styling_architecturereqlan rq/site/site.rqstyling should be handled primarily at the compoenent level with co-located css module files that are imported in the react components.0.094
sub_file_bindingreqlan rq/site/site.rqSymbol refs `["auth.ts".login]`, line ranges ["adc.cL#41-58"], and test-name anchors ["x.test.ts:rejects expired token"]. Requirements attach to code at symbol granularity, in any language.0.051
sync_config_schemareqlan rq/site/site.rqdone`scripts/sync-config-schema.mts` copies the canonical base config JSON Schema from ["../../packages/extension/schemas/config.schema.json"] into `public/schemas/v1/config.schema.json`. Public URL: `https://reqlan.com/schemas/v1/config.schema.json` ( path `v1` is schema compatibility; not site package semver ). Canonical authoring and `$id`: ["../extension/host/configuration.rq".configuration_schema_file]. Init seed `$schema`: ["../extension/host/installation.rq".base_config_seed]. Wired into site `predev` and `build-static` ( same pattern as [sync_presentations] ). Deployed with existing `site/v*` pipeline. Synced artifact is not a second authoring source; do not edit under `public/schemas/`.0.054
sync_presentationsreqlan rq/site/site.rqdone`scripts/sync-presentations.mts` reads authored `*.jsonc` decks and `manifest.jsonc`, emits comment-free `*.json` for the static player, and syncs assets / vendor into `public/presentations/`.0.067
syntax_sectionreqlan rq/site/site.rqdoneLanding `#syntax`: self-explanatory rule + practical snippet pairs ( show, don't tell ). Copy lives in ["../../site/src/content/syntax.ts"] per [copy]. Highlighting languages follow [code_block_styling]. language- " rq " pairs must parse per [accurate_rq_snippets_must_parse].0.091
test_proves_showcasereqlan rq/site/site.rqdoneDepth. What this test actually proves. Keep the intent of the former test-explanation page; upgrade it with a real test-name anchor and the reverse direction from test file back to intent.0.045
tutorial_location_crumbreqlan rq/site/site.rqdoneTutorial detail chrome shows a compact location trail: catalog → course → lesson → slide. Hierarchy must be obvious without a wide single-line title dump. Layout: each tier is a stacked chip — role ( and optional completion control ) on the top row; title / index value muted underneath. Titles colour up on hover, focus-within, or when the peer menu is open. **Folder navigation: ** each tier acts like a path segment / folder. Hover or focus reveals a peer menu for that level of the tree so the user can jump without using the transport row: - catalog → courses ( enter first lesson of the chosen course, or the catalog index ) - course → peer courses - lesson → peer lessons in the active course - slide → peer slides in the active lesson ( updates the embedded player / `?slide=` ) Current peer is marked; menus stay keyboard-reachable via focus-within. **Sizing: ** the crumb container grows to fit text; wrap before truncating. Ellipsis only as a last resort on very narrow viewports — do not cap chip width so aggressively that titles ellipsize while space remains. Course deep-links also exist at `/tutorials/#course-<series>`; catalog at `/tutorials/`. Slide shows `n/total` and updates live with the embedded player. Completion toggles stay on the role row. The crumb lesson tier always shows the **current** lesson only — it must not share hover / preview state with the transport lesson step dots. Step-dot hover may preview a title near the dots, never in the crumb.0.046
tutorial_player_transportreqlan rq/site/site.rqdoneThe `<` control must show the previous slide when the player can go back. When the player cannot go back, `<` must open the previous lesson if that lesson exists. Open that lesson on the last slide. The `>` control must show the next slide when the player can go forward. When the player cannot go forward, `>` must open the next lesson if that lesson exists. Open that lesson on the first slide. The Left Arrow key and the Right Arrow key must do the same as `<` and `>`. Shift + Left Arrow and Shift + Right Arrow must open the adjacent lesson from any slide. The `<<` and `>>` controls must continue to open the adjacent lesson. After the current lesson player is ready, the shell must start to load the next lesson player in the background. The shell must prefetch the next lesson page. The shell must ignore state messages from the background player.0.046
tutorials_sectionreqlan rq/site/site.rqdoneThe site exposes `/tutorials` and `/tutorials/[slug]/` as statically generated pages. Catalog and deck ids come from authored ["../../presentations/manifest.jsonc"]. Each detail page embeds the Reveal player iframe at `/presentations/player/?deck=<id>` using [assets] / SITE_BASE_PATH-aware `sitePath`. Each detail page hosts a unified transport chrome ( `<<` `<` steps `>` `>>` ) that drives slide nav in the embedded player via postMessage, plus lesson jumps ( [tutorial_player_transport] ). Location hierarchy chrome: [tutorial_location_crumb]. Blurb and try-this live on the catalog and inside the slides, not as page chrome. The player is an App Router page ( [presentation_player_route] ) so it static-exports under `trailingSlash` without colliding with `public/` HTML. Sync ( [sync_presentations] ) converts authored deck / catalog JSONC under ["../../presentations/"] into runtime JSON under `public/presentations/`, and copies assets plus vendored Reveal. js ( player shell excluded ). The catalog links to [certs_reqs.assessment_page] for certification.0.046
workflowreqlan rq/site/site.rqSite deployment runs when an `site/v*` tag is pushed. Tags are created automatically on main by the release workflow per [distribution_reqs.deployment_flow]. The site workflow does not deploy on ordinary commits. per [distribution_reqs.site_distribution]0.040
support_pagereqlan rq/site/support-page.rqdoneRank actions by ease and likelihood to nudge. Star on GitHub is first. Default view is a graph. Toggle Graph / Tiles / Table as icon buttons on the right of the header, with hover tooltips. Graph: cola layout, settled on first paint to the visible window; copy has no graph coordinates; each node moves with its label; nodes are draggable; a drop keeps the new position; a drag does not start the action; all nodes offset slightly toward the cursor; nodes repel so some canvas edges stay open; action radius is impact × ease and stays latent to users; action nodes are solid and flat; each action links to a smaller passive original-group node in secondary colour ( advocacy, community, cite, contribute, sponsor ); group labels grow on group hover; labels do not overlap. Hover on an action node shows a tooltip with the action blurb. Star and sponsor tags are featured in the orange brand colour: the Star action, sponsor actions, and the Sponsor group. Tiles: responsive flex layout. Table: action and group only. Ease, impact, and score stay latent. Action names use the aqua link colour in Graph, Tiles, and Table, including copy and share, except featured graph tags. Each table row runs the same action as the graph and tiles: open a link, copy, or share. Support via, in tile order: - one click - star on github - share - discord - a minute - cite - issues - post your certificate - say something nice on the Visual Studio Marketplace - say something nice on Open VSX - FREE stickers: show the world you are a reqling, via [phonebook] sticker-form - write - reach out and send an email - write a testimonial - sponsor - github sponsorship - direct sponsorship integrated with [phonebook]. Copy lives in ["../../site/src/content/support.ts"] per ["./site.rq".copy]. The site exposes `/support/` as a statically generated page. Sidebar nests Support section anchors as same-page children per ["./site.rq".sidebar_nav]. Landing nav graph includes Support as a page node per ["./site.rq".nav_graph].0.112