feat(engine): REMOTE-SYNC — a tag that exists only in one clone

VERSION-TAG reads LOCAL tags, so a manifest claiming 1.0.0 against an unpushed
v1.0.0 reads as a clean pass while no stranger can resolve that version.
portfolio-optimiser read OK until this check existed; it now reads ERROR, which
is the finding the gate was blind to rather than a new demand on the repo.

Measured across all 21 registered clones: exactly one has an unpushed tag, and
none is behind the forge. One subject is what got BRANCH-STALE rejected — the
difference is that an unpushed tag is never one of two legitimate conventions
the way tag-only releasing is, the remedy moves no published ref, and it
recurs at every release rather than once.

The reverse direction is deliberately not a finding: a clone that has not
fetched lately is behind the forge and nothing about the repository is wrong.

211 tests (was 205).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WWc4piM4QW6Jxfky2Rw4Z8
This commit is contained in:
Kjell Tore Guttormsen 2026-08-12 23:00:02 +02:00
commit aebd4d28a9
4 changed files with 124 additions and 1 deletions

View file

@ -45,6 +45,24 @@ versioning is [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
question, whether this org publishes releases at all, by exiting 1 on its own
author.
- **`REMOTE-SYNC` — a tag that exists only in the operator's clone.** This is
the blind spot in `VERSION-TAG` rather than a duplicate of it: `VERSION-TAG`
reads LOCAL tags, so a manifest claiming `1.0.0` against an unpushed `v1.0.0`
reads as a clean pass while no stranger can resolve that version.
`portfolio-optimiser` is the measured case, and it read `OK` until this check
existed.
`ERROR`/`broken`, with the remedy named: `git push origin <tag>`. Measured
across all 21 registered clones (2026-08-12): exactly one repo has an unpushed
tag, and none is behind the forge. One subject is what got `BRANCH-STALE`
rejected — the difference is that an unpushed tag is never one of two
legitimate conventions the way tag-only releasing is, the remedy moves no
published ref, and the finding recurs at every release rather than once.
The reverse direction is deliberately not a finding. A clone that has not
fetched lately is behind the forge and nothing about the repository is wrong;
firing there would fail correct repositories on the reader's machine state.
### Changed
- **The API-call count in `CLAUDE.md` is three, updated in the same commit as