Repository navigation
Conversation
The depth-2 declaration-model agreement area capped its reference resolver at one nested segment and built its event stream from a top-level node to its immediate child only, so a regression that flattened the declared-conflict check back to two levels would pass the suite unnoticed. Widen the resolver to the recursive canonical reference grammar `NNNN-slug(/MMMM-slug)*`, replace the hardcoded top-level loops with a recursive walk that descends into a child holding a manifest, and add the additive `tests/fixtures/recursive-conflicts/` tree three levels deep. New `AC23 recursive-*` assertions pin the reference-vs-path discriminator, sibling-first resolution below the root, recursion into a decomposing child, the own union parent-cell union and its drift discrepancy, the cross-level pair predicate, shipped-counterpart exclusion, and malformed/unresolved reporting. The shipped depth-2 fixture and its `AC23` blocks stay unchanged as controls. Refs: work/0015-recursive-workflow-guards/0003-recursive-conflicts-guard
…-workflow-guards/0003-recursive-conflicts-guard Tick the nine completed tasks, add verify.md recording the green suite (551 passed, 0 failed), the read-only fresh-clone run, and the AC12 mutation spot check, and add review.md recording the approving verdict with no surviving finding. Refs: work/0015-recursive-workflow-guards/0003-recursive-conflicts-guard
…-recursive-conflicts-guard Record the branch, commits, PR #93, and the reconcile result (reconciled by fast-forward; no conflicts) so the shipped signal travels with the branch. Refs: work/0015-recursive-workflow-guards/0003-recursive-conflicts-guard
49115566
deleted the
test/0015-recursive-workflow-guards+0003-recursive-conflicts-guard
branch
October 14, 2026 15:10
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.
Summary
Pins the recursive behavior of the declared-conflict check at depth ≥3 in the
committed suite. The shipped depth-2 agreement area
(
tests/checks/85-conflict-guards.sh, tokenAC23) capped its target resolver atone nested segment and built its event stream from a top-level node to its
immediate child only; this change widens the resolver, makes the event build
recurse into a decomposing child, and adds the additive fixture root
tests/fixtures/recursive-conflicts/.Work item:
0015-recursive-workflow-guards/0003-recursive-conflicts-guard.Changes
tests/checks/85-conflict-guards.sh— widenguard_resolveto the recursivegrammar
NNNN-slug(/MMMM-slug)*; replace the two hardcoded top-level loops withguard_walk_node(recurses into a child holding a manifest) and a parameterizedguard_collect; add the genericfixture_entitiesanalyzer; add theAC23 recursive-*assertion blocks. Existing constants, analyzers, and thedepth-2
AC23blocks are unchanged.tests/fixtures/recursive-conflicts/— new committed, read-only fixture treethree levels deep with a decomposing child, a legacy 5-column manifest at depth
2, a shipped child, and malformed/unresolved declarations. Ids stay in the
non-allocating
92xxfixture space and reference no livework/path.Testing
bash tests/run.sh→TOTAL: 551 passed, 0 failed, 0 skippedFRAMEWORK_TEST_AREAS=85-conflict-guards bash tests/run.sh→TOTAL: 97 passed, 0 failed, 0 skipped; all 11AC23 recursive-*labelsok.bash tests/run.sh <fresh clone with no work/**>→551 passed, 0 failed(proves the area reads no livework/path).verify.md).Conflict detection
8d1a35e(item branch HEAD);git merge-tree --write-treeoverHEAD/origin/mainreported no conflicted paths.NNNN; no duplicate per-parentMMMMat any decomposing node; every manifestDepends onresolves within its ownChildrentable and the stored graphs are acyclic.Reconcile
origin/main;git merge --no-edit origin/mainfast-forwarded to43382b1, adding only the sibling plan artifacts underwork/0015-recursive-workflow-guards/{0001,0002,0004}/.bash tests/run.sh→551 passed, 0 failed, 0 skipped; item checks (area 85) →97 passed, 0 failed.Risks
/conflicts,/status, and/build-gate model runs remain a documented manual residual (unchanged from the shipped depth-2 area).tests/mutation.shregistration for the new fixture root and labels is owned by the sibling0005-guard-registration-sweep;bash tests/run.sh(the CI command) is unaffected.Artifacts
work/0015-recursive-workflow-guards/0003-recursive-conflicts-guard/spec.mdwork/0015-recursive-workflow-guards/0003-recursive-conflicts-guard/design.mdwork/0015-recursive-workflow-guards/0003-recursive-conflicts-guard/verify.mdwork/0015-recursive-workflow-guards/0003-recursive-conflicts-guard/review.md