integration/wave-1 is still on origin, 12 commits "ahead" of main. It looks like unmerged work. It is not, and merging it would regress main. This records the check so the next reader does not have to redo it.
It carries nothing main lacks
$ comm -13 <(git ls-tree -r --name-only origin/main | sort) \
<(git ls-tree -r --name-only origin/integration/wave-1 | sort)
(no output)
Its two once-unique files, src/exitdrill/atomic_write.py and tests/test_atomic_write.py, landed on main byte-identically as #127. Everything else on the branch is an earlier variant of work main now has, usually under a different test name:
on integration/wave-1 |
on main |
test_partial_scoped_shortfall_is_counted_by_the_fail_closed_floor |
test_restoration_only_dimensions_report_exactly_the_shortfall (#117) |
test_is_sha256_hex_accepts_what_the_hashers_above_produce + rejects |
test_is_sha256_hex_accepts_only_what_the_hashers_emit (#119) |
| the bound renderer / discovery / binding trio |
test_every_declared_bound_constant_appears_in_the_bounds_tables and the threat-model bound tests (#121) |
test_the_json_recursion_arms_are_named_with_the_depth_that_still_reaches_them |
test_the_json_recursion_arms_are_still_present_and_still_reachable (#136) |
test_the_subcommand_binding_rejects_a_name_no_document_carries |
same name, ported to main's own matcher (#137) |
atomic_write.write_bounded_file and its four tests |
identical, via #127 |
| the closed-key validator (#91), the digest predicate (#92) |
contracts.py (#116), canonical.is_sha256_hex (#119) |
scripts/ coverage + the three floors (#86) |
#125 |
| the 3.12/3.13/3.14 matrix (#90) |
#118, plus an aggregate verify job the branch does not have |
Merging it would take things away
main is 13 commits ahead of the merge base on its own side. The branch predates, and so would fight with:
It would also land Claude attribution in permanent history
Seven of its twelve commits carry a Co-authored-by: Claude trailer and a Claude-Session: line:
b9bbf67 04174616 338e78d4 9111ac79 68e51e24 217dc097 2ceb2318
The standing rule is that no Claude attribution appears anywhere in git history. A squash merge composes its message from the branch's commits and appends co-author trailers it finds there, so merging this branch — by any route — would add all seven to main at once. History is never to be rewritten to remove them afterwards, so the only control is not adding them.
What to do
Owner's call, and nothing is urgent:
- Delete the branch, since
main now contains everything it was for; or
- Keep it as a record of the wave, with this issue as the reason it is not merged.
Either way: do not merge it, and do not cherry-pick from it without diffing against main first — most of what looks missing is present under another name.
Prepared with AI assistance; reviewed before submission.
integration/wave-1is still onorigin, 12 commits "ahead" ofmain. It looks like unmerged work. It is not, and merging it would regressmain. This records the check so the next reader does not have to redo it.It carries nothing
mainlacksIts two once-unique files,
src/exitdrill/atomic_write.pyandtests/test_atomic_write.py, landed onmainbyte-identically as #127. Everything else on the branch is an earlier variant of workmainnow has, usually under a different test name:integration/wave-1maintest_partial_scoped_shortfall_is_counted_by_the_fail_closed_floortest_restoration_only_dimensions_report_exactly_the_shortfall(#117)test_is_sha256_hex_accepts_what_the_hashers_above_produce+ rejectstest_is_sha256_hex_accepts_only_what_the_hashers_emit(#119)test_every_declared_bound_constant_appears_in_the_bounds_tablesand the threat-model bound tests (#121)test_the_json_recursion_arms_are_named_with_the_depth_that_still_reaches_themtest_the_json_recursion_arms_are_still_present_and_still_reachable(#136)test_the_subcommand_binding_rejects_a_name_no_document_carriesmain's own matcher (#137)atomic_write.write_bounded_fileand its four testscontracts.py(#116),canonical.is_sha256_hex(#119)scripts/coverage + the three floors (#86)verifyjob the branch does not haveMerging it would take things away
mainis 13 commits ahead of the merge base on its own side. The branch predates, and so would fight with:src/exitdrill/contracts.py— the branch does not have this file at all;verifyjob that keeps the branch ruleset's required check name under a matrix (ci: verify every interpreter requires-python declares (#90) #118);validate-exercisedocs and subcommand binding (docs: describe validate-exercise and bind every subcommand to a document #115), the published input bounds (docs: publish every declared input bound and bind each to its constant #121);scripts/coverage measurement, the per-scope floors, andEXITDRILL_REQUIRE_GATE_TOOLSin CI (ci: measure scripts/ coverage, floor each scope, and require the gate tools in CI #125).It would also land Claude attribution in permanent history
Seven of its twelve commits carry a
Co-authored-by: Claudetrailer and aClaude-Session:line:The standing rule is that no Claude attribution appears anywhere in git history. A squash merge composes its message from the branch's commits and appends co-author trailers it finds there, so merging this branch — by any route — would add all seven to
mainat once. History is never to be rewritten to remove them afterwards, so the only control is not adding them.What to do
Owner's call, and nothing is urgent:
mainnow contains everything it was for; orEither way: do not merge it, and do not cherry-pick from it without diffing against
mainfirst — most of what looks missing is present under another name.Prepared with AI assistance; reviewed before submission.