Development record
2026-10-27 — A path to something that exists in the working directory is not withheld at the error boundary, a leading part of an argument is withheld only where a refusal visibly cut it, and build's claim-stage refusals name the --session flag instead of the session they were given. Grounds: an existing repository path is what a footprint or record refusal must name for the caller to see the overlap, and nothing secret is a path that exists in the checkout; a leading part followed by an ellipsis, a closing quote or the end of the line is a cut, while one followed by more of a path is a longer path that shares the prefix, so withholding only the first keeps overlap refusals readable. The session refusal was first kept on the premise that only a joined session reaches it. That holds for the claim itself, but opening the shared run for the session refuses any value first, one that is not a name or a name that has not joined, and repeats it; the reason goes into the refusal document build writes under --json, which the error boundary does not read, so both refusals name the flag, like build's other refusals there. Only the phrases that name the session (session followed by the id, typed or quoted, the session record for the id, and the record's file name) are replaced, in one pass, never the id wherever it appears: a session id may be one letter or a word the refusal itself uses, and replacing every occurrence made the refusal unreadable. The phrases are matched as text, never compiled from the id into a pattern, so no value given can make the replacement fail; the refusal for a claim another change holds the run lock against passes through the same replacement. The same document carries the refusals of a run id given to --run and a lane id given to --restart, so those describe the value instead of quoting it, and a refused --restart leaves the document's lane field empty. A well-formed run id is not withheld at the boundary either: abcd mints it, like a record id, and a refusal that cannot find the run must name the one it looked for. A flag whose value is drawn from a vocabulary abcd defines declares that vocabulary, and a typed word of it is not withheld: it is abcd's own word, and a refusal of a word valid elsewhere (a disposition state the item's position does not offer) must name it; a value outside the vocabulary is withheld as before. Two limits are accepted. A session id that is itself a word following 'session' in a refusal's fixed wording reads oddly once replaced, because text matching cannot tell the id from the wording; only the core returning the session as its own field would. And the session follows the boundary's floor everywhere the boundary judges it: an argument under that floor is not withheld there, a session included. Decided by abcd-0b (technical, delegated).
2026-10-27 — A path to something that exists in the working directory is not withheld at the error boundary, a leading part of an argument is withheld only where a refusal visibly cut it, and build's claim-stage refusals name the --session flag instead of the session they were given. Grounds: an existing repository path is what a footprint or record refusal must name for the caller to see the overlap, and nothing secret is a path that exists in the checkout; a leading part followed by an ellipsis, a closing quote or the end of the line is a cut, while one followed by more of a path is a longer path that shares the prefix, so withholding only the first keeps overlap refusals readable. The session refusal was first kept on the premise that only a joined session reaches it. That holds for the claim itself, but opening the shared run for the session refuses any value first, one that is not a name or a name that has not joined, and repeats it; the reason goes into the refusal document build writes under --json, which the error boundary does not read, so both refusals name the flag, like build's other refusals there. Only the phrases that name the session (session followed by the id, typed or quoted, the session record for the id, and the record's file name) are replaced, in one pass, never the id wherever it appears: a session id may be one letter or a word the refusal itself uses, and replacing every occurrence made the refusal unreadable. The phrases are matched as text, never compiled from the id into a pattern, so no value given can make the replacement fail; the refusal for a claim another change holds the run lock against passes through the same replacement. The same document carries the refusals of a run id given to --run and a lane id given to --restart, so those describe the value instead of quoting it, and a refused --restart leaves the document's lane field empty. A well-formed run id is not withheld at the boundary either: abcd mints it, like a record id, and a refusal that cannot find the run must name the one it looked for. A flag whose value is drawn from a vocabulary abcd defines declares that vocabulary, and a typed word of it is not withheld: it is abcd's own word, and a refusal of a word valid elsewhere (a disposition state the item's position does not offer) must name it; a value outside the vocabulary is withheld as before. Two limits are accepted. A session id that is itself a word following 'session' in a refusal's fixed wording reads oddly once replaced, because text matching cannot tell the id from the wording; only the core returning the session as its own field would. And the session follows the boundary's floor everywhere the boundary judges it: an argument under that floor is not withheld there, a session included. Decided by abcd-0b (technical, delegated).
Frontmatter
| id | dcn-2610272345401009 |
|---|---|
| type | decision |
| date | 2026-10-27 |
.abcd/work/decisions/dcn-2610272345401009-a-path-that-exists-in-the-checkout-is.md
open on GitHub ↗ · commit history ↗