feat: the test suite no longer ships, and dist upgrade deletes what a release stops shipping (#113)
dist export leaves out tools/chemenu/tests/, tools/pytest.ini and tools/.coveragerc by exact path - the suite tests the origin repository, and 257 of its tests failed in a fresh export. dist upgrade now deletes a no-longer-shipped file that is unchanged since install, with any directory that leaves empty, and blocks one changed since install like any local change (--take-release deletes it, --keep-local keeps it). --prune is accepted and ignored. Files changed: - CHANGES.md - EVALS.md - VERSION - instructions/mcp-read-server.md - instructions/upgrade-instance.md - tools/CONTRACT.md - tools/README.md - tools/chemenu/commands/dist_cmd.py - tools/chemenu/tests/test_dist_cmd.py - tools/chemenu/tests/test_dist_upgrade.py - tools/requirements-mcp.txt 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
dd565d249f
commit
0d3499ab04
11 files changed
+479
-87
No files matched your search
@@ -106,8 +106,8 @@ everything an operator needs that is *true of the software* rather than of one i
|
||||
sync is not running. If it is `null`, the served tree has uncommitted changes - something is
|
||||
writing into the corpus that should not be.
|
||||
- **The server disagrees with `wikitool` on the same query?** That is a defect, not a
|
||||
configuration difference: the two go through the same functions and a golden test holds their
|
||||
output together (`tools/chemenu/tests/test_mcp_server.py`). Check first that both are pointed
|
||||
configuration difference: the two go through the same functions and a golden test in the origin
|
||||
repository holds their output together. Check first that both are pointed
|
||||
at the same root - `CHEMENU_ROOT` is easy to set for one and not the other.
|
||||
- **Asked to expose a write tool?** Five of the six tools have none, structurally: the server
|
||||
imports nothing under `chemenu.commands`, so `new`, `touch`, `xref`, `cite`, `publish` and
|
||||
|
||||
@@ -115,8 +115,10 @@ a further checkout of this one ([bootstrap.md](bootstrap.md)).
|
||||
(`tools/wikitool dist adopt types/<type>.<value>.md.template`) and `wikitool new` scaffolds
|
||||
pages of that subtype from it; leave it lying and they keep the type's `## Template` block.
|
||||
Both are valid - [subtype-templates.md](subtype-templates.md) is how to judge whether the
|
||||
corpus wants it. `locally changed` is step 6. `removed` matters only if `--prune` is wanted, which is optional
|
||||
and never required.
|
||||
corpus wants it. `locally changed` is step 6. `removed` needs no decision: a file the release
|
||||
no longer ships and that is unchanged since install is deleted, together with any directory
|
||||
that leaves empty, and the report lists both. One that was changed since install appears
|
||||
under `locally changed` as "no longer shipped" instead, and is step 6.
|
||||
|
||||
6. **Only if a file is reported as locally changed: decide whose file it is, then reconcile it.**
|
||||
The classification is against the sha256 the *installed* release recorded, so "locally
|
||||
@@ -126,8 +128,8 @@ a further checkout of this one ([bootstrap.md](bootstrap.md)).
|
||||
| Whose file | What to do |
|
||||
|---|---|
|
||||
| The instance's own | Cannot appear here, which is worth knowing so a report that looks like it is read again rather than acted on: a file the instance owns either ships only as `<name>.template` (`kb/CONVENTIONS.md`, each `COLLECTION.md`, `USER.md`/`SOUL.md`/`ENVIRONMENT.md`) and is never classified at all, or is seeded once and then kept out of the write set (`.wikitool-kb.json`, `CHANGES.md`) |
|
||||
| Machinery (a `CONTRACT.md`, anything under `tools/`, `types/`, `instructions/`, `AGENTS.md`, and every `<name>.template` beside an owned file) | It should not have local changes at all. Take the release's version: `--take-release <path>`, one per file |
|
||||
| Machinery this instance changed **on purpose** | `--keep-local` keeps every listed file untouched - but the new stamp records the release digest anyway, so the same file is reported again at every future upgrade. That is the right answer only for a difference the instance intends to carry indefinitely |
|
||||
| Machinery (a `CONTRACT.md`, anything under `tools/`, `types/`, `instructions/`, `AGENTS.md`, and every `<name>.template` beside an owned file) | It should not have local changes at all. Take the release's version: `--take-release <path>`, one per file. For a file marked "no longer shipped" the release's version is no file at all, so taking it deletes it |
|
||||
| Machinery this instance changed **on purpose** | `--keep-local` keeps every listed file untouched - but the new stamp records the release digest anyway, so the same file is reported again at every future upgrade. That is the right answer only for a difference the instance intends to carry indefinitely. A file marked "no longer shipped" is the exception: no stamp names it after this run, so keeping it makes it the instance's own and it is never reported again |
|
||||
|
||||
The decision is per path, and the two flags compose - which is what a mixed report needs, one
|
||||
file reset and another kept. Preview it before it writes:
|
||||
|
||||
Reference in new issue
Block a user