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
I1402
A finding says which of six states it found, and the state that could hide a person's edit is no longer one of them
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
1- Waiting on
- none
- Holds back
- Behind it in all
4- Evidence
2of2
Moves
plan.transitionWhat it is
- Objective
- Derive a typed state for every projected record from two independent questions — has a person rewritten the generated region since it was posted, and has the canonical record moved since — and report the answer instead of collapsing both into one word.
- Why
- The check reported `missing` and `body` and nothing else, and the second word hid a defect. The adapter advertises that it will not overwrite what a person wrote inside the generated region, and it decided that by comparing the remote's marker hash to the canonical hash: if they differed it returned early. So the protection was blind in exactly the case it is for. A person edits the region, the plan then moves, and the next --apply splices canonical text over their words without --force and without a word of warning. The marker records what the body was posted as, so the question was always answerable against the marker rather than against the canonical record.
- Now
- region_edited() returned false whenever the canonical record had moved, so `edited` was unreachable in the common case. Findings about a remote record claiming an unknown canonical id were printed from inside a pipeline, therefore from a subshell, so the drift count never saw them and --check could not fail on one.
- Wanted
- insync, behind, edited, conflict, adopt and missing for a canonical record, and unmanaged for a remote one. --apply rewrites behind and adopt, and refuses edited and conflict without --force. Every finding counts toward the exit code.
- Done when
- unknown: the record declares no `completion`
- Risk
- Low. Every distinction is derived from bytes both sides already carry.
Acceptance
- A person's edit is detected whether or not the canonical record has moved since, proved by a case for each
- A record whose region was edited and whose canonical record also moved is reported as conflict, and --apply refuses it without --force
- An issue claiming a canonical id this repository does not have is reported and counted, so --check fails on it
- Every state is proved by a case that builds the remote as a fixture, offline
- Validation
bash test/run.sh 45_github_projectionscripts/github-sync --check- Evidence required
states_distinguishededit_protection_holds- Evidence present
states_distinguishededit_protection_holds
Scope
- Touches
scripts/github-synctest/cases/45_github_projection.sh- Not
Distinguishing a record never created from one deleted on GitHub, which is not derivable from either side without a second store of what was created; `missing` states what is observable, which is that there is no counterpart nowResolving a conflict automatically- Depends on
- Priority
- p1
- Profile
- implementation
- Parallel safe
- false
- Owner
- unknown: the record declares no `owner`
The work so far
- Branches
- none
- Merged
- none
- Commits
0- Trunk
- master
- Sessions
- none
- Created
- 2026-09-09
- Updated
- 2026-09-09T17:20:44Z
- Started
- 2026-09-09T17:20:34Z
- Verified
- 2026-09-09T17:20:41Z
- Completed
- 2026-09-09T17:20:44Z
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.