A snapshot: read at commit 707a04c7ce8 on 2026-10-18T00:06:01Z by majordomus 0.29.0. Nothing on this page is read again. See it live
I1516
The adapter composes a projected body in one place
Where it stands
devtask.issue- Readiness
- complete completion is recorded and every required evidence token is present
- Status
- DONE
- Can start
- not now
- Milestone
- Milestone status
- VERIFY
- Wave
0- Waiting on
- none
- Holds back
- none
- Behind it in all
0- Evidence
2of2
Moves
plan.transitionWhat it is
- Objective
- Make the body scripts/github-sync posts to an issue the same text it prints for that issue, by composing it once, so that a body the adapter wrote is a body the adapter recognises as its own.
- Why
- The adapter composed the generated region twice — once for --render and once for the splice that updates an issue that already exists — and the two compositions drifted. record_marker() prints without a trailing newline; --render wrapped it in printf '%s\\n' and the splice did not, so the first line of the record was glued to the marker in every body the splice posted. region_intact() drops the marker line before hashing the region back, and that prefix match took the glued first line with it, so such a region never hashed to what its own marker claimed. Every issue written through the splice was then classified `edited` — a person's hand-edit, never to be overwritten — and --force could not repair one, because it rewrote it exactly the same way. This is measured, not hypothetical: 19 of the 215 managed issues on GitHub carry a marker line with body text appended, and they are exactly the 19 findings that keep the github-projection gate red.
- Now
- 19 managed issues carry a concatenated marker line; scripts/ci/github-check exits 10 on them; the structure job fails on every branch that reaches it. test/cases/45 exercises only the --render composition, so the splice composition has never been tested at all. Refreshed onto master 2026-09-30 from PR #554: master still carries both compositions.
- Wanted
- One function composes the region's content, and both the rendering and the splice call it. Case 45 refuses a second composition and a caller that writes the marker without ending its line; case 602 drives --apply against a stubbed gh and reads the posted body back as insync. The 19 remote bodies are rewritten by --apply --force and the gate goes green.
- Done when
- unknown: the record declares no `completion`
- Risk
- Low. The change removes a duplicate definition; the rendering it keeps is the one every other surface already prints.
Acceptance
- The region body is composed in exactly one place in the adapter
- No caller writes the record marker without terminating its line
- A body the splice would post classifies as insync, not edited
- Validation
bash test/run.sh 45_github_projectionbash test/run.sh 602_a_spliced_body_is_recognised_as_its_ownbash scripts/ci/shell-lint- Evidence required
the_two_compositions_are_onea_spliced_body_is_recognised_as_its_own- Evidence present
the_two_compositions_are_onea_spliced_body_is_recognised_as_its_own
Scope
- Touches
scripts/github-synctest/cases/45_github_projection.shtest/cases/602_a_spliced_body_is_recognised_as_its_own.sh- Not
The remote rewrite itself, which is an operation and not a change to the repository.The drift baseline, which shrinks on its own once the bodies are correct.- Depends on
- none
- Priority
- p0
- Profile
- implementation
- Parallel safe
- true
- Owner
- unknown: the record declares no `owner`
The work so far
- Branches
- none
- Merged
- none
- Commits
0- Trunk
- master
- Sessions
- none
- Created
- 2026-09-15
- Updated
- 2026-10-07T13:27:24Z
- Started
- 2026-09-15
- Verified
- 2026-10-07T13:27:22Z
- Completed
- 2026-10-07T13:27:24Z
Synchronisation
- Adapter
scripts/github-sync- Repository
- unknown: the derived plan's header carries no repository
- External issue
- unknown: a live GitHub state; this executable makes no network call, so only `scripts/github-sync --check` can answer it
- State there
- unknown: a live GitHub state; this executable makes no network call, so only `scripts/github-sync --check` can answer it
Findings
Nothing is wrong with these records.