Skip to content

Commit 39fdc96

Browse files
olwangclaude
andcommitted
docs(selfhost-ledger): checker at 24 codes (2i) — token-decidable tier exhausted
RS0021/RS0029/RS0023/RS0035/RS0027/RS0014/RS0018/RS0019 landed; corpus byte-exact 619/619 (sub-agent-verified; local docker gate wedged mid-session, re-verify pending on env recovery). Remaining diagnostics need the type-inference + borrow-checker engine. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1 parent be6fa09 commit 39fdc96

1 file changed

Lines changed: 32 additions & 7 deletions

File tree

docs/ledgers/rss-selfhost-ledger.md

Lines changed: 32 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1031,13 +1031,38 @@ gap is VM value-representation / intrinsic-dispatch cost (the next big lever).
10311031
(RS0007) / fd688f09 (RS0024) / e559c1f2 (RS0008) / 89559315 (RS0009). MAINTENANCE
10321032
NOTE: the RS0024 stdlib-type list is derived from the `.rssi` interfaces at
10331033
authoring time — regenerate if those interfaces change.
1034-
- **Diagnostics (step 2, milestone 2h — IN PROGRESS):** **RS0021** NON_EXHAUSTIVE_
1035-
MATCH — the last diagnostic. Needs scrutinee type inference (the analyzer reads
1036-
`hir_expr_type_name`), but the corpus is tractable: only `_` short-circuits (a
1037-
top-level bare ident is a Variant, not a catch-all); user-sum/Bool scrutinees are
1038-
params or `let x = ctor`/local-call (locally inferable → all-variant coverage); and
1039-
Option/Result-returning stdlib-call scrutinees fall through to the Some+None/Ok+Err
1040-
fallback (which matches the analyzer). Ported spec + sub-agent in flight.
1034+
- **Diagnostics (step 2, milestone 2h — DONE, 2026-07-02):** **RS0021** NON_EXHAUSTIVE_
1035+
MATCH. Needs scrutinee type inference (the analyzer reads `hir_expr_type_name`), but
1036+
the corpus is tractable: only `_` short-circuits (a top-level bare ident is a Variant,
1037+
not a catch-all); user-sum/Bool scrutinees are params or `let x = ctor`/local-call
1038+
(locally inferable → all-variant coverage); Option/Result-returning stdlib-call
1039+
scrutinees fall through to the Some+None/Ok+Err fallback (matches the analyzer).
1040+
Ported the exhaustiveness engine (arm segmentation + scrutinee-root inference +
1041+
Option/Result/Bool/sum/List/tuple/fallback coverage) via sub-agent; 4 false-positives
1042+
hunted+fixed (`sum` as a var name, `match true`, List slice patterns, `?`-terminated
1043+
scrutinee). Commit 91c43189.
1044+
- **Diagnostics (step 2, milestone 2i — DONE, 2026-07-03):** the remaining token-
1045+
decidable tail, via sub-agents (one crashed on an API error after 2 codes — its
1046+
uncommitted work was green and recovered; lesson: commit each code immediately).
1047+
Added **RS0029** (await-outside-async), **RS0023** (Fd outside internal boundary),
1048+
**RS0035** (lower-name-conflict — ported is_valid_rust_ident + keyword set + default
1049+
lowering), **RS0027** (unknown-protocol — visible = stdlib interfaces + file `protocol`
1050+
decls; Managed/Struct/Resource excluded), **RS0014/RS0018/RS0019** (noalloc/no_block/
1051+
no_panic body violations — RS0009-style call scan). `CHECKER_TARGET_CODES` = **24
1052+
codes**; `checker_parity_corpus` byte-exact **619 files, 0 mismatches, 0 run-failures**.
1053+
Commits 240ce274/9715367f/78012146/3ad62a2b/be6fa09d.
1054+
- **THE TOKEN-DECIDABLE TIER IS ESSENTIALLY EXHAUSTED (24 codes).** SKIPPED because they
1055+
need type inference / callee-signature resolution / borrow analysis (measured, not
1056+
ducked): RS0201 (unnamed-arg — needs callee visibility+kind), RS0013 (invalid-try —
1057+
operand/error-type inference), RS0022 (async-not-consumed — callee is_async), RS0036
1058+
(payload transferability), RS0202 (missing-data-effect — callee param-effects); RS0038
1059+
(char-literal) has 0 corpus fixtures. THE REMAINING BULK (~260 corpus files when ALL
1060+
~100 codes are targeted → 305 mismatch): RS0207/0208/0209/0210 (type/return/control-
1061+
flow/operator mismatch), RS0301-0313 + RS06xx + RS07xx (ownership/borrow), RS0015
1062+
(unsupported-syntax), RS0101 (feature-gating), RS0025/0026 (unknown-field/binding).
1063+
These require a self-hosted TYPE-INFERENCE + BORROW-CHECKER engine — the whole semantic
1064+
frontend — which is the genuine next phase (its own multi-session effort), NOT more
1065+
token predicates.
10411066
- **Lexer spans (step 3):** added a `len` field to the shared `Tok`
10421067
(= consumed source span `j-i`, matching the Rust lexer's `index-start`) and made
10431068
`lexer.rss` emit the real `<line>:<col>:<len>` prefix. `lexer_parity_corpus` is

0 commit comments

Comments
 (0)