This is the record of an abcd-managed repository

abcdBetav0.16.2 · 2026-11-06

Development record

2026-09-29 — Ruling J13 (the product thinker, 2026-09-29, verbatim: "iss-2608230752354928 source_kind: BOTH, two separate labels (tool + route).") is applied to the transcript store (lane sourceLabels, autonomous run A). `source_kind` carries the ROUTE, a closed set of `native` (abcd's own capture of the host's transcript) and `import` (another tool's export); a new `source_tool` carries the TOOL, an open lowercase slug with `host` reserved for the harness abcd is installed in. The tool vocabulary is open rather than closed, so a second harness needs no code change, and because it is caller-named it passes the redaction scan with the body and a label the scan would change refuses the capture. Neither label can stand in for the other: the route refuses a tool name, the tool refuses a route word and any `-import` composite, and an import never names `host`. A record stored before the split carries `source_kind` alone and reads under both labels, derived on read without rewriting it: `native` as native from `host`, `specstory-import` as import from `specstory`; the same derivation accepts the fused spelling on write. Nothing migrates on write, and only `history migrate`, rewriting a record for its own reasons, stamps the new form. The record schema version does not move: parsing is by field presence (adr-2609021016275803).

decisiondcn-2609290000000012

2026-09-29 — Ruling J13 (the product thinker, 2026-09-29, verbatim: "iss-2608230752354928 source_kind: BOTH, two separate labels (tool + route).") is applied to the transcript store (lane sourceLabels, autonomous run A). source_kind carries the ROUTE, a closed set of native (abcd's own capture of the host's transcript) and import (another tool's export); a new source_tool carries the TOOL, an open lowercase slug with host reserved for the harness abcd is installed in. The tool vocabulary is open rather than closed, so a second harness needs no code change, and because it is caller-named it passes the redaction scan with the body and a label the scan would change refuses the capture. Neither label can stand in for the other: the route refuses a tool name, the tool refuses a route word and any -import composite, and an import never names host. A record stored before the split carries source_kind alone and reads under both labels, derived on read without rewriting it: native as native from host, specstory-import as import from specstory; the same derivation accepts the fused spelling on write. Nothing migrates on write, and only history migrate, rewriting a record for its own reasons, stamps the new form. The record schema version does not move: parsing is by field presence (adr-2609021016275803).

Frontmatter

iddcn-2609290000000012
typedecision
date2026-09-29

mentions3