Skip to content

Commit 6d14b18

Browse files
olwangclaude
andcommitted
docs(selfhost-ledger): record SH-027 — AST-dump parity COMPLETE at 619/619
Full-corpus byte-exact AST-structure parity (step 1 of the 3-step frontend object-parity goal). Ledger SH-027 + memory updated with the final long-tail (protocols, let-else, if-let, tuples, scoped-view, effect-closure). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1 parent 30a327f commit 6d14b18

1 file changed

Lines changed: 24 additions & 0 deletions

File tree

docs/ledgers/rss-selfhost-ledger.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -868,6 +868,30 @@ gap is VM value-representation / intrinsic-dispatch cost (the next big lever).
868868
across all backends; RS0037 removed as a restriction and repurposed for arity;
869869
spec §20.1 amended.
870870

871+
### SH-027 — AST-dump parity COMPLETE: streaming rss producer at 619/619 byte-exact
872+
873+
- **Context:** completes the SH-025 AST-structure arm (step 1 of the 3-step
874+
frontend-object-parity goal). The self-hosted streaming producer
875+
(`selfhost/astdump.rss`) now matches the Rust oracle (`parse_source_raw` via
876+
`crate::selfhost_parity`) **byte-for-byte over the ENTIRE corpus**.
877+
- **Reach:** **619 / 619** corpus files byte-exact (**100%**), **0 run-failures**.
878+
`AST_CORPUS_PARITY_FLOOR = 619`; `ast_parity_samples` fast gate over 62 curated
879+
`samples/ast/*.rss` (added coverage for every construct fixed in the final push).
880+
- **Final long-tail closed (592 → 619):** protocols (methods as source-order
881+
functions with Self:Managed injection; `protocol`/`protocol-impl`+`mapping`
882+
passes), protocol-impls, let-else (`parse_block(open+1)` off-by-one reproduced),
883+
if-let (→ two-arm match), tuples (types `__TupleN`, exprs `__TupleN(item0:…)`,
884+
let-destructure), scoped-view desugar (`view v = e` + rest-of-block → `with`),
885+
match-arm `,`/`;` separator skipping, effect-annotated closure `read || {…}`
886+
(special-cased before the binary split; general `read <expr>` stays after it so
887+
`read r * read r` = `(read r)*(read r)`).
888+
- **Method:** ported each reference parser predicate faithfully (LENIENT/surface
889+
recovery — malformed_* markers, not failures). Every batch re-ran the full
890+
`--release` corpus to catch regressions (one caught + fixed: the effect/binary
891+
ordering).
892+
- **Status:** step 1 DONE. Remaining ladder = SH-026 (step-2 deeper semantic
893+
checks, step-3 AST spans).
894+
871895
### SH-025 — AST-dump parity: streaming rss producer at 543/587, only malformed-recovery remains
872896

873897
- **Context:** step 2 of frontend object parity (after the AST-dump format +

0 commit comments

Comments
 (0)