Skip to content

Squelette v3.19.2 — a blocked work item can resume again

Choose a tag to compare

@JyMinet JyMinet released this 12 Sep 22:22
· 4 commits to main since this release

A patch release, and a small lesson about tests that measure the wrong thing.

The defect

With the commit gate installed — the way a real project runs — a blocked work item carrying its
own commits could no longer resume
once another work item had been closed on the canonical
branch in the meantime. The alignment merge was refused: the closing commit of the sibling work
item was judged against the current branch alone, which does not contain it yet. The gate did
exactly what it was told, and what it was told was wrong.

Why the suite did not see it

The test suite builds its repositories without installing the commit gate. Only two tests
installed it. So the resume scenario was measured on a path that does not exist on a user's
machine: it passed without the gate and failed with it.

The rule that follows: a test about what the gate sees has to install the gate. The new test
test_resume_merges_under_the_installed_commit_gate does, and it is red on 3.19.1, green here.

The fix

Two touches of the same idea. history_heads() names what the next commit will descend from —
HEAD, plus every parent written in MERGE_HEAD, read line by line so an octopus merge does not
lose a parent. in_current_history() judges ancestry against that set instead of HEAD alone, and
done_evidence_errors uses it. And staged_worktree now builds its photograph of the index with
the same parents as the real commit — which is what its own docstring already promised.

Nothing to reinstall: scripts/hooks/pre-commit is unchanged. It calls the controller, and the
controller is what was fixed. A project upgrades with template-upgrade as usual.

The scope is deliberately narrow. The other ancestry checks against HEAD — declared baselines,
closure checks, status — are untouched, for want of a demonstrated failure. The observation is
recorded: they would judge a commit arriving through an in-progress merge the same way.

Also in this version

The scoping dossier of work item P7, "the question of what already exists" — a proposed extra
line on every work item: what already exists on this subject, and where? Two answers only, and the
controller refuses to start while the answer is missing. The mandate, its amendment, the read-only
measurement report and two independent review reports are published under
provenance/maintenance/. The work is scoped, not built: the eligibility boundary is decided
(the mark travels in the work item's own record), and the amendment records the four definitions
without which the rule contradicts itself in real use.

Verification

165 tests in the private repository, all green. In this mirror, 164 run and pass and one skips —
the check of the export tool, which stays private. audit, the demo check and the core manifest
agree with the tree.

Detail in provenance/CHANGELOG.md (decisions TPL-D-070 to TPL-D-072) and in
provenance/maintenance/scopes/p7-scope-question-de-l-existant.md.

Licence MIT.