Skip to content

Commit 1e9b88c

Browse files
committed
docs(debt): D-563 fully discharged — moved active -> discharged (a/a2/b/c landed, d = AD-043)
1 parent a4edd04 commit 1e9b88c

1 file changed

Lines changed: 53 additions & 53 deletions

File tree

‎.dev/debt.yaml‎

Lines changed: 53 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -49,59 +49,6 @@ active:
4949
lastModified/renameTo/createNewFile set, Locale getters, Matcher
5050
region/replace family).
5151
last_reviewed: "2026-07-17"
52-
- id: "D-563"
53-
status: |-
54-
open (2026-07-16, the D-562 inventory's enumerated residuals — each
55-
verified against real clj this cycle, deferred with a named reason):
56-
(a) DISCHARGED 2026-07-16 — defrecord ns-qualified identity landed:
57-
TypeDescriptor carries defining_ns + a precomputed record_type_hash;
58-
records print `#user.Pt{…}`, the READER constructs them back
59-
(`#ns.Name{…}` → recordFromMap), and record hasheq matches clj
60-
(type-hash XOR mapHasheq; corpus records_method_values.txt,
61-
AD-035 retired as parity). deftype `(class …)` naming stays simple
62-
(AD-003/044 scope — revisit only with a consumer).
63-
(a2) DISCHARGED 2026-07-17 — all three 1.12 method-value forms now
64-
carried: statics (2026-07-16), `Class/.instanceMethod` (instance
65-
method as receiver-first fn — the ADR-0174 merged tables made
66-
cljw's method ABI already receiver-first, so `method_val` IS the
67-
fn; native-backed classes fall back to the tag-keyed descriptor)
68-
and `Class/new` (the `<init>` entry as a fn). analyzeSymbol lifts
69-
the value; call heads fall through to analyzeCall. e2e: 6 cases on
70-
phase14_host_class_identity (map String/.length, Thread/new,
71-
StringBuilder chain, Date/new higher-order), clj-1.12-oracle-matched.
72-
(b) DISCHARGED 2026-07-17 — Vars carry :line/:column/:file (analyzeDef
73-
mints them under user ^meta/:doc, compiler-wins on collision per clj
74-
oracle) AND def meta now RIDES THE AOT WIRE: DefNode.meta_expr (the
75-
merged map, wholesale-quoted = cljw's static-data meta semantics) is
76-
evaluated at def time by both backends — tree_walk evalDef + the new
77-
op_var_meta opcode (envelope v9). This also FIXED the pre-existing
78-
user-AOT docstring loss ((:doc (meta #'f)) was nil in `cljw build`
79-
artifacts while lazy-source bootstrap kept it). clojure.test's
80-
` (file:line)` suffix restored from the deftest var's meta — AD-041
81-
NARROWED (deftest-line vs clj's assertion-stack-line residual).
82-
e2e phase15_var_source_meta (8) + diff case + the narrowed pin.
83-
Residual DISCHARGED 2026-07-17: defmacro's def_node now mints the
84-
same wire-riding meta_expr (doc/arglists/line/column/file; macro
85-
docstrings survive AOT artifacts — verified round-trip).
86-
(c) **var-existence gaps mainline completion surfaced**:
87-
`default-data-readers` DISCHARGED 2026-07-17: the {'inst 'uuid}
88-
map lands at core end (corpus data_readers.txt 3/3); VALUES are
89-
call-time-resolving fns, not clj's reader VARS — eager
90-
requiring-resolve at def time NameErrors inside the bootstrap AOT
91-
(bundled-.clj loads are strict at cache_gen) and would cost
92-
startup; consumers call the values, so the fn-vs-Var class is the
93-
one nuance (revisit only if a real lib var?-checks them).
94-
`defstruct`/`create-struct`/`struct-map`/`accessor` DE-SCOPED
95-
2026-07-17 (decision): legacy structmaps, superseded by records
96-
since clj 1.2 and absent from the verified-projects/conformance
97-
corpus — implement only when a real consumer pulls them
98-
(`defmacro`-as-var + `definline` landed 2026-07-16).
99-
(d) temporal/host-enum compare MAGNITUDES stay sign-based —
100-
recorded in the narrowed AD-043 (converge only if a real consumer
101-
diffs on them).
102-
category: "clj-parity"
103-
barrier: "none — bounded follow-ups; (a)/(b) are the valuable ones"
104-
last_reviewed: "2026-07-16"
10552
- id: "D-561"
10653
status: |-
10754
open (2026-07-15, Character/* completion cycle). `Character/getName` is
@@ -2439,6 +2386,59 @@ standing:
24392386
barrier: "open after the D-440 arc completes (R4 + R5 must first rewrite the bulk of 'Phase N' citations to gap-area terms). Premature adoption = ~70 dangling citations with no 1:1 redirect. Trigger: D-440 R4/R5 done + a user nod to re-architect the planning axis (it is depth-4, the project's organizing metaphor)."
24402387
last_reviewed: "2026-06-15"
24412388
discharged:
2389+
- id: "D-563"
2390+
status: |-
2391+
DISCHARGED 2026-07-17 (all sub-items resolved: a/a2/b/c landed, d = AD-043). ORIGINAL: open (2026-07-16, the D-562 inventory's enumerated residuals — each
2392+
verified against real clj this cycle, deferred with a named reason):
2393+
(a) DISCHARGED 2026-07-16 — defrecord ns-qualified identity landed:
2394+
TypeDescriptor carries defining_ns + a precomputed record_type_hash;
2395+
records print `#user.Pt{…}`, the READER constructs them back
2396+
(`#ns.Name{…}` → recordFromMap), and record hasheq matches clj
2397+
(type-hash XOR mapHasheq; corpus records_method_values.txt,
2398+
AD-035 retired as parity). deftype `(class …)` naming stays simple
2399+
(AD-003/044 scope — revisit only with a consumer).
2400+
(a2) DISCHARGED 2026-07-17 — all three 1.12 method-value forms now
2401+
carried: statics (2026-07-16), `Class/.instanceMethod` (instance
2402+
method as receiver-first fn — the ADR-0174 merged tables made
2403+
cljw's method ABI already receiver-first, so `method_val` IS the
2404+
fn; native-backed classes fall back to the tag-keyed descriptor)
2405+
and `Class/new` (the `<init>` entry as a fn). analyzeSymbol lifts
2406+
the value; call heads fall through to analyzeCall. e2e: 6 cases on
2407+
phase14_host_class_identity (map String/.length, Thread/new,
2408+
StringBuilder chain, Date/new higher-order), clj-1.12-oracle-matched.
2409+
(b) DISCHARGED 2026-07-17 — Vars carry :line/:column/:file (analyzeDef
2410+
mints them under user ^meta/:doc, compiler-wins on collision per clj
2411+
oracle) AND def meta now RIDES THE AOT WIRE: DefNode.meta_expr (the
2412+
merged map, wholesale-quoted = cljw's static-data meta semantics) is
2413+
evaluated at def time by both backends — tree_walk evalDef + the new
2414+
op_var_meta opcode (envelope v9). This also FIXED the pre-existing
2415+
user-AOT docstring loss ((:doc (meta #'f)) was nil in `cljw build`
2416+
artifacts while lazy-source bootstrap kept it). clojure.test's
2417+
` (file:line)` suffix restored from the deftest var's meta — AD-041
2418+
NARROWED (deftest-line vs clj's assertion-stack-line residual).
2419+
e2e phase15_var_source_meta (8) + diff case + the narrowed pin.
2420+
Residual DISCHARGED 2026-07-17: defmacro's def_node now mints the
2421+
same wire-riding meta_expr (doc/arglists/line/column/file; macro
2422+
docstrings survive AOT artifacts — verified round-trip).
2423+
(c) **var-existence gaps mainline completion surfaced**:
2424+
`default-data-readers` DISCHARGED 2026-07-17: the {'inst 'uuid}
2425+
map lands at core end (corpus data_readers.txt 3/3); VALUES are
2426+
call-time-resolving fns, not clj's reader VARS — eager
2427+
requiring-resolve at def time NameErrors inside the bootstrap AOT
2428+
(bundled-.clj loads are strict at cache_gen) and would cost
2429+
startup; consumers call the values, so the fn-vs-Var class is the
2430+
one nuance (revisit only if a real lib var?-checks them).
2431+
`defstruct`/`create-struct`/`struct-map`/`accessor` DE-SCOPED
2432+
2026-07-17 (decision): legacy structmaps, superseded by records
2433+
since clj 1.2 and absent from the verified-projects/conformance
2434+
corpus — implement only when a real consumer pulls them
2435+
(`defmacro`-as-var + `definline` landed 2026-07-16).
2436+
(d) temporal/host-enum compare MAGNITUDES stay sign-based —
2437+
recorded in the narrowed AD-043 (converge only if a real consumer
2438+
diffs on them).
2439+
category: "clj-parity"
2440+
barrier: "none — bounded follow-ups; (a)/(b) are the valuable ones"
2441+
last_reviewed: "2026-07-16"
24422442
- id: "D-559"
24432443
status: "DISCHARGED 2026-07-13 (ADR-0150 amendment 1). The nested-cross-agent `@memcpy arguments alias` corruption (exit 134, ~3-7% under alloc-torture + the D-418 window injection). ROOT CAUSE = the D-556 residual, precisely: the alloc-prologue safepoint park (gc_heap.alloc) fired BEFORE the `fabrication_depth` gate, so a peer's stopWorld parked a worker MID-BRACKET — its in-progress builder nodes (raw *TailNode/*HamtNode/*Cons in unrooted Zig locals) were invisible to the collect and swept; the resumed builder's memcpy aliased recycled memory. FIX (JVM-GCLocker shape; web-grounded vs Boehm per-thread-scan, rejected as wasm-unportable — DA fork in private/notes/D559-da-critique.md): the park HONORS the fabrication region (skip while depth>0; park at the next NON-bracket safepoint — bracket-boundary parks are unsound at both entry and exit, see ADR-0150 am1). HARDENING (DA Alt-1 items, all landed): `fabrication_depth` moved to root_set.zig; `safepoint.park` + `enterBlocked` assert depth==0 (chokepoint for all 6 park sites + the enterBlocked side door); `safepoint.max_stopworld_wait_ns` makes the fold-chain rendezvous delay observable; mark_sweep's false 'bracket-covered' comment rewritten. Accepted cost = D-560 (rendezvous delay unbounded in fold-chain length; discharge shape = the publish-roots flip, trigger-gated). VERIFIED: pre-fix ~3-7% crash → post-fix 100/100 clean (50 orig + 50 heavy); gc_torture 81/81 incl. the new deterministic `alloc-agent/nested_xagent` guard; clj oracle confirms [1 2 2]."
24442444
category: "concurrency"

0 commit comments

Comments
 (0)