From a04244ac8622e7653efc1da88de4ae12a313e165 Mon Sep 17 00:00:00 2001 From: Drew T <50529377+Druthulu@users.noreply.github.com> Date: Fri, 2 Oct 2026 15:25:08 -0600 Subject: [PATCH] T11: progress snapshot P3.39 T11, timeline and README Types cast-gate clause --- docs/progress.md | 2 -- docs/readability-progress.tsv | 1 + docs/readability.md | 1 + docs/story-timeline.md | 2 +- docs/story-timeline.svg | 2 +- docs/struct-map.md | 2 +- phase-ends/current/logs/T11.md | 12 ++++++++++++ phase-ends/current/tasks/INDEX.md | 1 + phase-ends/current/tasks/T11.md | 26 ++++++++++++++++++++++++++ 9 files changed, 44 insertions(+), 5 deletions(-) create mode 100644 phase-ends/current/logs/T11.md create mode 100644 phase-ends/current/tasks/T11.md diff --git a/docs/progress.md b/docs/progress.md index e7c849de74..93b3230068 100644 --- a/docs/progress.md +++ b/docs/progress.md @@ -18,5 +18,3 @@ REAL matches: CdQueueBusy CdReadRequest CdReadSectorReadyCB CdReadStateMachine D NON_MATCHING: build SHA1: 143dbb89f34491258bbc27810d0a12ec8b43a8dd (byte-identical) - -empties audit: 43/43 genuine jr;nop (all clean) diff --git a/docs/readability-progress.tsv b/docs/readability-progress.tsv index b4c355cb1d..37aa08d12a 100644 --- a/docs/readability-progress.tsv +++ b/docs/readability-progress.tsv @@ -7,3 +7,4 @@ date label commit definitions narrow_decls callees kr_empty narrow pinned_rows p 2026-09-12 t4-close bd7d32ec2316b2a150ad41b0ac9d6da3786dff92 16094 1796 76 1373 423 1 1 411820 177902 502985 408978 60664 13800 19543 18888 36681 7255 1179 5989 527 206 2823 18213 99.2 5262 199 418 96 2026-09-30 P38 close c82a24899467ab87461bcdf28f4d320cc309c6a3 16094 229 24 216 13 0 0 411816 176269 502983 408974 60666 13800 19543 18892 36853 1650 1021 600 523 53 496 19122 99.2 5293 200 418 96 2026-10-02 P3.39 T5: forms I/M closed 2407750392ce8a73f18f5c1fad968e78845bc108 16094 229 24 216 13 0 0 260306 320402 336219 257469 49831 13790 15129 18889 173103 1650 1021 600 523 53 496 17965 98.8 5293 200 418 96 +2026-10-02 P3.39 T11: chart catch-up e7203a358b11094fefedf3be8b656c147603143b 16094 229 24 216 13 0 0 260306 320402 336219 257469 49831 13790 15129 18889 173103 1650 1021 600 523 53 496 17965 98.8 5293 200 418 96 diff --git a/docs/readability.md b/docs/readability.md index 0bf1441be5..808f8a5b58 100644 --- a/docs/readability.md +++ b/docs/readability.md @@ -16,6 +16,7 @@ | 2026-09-12 | t4-close | `bd7d32ec2` | 1796 | 1373 | 423 | 1 | 411820 | 177902 | **502985** | 36681 | 7255 (1179 / 5989) | 527 | 206 / 2823 | 18213 (99.2 %) | 5262 | 418 | | 2026-09-30 | P38 close | `c82a24899` | 229 | 216 | 13 | 0 | 411816 | 176269 | **502983** | 36853 | 1650 (1021 / 600) | 523 | 53 / 496 | 19122 (99.2 %) | 5293 | 418 | | 2026-10-02 | P3.39 T5: forms I/M closed | `240775039` | 229 | 216 | 13 | 0 | 260306 | 320402 | **336219** | 173103 | 1650 (1021 / 600) | 523 | 53 / 496 | 17965 (98.8 %) | 5293 | 418 | +| 2026-10-02 | P3.39 T11: chart catch-up | `e7203a358` | 229 | 216 | 13 | 0 | 260306 | 320402 | **336219** | 173103 | 1650 (1021 / 600) | 523 | 53 / 496 | 17965 (98.8 %) | 5293 | 418 | **How to read it.** A *lying declaration* is a call site whose in-scope declaration names fewer parameters than the callee's own definition. It is not a style problem: on this processor an argument travels in a diff --git a/docs/story-timeline.md b/docs/story-timeline.md index d6b9efa23a..33069ee4ac 100644 --- a/docs/story-timeline.md +++ b/docs/story-timeline.md @@ -103,6 +103,6 @@ | 2026-09-29 | 40 | P37 (v2.3.0) | 218 | 100.0% | 100.0% | 100.0% | 100.0% | 0 | 789 / 2091 | 3,730 | — | — | | 2026-09-30 | 93 | | 218 | 100.0% | 100.0% | 100.0% | 100.0% | 0 | — | — | 502,983 | 1,650 | | 2026-10-01 | 73 | | 218 | 100.0% | 100.0% | 100.0% | 100.0% | 0 | — | — | — | — | -| 2026-10-02 | 76 | | 218 | 100.0% | 100.0% | 100.0% | 100.0% | 0 | — | — | 336,219 | 1,650 | +| 2026-10-02 | 81 | | 218 | 100.0% | 100.0% | 100.0% | 100.0% | 0 | — | — | 336,219 | 1,650 | 82 dated rows · phase ticks from the 38 PhaseEnds · the chart: `docs/story-timeline.svg`. diff --git a/docs/story-timeline.svg b/docs/story-timeline.svg index 54fe438dac..9501d02ad3 100644 --- a/docs/story-timeline.svg +++ b/docs/story-timeline.svg @@ -86,7 +86,7 @@ register pins + asm statements (the lever series, 98 increments): 53,221 → 3,730 raw pointer-cast dereferences — the one-form regex count (until the census, 2026-09-12): 414,148 → 411,850 - + raw pointer-cast dereferences — the four-form census (2026-09-12 →; a new instrument, its own 100 %): 503,016 → 336,219 generated by tools/timeline.py — keyed by date diff --git a/docs/struct-map.md b/docs/struct-map.md index 251c8f30f5..610466a07a 100644 --- a/docs/struct-map.md +++ b/docs/struct-map.md @@ -1,6 +1,6 @@ # The struct map — the types the fleet's cast sites need (Phase 37 T1) -> **Generated by `tools/type_census.py` at `2407750392` (2026-10-02T21:02:21Z); never typed (R75).** Every raw pointer-cast dereference in `src/` was assigned to a base (a parameter, a local, a global by value or by address, an absolute address) and the bases were clustered by EVIDENCE only — the same global symbol, an argument passed to a callee's parameter, an assignment or return, a pointer field read, a shared body's fleet-wide identity — never by a similar offset signature. Each cluster is one type the tree needs. Names are placeholders (`Unkstruct_`: the lowest global instance's address, else the lowest member function's); fields are placeholders (`unk`) until Phase 38 cites evidence. +> **Generated by `tools/type_census.py` at `2992188ecf` (2026-10-02T21:16:57Z); never typed (R75).** Every raw pointer-cast dereference in `src/` was assigned to a base (a parameter, a local, a global by value or by address, an absolute address) and the bases were clustered by EVIDENCE only — the same global symbol, an argument passed to a callee's parameter, an assignment or return, a pointer field read, a shared body's fleet-wide identity — never by a similar offset signature. Each cluster is one type the tree needs. Names are placeholders (`Unkstruct_`: the lowest global instance's address, else the lowest member function's); fields are placeholders (`unk`) until Phase 38 cites evidence. **17965 types explain 332308 of 336219 dereference sites (98.8 %); 3911 sites have a base the census could not classify; 813 types carry a width conflict.** Merges by evidence: param 39296, assign 19429, arg 10512, field 6555, ret-of 6018, return 1535, assign& 1401, arg& 253, nested 9. diff --git a/phase-ends/current/logs/T11.md b/phase-ends/current/logs/T11.md new file mode 100644 index 0000000000..b4f12d7677 --- /dev/null +++ b/phase-ends/current/logs/T11.md @@ -0,0 +1,12 @@ +# T11 log — progress snapshot and chart catch-up + +Timeline: +- Start: `readability_progress --check` STALE (last row T5 at 240775039, HEAD 2992188ec); `timeline --check` fresh. +- Snapshot-refusal cause: T5.c3 log:28 "readability snapshot refused (a stale census?)"; T5.md log:24 STALE census at .run/P39/census. `grep type_census tools/restruct_cycle.sh` → :66 census to default .run/P37/census; readability_progress.py:62-75 picks the newest .run/P/census (P39) and refuses on src stamp mismatch. Workaround: refresh P39 census before snapshot. +- readability_progress.py:140-148: --check = last row commit == HEAD (strict). +- Coder brief T11.c1 (opus55): progress.py README Types clause with live --check-casts --residue per-form raw + covered/uncovered, unbacked, lying; commit e7203a358b; log logs/T11.c1.md. Coder refreshed `.run/P39/census` and ran the gate (.run/logs/t11_cc.log): `check-casts: raw P=257464 I=49831 X=13790 M=15128 (uncovered P=0 I=0 X=0 M=0); macros CAST_ALIAS=1173 CAST_SIGN=8429 CAST_WIDTH=10410 CAST_MISALIGNED=624 CAST_NONSTRUCT=327 (unbacked 0); lying=229 (ledgered 0)`. +- Expert: `readability_progress --snapshot 'P3.39 T11: chart catch-up' && timeline.py && progress.py --readme` (.run/logs/t11_snap.log) rc 0. +- Verify: readability_progress --check OK at e7203a358 == HEAD; timeline --check fresh (82 rows); progress --readme --check fresh. +- Rejected: per-debt panels in story-timeline.svg (not cheap; deferred 3.40 per D1). +- Observation: P37 vs P39 census differ by 6 P/M sites (336,213 vs 336,219); not investigated. +Retrievers: none. diff --git a/phase-ends/current/tasks/INDEX.md b/phase-ends/current/tasks/INDEX.md index b3ad4614ba..3617c5940b 100644 --- a/phase-ends/current/tasks/INDEX.md +++ b/phase-ends/current/tasks/INDEX.md @@ -6,3 +6,4 @@ T3 | done | rung S sweep, overlays (forms P and X) | - | tasks/T3.md | logs/T3.m T4 | blocked | rung S sweep, md_*, main and shared bodies (forms P and X) | - | tasks/T4.md | logs/T4.md | - T10 | done | residue coverage gate (--check-casts --residue) and 3.40 sizing | - | tasks/T10.md | logs/T10.md | - T5 | done | globals and absolute addresses to declared symbols (forms I and M, residual non-struct bases) | - | tasks/T5.md | logs/T5.md | - +T11 | done | progress snapshot and chart catch-up | - | tasks/T11.md | logs/T11.md | - diff --git a/phase-ends/current/tasks/T11.md b/phase-ends/current/tasks/T11.md new file mode 100644 index 0000000000..19a39bfa9d --- /dev/null +++ b/phase-ends/current/tasks/T11.md @@ -0,0 +1,26 @@ +# T11 — progress snapshot and chart catch-up + +Status: done | expert: expert-opus55 | ctx-at-completion: n/a | commit: see COMMIT | coder runs: c1 opus55 done (e7203a358b) +Done: README Types now states the live `--check-casts --residue` gate numbers with the per-form covered/uncovered split; readability row 'P3.39 T11: chart catch-up' at e7203a358, timeline and README regenerated. +progress: raw P=257,464 I=49,831 X=13,790 M=15,128 (gate, P37 census) / 336,219 four-form total (P39 census); uncovered P=0 I=0 X=0 M=0; macro sites 20,963 (unbacked 0); levers 3,711 (1,868 pins + 1,843 asm); lying 229 over 24 callees (ledgered 0); struct defs 1,650; gates passed: readability_progress --check, timeline --check, progress --readme --check. +Files: +- tools/progress.py — fleet() reads the newest residue census + check_casts_verdict on its paired type census; readme_block adds the cast-gate clause (c1) +- README.md, docs/progress.json, docs/progress.md — regenerated +- docs/readability-progress.tsv, docs/readability.md — P39 T11 row +- docs/story-timeline.md, docs/story-timeline.svg — regenerated (82 rows) +- docs/struct-map.md — rewritten by the P39 census refresh +Decisions: +- Clause omitted (not printed stale) when the residue census is absent or older than its paired type census. +- Per-debt panels on a date axis in story-timeline.svg not built: not cheap (timeline.py change + new tsv series); stays deferred to 3.40 with D1's "uncovered series". +Deviations: +- c1: unbacked/lying come from `type_census.check_casts_verdict` on the paired census, not residue_census.json (the JSON lacks them). +Findings: +- Snapshot refused on every T5 batch: cause confirmed. `restruct_cycle.sh:66` reruns `type_census.py` into the default `.run/P37/census`; `readability_progress.py` reads the newest `.run/P/census` (P39), which the cycle never refreshes, so the src stamp differs → "census is STALE" → cycle prints "readability snapshot refused" and continues. Workaround (used here): `type_census.py -j 16 --out-dir .run/P39/census` before `--snapshot`. Fix candidate (not in T11 files): cycle census writes to the newest census dir, or `readability_progress` takes `--census-dir`. +- Two census dirs disagree by 6 sites: gate (P37 dir) P=257,464 M=15,128 total 336,213; P39 census P=257,469 M=15,129 total 336,219. README Types carries both (four-form total from P39, gate clause from P37). Not investigated. +- Brief's "I=12157, M=13704" uncovered figures do not match the live gate (I/M uncovered 0, also T5 Verified); README shows the live gate. +Gotchas: +- harness: `readability_progress.py --check` is OK only when the last row's commit == HEAD; the commit that records the row makes it STALE again. Verify is therefore true at the snapshot commit's parent tree, never after the commit; `--help` does not say so. +- workflow: D1 snapshot = `type_census.py -j 16 --out-dir .run/P39/census` → `readability_progress.py --snapshot "