Development record
blocked_by can be written only at capture time, and only against a record that already exists. abcd capture --blocked-by refuses a target absent from the ledger ("not found in the issue ledger; nothing written"), which is right for a typo but leaves no path for the ordinary case: the blocker is captured after the blocked record, or in another lane, and no verb adds the link afterwards (the capture sub-verbs are disposition, list, mentions, promote, resolve and wontfix). The Gropius session gropiusllm-97 hand-wrote blocked_by into frontmatter on 2026-09-20 and found the key's shape by running strings on the binary; the shape is in fact documented (the issue-store README and the capture surface page both carry it), so the discoverability half is that neither the refusal nor the flag help points there. Wanted: a post-hoc link verb, abcd capture link <iss-N> --blocked-by <iss-M> (and its removal), validated the way capture validates the flag, so the edge is written by a verb whichever record came first; and the refusal naming where the field is documented. Sibling of iss-2609091256264547 (the three typed relations the schema lacks): this is the one relation it has and cannot write after the fact.
blocked_by can be written only at capture time, and only against a record that already exists. abcd capture --blocked-by refuses a target absent from the ledger ("not found in the issue ledger; nothing written"), which is right for a typo but leaves no path for the ordinary case: the blocker is captured after the blocked record, or in another lane, and no verb adds the link afterwards (the capture sub-verbs are disposition, list, mentions, promote, resolve and wontfix). The Gropius session gropiusllm-97 hand-wrote blocked_by into frontmatter on 2026-09-20 and found the key's shape by running strings on the binary; the shape is in fact documented (the issue-store README and the capture surface page both carry it), so the discoverability half is that neither the refusal nor the flag help points there. Wanted: a post-hoc link verb, abcd capture link <iss-N> --blocked-by <iss-M> (and its removal), validated the way capture validates the flag, so the edge is written by a verb whichever record came first; and the refusal naming where the field is documented. Sibling of iss-2609091256264547 (the three typed relations the schema lacks): this is the one relation it has and cannot write after the fact.
Grounds
- pursued: we expect a session whose blocker lands after the blocked record to write the edge by verb rather than by hand-editing frontmatter, and a refusal that names the documentation to end the strings-on-the-binary discovery; a later record of a hand-written blocked_by, or of a session that could not find the field's shape, would show it wrong
Frontmatter
| id | iss-2609200951237670 |
|---|---|
| type | issue |
| lifecycle | resolved |
| severity | minor |
.abcd/work/issues/resolved/iss-2609200951237670-blocked-by-can-be-written-only-at.md
open on GitHub ↗ · commit history ↗
mentions1
- iss-2609091256264547The decomposition discipline requires a cross-record link to be typed with one of four relations, supersedes or reverses or duplicates or refines, and never a vague related. Only the first of those four exists. supersedes is schema-known through recordHandleFields and is carried by fifty-eight decision records and three others, while reverses, duplicates and refines appear in no schema and in no committed record anywhere in the tree: the field list a record may carry is related_adrs, related_intents, builds_on and blocked_by, and a record carrying a key outside the known set is dropped by the reader rather than reported, so writing one of the three missing words would make the record invisible to every surface that reads it. The consequence is that an author following the rule literally either writes a link the tooling silently discards or writes the relation in prose and calls it typed, and the corpus shows the second: records assert a typed link in a heading and carry no frontmatter edge, which reads as done to a human and is invisible to every graph walker. That is the shape enforcement-claims-are-facts refuses, a convention naming a mechanism that does not exist, and it is load-bearing here because the decomposition protocol is the documented gate until its automated rung ships. Fix candidates, none chosen: implement the three missing relations as known fields so the rule can be followed; or narrow the rule to the vocabulary the schema implements and say what an author does with a relation the four words cannot express; or record that prose is the sanctioned form for the three and stop calling them typed. Detector: a record asserting a typed relation in its body carries a frontmatter edge naming the same target, and a relation the schema cannot express is refused at write time rather than dropped in silence.