Attributes

AttributeIdeasValuesValue summary
status 135 6 done (93); incomplete (30); draft (4); in-progress (4); partial (2); pending (2)
tests 113 91 ["../../packages/analytical/test/export-html.test.ts"] (11); ["../../../packages/language/test/completion.test.ts"] (6); "../../packages/extension/test/startup-gate.test.ts", "../../packages/analytical/test/workspace-index-lazy-services.test.ts" (3); ["../../../packages/language/test/inlay-hints.test.ts"] (3); ["../../../packages/analytical/test/context-signals.test.ts"], ["../../../packages/extension/test/context-model.test.ts"] (2); ["../../../packages/extension/test/graph-ui-state.test.ts"], ["../../../packages/analytical/test/export-html.test.ts"] (2)
implementation 72 62 ["../../../packages/language/src/reqlan-path-completion.ts"], ["../../../packages/language/src/reqlan-completion-provider.ts"] (4); ["../../packages/analytical/src/export/html-export-assets.ts"], ["../../packages/analytical/src/export/html-export-template.ts"] (4); ["../../packages/analytical/src/export/html-export-assets.ts"] (2); ["../../packages/analytical/src/export/html-export-assets.ts"], ["../../packages/analytical/src/graph/physics-core.js"], ["../../packages/extension/webviews/shared/graph/graph-physics.ts"] (2); ["../../packages/analytical/src/export/types.ts"], ["../../packages/analytical/src/export/build-export-snapshot.ts"], ["../../packages/analytical/src/export/html-export-template.ts"], ["../../packages/analytical/src/export/write-html-export.ts"], ["../../packages/language/src/reqlan-path-resolve.ts"], ["../../packages/extension/schemas/config.schema.json"], ["../../packages/extension/src/analytical_submodule/export/register-export-commands.ts"] (2); ["../../packages/language/src/reqlan-token-builder.ts"] (2)
tags 53 53 advanced (1); ai, mcp, planning (1); antipattern, craft (1); attributes, extensibility (1); autocompletion (1); bases, ideas-summary, multi-base (1)
example 16 16 ``` // After create-base, Explorer shows: reqlan-tutorials-demo/ .reqlan/ config.json .rqignore ideas-index.sqlite // appears once indexing activates — tooling memory reqs/ product.rq // Do not hand-edit ideas-index.sqlite. ``` (1); ``` // Five tiles — spoken map, not typed into the editor // 1. Language support → open when authoring or navigating .rq source // 2. Activity bar → open when the question is "what sits near this idea?" // 3. Ideas Summary → open when you need a catalog, table, or focused map // 4. Chat / skills / MCP / palette → open when running a focused graph operation // 5. Export / CLI → open when the graph must leave the editor ``` (1); ``` // Theme map — spoken over montage, not typed live // 01 imports/ideasets → split files, honest links // 02 attributes/plans → metadata that earns its keep // 03 Ideas Summary graph → cartographic cuts, not dumps // 04 context/tokens → compose slices, pin sparingly // 05 comment references → round-trip from code // 06 HTML export → graph leaves the editor // 07 CLI/MCP → same index, headless agents // 08 modelling patterns → habits that age well (+ non-software vignette) ``` (1); ```bash # From reqlan-tutorials-demo/ (active base at root) npx @reqlan/cli --help # or: npm i -g @reqlan/cli then: reqlan / rq npx reqlan init # same .reqlan marker as Create Base npx reqlan search "empty password" npx reqlan analyse --idea login_api npx reqlan parse reqs/auth.rq npx reqlan parse reqs/ --fail-on-diagnostics npx reqlan export --out ./docs-site # Wrong folder? pin the base: npx reqlan --cwd reqlan-tutorials-demo search "empty password" # Machines: add --json ``` (1); ```python print("hello") ``` (1); ```rq // Contrast slide only — not typed live in this episode // Left panel: chat paste (prose blob) // Right panel: the same intent as three named ideas login must reject empty passwords session expires after inactivity audit_log records failed attempts ``` (1)
script 12 12 SCR: Activity bar reqlan icon — empty state CTA "Create base", or Command Palette: `Reqlan: Create Base`. Explorer: `reqs/product.rq` present, no `.reqlan` yet. VO: Installing the extension puts reqlan in the editor. It does not create a base. A base is a folder that owns a `.reqlan` directory — the boundary of one ideas graph. SCR: Sticky: "I installed the extension — why is the activity bar empty?" Point at missing `.reqlan` in Explorer. VO: Extension install and base create are two layers. Until the folder has a marker, there is no index boundary for neighbourhood views to bind to. SCR: Accept create-base at the workspace-folder root (`reqlan-tutorials-demo`). Explorer refreshes — expand `.reqlan`: `config.json`, `.rqignore`. Do not open the sqlite file. VO: That marker is shared application memory. Config and ignore rules live here. The ideas index appears under `.reqlan` once indexing activates — treat it as tooling memory, not a document you edit. SCR: Glance at activity bar or status: idea counts / readiness updating. Return to `product.rq` — caret on `welcome_flow`. VO: Same ideas you already wrote — now the tooling knows which graph they belong to. SCR: Optional ten seconds: terminal in a scratch empty folder — `npx reqlan init` — show identical `.reqlan` tree, then close terminal and return to demo folder. VO: Editor create-base and CLI init seed the same marker. Pick the host that fits the moment. SCR: Whiteboard beat — dashed box labelled "nested base" inside a parent folder. Do not create one live. VO: One base is enough for day one. Nested bases exist for larger trees — we name them later in Concepts. VO: Try this: confirm `.reqlan` is visible in Explorer, open `product.rq`, leave the caret on an idea, and watch the activity bar populate. SCR: End card → next: "Neighbourhood in the activity bar". (1); SCR: Click the reqlan activity bar icon. Place caret inside `welcome_flow` in `reqs/product.rq`. Confirm active base label shows `reqlan-tutorials-demo` if a picker is visible. VO: The activity bar is your neighbourhood view — what sits near the idea under the cursor inside the active base — not a dump of the whole workspace. That keeps things readable when you copy a slice into chat later. SCR: Toggle "Sync with editor" on if off. Move caret from `welcome_flow` to `onboarding_checklist` — panes update. Briefly show hop depth control: 1 hop → 2 hops — neighbour list widens then tighten back to 1. VO: Sync follows your caret. Hop depth widens or tightens how far references travel. Keep it small while you are learning. Context binds to the active base's index — not a merged global graph. SCR: Sticky: "Should I open Ideas Summary every time?" Shake head — stay on activity bar. VO: No. The activity bar is for local context while you edit. Ideas Summary is for when you choose a broader map — not a habit on every keystroke. SCR: Activity bar header → Copy as Markdown (or equivalent action). Paste into an untitled scratch file — show compact markdown, not the whole `reqs/` tree. VO: Copy a focused slice when you want to talk to a model. Copying the neighbourhood keeps the answer sharp — pasting the whole requirements folder just buries the question. SCR: Command Palette → `Reqlan: Ideas Summary`. Graph or overview tab — centre on current idea, pan once, close tab or switch back to Explorer. Total on screen: under fifteen seconds. VO: Ideas Summary is for broader navigation when you choose it. Day one: glance and leave unless you are lost. VO: Try this: turn sync off, pin `welcome_flow`, click around the editor to other ideas, then turn sync back on and watch focus return. SCR: End card → next: "Ask @reqlan". (1); SCR: Cold open on `product.rq`. Hover an unresolved `[login_api]` — Problems panel or squiggle if visible. Explorer shows both `product.rq` and `auth.rq`. VO: One file is a great start. Real projects become a web of files — and links that worked by accident in a single document need imports to stay honest. SCR: Open `auth.rq`. Show `login_api`, `session_policy`, and the `auth_core` ideaset paren list. VO: Each file is its own ideaspace. Moving auth ideas here does not change what an idea is — it changes where the handle lives. SCR: Return to `product.rq`. Type `from "./auth.rq" import login_api`. Save. Link resolves. Go-to-definition lands in `auth.rq`. VO: From-import pulls one idea into scope. Use it when the call site names that neighbour often and nothing else from the file. SCR: Add `import "./auth.rq" as auth`. Replace session reference with `[auth.session_policy]`. Brief pause on readability. VO: Namespace import gives you a prefix for the whole file. Judgement call: if you reference three ideas from auth, namespace usually reads cleaner than three from-import lines. SCR: Highlight `auth_core` ideaset in `auth.rq`. Optional: Ideas Summary ideas table filtered to `auth.rq` path. VO: Ideasets group names without inventing a heavier module system. They document membership — useful in reviews — but imports still control what this file can link to. SCR: Misconception beat — split screen: over-imported file with six from-imports vs one namespace line. Narrator picks namespace. VO: Common mistake: import everything "just in case". Import the smallest surface that keeps references readable. SCR: Move `password_rules` live from `product.rq` into `auth.rq` if still in product. Fix product with `[auth.password_rules]`. VO: Try this: move `password_rules` into `auth.rq` and fix `product.rq` with the smallest import that works. If you maintain multiple bases later, imports do not cross base boundaries — same rule as get-started. SCR: End card → "Attributes without bloat". (1); SCR: Dark title card: reqlan wordmark + "Get started · 01 · Why requirements as code". Brand palette. VO: If you work with language models on real projects, you already write requirements — you just write them into the chat window, over and over. SCR: Split screen. Left: a bloated chat paste — one long paragraph mixing login, sessions, and audit rules. Right: three short named lines from the example. VO: reqlan is a small language for turning that intent into a graph of named ideas — so you, your teammates, and your tools can find, link, and reuse them instead of retyping. SCR: Brief montage (no narration overlap): VS Code with a `.rq` file, reqlan activity bar icon, Ideas Summary graph with a handful of nodes. VO: The day-one job is simple: name the idea, write the prose, point at related work. You can see it here — a file of names, and lines that connect them. SCR: Show a sticky note or chat bubble: "Isn't this just another notes app?" Cut to the named-ideas side of the contrast — three handles you can reference by name. VO: Notes apps store paragraphs. reqlan stores handles. You do not need a schema on day one — you need names your tools can search and link. SCR: Browser: Visual Studio Marketplace page for the reqlan extension — or Open VSX equivalent. Click Install. Switch to VS Code: Extensions view confirms install. File → Open Folder → create or select `reqlan-tutorials-demo`. VO: Install the reqlan extension from the Marketplace or Open VSX. Open a folder — even an empty one — so the editor has a workspace root. SCR: Onboarding webview appears: "Thanks for installing". Pause on docs / marketplace links in the welcome body. Do not create a base yet. VO: On first launch you get a short welcome screen. Keep those links handy. Creating a base — the `.reqlan` marker — comes after you have written a few ideas. SCR: End card: CTA row — Install · Docs · next episode "Your first idea". VO: Next: write your first idea in under a minute. (1); SCR: Explorer in `reqlan-tutorials-demo`. Right-click → New Folder `reqs`. New File `reqs/product.rq`. Caret at line 1. VO: A reqlan file is just text with a `.rq` suffix. Start with the smallest form: a name, then the thought. SCR: Type keystroke-by-keystroke: `product_name reqlan tutorials demo`. Pause so token colours settle — name vs body. VO: That one line is already an idea. The name is a handle you will reference later. When you need more room, open a block. SCR: New line. Type the `welcome_flow` block from the example — open brace, body prose, close brace. Soft zoom on the body text inside braces. VO: Inside the braces, the first free text is the main description. No required metadata yet — just a name and the thought. SCR: Status bar: language mode shows reqlan (or Reqlan). Problems panel empty. Brief hover on bracket/brace highlighting if visible. VO: Save the file. If the extension is active, language support arrives immediately — highlighting, not a separate compile step. SCR: Chat bubble or sticky: "Do I need YAML front matter or a schema?" Cut back to the two-line file — no `@` attributes, no imports. VO: You do not. One-liners and blocks are valid on their own. Attributes and imports come later when you feel the need — not before your first idea exists. VO: Try this: rename `welcome_flow` to something that matches your own product, and rewrite the sentence in your voice. Save again. SCR: End card → next: "Link ideas". (1); SCR: New file `src/login.ts` — paste the stub from the example. New file `reqs/auth.rq` — type `login_api` block with file reference `Implementation: ["./src/login.ts"]` and link to `[password_rules]`. VO: Requirements earn their keep when they touch reality. Point an idea at a file with a file reference — the path lives in brackets like any other link. SCR: Ctrl/Cmd-click `["./src/login.ts"]` inside `login_api` — land in `login.ts`. Brief pause on the opened tab. VO: Same navigation habit as idea links — the graph knows about workspace files, not only `.rq` sources. SCR: Sticky: "File refs only go one way?" Place caret inside `login.ts` on the empty-password guard. Open activity bar — show requirements referencing this file or neighbourhood reacting to non-`.rq` focus. VO: Context scope works on any workspace file, not only `.rq` sources. Stand in the implementation and related requirements should still surface — the reverse path. SCR: Optional five seconds: mention folder references like `["./media/interviews/"]` on a slide — do not create live. VO: Folder references work the same way when assets span a directory. SCR: Recap montage (five seconds): seven episode titles stacked — Why · First idea · Link · Base · Activity bar · Ask · Point at code. VO: You now have the get-started loop: name ideas, link them, create a base, inspect the neighbourhood, ask the tools with a small slice, and stitch requirements to code. VO: Try this before you go: link one more source file your welcome flow actually depends on — a component, route, or test. SCR: End card: "Concepts · The building blocks, the extension map, then the CLI" — series handoff to [concepts_series]. (1)
slides 12 12 { id title transition fade background brand-dark kicker Advanced · 01 heading Imports and ideasets body One file is a start. Real graphs span files — imports keep links honest. asset logo notes One file is a great start. Real projects become a web of files. }, { id split transition fade background brand-panel heading Split before sprawl body Auth ideas in auth.rq. Product ideas stay in product.rq. code_lang rq code login_api { Bound by [session_policy]. } notes Each file is its own ideaspace. Moving ideas changes where the handle lives. }, { id from-import transition none background brand-panel heading From-import one idea body Pull a single neighbour when that is all the call site needs. code_lang rq code from "./auth.rq" import login_api notes From-import pulls one idea into scope. }, { id namespace transition fade background brand-panel heading Namespace the file body Alias the whole module when several ideas travel together. code_lang rq code import "./auth.rq" as auth · [auth.session_policy] notes If you reference three ideas from auth, namespace usually reads cleaner. }, { id ideaset transition fade background brand-panel heading Ideasets as namespaces body Group related ideas without a heavier module system. code_lang rq code auth_core ( login_api, session_policy ) notes Ideasets document membership. Imports still control what this file can link to. }, { id judgement transition none background brand-contrast heading Import the smallest surface body Six from-imports vs one namespace — pick readability, not completeness. code_lang rq code from "./auth.rq" import a, b, c, d… vs import "./auth.rq" as auth notes Common mistake: import everything just in case. }, { id base-boundary transition fade background brand-panel heading Imports respect base boundaries body Cross-file links stay inside the active base graph. code_lang txt code demo/.reqlan/ · auth.rq + product.rq same base notes Imports do not cross nested base boundaries — same discipline as get-started. }, { id try-this transition fade background brand-dark heading Try this body Move password_rules into auth.rq. Fix product.rq with the smallest import that works. fragments Next — Attributes without bloat notes Pick the import shape that keeps call sites readable. } (1); { id title transition fade background brand-dark kicker Advanced · Overview heading Beyond one file body Same language. Better judgement about names, links, bases, and prompt size. asset logo notes You already know the loop. Advanced reqlan is judgement about how graphs scale without becoming noise. }, { id loop-recap transition fade background brand-panel heading Carry the loop forward body Name · link · base · neighbourhood · small AI slice · stitch to code. asset montage-ide notes Advanced is not a second install tour. It is craft on top of verbs you already felt. }, { id map transition slide background brand-panel heading Eight themes ahead body Imports · attributes · graph maps · context · comment links · HTML export · CLI/MCP · modelling patterns code_lang rq code from "./auth.rq" import login_api · @status in-progress · Ideas Summary graph · rq:[password_rules] notes Each theme has its own deck. Ontology, extension map, and CLI live in Concepts. }, { id bases-craft transition none background brand-contrast heading Bases as craft body One active base. Know the graph boundary. Nested bases stay separate. code_lang txt code demo/.reqlan/ · active base picker · CLI selects one base per run notes No create-base lesson here — boundary discipline for export, CLI, and context. }, { id discipline transition fade background brand-panel heading Carry the discipline forward body Small slices. Maps you choose. Attributes that drive a view — or delete them. code_lang rq code login_api { POST /login… @status in-progress @tags ( auth ) } notes Token discipline and cartographic focus carry forward from get-started. }, { id general-purpose transition fade background brand-panel heading General-purpose graphs body Software is the common case — not the only case. One non-software vignette in the series. code_lang rq code issue_brief { June theme… cite [interview_lee]. } notes Editorial briefs and ops checklists are still named ideas with neighbours. }, { id next transition fade background brand-dark heading Start with imports body Split ideas across files. Pick from-import or namespace alias — whatever stays readable. fragments Next — Imports and ideasets asset logo notes Pick your first deep dive. We recommend imports before the graph outgrows one document. } (1); { id title transition fade background brand-dark kicker Concepts · 01 heading The building blocks body Names for the things you already used — one per beat. asset logo notes Now let's name the things you used, so you and your teammates talk about them the same way. }, { id idea transition none background brand-panel heading Idea body Named handle plus prose. One-liner or block — both are ideas. code_lang rq code welcome_flow { New users land on a welcome screen… } notes The first free text is the body attribute. You do not type @body. }, { id ideaset transition fade background brand-panel heading Ideaset body Parentheses group names into a namespace container. code_lang rq code auth_core ( login_api, session_policy ) notes A lightweight module boundary — not a second syntax world. }, { id file transition fade background brand-panel heading File body A .rq file stores ideas and implicitly forms an ideaset. code_lang txt code reqs/auth.rq → login_api · session_policy · auth_core notes The file is part of the ontology, not merely a disk path. }, { id base transition none background brand-panel heading Base body Graph boundary. Owns .reqlan. Nested bases are separate graphs. code_lang txt code reqlan-tutorials-demo/.reqlan/ · packages/lib/.reqlan/ notes Day-to-day you live in one active base. Parent index stops at child boundary. }, { id reference transition fade background brand-panel heading Reference body Links ideas, files, folders, and symbols. Non-.rq files stay in the index. code_lang rq code Bound by [session_policy] · Implementation: ["./src/login.ts"] notes Square brackets are the habit you already felt in get-started. }, { id attribute transition fade background brand-panel heading Attribute body Optional @ metadata you opt into — not the main prose. code_lang rq code @status in-progress · @tags ( auth ) notes Base config and extension settings are different scopes — do not conflate them. }, { id map transition fade background brand-panel heading The map body A focused map view — filtered, centred, depth-limited. asset montage-ide notes A view you build around one question. Advanced goes deeper on map craft. }, { id try-this transition fade background brand-dark heading Try this body On scrap-ontology.rq, one sentence per name — in your own words. fragments Next — Extension tour notes If a sentence needs a second clause, the idea is still fuzzy. } (1); { id title transition fade background brand-dark kicker Concepts · 02 heading Extension tour body Five surfaces — one job each. Map, not a laundry list. asset logo notes You named the nouns. This episode maps where they live in the product. }, { id language transition fade background brand-panel heading Language support body Open when authoring or navigating .rq source. code_lang rq code welcome_flow { … Success continues into [onboarding_checklist]. } notes Ideas and references live in files — not in a sidebar form. }, { id activity-bar transition none background brand-panel heading Activity bar body Open when the question is "what sits near this idea?" asset activity-bar notes Neighbourhood inside the active base — sync, hop depth, copy slice. }, { id ideas-summary transition fade background brand-panel heading Ideas Summary body Open when you need a catalog, table, or cartographic map. asset montage-ide notes Author in the editor; browse in Summary when the question changed. }, { id agents-palette transition fade background brand-panel heading Chat, skills, MCP, palette body Open when running a focused graph operation. asset chat-search code_lang txt code @reqlan /rq-search · Reqlan: · rq-search skill notes Same token discipline as get-started. Palette when you forgot the slash command. }, { id export-cli transition fade background brand-panel heading Export and CLI body Open when the graph must leave the editor. code_lang bash code Reqlan: Export HTML · npx reqlan search "…" notes Shared analytical core. Next concepts pack walks the CLI; Advanced covers craft and CI. }, { id recovery transition none background brand-contrast heading Recovery body Mid-edit in Ideas Summary? Pay navigation tax. Return to source. notes If you live in Summary while typing prose, the question changed — switch surfaces. }, { id quiz transition fade background brand-dark heading Try this — surface quiz body Neighbourhood copy · draft filter · meaning search — name the surface aloud. fragments Answers: activity bar · Ideas Summary · chat/palette notes Hesitated on draft filter? That is Ideas Summary tables — not the activity bar. }, { id end transition fade background brand-dark heading Map first. Terminal next. body Name the CLI surface — then Advanced when you are ready to craft. asset logo fragments Next — CLI notes Concepts · 03 walks init, search, analyse, parse, and export on the same index. } (1); { id title transition fade background brand-dark kicker Concepts · 03 heading CLI body Same graph API — terminal, scripts, and CI. asset logo notes The extension tour named five surfaces. This pack is surface five up close. }, { id install transition fade background brand-panel heading Install the binary body npx for a one-shot. Global install when the terminal is daily. code_lang bash code npx @reqlan/cli --help notes Binary names: reqlan and rq. Marketplace install is a different layer. }, { id init transition none background brand-contrast heading init = Create Base body Seeds the same .reqlan marker the editor uses. code_lang bash code npx reqlan init notes Extension install ≠ base create. CLI init only owns the marker path. }, { id search-analyse transition fade background brand-panel heading Search and analyse body Concise hits. One idea expanded — not a whole-graph dump. code_lang bash code npx reqlan search "empty password" / analyse --idea login_api notes Same llm-first discipline as chat search. }, { id parse-export transition fade background brand-panel heading Parse and export body Parse gates CI. Export shares the HTML pipeline with the extension form. code_lang bash code npx reqlan parse reqs/ --fail-on-diagnostics / export --out ./docs-site notes Form for exploration. CLI for scripts and pipelines. }, { id cwd-json transition none background brand-contrast heading Pin the base body --cwd / REQLAN_WORKSPACE. --json for machines. One base per run. code_lang bash code npx reqlan --cwd reqlan-tutorials-demo search "empty password" notes Nested bases are separate runs — not folders you merge by accident. }, { id wrong-folder transition fade background brand-panel heading Wrong folder trap body Empty or weird results? Fix cwd before blaming the graph. code_lang txt code CLI vs chat disagree → cwd or active base notes Two hosts, one analytical core. }, { id try-this transition fade background brand-dark heading Try this body Run parse on reqs/ with --fail-on-diagnostics — then picture that line in CI. fragments Next — Advanced overview notes Headless CI, local scripts, and the editor share one index under .reqlan. } (1); { id title transition fade background brand-dark kicker Get started · 01 heading Why requirements as code asset logo notes If you work with language models on real projects, you already write requirements — you just write them into the chat window, over and over. }, { id problem transition fade background brand-panel heading Context drift is familiar body You paste the same intent into chat again and again. notes Every new thread starts from scratch unless you rebuild context by hand. }, { id contrast transition none background brand-contrast heading Chat dump vs named ideas body Left: bloated prose paste. Right: three named ideas. code_lang rq code login must reject empty passwords / session expires after inactivity / audit_log records failed attempts notes reqlan turns that intent into a graph of named ideas — requirements as code. }, { id loop transition fade background brand-panel heading Name, prose, neighbours asset montage-ide body Editor language support · activity bar neighbourhood · optional graph map. notes Day one is name the idea, write the prose, point at related work. }, { id misconception transition none background brand-contrast heading Not another notes app body Notes store paragraphs. reqlan stores handles you can link and search. notes You do not need a schema on day one — you need names your tools can reuse. }, { id install transition slide background brand-panel heading Install the extension body Marketplace or Open VSX → Install → Open Folder. notes Open a workspace folder even if it is empty. The welcome webview appears on first launch. }, { id onboarding transition fade background brand-panel heading Welcome, not base yet body Keep docs and marketplace links from the onboarding page. notes Creating a base with .reqlan comes after you have written a few ideas. }, { id end transition fade background brand-dark heading Your first idea is next body Install · Docs · then write your first idea. fragments Next: Your first idea asset logo notes Next: write your first idea in under a minute. } (1)
domain 11 11 ai-tooling (1); craft (1); embedded-backend (1); extension-ui (1); hardware-manufacturing (1); industrial-control (1)
mechanism 11 11 attribute_flags, negated_flags, block_values, nested_lists (1); comment_links, deprecated_attribute, deprecation_impact (1); cross_stack_file_refs, idea_as_connective_tissue, inbound_reference_inlay_hints (1); custom_attributes, completion_status, html_export (1); cytoscape_graph, status_tag_filters, indirect_reference_toggle (1); ideasets, imports, unresolved_import_diagnostics (1)
tier 11 2 depth (7); flagship (4)
todo 11 2 true (10); deep links into HTML export pages when an export exists (1)
idea 4 1 true (4)
subreqs 4 4 duplicate_error { should be raised if a local idea shares a name with an import binding (unaliased idea name, or the alias when present). @tests ( ["../../../packages/language/test/validating.test.ts:reports duplicate when local idea shares unaliased import binding"] ["../../../packages/language/test/validating.test.ts:reports duplicate when local idea shares import alias"] ) }, sensible_graph_resolution { the imported namespace should not be assosciated with the new idea: e.g. ```rq from "../subreqs.rq" import myidea as myideaalias myidea this a new idea. maybe it references [myideaalias] ``` `myidea` in the import statement should not be assosciated with the new `myidea` definition - they're totally different. @tests ( ["../../../packages/language/test/linking.test.ts:import idea reference resolves to imported file when local idea shares name"] ["../../../packages/language/test/validating.test.ts:allows local idea when import uses an alias"] ) } (1); imports_aliases_and_root_config { Imports, aliases, and root-alias config. Ideasets as a module's published surface. }, attribute_grammar_breadth { Flags, negated flags, block values, nested and named lists. Arbitrary at-keys as a domain dialect. }, completion_and_deprecation_analysers { Reqlan: Completion Status and Reqlan: Deprecation Impact — real shipped analysers nobody is showing. }, cytoscape_graph_view { Status/tag filters and the indirect-reference depth toggle. }, html_multipage_export { HTML multi-page export as an actual deliverable. } (1); sub_file_binding { Symbol 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. }, bidirectional_comment_links { rq-comment refs in TS, Python, C, ST, etc. Code points back, with working document links. }, refs_break_loudly { Unresolved references are error diagnostics with quick-fix code actions. File moves prompt to rewrite every inbound ref. The anti-rot argument — currently demonstrated nowhere. }, mcp_as_shaped_context { search_requirements, file_context, local_graph, summarize_subtree. Hand an agent six ideas and their edges instead of forty files. } (1); tags_list_indexing_gap { List-form tags parse but store true instead of a tag array in the idea extractor, so half of real-world tag usage never reaches the index. }, inbound_references_command { reqlan.openInboundReferencesSummary is declared in package.json with no handler. }, typo_cleanup { Former implementaion typo in this file — corrected to implementation. } (1)
items 3 3 focus_hero { Always visible when focus is non-none: idea name (or file name), status/tags, path:line, one-line summary. For non-.rq files: show git chip and up to four linked requirements inline. Primary actions: open source, pin to [manual_context], copy markdown / composed context. }, lens_strip { A single horizontal strip of dimension chips (icons + short labels + counts). - Filled chip = dimension enabled and contributing to [context_footprint]. - Outline chip = disabled or empty. - Click toggles enabled (except workspace, always ambient). - Alt-click or chevron expands that dimension's detail panel below the strip (only one expanded at a time). }, footprint_line{ One muted line under the lens strip: context_footprint.summaryLine. Replaces listing every dimension's items when collapsed. }, expanded_lens_panel{ Content depends on which lens is expanded: - current_file: for `.rq` — in-file idea list + nested outline; for other files — grouped file_reference_links, comment_reference_links, folder_reference_links. - open_files / file_history / edit_history: compact scrollable file rows (max 8 visible); click opens file; **Refs** loads linked requirements lazily via `loadFileLens`. - git: history-first panel per [activitybar.git_history_lens] — branch/HEAD header, focus commit trail, authors; dirty working tree nested secondary. - manual: chips from tray with remove. - workspace: link to activitybar.workspace_pane / Ideas Summary — no duplicate index UI. }, anomaly_strip Optional row for unresolved refs or index errors affecting focus file — one line, clickable., Collapsed_default focus hero + lens strip + footprint line. No outline tree until user expands current_file lens on a `.rq` file. (1); one_job { Each pane region hosts one primary widget job; secondary widgets collapse behind chevrons or appear on hover. }, shared_signals { Widgets never own private analyses — they bind to named signal / synthesis fields so graph, AI, and UI stay consistent. }, density_tiers { Focus hero: at most timeline + one meter + one pulse. Cards/lists: [requirement_card] defaults; expand for sparklines. Workspace: [project_weather] + [activity_river] + optional fingerprint. Graph: pick one of hotspot / constellation / impact encoding per view mode. }, token_discipline { AI export prefers synthesized meters and short stories from widgets (stability, risk, coverage gaps) over enumerating every signal — aligned with [features_ai.ai_integration] and [context_scope_v1.ai_context_export]. } (1); workspace, base, active_file, editor_state, selection, manual, git_repository, requirements_graph, project_index, language_server, build_system, diagnostics, tasks, terminal, external_tools (1)
plan 3 3 goal Allow reqlan string literals in imports, idea names, and bracketed file/reference targets to use either double or single quotes with backslash escaping. constraints - [string_literals] documents escaping rules; double-quoted syntax must remain valid. - [reference_file] bracketed quoted paths must resolve with either quote style. - Embedded scanners and comment reference parsing must not treat // inside quoted strings as comments. steps 1. Extend grammar STRING terminal and shared unquote helper for both quote styles. 2. Update import/path/comment/embedded reference scanners and completion to accept single-quoted literals. 3. Update TextMate highlighting for single-quoted strings. 4. Add parsing and reference-resolution tests for single-quoted paths and idea names. open questions - None for initial scope; both quote styles apply everywhere STRING is used. (1); order ( agent_context_showcase interlock_showcase broken_links_showcase firmware_cloud_contract_showcase audit_trail_showcase module_surface_showcase test_proves_showcase legacy_archaeology_showcase graph_view_showcase attribute_dialect_showcase antipatterns_showcase ) (1); steps ( - do the thing - do the other thing ) (1)
steps 3 3 cd packages/extension, pnpm run build, vsce package --no-dependencies (1); node esbuild.mjs (1); npx vite build --config webviews/ideas-summary/vite.config.ts, npx vite build --config webviews/activity-bar/vite.config.ts, npx vite build --config webviews/onboarding/vite.config.ts (1)
bugfix 2 1 true (2)
references 2 2 { [[exampleimport2.myimportableIdea]] } (1); // references blocks support (1)
this_is_an_attribute 2 1 true (2)
a_false_flag_has_a_bang 1 1 false (1)
a_true_flag_or_render_keyword 1 1 true (1)
architecture_context 1 1 subsystem, bounded_context, layer, module, feature, package, service, deployment, ownership, technology_stack (1)
broken 1 1 true (1)
context_model 1 1 sources — [context_sources] signals — [context_signals] synthesis — [synthesized_context] views — [context_views] consumers — [context_consumers] (1)
demos 1 1 ["./features-code-comment.text.js"], ["./features-code-comment.text.py"] (1)
development_history 1 1 creation_date, last_modified, edit_frequency, authors, commit_count, time_since_touched, active_development, historical_hotspot, first_introduced, last_semantic_change, last_structural_change (1)
example_list_attribute_using_commas 1 1 idea1, idea2, idea3 (1)
example_list_attribute_using_newlines 1 1 idea1, idea2, idea3 (1)
example_list_containing_ideas 1 1 subidea1, subidea2 (1)
exampleattribute 1 1 the same goes for attributes in an idea (1)
log 1 1 textmate injection was attempted, but the specific implementation failed, this is presently partially implemented as a link. (1)
perfectly_acceptable_attribute 1 1 to labour the point (1)
priority 1 1 P0 (1)
relationship_context 1 1 strongest_neighbours, most/least referenced, growing/shrinking dependencies, new/removed links, unstable neighbours, implementation distance, test distance (1)
required 1 1 true (1)
requirement_history 1 1 created, first_implemented, first_referenced, last_edited, last_reviewed, last_tested, last_verified, revision_count, breaking / major / minor revisions, active_duration, inactive_duration (1)
risk_context 1 1 high_churn, many_dependents, poor_documentation, large_implementation, high_complexity, missing_tests, recent_regressions, many_open_issues, ownership_risk, single_contributor, breaking_history, high_review_latency (1)
temporal_context 1 1 recent, today, this_week, this_sprint, this_release, historical, archived, obsolete, experimental (1)
test 1 1 ["../../../../packages/analytical/test/overview-coverage.test.ts"] (1)