Code reference detail
parsing.test.ts
packages/language/test/parsing.test.ts
| Idea | Status | Tags | Summary | Katz |
|---|---|---|---|---|
| analytical_rust_port | in-progress | Port ["../core-architecture.rq".analytical_package] to Rust: lexer, parser ( index path ), extractor, SQLite index, search, and export. `@reqlan/analytical` remains the published JS facade ( `createAnalysisRuntime` / `AnalysisApi` / Zustand host state ). Native work lives in a `crates/` Cargo workspace and ships as per-architecture binaries per [distribution.rust_binary_distribution]. The editor language server is [lsp_rust.language_server_rust]. This analytical port does not replace that process. Component plans: [rust_crate_layout], [lexer_rust], [parser_rust], [parser_align], [indexer.indexer_rust], [search_rust], [export_rust], [native_bridge], [cutover]. | 0.243 | |
| comment_span_align | done | On every frozen [golden_corpus] `.rq` file, `//` and `/* … */` comment character ranges must be identical across: - the Langium lexer ( hidden `SL_COMMENT` / `ML_COMMENT` ) - `findCommentSpansInText` C-style spans ( host `#` / triple-quote spans are not `.rq` comments ) - TextMate `comment.line.reqlan` and `comment.block.reqlan` scopes Same-line fences, glob `/**/`, URL `://`, and fenced ` ` ` bodies must not open comments. Mid-line triple backticks are prose. They must not open a fence or hide later ideas. Example: `@reqlan/*` in inline code must not open a block comment. Related: [parser_align], ["../language/syntax.rq".code_snippets], ["../language/syntax.rq".comments], ["../language/syntax-edge-cases.rq".fencing_comments], ["../language/syntax.rq".inline_code]. | 0.141 | |
| golden_corpus | done | Parser / extractor alignment uses a frozen `.rq` tree under `testdata/golden-corpus/`, not live product requirements in `reqlan rq/`. Production idea lists may change without regenerating the dump. Copy a representative file into the corpus and refresh `crates/reqlan-index/tests/golden/langium-corpus-names.json` only when grammar or extract behaviour needs a new sample. Langium and Rust both extract name + kind from that tree and must match the committed dump. Live parse alignment ( elements and refs, both engines in one test ): [parser_align]. Comment character ranges on the same tree: [comment_span_align]. | 0.104 | |
| parser_rust | done | Recursive-descent parser matching ["../../packages/language/src/reqlan.langium"] productions into a Rust AST the extractor can walk. Recovery: nameless `{...}` and local import mistakes still yield a usable document ( [parser_lexer.recovery_vs_budget] ). Wall-clock [parser_lexer.parse_budget_timeout] via native timeout / cancel — no Node worker process required on the index path. Open `.rq` buffers and CLI `parse` use `reqlan-parse` ( [lsp_rust.language_server_rust] ). Langium remains a dual-parser test oracle and the transitional `node` engine fallback — not the default editor LSP. Alignment contract: [parser_align]. | 0.217 | |
| installation_event | done | On installation of the extension a webview should be opened showing: - A welcome message - Resolved links to site, github, docs etc. ( not template placeholders ) - A syntax-highlighted example `.rq` with real URLs ( clickable ) from ["../../../../packages/extension/templates/thanks-for-installing.template.rq"] after placeholder substitution - A control to open that example as an untitled `.rq` editor beside the webview - Short tips for the activity bar and `@reqlan` chat - A thanks to sponsors Place in overall install sequencing: ["../installation.rq".welcome_webview_install] / ["../installation.rq".extension_installation]. Implemented as a Svelte webview under ["../../../../packages/extension/webviews/onboarding"] bundled to ["../../../../packages/extension/media/webviews/onboarding"] and opened once on first activation by ["../../../../packages/extension/src/extension/open-thanks-for-installing.ts"] via ["../../../../packages/extension/src/extension/onboarding-panel.ts"]. Resource links and template values are resolved at runtime from [phonebook_reqs.phonebook] through ["../../../../packages/extension/src/shared/phonebook.ts"] and posted to the webview; the example block imports ["../../../../packages/extension/templates/thanks-for-installing.template.rq"] via Vite `?raw` and substitutes `{{…}}` placeholders before display. Highlighting uses the onboarding tokenizer in ["../../../../packages/extension/webviews/onboarding/lib/rq-highlight.ts"]. The source template still uses placeholders such as { { SITE_URL } }; those matching braces are body prose per ["../../../language/syntax-edge-cases.rq".nested_curly_braces] and must parse without errors. Activation state is stored in extension global state key `onboarding` with `onboardingMessageShown` and `lastVersion` per ["../../../../packages/extension/src/extension/onboarding-state.ts"]. VS Code persists `globalState` in the extension global storage directory ( `globalStorage/reqlan.reqlan-extension/state.vscdb` under the editor user data folder ). | 0.141 | |
| complementary_information_rendering | The extension should render computed information inline in the editor as complementary text. Complementary rendering should include resolved references and optionally indirect references behind a toggle. Complementary rendering should not mutate source files unless the user explicitly applies a change. | 0.040 | ||
| same_line_named_block_highlighting | done | TextMate-only highlighting ( no semantic tokens ) must follow the canonical lexer for named `{` / `}`: a top-level `name {}` or `name {hello}` is a complete ["../../../language/syntax.rq".block_idea] on that line. The grammar must close on the same line. It must not leave a block open until a later own-line `}`. An open block swallows later one-liners such as a name-only idea. `name {` at end of line is a multiline block. Close it only on an own-line `}` so matching prose pairs at end of line ( `{{SITE_URL}}` ) stay in the body per ["../../../language/syntax-edge-cases.rq".nested_curly_braces]. `name text {braces}` is a ["../../../language/syntax.rq".simple_idea]. `{` after other body text must not start a block. TextMate idea-name scopes on a file must match the Langium parse of that file. | 0.052 | |
| at_sign_in_idea_text_block | the @ symbol should only indicate an attribute if at the start of a line. it should be escapeable with a backslash ( although any character would work as the @ would no longer be at the start of the line ) so @ this_is_not_an_attribute | 0.040 | ||
| syntax_features | The extension should provide language support for. rq files via the lsp. Syntax features should cover ideas, ideasets, imports, references, attributes, comments, and lists. Broken imports and references should be validated and reported in the editor. Go-to-definition and find-references should work for ideas, imports, and cross-file links. Find-references is served by ["../support/language-server-rust.rq".language_server_rust] ( `textDocument/references` ). Autoformatting should be supported for. rq files. | 0.046 | ||
| import_error_recovery | A malformed import must not invalidate the rest of the file. Recoverable invalid `from` shapes parse as local import nodes with a line-level diagnostic: - `from "path" as alias` ( mistaken namespace form ) — suggest `import "path" as alias` or `from "path" import <idea>` - bare `from "path"` — require the `import <idea>` clause - `from` without a quoted path — consume the remainder of the line as an invalid import Later imports and top-level ideas continue to parse and link normally. Same recovery posture for nameless top-level braces: ["./syntax.rq".no_name_idea_safe_warning]. If lex / parse never completes, see ["./parser_lexer.rq".parse_budget_timeout]. | 0.058 | ||
| import_from | From-import syntax uses from, a quoted path, import, and an idea name. From-import may list more than one idea. Separate the names with commas. From-import may include an alias using as. The parser records a span for the path, each idea name, and each alias. Each of those tokens is its own document link. The path links to the file. An idea name links to that declaration. An alias links to the same declaration. When the alias contains the imported idea name, Ctrl + click on a bracket reference still treats the whole alias as one link. See ["../extension/language/syntax/features-syntax-highlighting.rq".aliased_from_import_ctrl_click]. The language server uses the parser spans: ["../extension/language/support/language-server-rust.rq".language_server_rust]. | 0.220 | ||
| import_keywords | The keywords import, from, and as are reserved for import statements. Import keywords may also appear as ordinary words in idea body text when not at statement start. | 0.047 | ||
| closing_nested_curly_braces | if, for some reason, there is a prose block containing only closing curly braces, they should be escaped and allowed \ } like this. | 0.040 | ||
| context_sensitive_lexer_scaling | done | Context-sensitive token classification for structural / prose braces and top-level import keywords must remain linear in document size. The lexer records brace-depth changes sparsely ( not per-character tables ) and looks them up in log time while tokenising, so workspace language-server initialization and editor re-lexes stay bounded. Code fences are skipped during the brace scan so example braces cannot inflate work or desync depth. Bounded work still assumes the lexer / parser *returns*; unbounded hangs are cut by ["./parser_lexer.rq".parse_budget_timeout]. | 0.097 | |
| fencing_comments | done | A complete same-line fence keeps `//` and `/*` as prose, not comments. Closed double quotes: " / / this line " contains no comment. Closed backticks: `//this line` contains no comment. Closed backticks with a glob: `@reqlan/*` does not open a block comment. An unclosed backtick is not a fence, so this line ` An unclosed quote is not a fence, so as does " The Langium lexer, the Rust lexer, comment scanners, and TextMate must use this rule. Related: ["./syntax.rq".comments], ["./syntax.rq".inline_code], ["./syntax.rq".naked_strings_in_body], ["../core_analysis/rust_port.rq".comment_span_align]. | 0.078 | |
| nested_curly_braces | if there is a prose block containing curly braces, { such as this one } they should be treated as part of the prose. Matching braces that end a line — including adjacent pairs like { { SITE_URL } } — stay in the body; they must not close the enclosing idea. A lone `}` on its own line still closes the structural block so an unbalanced prose `{` cannot swallow the idea closer. | 0.108 | ||
| attribute_forms | A bare attribute name after @ denotes a true flag or render keyword. A negated flag uses a trailing bang after the attribute name. A valued attribute uses a space after the attribute name followed by a value. A colon after the attribute name is optional legacy syntax and is not part of the value. Common attributes include plan, status, priority, criticality, confirmation, owner, log, tags, and references with the @ prefix. Any custom attribute name is allowed. | 0.049 | ||
| attribute_location | Marked attributes must be at the start of a line. @ this_is_not_an_attribute | 0.049 | ||
| block_idea | A block idea is a name followed by curly braces that contain a body and optional attributes. The opening `{` may share the line with the closing `}` ( `name {}`, `name {hello}` ). The opening `{` may also sit at the end of the name line, with the closer on a later line. `{` starts a block only when it is immediately after the name ( optional spaces ). If other text is between the name and `{`, the line is a [simple_idea] and the braces are body text. The first unstructured text in an idea body is the main description when no other body attribute is marked. | 0.099 | ||
| code_snippets | Idea bodies and block attribute values may embed fenced code blocks delimited by triple backticks. An opening fence is three backticks as the first non-whitespace characters on a line, optionally followed by a language tag such as python or rq. A closing fence is three backticks as the first non-whitespace characters on a line. Three backticks in the middle of a line are prose. They do not open a fence. Everything between the fences is literal opaque text — it is not parsed as reqlan syntax. Keywords, imports, attributes, braces, and quotes inside a fence are inert for the parser and may be shown as examples without parse errors. Fenced blocks may span multiple lines and preserve their inner content verbatim. Brace-depth tracking must skip fence interiors so example braces cannot desync surrounding structure ( [no_name_idea_safe_warning] ). Related: ["../core_analysis/rust_port.rq".comment_span_align]. | 0.113 | ||
| empty_attribute | A line that contains only @ is insignificant whitespace. Spaces or tabs may precede that @. Spaces or tabs may follow that @. The lexer consumes that @ as hidden whitespace. The parser does not build an attribute for that line. That line does not cause a parser error. That line does not cause a lexer error. That line does not cause a tokenizer error. That line does not cause an extension error. A flag keeps the form @ name. A negated flag keeps the form @ name!. A valued attribute keeps its value after the name. A syntax error on a different line is still reported. | 0.040 | ||
| file_layout | incomplete | A file begins with zero or more import statements, followed by top-level ideas and ideasets. The file forms an implicit ideaset; its name may default to the filename without the suffix. Front matter syntax is not yet specified. | 0.070 | |
| file_suffix | Reqlan requirement documents use the. rq file suffix. | 0.052 | ||
| idea_name | Idea names are identifiers or double-quoted strings. Unquoted names follow identifier rules and may use letters, digits, underscores, and dashes, for example myidea, my_idea, or dash-or_underscore_delimited-idea. Quoted names allow spaces and other characters when wrapped in double quotes. Idea names must be unique within their ideaset or file. An idea, one-liner, and ideaset must not share a name in the same file. Idea names should not use reserved keywords. | 0.063 | ||
| inline_code | done | Single-backtick spans ( `…` ) are opaque `INLINE_CODE`. They may show example syntax such as a quoted path plus idea. The grammar does not parse bracket or file references inside the span. Check and the language server must not report those examples as unresolved ["../reference_types.rq".file_reference] or idea refs. Related: [code_snippets], ["../core_analysis/rust_port.rq".comment_span_align]. | 0.165 | |
| lists | Parenthesized lists contain newline-separated items. Each list item is either a one-liner or a nameless block idea in curly braces. Lists may appear as attribute values and inside block bodies. Named lists use a label followed by a parenthesized item list; the opening parenthesis must be followed by a newline before the first item. Nested lists may appear inside block values or as list items; the opening parenthesis must be followed by a newline before the first item. Inline parentheses in body prose — for example continuous ( " live " ) physics or ( pixelRatio 1, no WebGL ) — are plain text, not lists. | 0.055 | ||
| markdown_links | done | Markdown `[label](target)` links are supported; the label is not treated as an idea reference. Example: testing requirements and the golden corpus. Related: ["../development/core.rq".testing], ["../core_analysis/rust_port.rq".golden_corpus]. | 0.055 | |
| naked_strings_in_body | Quoted text in idea bodies, attribute values, and list items is plain prose, not a string literal. Quote characters are preserved in the body text. For example, " Fit to view " in a bullet line is body text. String literals are reserved for import paths, top-level quoted idea names, and quoted paths inside bracket references. Quoted path-like body text is not a ["../reference_types.rq".file_reference]: ["../reference_types.rq".reference_edgecase]. | 0.065 | ||
| no_name_idea_safe_warning | done | A top-level nameless curly-brace block — `{... }` with no idea name — must not take down the parser or the language server workspace. Parse the block as a recoverable anonymous top-level element, emit a descriptive warning that a name is required before `{`, and continue so later ideas, imports, and links still work. Nameless blocks inside parenthesized lists remain valid list items per [lists]; only top-level nameless blocks warn. Related recovery posture: ["./imports.rq".import_error_recovery]. Block shape: [block_idea]. Fenced examples must stay opaque per [code_snippets] so braces inside snippets cannot desync structural depth. Non-termination ( lex / parse never finishes ) is a different failure mode: ["./parser_lexer.rq".parse_budget_timeout]. | 0.072 | |
| reference_url | done | A bracket reference may target an unquoted absolute URL ( `scheme://…` ). Example: `[https://reqlan.com/]`. The URL is one token; `://` is not a line comment. Unbracketed URLs in body prose stay text. Quoted remote paths stay [reference_file] ( `["https://example.com/file.ts"]` ). Index and check: ["../reference_types.rq".url_reference]. | 0.137 | |
| reference_wikilink | Double-bracket wikilinks use doubled square brackets around a target. Wikilinks may include an obsidian-style alias pipe with a display label after the target. A bare pipe character in body prose — for example kind: idea | file | selection — is plain text, not wikilink syntax. | 0.230 | ||
| round_brackets | Round brackets indicate a list of ideas or attributes. Items may be separated by commas or newlines. Attribute list values may use commas or newlines; see @ example_list_attribute_using_commas and @ example_list_attribute_using_newlines. Parentheses in body prose — including API call shapes like cytoscape. animate ( { fit, easing: ' ease-out-cubic ' } ) — are plain text, not list syntax. | 0.045 | ||
| simple_idea | A one-liner idea is written as a name followed by unstructured body text on the same line. A name-only idea is a one-liner with just the name and no body text. One-liner ideas do not continue onto subsequent lines. A `{` that is not immediately after the name is body text, not a block opener — see ["./syntax-edge-cases.rq".one_liner_curly_brace_context]. `name {}` and `name {hello}` are [block_idea] forms, not one-liners. | 0.075 | ||
| string_and_reference_apostrophes | strings should use double or single apostrophes interchangeably and support backslash escapes. | 0.040 | ||
| idea-leading-whitespace | A block body can have spaces or tabs before the text. The lexer counts a space and a tab as whitespace. A tab is one whitespace character. The parser does not replace a tab with spaces. The base indent is the whitespace at the start of the first body line. The first body line is the first line of body text in the block. The first body line can start after column 0. The base indent is still the whitespace on that line. A body line with the same whitespace as the base indent has no leading whitespace in the parsed text. A body line keeps the whitespace that remains after the base indent. The parser removes the base indent only when the line starts with that same whitespace. An attribute on its own line stays an attribute. Example: the first body line has four spaces. A later line with four spaces has no leading whitespace. A later line with eight spaces has four spaces in the parsed text. This line has the same four spaces as the first body line. This line has eight spaces. | 0.040 | ||
| syntax_whitespace | whitespace is not significant in attributes. this line is not an idea, it is part of the main content attribute ["../ontology.rq".attribute] | 0.040 | ||
| attribute | done | Attributes are classification, functional, or nonfunctional metadata. Syntax: ["./language/syntax.rq".attribute_marker], ["./language/syntax.rq".attribute_forms], ["./language/syntax.rq".attribute_values], ["./language/syntax.rq".attribute_location]. Policy: ["./language/attributes.rq".attribute_configuration]. Indexed on [analytical_types] `IdeaAttributeMap`; extract: [idea_extractor], [rust_extract]. Product surface: [ideas_summary_tabs] Attributes tab. | 0.070 | |
| file | done | Files store ideas and form ideasets. Documents use the `.rq` suffix ( ["./language/syntax.rq".file_suffix] ) and ["./language/syntax.rq".file_layout]. Indexed as ideaset kind `file` in [analytical_types]. | 0.094 | |
| grammar_rule | done | Grammar rules describe the syntax features. Requirements: ["./language/syntax.rq"]; lexer bridge: ["./language/parser_lexer.rq".lexer_bridge_to_syntax]. Langium: [reqlan_grammar]; comment grammar: [comment_grammar]; index-path AST: [rust_ast]. | 0.040 | |
| idea | done | A reqlan core unit is an idea. Syntax: ["./language/syntax.rq".simple_idea], ["./language/syntax.rq".block_idea]. Grammar: [reqlan_grammar] `Idea` / `OneLinerIdea`; index records: [analytical_types] `IdeaRecord`. Extract: [idea_extractor], [rust_extract]; AST: [rust_ast]. Product surface: [ideas_summary_tabs] Ideas tab per ["./extension/workspace-summary/ideas_summary/webview.rq".ontology_aligned_tabs]. | 0.110 | |
| idea_name | done | The idea name is a string / handle / variable that uniquely identifies the idea ( within the ideaset / file ). It should not be a reserved [keyword]. Syntax: ["./language/syntax.rq".idea_name]; grammar: [reqlan_grammar] `IdeaName`. | 0.069 | |
| ideaset | done | Ideasets are namespace containers for ideas. Syntax: ["./language/syntax.rq".ideaset]. Grammar: [reqlan_grammar] `IdeaSet`. Index kind `ideaset` plus `ideaset_member` edges: [analytical_types], [idea_extractor], [rust_index_types]. A [file] is an implicit ideaset ( ["./language/syntax.rq".file_layout] ). Product surface: [ideas_summary_tabs] Ideasets tab. | 0.134 | |
| import_statement | done | Imports describe references. Some [keyword] s are reserved for imports. Forms: ["./language/imports.rq".import_from], ["./language/imports.rq".import_namespace], ["./language/imports.rq".import_qualified]. Grammar: [reqlan_grammar] `Import`; resolve: [import_resolver]. | 0.063 | |
| keyword | done | As a language, reqlan has keywords that are reserved in some contexts. Import statement keywords: ["./language/imports.rq".import_keywords] ( `import`, `from`, `as` ). Grammar: [reqlan_grammar] — those tokens are keywords only at statement start. Idea names should not use reserved keywords ( [idea_name] ). | 0.057 | |
| idea_reference | done | Idea-to-idea ["./ontology.rq".reference]: bracket `[name]` / `[ideaset.name]` targets a local, imported, or same-file idea. Syntax: ["./language/syntax.rq".reference_brackets], ["./language/syntax.rq".same_file_reference], ["./language/syntax.rq".reference_qualified], ["./language/syntax.rq".reference_embedding], ["./language/syntax.rq".references_to_subidea]. Index edge kind `references` on [analytical_types] / [rust_index_types]. Extract: [idea_extractor], [rust_extract]. A `[ideaset.member]` form records the edge on the member leaf, not on the ideaset container. An attribute uses the same brackets. See ["./language/syntax.rq".attribute_namespacing]. Wikilink surface for the same edge kind: [link_reference]. Fan-out across files: [wildcard_reference]. | 0.125 | |
| link_reference | done | Link-shaped ["./ontology.rq".reference] surfaces that are not a bare `[idea]` bracket. Wikilink `[[target]]` ( optional alias pipe ): ["./language/syntax.rq".reference_wikilink] — indexes as idea-to-idea `references`, same as [idea_reference]. Markdown `[label](target)`: ["./language/syntax.rq".markdown_links] — label is not an idea ref; the target indexes as `file_reference` ( [file_reference] ). | 0.112 | |
| reference_edgecase | done | A quoted string is a [file_reference] only when it is inside brackets. Example of a file reference: ["./reference_types.rq"] Example of body text: " this is not a reference. rq " The file suffix does not change this rule. The parser must not make a file reference from quoted body text. The language server must not make a document link or a missing-file error from quoted body text. Related: [file_reference], ["./language/syntax.rq".naked_strings_in_body], ["./language/syntax.rq".reference_file]. | 0.112 | |
| url_reference | done | A bracket reference whose target is an absolute URL with a scheme and `://`. Example: [https://reqlan.com/]. Syntax: ["./language/syntax.rq".reference_url]. Index edge kind `url_reference` on [analytical_types] / [rust_index_types]. Extract: [idea_extractor], [rust_extract]. [check] does not treat a URL reference as a missing idea or a missing file. Unbracketed URLs in body prose stay text, not this kind. Related: [file_reference], [link_reference]. | 0.075 |
Reference labels
"../../../../packages/language/test/parsing.test.ts", "../../../../packages/language/test/parsing.test.ts:parse thanks-for-installing template", "../../../../packages/language/test/parsing.test.ts:same-line braces after a name parse as a block", "../../packages/language/test/parsing.test.ts:allows escaped closing brace in body prose", "../../packages/language/test/parsing.test.ts:backslash before @ at line start keeps it as body text", "../../packages/language/test/parsing.test.ts:does not parse a backticked file-only line range as a bracket reference", "../../packages/language/test/parsing.test.ts:does not parse unbracketed quoted paths as file references", "../../packages/language/test/parsing.test.ts:does not parse unbracketed urls as url references", "../../packages/language/test/parsing.test.ts:does not treat naked quoted path-like prose as an import reference", "../../packages/language/test/parsing.test.ts:keeps an extra tab on a later body line", "../../packages/language/test/parsing.test.ts:keeps end-of-line matching prose braces as text", "../../packages/language/test/parsing.test.ts:keeps extra indent on a later body line", "../../packages/language/test/parsing.test.ts:keeps inline braces in body prose as text", "../../packages/language/test/parsing.test.ts:keeps inline parentheses in body prose as text", "../../packages/language/test/parsing.test.ts:keeps inline prose brace pairs as text", "../../packages/language/test/parsing.test.ts:keeps later ideas after mid-line triple backticks", "../../packages/language/test/parsing.test.ts:keeps later ideas after nested @slides lists with mid-line @plan braces", "../../packages/language/test/parsing.test.ts:keeps naked quoted phrases in attribute scalar values", "../../packages/language/test/parsing.test.ts:keeps naked quoted phrases in block body text", "../../packages/language/test/parsing.test.ts:keeps naked quoted phrases in list items", "../../packages/language/test/parsing.test.ts:keeps naked quoted phrases in one-liner body after the idea name", "../../packages/language/test/parsing.test.ts:keeps naked quotes alongside bracket references on one line", "../../packages/language/test/parsing.test.ts:keeps pipe characters in body prose as text", "../../packages/language/test/parsing.test.ts:keeps single-quoted naked phrases in block body text", "../../packages/language/test/parsing.test.ts:malformed from-as import keeps later ideas parseable", "../../packages/language/test/parsing.test.ts:markdown link labels are not treated as reference prefix context", "../../packages/language/test/parsing.test.ts:parse code snippet in block idea", "../../packages/language/test/parsing.test.ts:parse dash and underscore delimited idea names", "../../packages/language/test/parsing.test.ts:parse docs.rq markdown folder link", "../../packages/language/test/parsing.test.ts:parse extension context-scope.rq module", "../../packages/language/test/parsing.test.ts:parse extension graph.rq library", "../../packages/language/test/parsing.test.ts:parse fenced code block in attribute value", "../../packages/language/test/parsing.test.ts:parse list items as one-liners and anonymous blocks", "../../packages/language/test/parsing.test.ts:parse markdown links without treating label as a reference", "../../packages/language/test/parsing.test.ts:parse mid-line triple backticks corpus without swallowing later ideas", "../../packages/language/test/parsing.test.ts:parse name-only ideas without a body", "../../packages/language/test/parsing.test.ts:parse ontology.rq ideas", "../../packages/language/test/parsing.test.ts:parse rust_port.rq keeps ideas after comment_span_align fence prose", "../../packages/language/test/parsing.test.ts:parse single-quoted import paths and idea names", "../../packages/language/test/parsing.test.ts:parse syntax-edge-cases.rq", "../../packages/language/test/parsing.test.ts:parse syntax.rq", "../../packages/language/test/parsing.test.ts:parse thanks-for-installing template", "../../packages/language/test/parsing.test.ts:parse tutorials.rq nested @slides lists without parser errors", "../../packages/language/test/parsing.test.ts:parses a large import prelude without repeated full-document brace scans", "../../packages/language/test/parsing.test.ts:parses a lone @ without a parser error and keeps later ideas", "../../packages/language/test/parsing.test.ts:parses bracketed url references", "../../packages/language/test/parsing.test.ts:parses from-import example line inside an attribute block value", "../../packages/language/test/parsing.test.ts:parses reframe requirement snippets with naked quoted UI labels", "../../packages/language/test/parsing.test.ts:parses self-contained ideas with apostrophe contractions in body prose", "../../packages/language/test/parsing.test.ts:parses top-level nameless braces without aborting later ideas", "../../packages/language/test/parsing.test.ts:parses valued attributes without a colon", "../../packages/language/test/parsing.test.ts:same-line braces after a name parse as a block", "../../packages/language/test/parsing.test.ts:still accepts optional colon before attribute values", "../../packages/language/test/parsing.test.ts:still reports a syntax error when another line is invalid", "../../packages/language/test/parsing.test.ts:treats fenced TypeScript braces as opaque for surrounding structure", "../../packages/language/test/parsing.test.ts:treats fenced rq example as opaque text", "../../packages/language/test/parsing.test.ts:treats mid-line @ as body text and line-start @ as attribute", "../../packages/language/test/parsing.test.ts:uses the first body line indent when that line is not at column 0", "../packages/language/test/parsing.test.ts:does not parse unbracketed quoted paths as file references", "../packages/language/test/parsing.test.ts:does not parse unbracketed urls as url references", "../packages/language/test/parsing.test.ts:keeps pipe characters in body prose as text", "../packages/language/test/parsing.test.ts:malformed from-as import keeps later ideas parseable", "../packages/language/test/parsing.test.ts:parse dash and underscore delimited idea names", "../packages/language/test/parsing.test.ts:parse example sub idea.rq", "../packages/language/test/parsing.test.ts:parse one-liner ideas", "../packages/language/test/parsing.test.ts:parse ontology.rq ideas", "../packages/language/test/parsing.test.ts:parse syntax.rq", "../packages/language/test/parsing.test.ts:parses bracketed url references", "../packages/language/test/parsing.test.ts:parses from-import example line inside an attribute block value", "../packages/language/test/parsing.test.ts:parses valued attributes without a colon", "../packages/language/test/parsing.test.ts:treats mid-line @ as body text and line-start @ as attribute", ../../../../packages/language/test/parsing.test.ts, ../../../../packages/language/test/parsing.test.ts:parse thanks-for-installing template, ../../../../packages/language/test/parsing.test.ts:same-line braces after a name parse as a block, ../../packages/language/test/parsing.test.ts:allows escaped closing brace in body prose, ../../packages/language/test/parsing.test.ts:backslash before @ at line start keeps it as body text, ../../packages/language/test/parsing.test.ts:does not parse a backticked file-only line range as a bracket reference, ../../packages/language/test/parsing.test.ts:does not parse unbracketed quoted paths as file references, ../../packages/language/test/parsing.test.ts:does not parse unbracketed urls as url references, ../../packages/language/test/parsing.test.ts:does not treat naked quoted path-like prose as an import reference, ../../packages/language/test/parsing.test.ts:keeps an extra tab on a later body line, ../../packages/language/test/parsing.test.ts:keeps end-of-line matching prose braces as text, ../../packages/language/test/parsing.test.ts:keeps extra indent on a later body line, ../../packages/language/test/parsing.test.ts:keeps inline braces in body prose as text, ../../packages/language/test/parsing.test.ts:keeps inline parentheses in body prose as text, ../../packages/language/test/parsing.test.ts:keeps inline prose brace pairs as text, ../../packages/language/test/parsing.test.ts:keeps later ideas after mid-line triple backticks, ../../packages/language/test/parsing.test.ts:keeps later ideas after nested @slides lists with mid-line @plan braces, ../../packages/language/test/parsing.test.ts:keeps naked quoted phrases in attribute scalar values, ../../packages/language/test/parsing.test.ts:keeps naked quoted phrases in block body text, ../../packages/language/test/parsing.test.ts:keeps naked quoted phrases in list items, ../../packages/language/test/parsing.test.ts:keeps naked quoted phrases in one-liner body after the idea name, ../../packages/language/test/parsing.test.ts:keeps naked quotes alongside bracket references on one line, ../../packages/language/test/parsing.test.ts:keeps pipe characters in body prose as text, ../../packages/language/test/parsing.test.ts:keeps single-quoted naked phrases in block body text, ../../packages/language/test/parsing.test.ts:malformed from-as import keeps later ideas parseable, ../../packages/language/test/parsing.test.ts:markdown link labels are not treated as reference prefix context, ../../packages/language/test/parsing.test.ts:parse code snippet in block idea, ../../packages/language/test/parsing.test.ts:parse dash and underscore delimited idea names, ../../packages/language/test/parsing.test.ts:parse docs.rq markdown folder link, ../../packages/language/test/parsing.test.ts:parse extension context-scope.rq module, ../../packages/language/test/parsing.test.ts:parse extension graph.rq library, ../../packages/language/test/parsing.test.ts:parse fenced code block in attribute value, ../../packages/language/test/parsing.test.ts:parse list items as one-liners and anonymous blocks, ../../packages/language/test/parsing.test.ts:parse markdown links without treating label as a reference, ../../packages/language/test/parsing.test.ts:parse mid-line triple backticks corpus without swallowing later ideas, ../../packages/language/test/parsing.test.ts:parse name-only ideas without a body, ../../packages/language/test/parsing.test.ts:parse ontology.rq ideas, ../../packages/language/test/parsing.test.ts:parse rust_port.rq keeps ideas after comment_span_align fence prose, ../../packages/language/test/parsing.test.ts:parse single-quoted import paths and idea names, ../../packages/language/test/parsing.test.ts:parse syntax-edge-cases.rq, ../../packages/language/test/parsing.test.ts:parse syntax.rq, ../../packages/language/test/parsing.test.ts:parse thanks-for-installing template, ../../packages/language/test/parsing.test.ts:parse tutorials.rq nested @slides lists without parser errors, ../../packages/language/test/parsing.test.ts:parses a large import prelude without repeated full-document brace scans, ../../packages/language/test/parsing.test.ts:parses a lone @ without a parser error and keeps later ideas, ../../packages/language/test/parsing.test.ts:parses bracketed url references, ../../packages/language/test/parsing.test.ts:parses from-import example line inside an attribute block value, ../../packages/language/test/parsing.test.ts:parses reframe requirement snippets with naked quoted UI labels, ../../packages/language/test/parsing.test.ts:parses self-contained ideas with apostrophe contractions in body prose, ../../packages/language/test/parsing.test.ts:parses top-level nameless braces without aborting later ideas, ../../packages/language/test/parsing.test.ts:parses valued attributes without a colon, ../../packages/language/test/parsing.test.ts:same-line braces after a name parse as a block, ../../packages/language/test/parsing.test.ts:still accepts optional colon before attribute values, ../../packages/language/test/parsing.test.ts:still reports a syntax error when another line is invalid, ../../packages/language/test/parsing.test.ts:treats fenced TypeScript braces as opaque for surrounding structure, ../../packages/language/test/parsing.test.ts:treats fenced rq example as opaque text, ../../packages/language/test/parsing.test.ts:treats mid-line @ as body text and line-start @ as attribute, ../../packages/language/test/parsing.test.ts:uses the first body line indent when that line is not at column 0, ../packages/language/test/parsing.test.ts:does not parse unbracketed quoted paths as file references, ../packages/language/test/parsing.test.ts:does not parse unbracketed urls as url references, ../packages/language/test/parsing.test.ts:keeps pipe characters in body prose as text, ../packages/language/test/parsing.test.ts:malformed from-as import keeps later ideas parseable, ../packages/language/test/parsing.test.ts:parse dash and underscore delimited idea names, ../packages/language/test/parsing.test.ts:parse example sub idea.rq, ../packages/language/test/parsing.test.ts:parse one-liner ideas, ../packages/language/test/parsing.test.ts:parse ontology.rq ideas, ../packages/language/test/parsing.test.ts:parse syntax.rq, ../packages/language/test/parsing.test.ts:parses bracketed url references, ../packages/language/test/parsing.test.ts:parses from-import example line inside an attribute block value, ../packages/language/test/parsing.test.ts:parses valued attributes without a colon, ../packages/language/test/parsing.test.ts:treats mid-line @ as body text and line-start @ as attribute