Development record
2026-10-12 — Repository and tool text the implement loop keeps in a run's state.json (step titles, pick text, record notes, kept, sync paths, the landing URL, the runner's model, transcripts) is masked with termsafe both where the loop stores it and at every render that shows it, never refused at read time, so a run abcd wrote stays readable (the person's ruling as technical facilitator, "both: mask when stored and when shown"; iss-2610121542240257).
decisiondcn-2610120000000001
2026-10-12 — Repository and tool text the implement loop keeps in a run's state.json (step titles, pick text, record notes, kept, sync paths, the landing URL, the runner's model, transcripts) is masked with termsafe both where the loop stores it and at every render that shows it, never refused at read time, so a run abcd wrote stays readable (the person's ruling as technical facilitator, "both: mask when stored and when shown"; iss-2610121542240257).
Frontmatter
| id | dcn-2610120000000001 |
|---|---|
| type | decision |
| date | 2026-10-12 |
.abcd/work/decisions/dcn-2610120000000001-repository-and-tool-text-the-implement.md
open on GitHub ↗ · commit history ↗
mentions1
- iss-2610121542240257A run's state.json stores text that legitimately carries repository or tool content, unchecked at read time and echoed on abcd implement status --json and implement record --json: spec step titles (stored raw from the spec), the pick text and excluded reasons, record notes quoting step titles and git errors, kept (git error text), sync paths (repository file names), the landing's forge URL, the runner's reported model and transcripts; ids, shas, stages, branch and worktree names, paths, verdict words and audit fields are unchecked too, though abcd writes clean values there. Refusing at read time would refuse runs abcd itself wrote (a spec in a right-to-left language, a coloured hook failure), so the fix needs a design choice: mask such text where it is stored, or refuse at read time and accept false refusals.