docs: plan failing integration tests for catalog↔xorq coexistence + reset#50
Merged
Conversation
…eset Plans a test-only PR pinning two bugs surfaced while reviewing #48: the multi-entry catalog-add silent no-op (#48 core), and the reset↔xorq divergence where a back→forward reset restores the tallyman entry dir from the bullpen but never regains the durable xorq .zip recipe. Both hid because the only catalog-add integration test adds a single entry and never crosses the checkpoint that commits the bookkeeping files. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add tests/test_catalog_xorq_integration.py implementing the plan from the preceding docs commit. All seven tests fail today, driven through the real MCP catalog_create surface so the dispatch-boundary checkpoint wrapper fires as in production — the actual #48 trigger. Group A (#48 core): - every entry's .zip registers (only the first does today) - catalog stays openable after a checkpoint (assert_consistency fails today) - aliases.json/alias_history.json are not git-tracked in the xorq repo Group B (reset ↔ xorq-catalog divergence): - reset keeps the xorq catalog openable - tracked .zip set matches tallyman entry_hashes pointers (1 vs 2 today) - back→forward reset restores the durable xorq recipe, not just the bullpen dir Group D (silent swallow): - a failed registration is observable (loose catalog_registered=False signal) The reset_rolls_back_alias_state guard passes today and is deferred to the fix PR, per the rule that a test passing today is never bundled with failing tests. Relates to #48. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
paddymul
added a commit
that referenced
this pull request
Jun 15, 2026
#48 fixed (PR #57): alias bookkeeping now catalog.yaml keys (alias_map/ alias_history), #53 sidecar rejected, #48 closed. Mark stage-1 item 1 done. Surfacing partly done — remainder tracked as #56 (catalog_registered dies in _run_and_record; set_alias discards add_alias bool). #52 (reset divergence) is now the live stage-1 fix; PR #50 Group B stays red until it lands. Reframe #49 per #54: authored state belongs in catalog.yaml (fix durability, not relocate). Rebuild script unblocked on the #48 side. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
paddymul
added a commit
that referenced
this pull request
Jun 15, 2026
#48 fixed (PR #57): alias bookkeeping now catalog.yaml keys (alias_map/ alias_history), #53 sidecar rejected, #48 closed. Mark stage-1 item 1 done. Surfacing partly done — remainder tracked as #56 (catalog_registered dies in _run_and_record; set_alias discards add_alias bool). #52 (reset divergence) is now the live stage-1 fix; PR #50 Group B stays red until it lands. Reframe #49 per #54: authored state belongs in catalog.yaml (fix durability, not relocate). Rebuild script unblocked on the #48 side. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
paddymul
added a commit
that referenced
this pull request
Jun 18, 2026
#48 fixed (PR #57): alias bookkeeping now catalog.yaml keys (alias_map/ alias_history), #53 sidecar rejected, #48 closed. Mark stage-1 item 1 done. Surfacing partly done — remainder tracked as #56 (catalog_registered dies in _run_and_record; set_alias discards add_alias bool). #52 (reset divergence) is now the live stage-1 fix; PR #50 Group B stays red until it lands. Reframe #49 per #54: authored state belongs in catalog.yaml (fix durability, not relocate). Rebuild script unblocked on the #48 side. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Adds a single planning document (
plans/catalog-xorq-integration-tests.md) for afollow-up test-only PR. No code or test changes here — this is the design for
review before the failing tests are written.
Why
Issue #48 (tallyman commits
aliases.json/alias_history.jsoninto the xorqcatalog repo →
assert_consistencyfails → everyxorq catalog addafter thefirst silently no-ops) shipped through all of V0 because the only integration
test exercising real
xorq catalog addadds exactly one entry and never crossesthe checkpoint that commits those files.
Reproducing the real demo flow (
genesis → catalog_create → catalog_create → reset_to) surfaced a second, distinct bug: reset ↔ xorq-catalog divergence.A back→forward reset round-trips the tallyman
entries/<hash>/dir through thebullpen, but the durable xorq
.ziprecipe is reconciled by a differentmechanism (
git reset) and is never regained. "Git-backed, recompute fromhistory" is false for any entry after the first, and
reset_toneverre-validates the xorq catalog.
The plan
A new
tests/test_catalog_xorq_integration.py, all@pytest.mark.integration(CI
integrationjob), driven through the real MCP surfaces so the checkpointwrapper fires as in production:
catalog addsilently no-ops for every entry after the first — entry recipes never reach git #48 core): every entry's.ziplands; catalog stays openableafter a checkpoint; bookkeeping files are not git-tracked.
tracked-zip set matches catalog.yaml
entry_hashes; back→forward restores thedurable xorq recipe, not just the bullpen dir.
as success.
All Group A/B/D tests fail today. The
reset_rolls_back_alias_stateguardpasses today and is deferred to the fix PR (a test passing today is never
bundled into a failing-tests commit).
Relates to #48.
🤖 Generated with Claude Code