Cover issue-side close/reopen convergence and release --json #75

Merged
a73x merged 1 commit from worktree-agent-a62bd6a5bb1c009d2 into main 2026-08-12 17:17:05 +00:00
a73x commented 2026-08-12 17:11:31 +00:00 (Migrated from git.a73x.sh)

Closes the two test gaps in f1913b56. No production code changes.

Gap 1 — tests/issue_reopen_test.rs, the issue-side twin of a_concurrent_close_and_reopen_converge. Three tests, all deterministic: the winner is pinned by giving the winning clone one extra local event before its status event, so its clock is strictly higher and the (clock, oid) tie-break never decides the run. Both directions covered (later close wins; later reopen wins, which also exercises unarchive_if_reopened and the return to the default list), plus a test that neither clone's offline comment is lost in the merge.

Verified discriminating: reverting reconcile_refs to glob only the active sync prefix fails all three, each on a different assertion — the close-wins one on Bob's status still being open, the reopen-wins one on the two clones sitting at different DAG tips, the third on Alice's comment having vanished.

Gap 2 — four tests in tests/release_cli_test.rs driving a live server over SSH via ServerHarness. publish --json: exactly one JSON object on stdout, per-file prose held back, every sha256 the full 64-char digest of the bytes sent and agreeing with what the server's own index reports. delete --json: file names the file for a single-file delete and is null for a whole-version delete, with list confirming what actually went. Two failure tests, one server-rejected (duplicate publish, missing version) and one client-rejected (invalid version name before any round trip), each asserting {"error": ...} on stdout, exit 1, no result keys alongside the error, and the message still on stderr for a human.

Verified discriminating: suppressing the JSON error object in main::fail fails both failure tests.

Full suite green, cargo clippy --all-targets silent.


Migrated from git-collab patche 7a39e6a8df7f1c7a0b9e4aaa0f63c952f69c95ad.

Original author: a73x dev@a73x.sh.

Fixes #61

Revision 1: d53c2e87fdf3f3a8720f8589073a844498acd673; base 18181599bcad7189f68712568637795d0e5a6436

Closes the two test gaps in f1913b56. No production code changes. Gap 1 — tests/issue_reopen_test.rs, the issue-side twin of a_concurrent_close_and_reopen_converge. Three tests, all deterministic: the winner is pinned by giving the winning clone one extra local event before its status event, so its clock is strictly higher and the (clock, oid) tie-break never decides the run. Both directions covered (later close wins; later reopen wins, which also exercises unarchive_if_reopened and the return to the default list), plus a test that neither clone's offline comment is lost in the merge. Verified discriminating: reverting reconcile_refs to glob only the active sync prefix fails all three, each on a different assertion — the close-wins one on Bob's status still being open, the reopen-wins one on the two clones sitting at different DAG tips, the third on Alice's comment having vanished. Gap 2 — four tests in tests/release_cli_test.rs driving a live server over SSH via ServerHarness. publish --json: exactly one JSON object on stdout, per-file prose held back, every sha256 the full 64-char digest of the bytes sent and agreeing with what the server's own index reports. delete --json: file names the file for a single-file delete and is null for a whole-version delete, with list confirming what actually went. Two failure tests, one server-rejected (duplicate publish, missing version) and one client-rejected (invalid version name before any round trip), each asserting {"error": ...} on stdout, exit 1, no result keys alongside the error, and the message still on stderr for a human. Verified discriminating: suppressing the JSON error object in main::fail fails both failure tests. Full suite green, cargo clippy --all-targets silent. --- Migrated from git-collab patche `7a39e6a8df7f1c7a0b9e4aaa0f63c952f69c95ad`. Original author: a73x <dev@a73x.sh>. Fixes #61 Revision 1: `d53c2e87fdf3f3a8720f8589073a844498acd673`; base `18181599bcad7189f68712568637795d0e5a6436`
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!75
No description provided.