Read the shapes the user's own repositories are actually in #105

Merged
a73x merged 1 commit from worktree-agent-a19a2c32f2479908a into main 2026-08-14 09:11:32 +00:00
a73x commented 2026-08-14 09:07:48 +00:00 (Migrated from git.a73x.sh)

The strip cleared its removals against one clone and the five server repositories; the user's other clones in ~/code/rad were never opened. This re-audits every event.json in every collab ref of every repository there — 534 events, 5 repositories with collab refs — and restores exactly what that data holds.

The audit: eitri holds 17 patch.create with no commit/tree, 21 patch.review with no revision, 1 patch.revise and 17 patch.merge with no commit; waystty holds 22, 12, 0 and 6 of the same plus 11 bare patches/ refs; mux, nono and claudealong are clean. That is 100% of the patches in both, and it is why eitri printed 17 warnings and 'No patches found.' The failing field was patch.create, not patch.merge — 'missing field commit at line 14 column 3' is the closing brace of its action object.

Restored, each because data someone holds is in that shape and no migration can invent what was never recorded: PatchCreate/PatchRevision commit and tree default to empty and skip when empty (the argument Revision.base was already kept on); PatchReview.revision as Option — the field, not the DAG-position attribution, which issue 33b5e541 is about and which stays gone, with None as its own bucket in vote supersession; patch.revise as its own variant rather than a serde alias, because an alias re-serializes under the new name and verification compares re-serialized bytes, so it would read the patch locally and have sync reject it as unsigned; and the bare patches/ layout, read and left alone, with sync reconciling into whichever ref is already there and a clone with no copy taking the remote's layout rather than migrating it inbound — otherwise it could read a project and never push to it.

Left stripped, zero occurrences in the audit: the PatchCreate variant name, the head_commit alias, singular-string relates_to, PatchState.labels serde(default), resolve_head's refs/heads/ fallback, the ref layout migration and git-collab-server migrate, and the /r/ numbering — a revision ref rather than a DAG, so reading it would yield nothing to read.

Two messages rewritten, both of which offered a remedy that cannot be followed when every copy is old. The layout error no longer says to fetch a newer copy; it says the shape predates the current naming, that fixing it is local, and prints the git update-ref that does it. resolve_head now distinguishes 'recorded and not here' from 'never recorded', and says the rest of the patch reads normally.

Verified in the repository that reported this: eitri lists all 17 patches with no warnings and syncs both remotes clean — 17 reconciled, 17 pushed — with its refs byte-identical before and after. waystty's 11 bare refs read too. Full suite green, clippy silent, tui_review_test 23/23 on two consecutive runs.


Migrated from git-collab patche 2cb9ca9638792d3e842a457fcb616df001ab1758.

Original author: a73x dev@a73x.sh.

Fixes #104

Revision 1: 9cfb8ccf74987d25e415015b1ce48476c7ff6315; base 8bbdad3e73547570048f78f0ace837f3278a2253

The strip cleared its removals against one clone and the five server repositories; the user's other clones in ~/code/rad were never opened. This re-audits every event.json in every collab ref of every repository there — 534 events, 5 repositories with collab refs — and restores exactly what that data holds. The audit: eitri holds 17 patch.create with no commit/tree, 21 patch.review with no revision, 1 patch.revise and 17 patch.merge with no commit; waystty holds 22, 12, 0 and 6 of the same plus 11 bare patches/<id> refs; mux, nono and claudealong are clean. That is 100% of the patches in both, and it is why eitri printed 17 warnings and 'No patches found.' The failing field was patch.create, not patch.merge — 'missing field commit at line 14 column 3' is the closing brace of its action object. Restored, each because data someone holds is in that shape and no migration can invent what was never recorded: PatchCreate/PatchRevision commit and tree default to empty and skip when empty (the argument Revision.base was already kept on); PatchReview.revision as Option — the field, not the DAG-position attribution, which issue 33b5e541 is about and which stays gone, with None as its own bucket in vote supersession; patch.revise as its own variant rather than a serde alias, because an alias re-serializes under the new name and verification compares re-serialized bytes, so it would read the patch locally and have sync reject it as unsigned; and the bare patches/<id> layout, read and left alone, with sync reconciling into whichever ref is already there and a clone with no copy taking the remote's layout rather than migrating it inbound — otherwise it could read a project and never push to it. Left stripped, zero occurrences in the audit: the PatchCreate variant name, the head_commit alias, singular-string relates_to, PatchState.labels serde(default), resolve_head's refs/heads/<branch> fallback, the ref layout migration and git-collab-server migrate, and the <id>/r/<n> numbering — a revision ref rather than a DAG, so reading it would yield nothing to read. Two messages rewritten, both of which offered a remedy that cannot be followed when every copy is old. The layout error no longer says to fetch a newer copy; it says the shape predates the current naming, that fixing it is local, and prints the git update-ref that does it. resolve_head now distinguishes 'recorded and not here' from 'never recorded', and says the rest of the patch reads normally. Verified in the repository that reported this: eitri lists all 17 patches with no warnings and syncs both remotes clean — 17 reconciled, 17 pushed — with its refs byte-identical before and after. waystty's 11 bare refs read too. Full suite green, clippy silent, tui_review_test 23/23 on two consecutive runs. --- Migrated from git-collab patche `2cb9ca9638792d3e842a457fcb616df001ab1758`. Original author: a73x <dev@a73x.sh>. Fixes #104 Revision 1: `9cfb8ccf74987d25e415015b1ce48476c7ff6315`; base `8bbdad3e73547570048f78f0ace837f3278a2253`
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
a73x/git-collab!105
No description provided.