# Independent bounded-outline source review — 2026-09-11 Reviewer: Codex-9e8r6t `/root/linux_readiness`, acting only as a Windows/product source reviewer. Linux remains paused under user issue 1 comment 350. Read coordination 338/344/349/351/359 and current source. No patch application, production edit, compiler, test, UI, WSL, staging or commit was performed. **Outcome: one P2 correction is required before App integration; one P3 cost improvement is advisable.** The reviewed proposals and their prepared tests remain unexecuted. Source reasoning is not a compiler or runtime pass. ## P2 — Header identity recognition exceeds the language's spelling rule Exact locations: `.local/text-navigation-probe-20260911/outline-seam.patch:190` retains `Id::parse_str(&text).ok()` in the shared walk; `source_symbols.rs:419`–423 repeats that permissive decoding. Production `crates/oa-core/src/language.rs:1233`–1244 first requires 36 decoded bytes and hyphens at 8/13/18/23. The installed uuid 1.26.0 `src/parser.rs:147`–158 explicitly also accepts compact, braced and URN forms. Concrete unexecuted falsifiers substitute each literal below into `oa_actor a "A" id "LITERAL" {}`: - `00000000000000000000000000000001` - `{00000000-0000-0000-0000-000000000001}` - `urn:uuid:00000000-0000-0000-0000-000000000001` The real declaration parser rejects each spelling. The proposed outline returns `Some(Id(1))`; the documented adapter zips it with `id_literal_span`, and query `identity` at `source_symbols.rs:560`–566 can issue a cross-revision authored anchor. A malformed header is therefore promoted to an identity that the source language does not admit. Tolerating the draft is appropriate; minting this navigation identity contradicts the intended malformed-ID contract. The proposal author confirmed that this permissiveness was inherited, not intentional policy. Use the existing decoded header-spelling rule in a shared narrow predicate; retain the exact quoted literal span but return no authored ID for these forms. Keep Unicode escapes that decode to an admitted hyphenated spelling valid, and retain accepted uppercase hex. Ensure the trusted query adapter cannot reintroduce permissive decoding. Prepared regressions should check outline `id == None`, preserved literal bytes, and no authored anchor for all three counterexamples. Compatibility decision: sharing the corrected walk changes `analyze`'s ID result for these already-invalid headers, although its public shapes remain unchanged. Record and test that intentional correction; do not silently describe legacy analysis behavior as byte-for-byte unchanged or add a competing header parser. ## P3 — Unicode path correction repeatedly folds previously visited paths `query-unicode-path.patch:10`–11 correctly matches core `source_project.rs:349`'s Unicode lowercase collision policy, including contextual Greek sigma. However, each file folds every earlier path again. With F paths, this performs F(F−1)/2 repeated lowercase allocations/comparisons; increasing loaded files can make rebuilding the index unnecessarily expensive. Aggregate input admission at `source_symbols.rs:348`–352 occurs first, so this is not an unbounded-allocation or correctness claim. Prefer one folded key per path in bounded scratch storage, as core does, after aggregate path admission. No timing test or measured performance regression is claimed by this review. ## Other reviewed invariants and caller obligations - The new outline checks source bytes before token allocation and token count before scanning the next token. Its declaration cap precedes ID decoding and alias/kind copies. Significant-token/body arrays are O(admitted tokens), and brace recovery is iterative. The lexer and declaration walk are shared with legacy entry points; the new entry does not call lint/model parsing or I/O. - Original UTF-8 byte spans and CRLF are retained. The EOF fallback at `outline-seam.patch:199`–203 includes the consumed name/ID token; closed-body matching retains source extent. Full scanning, lexical errors, unmatched braces and valid syntax remain distinct. Budget errors return no partial result. - Query maps preserve repeated aliases and IDs. `references_to:590` refuses ambiguous aliases; `resolve_anchor:570` checks uniqueness across all loaded files, including detached copies. Snapshot handles reject changed keys. - App must allocate finite aggregate budgets before accumulating per-file outlines and pass remaining budgets, rather than granting each file the full workspace allowance. Supply exact lexer classes and proven header roles: query preflight validates bounds, not their syntactic provenance. - Set full-file coverage only after successful outline completion. Included membership, complete-project scope and validated evidence require independent proof for these exact bytes. Empty matches in partial scope are not proof of no project references. Every input/membership/evidence change must advance the snapshot key. Convert byte columns explicitly for editor coordinates, and revalidate revision on navigation dispatch. The outline alone supplies none of those App lifecycle guarantees. ## Frozen inputs Hashes independently read before review: | Artifact | SHA256 | | --- | --- | | outline-seam.patch | 40B41DFB71F0DAED322FB6B33943CE2EB529D42337E9EA945A67D1F688D6FF36 | | query-unicode-path.patch | 6978635817B1CB36BBA82D8D45B17BB3C58316122DCC8CD4DE419D343C86A9DC | | source_symbols.rs | CF82E34544CE508E446787B6335AEFE97E146EA5E7CCA0A9788DEB9097F8F7BB | | OUTLINE-NOTES.md | 3230D5B33F4FF29114FCACB4E2017F95630D339B88FB7AED0894AAE346A9F890 | | production language.rs | 638F08A42E9CF4996B5D07F69B4D6F517A518369F3604D25BE1006E40E080765 | | production source_project.rs | 1394370BCC5908873B830C2C11312E6E1611AF41F46C4F43CA0A6BCB713BB466 | Root owns correction authorization, immutable test execution, integration and native acceptance. Peer956's source8/codec/lifecycle ownership is unchanged.