fix: publish --path commits the uncommitted generated files outside its path, so the pushed catalog and log match its pages (#182)
CI / verify (push) Successful in 6m0s
CI / pwsh (push) Successful in 1m59s
Release / release (push) Successful in 36s

Files changed:
- CHANGES.md
- VERSION
- tools/CONTRACT.md
- tools/chemenu/commands/git_publish.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:
torbenandClaude Opus 5.5 committed 2026-10-06 11:19:46 +02:00
1 parent fa106eeda3
commit a3fc8f6873
5 files changed
+190 -15

No files matched your search

+28 -1
View File
@@ -59,7 +59,7 @@ concern - readable here, never shipped as something to parse.
---
## 8.0.0-beta.47 - 2026-10-06 - sync record: the autostash note states the behaviour, not the change
## 8.0.0-beta.48 - 2026-10-06 - publish --path nimmt ungespeicherte generierte Dateien außerhalb des Pfads mit
**Author:** Torben Nehmer
@@ -112,6 +112,7 @@ concern - readable here, never shipped as something to parse.
- wiki-ingest: updating the captured repositories is a step-1 branch over raw status
- export guidelines: the guideline pages as a generated GUIDELINES.md, pushed into the captured repositories behind the Guideline Push Gate
- publish/sync merge generated files mechanically and carry non-overlapping uncommitted work through a rebase
- publish --path nimmt ungespeicherte generierte Dateien außerhalb des Pfads mit
**Low impact**
- version bump no longer points at version release in its output
@@ -160,6 +161,32 @@ concern - readable here, never shipped as something to parse.
- sync record: the autostash note states the behaviour, not the change
<!-- /wikitool:bumps -->
### publish --path nimmt ungespeicherte generierte Dateien außerhalb des Pfads mit
`publish --path <X>` staged and committed only `<X>`. When the catalog and log it had written -
or the ones a reconcile had just merged and regenerated - lay outside `<X>`, the push carried
the new page with a catalog that did not list it and a log without its entries, and left the
generated files behind uncommitted until a `publish` without `--path` took them along. Nothing was
lost, but the remote stayed inconsistent in between, and another session's `sync` worked against
that state.
- **Uncommitted generated files outside `--path` now join the commit** (`kb/index.md`,
`kb/log.md`, `kb/provenance.md`, every `kb/**/INDEX.md`), and a line names them:
`Including N generated file(s) outside --path: ...`. Git decides what lies under `<X>`, by the
same pathspec the staging uses; files already under it are neither added nor named.
- **Regardless of whether this run's reconcile regenerated anything.** A run the Mass-Update
Gate refuses has already reconciled; the confirmed re-run finds nothing left to regenerate,
and a condition on the regeneration would have pushed the inconsistent state on exactly that
path - the same goes for a `sync` followed by `publish --path`.
- **The gate is unchanged.** The added files stay out of its count, and the `--confirm` token
and the re-run line cover the `--path` given, so a clearance issued for `<X>` stays valid.
- **Every other file outside `--path`** is left alone, as before.
Where uncommitted pages also lie outside `<X>`, the catalog that goes out with `<X>` already
lists them until the next `publish` sends them - the reverse of before, where the page went out
and the catalog did not know it. Drop-in: no command, flag, file format or state file changes.
`publish`'s record follows (Gitea #182).
### sync record: the autostash note states the behaviour, not the change
One note in `sync`'s command record, written with 8.0.0-beta.46, said that uncommitted changes no