fix: publish/sync merge generated files mechanically and carry non-overlapping uncommitted work through a rebase (#180)
Overlap only in kb/index.md, kb/log.md, kb/provenance.md and kb/**/INDEX.md no longer fails a reconcile or reaches the rebase-review gate: the log keeps both sides' entries, the catalog and provenance are regenerated. Uncommitted work no incoming commit touches rides through the rebase via --autostash; the working tree is backed up under refs/wikitool/reconcile-backup first. is_generated is narrowed to kb/. Files changed: - CHANGES.md - VERSION - instructions/gates.md - instructions/session-setup.md - tools/CONTRACT.md - tools/chemenu/commands/git_publish.py - tools/chemenu/commands/index_build.py - tools/chemenu/commands/provenance_cmd.py - tools/chemenu/tests/test_git_publish.py Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SnAJ7Z3CpVD3PRbN73QtU2
This commit is contained in:
1 parent
40839d956d
commit
d4638bacde
9 files changed
+907
-58
No files matched your search
@@ -36,7 +36,8 @@ Read the exit code first - it says which of these applies:
|
||||
A `wikitool` command that exits **42** is not reporting an error. It is refusing to act until a
|
||||
human has *read its output*. Five gates use it today - the Mass-Update Gate (`publish`, on a
|
||||
change touching 10 or more counted files), the rebase-review gate (`sync` and `publish`, on
|
||||
a rebase whose incoming commits touch a file this session is also changing), the
|
||||
a rebase whose incoming commits touch a file this session is also changing, generated files
|
||||
aside), the
|
||||
Publish-Remote Gate (`publish`, on a push to a target this checkout has not declared), the
|
||||
Upload Review Gate (`upload accept`, on a submission nobody has cleared yet), and the Guideline
|
||||
Push Gate (`export guidelines --push`, before a generated `GUIDELINES.md` goes into any captured
|
||||
@@ -54,7 +55,9 @@ For the rebase-review gate the substance is different: the commits arriving from
|
||||
the files they touch that this session is also touching, and a diff of those files. Read it -
|
||||
this is the check `sync`/`publish` cannot perform themselves, since a rebase between two commit
|
||||
ranges that touch disjoint files never reaches this gate at all (no content collision is
|
||||
possible by construction, so it rebases automatically). Judge whether the incoming change
|
||||
possible by construction, so it rebases automatically). Nor does an overlap only in the files
|
||||
`wikitool` generates - the catalog, `kb/log.md`, `kb/provenance.md` - which carry no decision
|
||||
and are merged and regenerated mechanically; the gate never lists them. Judge whether the incoming change
|
||||
conflicts logically with what you are about to publish, summarize *that judgment*, not just the
|
||||
diff, to the user, and only then re-run with the `--confirm-rebase <token>` the refusal prints.
|
||||
|
||||
|
||||
Reference in new issue
Block a user