Skip to content

Commit 3bc1ba8

Browse files
committed
docs(handover+ledger): session close — user-requested stop; D-430 narrowed to the var-alias gap
Smell-audited: 1: stop recorded per handover_framing; D-430 resume point is a minimal repro + named fix site
1 parent bef6119 commit 3bc1ba8

2 files changed

Lines changed: 8 additions & 1 deletion

File tree

‎.dev/debt.yaml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1315,7 +1315,7 @@ active:
13151315
barrier: "blocked-by: a reliable reproducer. 2026-06-13 attempts: 200 iterations in-process = 0 mismatches; 3000 iterations under 6x `yes` CPU load = 0 mismatches. So the race needs the gate's SPECIFIC contention (≈16 parallel cljw processes + the e2e harness preempting the agent worker vs main thread vs a cross-thread GC collect), not mere in-process concurrency or coarse CPU load. LEAD for the next attempt: agent.zig docstring flags the `send` FABRICATION WINDOW (the `[f & args]` action vector is a Zig local, not yet GC-rooted, before the queue lock — GC-ROOT note ~:35) — a cross-thread collect during that window is the prime suspect for how `await`'s completion Promise (a heap value) displaces the first action's arg. NOTE: the leaked arg `1` is an IMMEDIATE (not heap), so the corruption is at the action-VECTOR level (the vector's slot/memory), not the int — re-read fabrication-window rooting + the await barrier-action injection order. Fix only with a reproducer in hand (a rare race fixed blind cannot be verified)."
13161316
last_reviewed: "2026-06-13"
13171317
- id: "D-430"
1318-
status: "RE-NARROWED 2026-07-02 (was: instaparse mis-tokenization hunt). The per-run-varying garbage-bytes symbol NameError that had OVERTAKEN this row was a 3-layer GC-rooting bug family, ALL FIXED via ADR-0169 + same-arc residuals: (1) analysis/compile/deserialize-time constants unrooted until execution (AnalysisFrame + 9 seam brackets + 5 producers); (2) formToValue builder accumulators unrooted (the D-253 Form->Value asymmetry; EvalFrame'd); (3) TypeDescriptor method_table/meta had NO GC trace (= gc_rooting C8's root cause; .type_descriptor trace + markDescriptorValues). instaparse require+parser-build is now byte-DETERMINISTIC across runs. REMAINING (the actual current frontier): `(insta/parser \"S = 'a'\")` fails at instaparse core.cljc:361:21 with a deterministic Name error (the enable-tracing defn body; likely the `#'gll/TRACE` alias var-ref or :reload arg at analysis) — a plain parity gap, NOT memory-unsafe. Repro: cljw -cp ~/.gitlibs/libs/instaparse/instaparse/<sha>/src + (require 'instaparse.core). The ORIGINAL mis-tokenization investigation (GLL parse-tree divergence) is MOOT until this load-blocking gap clears — re-derive after core.cljc loads."
1318+
status: "NARROWED FURTHER 2026-07-02 (session close): the core.cljc:361 failure is EXACTLY the `var` special form not resolving NS ALIASES — minimal repro `(ns a) (def x 1) (ns b (:require [a :as al])) (var al/x)` -> Unable to resolve var. Fix site: special_forms.zig analyzeVar (line ~763: `env.findNs(ns_name)` misses `current_ns` alias table; FQN + current-ns work). S-sized fix + corpus line; unblocks instaparse.core load. RE-NARROWED 2026-07-02 (was: instaparse mis-tokenization hunt). The per-run-varying garbage-bytes symbol NameError that had OVERTAKEN this row was a 3-layer GC-rooting bug family, ALL FIXED via ADR-0169 + same-arc residuals: (1) analysis/compile/deserialize-time constants unrooted until execution (AnalysisFrame + 9 seam brackets + 5 producers); (2) formToValue builder accumulators unrooted (the D-253 Form->Value asymmetry; EvalFrame'd); (3) TypeDescriptor method_table/meta had NO GC trace (= gc_rooting C8's root cause; .type_descriptor trace + markDescriptorValues). instaparse require+parser-build is now byte-DETERMINISTIC across runs. REMAINING (the actual current frontier): `(insta/parser \"S = 'a'\")` fails at instaparse core.cljc:361:21 with a deterministic Name error (the enable-tracing defn body; likely the `#'gll/TRACE` alias var-ref or :reload arg at analysis) — a plain parity gap, NOT memory-unsafe. Repro: cljw -cp ~/.gitlibs/libs/instaparse/instaparse/<sha>/src + (require 'instaparse.core). The ORIGINAL mis-tokenization investigation (GLL parse-tree divergence) is MOOT until this load-blocking gap clears — re-derive after core.cljc loads."
13191319
category: "interop"
13201320
barrier: "none — repro in hand. NOT a regex-engine gap (terminals compile + match == clj, disproven). The instaparse GLL parse of the grammar string diverges from clj (mis-tokenizes 'a' as :regexp) — an open-ended instaparse-internals / GLL-engine debug (dump+diff the cfg `:rules` tree cljw vs clj). The instaparse chain's deep end; a substantial focused future push."
13211321
last_reviewed: "2026-07-02"

‎.dev/handover.md‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,13 @@ Publicization pass (user's 2nd directive) — ALL committed + pushed + CI GREEN:
8686
→ English, provenance `~/Documents/OSS`→repo-relative, ladder.md. Inventory:
8787
`private/notes/2026-07-01-publicization-cleanup-inventory.md`.
8888

89+
## Stopped — user requested
90+
91+
User instruction (2026-07-02): 「そろそろきりがよいですか?であれば、このへんで
92+
区切りたいです。」 Session closed at a clean boundary (full gate green 23:34, all
93+
pushed). Resume at D-430's narrowed frontier: the `var` special form does not
94+
resolve NS ALIASES (minimal repro + fix site in the D-430 row; S-sized).
95+
8996
**First task on resume:** continue **Track B** (easiest-first drain; note
9097
2026-07-02 order changes: D-517 UNBLOCKED, D-473 folded into D-513):
9198
**D-522** = the GRADUAL ~2962-line AI-narration/pointer de-pointering (worst-offender

0 commit comments

Comments
 (0)