Name transport faults and kept calls, and make developers check what the review found
Issue 1966's fix group showed two gaps in how a developer checks: an integration test the change broke went unseen because only the untagged suite ran, and a stale seat list made the local manifest validator refuse what the running one accepts. The developer definition and playbook 07's develop step now run the touched packages' integration tests against an embedded bus, the whole of mesh-sdk, and the validator against the live seat list and a fresh catalog trunk, and stop at two thirds of the context with a handover in the prepare file. The glossary gains transport fault (ADR 0664 §1, ADR 0668 §1) and kept call (ADR 0668). Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
This commit is contained in:
@@ -253,8 +253,15 @@ is a breach the lead names.
|
||||
acceptance criteria**: one test or more per criterion at the level it names, each test's comment citing
|
||||
the criterion it proves by its label (`// 1118/AC2`), and no criterion left without its test; an integration criterion is a test
|
||||
that compiles and is run by the pull request's one check. The integration tests (those that start a store, a bus
|
||||
or a process) are compiled with `go vet -tags integration ./...` while developing and run by that check; before the group's push only the tests that exercise the change are run by
|
||||
name (step 3), nothing else.
|
||||
or a process) are compiled with `go vet -tags integration ./...` while developing and run by that check. **Before a
|
||||
developer reports a head, it also runs the integration tests of every package the change touches, and of every
|
||||
package of the same module that imports one, against an embedded bus** (`go test -tags integration -count=1` on
|
||||
those packages, not the whole module): on 2026-11-10 a kept call broke an integration test of a fix group whose
|
||||
developers had run only the untagged suite, and the review's first round found it, not the developers. Before the
|
||||
group's push the tests that exercise the change are run by name (step 3), nothing else. **In mesh-sdk the whole
|
||||
untagged `./...` runs at every commit, whatever package the change is in**: a test there holds its copy of the seat
|
||||
list and fails on a change elsewhere. How it is checked: the developer's report names those packages and their
|
||||
results, and the reviewer refuses a head reported without them.
|
||||
- **Nothing is pushed and no pull request is opened in this step, and there is no try** (ADR 0548; the operator,
|
||||
2026-10-26: "every release should only run 1 check or 1 try"). When every issue is committed, the lead brings each
|
||||
feature branch up to the current trunk (fetch by name, then merge) and the review reads the local commits. Never call
|
||||
@@ -265,8 +272,15 @@ is a breach the lead names.
|
||||
message ("issue 805: landing in mesh-catalog"); reach the mesh only through the mesh MCP server, never ssh;
|
||||
never push, open, merge or close a pull request; never call a try; never write to a store's database by hand, a schema change
|
||||
is a numbered migration and the consolidated schema; Go only unless the context file says otherwise; never
|
||||
move another issue; **leave the integration tests to the check** (no store or bus started by hand): compile them
|
||||
with `go vet -tags integration ./...`. A single integration test may be run locally against an embedded bus when
|
||||
move another issue; **leave a module's whole integration level to the check** (no store or bus started by hand):
|
||||
compile it with `go vet -tags integration ./...`, and run only the touched packages' integration tests against an
|
||||
embedded bus before you report a head (above). **Judge a manifest and run the catalog's checks against what is live
|
||||
now:** the seat list the seat `mesh-catalog`'s verb `seat-definitions` answers, read in the same turn, with the
|
||||
definitions the change's heads alter laid over it for the change's case (ADR 0636 §4), and the catalog at its trunk,
|
||||
fetched fresh, beside it; never a captured copy, a test fixture or a list kept from an earlier run (2026-11-10: a
|
||||
stale seat list made eight manifests refused locally that the running validator accepts, and stale copies hid two
|
||||
failures). **Stop at about two thirds of your context** and write a handover section at the end of the prepare file,
|
||||
so a fresh agent continues from it (2026-11-10: four developers in turn carried one fix group so). A single integration test may be run locally against an embedded bus when
|
||||
it is the fastest way to find a cause, said in the review report and the pull request; before the group's push the
|
||||
tests that exercise the change are run this way, by name (step 3). After a failed check it
|
||||
usually pays to run that repository's whole integration level locally (`go test -tags integration -count=1 ./...` in each
|
||||
@@ -421,7 +435,7 @@ is a breach the lead names.
|
||||
`internal/beside` says.
|
||||
**Before the push, every member's suites run as the running checker runs them**: each sibling repository placed
|
||||
beside it by main's beside rules, the node-engine at the commit the machines run, and the running manifest validator
|
||||
over every manifest the change touches. On 2026-11-02 release sdk1 failed four checks one fault at a time (test
|
||||
over every manifest the change touches, given the live seat list and the catalog's fresh trunk (step 1's brief). On 2026-11-02 release sdk1 failed four checks one fault at a time (test
|
||||
globals left set, a sibling placed otherwise, the checker's manifest archive, a composition step the old checker could not
|
||||
build), each of which a run as the checker places things would have shown before the first push. How it is
|
||||
checked: the pull request's description names the placement, the node-engine commit and the manifest validator run used
|
||||
|
||||
@@ -291,7 +291,7 @@ code{font:12.5px ui-monospace,monospace;background:var(--soft);padding:1px 5px;b
|
||||
<li>One commit per issue, naming it; tests cite their criterion (<code>// 1217/AC3</code>).</li>
|
||||
<li><span class="tag new">new</span>A test fails first on what the code does. A compile error is no failure: take out the change's effect and see an assertion fail.</li>
|
||||
<li>The whole unit suite before every commit; each test well under a second.</li>
|
||||
<li>Integration tests are compiled only: never run on the machine.</li>
|
||||
<li><span class="tag new">new</span>Integration tests compiled whole; those of the packages the change touches (and of the packages importing them) run against an embedded bus before a head is reported.</li>
|
||||
<li>Never push, open or merge; never move an issue; never ssh.</li>
|
||||
<li>Code that differs from the context file: stop and report, file:line.</li>
|
||||
</ul>
|
||||
@@ -300,7 +300,7 @@ code{font:12.5px ui-monospace,monospace;background:var(--soft);padding:1px 5px;b
|
||||
|
||||
<!-- ============ TESTS ============ -->
|
||||
<h2 id="tests">When tests run</h2>
|
||||
<p class="lead">Two levels. Unit tests run all the time on the machine; integration tests (a bus, a store or a process started) are compiled there and never run: the checker's one merge check, asked by the one push after the review, runs them as the gate. There is no try (ADR 0548).</p>
|
||||
<p class="lead">Two levels. Unit tests run all the time on the machine; integration tests (a bus, a store or a process started) are compiled there whole, and only those of the packages a change touches are run there, against an embedded bus: the checker's one merge check, asked by the one push after the review, runs them as the gate. There is no try (ADR 0548).</p>
|
||||
<div class="box scroll">
|
||||
<svg viewBox="0 0 1080 170" role="img" aria-label="Test levels over a feature's timeline">
|
||||
<defs><marker id="ar3" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto"><path d="M0,0L10,5L0,10z" fill="var(--mute)"/></marker></defs>
|
||||
@@ -312,10 +312,10 @@ code{font:12.5px ui-monospace,monospace;background:var(--soft);padding:1px 5px;b
|
||||
<circle cx="160" cy="44" r="6"/><circle cx="220" cy="44" r="6"/><circle cx="290" cy="44" r="6"/><circle cx="350" cy="44" r="6"/><circle cx="420" cy="44" r="6"/><circle cx="600" cy="44" r="6"/><circle cx="680" cy="44" r="6"/>
|
||||
</g>
|
||||
<text x="830" y="42" class="mute">whole suite before every commit</text><text x="830" y="56" class="mute">each test under a second</text>
|
||||
<text x="10" y="104" class="t">Integration</text><text x="10" y="120" class="mute">never on the machine</text>
|
||||
<text x="10" y="104" class="t">Integration</text><text x="10" y="120" class="mute">touched packages only</text>
|
||||
<g>
|
||||
<rect x="120" y="96" width="340" height="16" rx="8" fill="var(--mute)" opacity=".18"/>
|
||||
<text x="290" y="108" text-anchor="middle" class="mute">compiled only: go vet -tags integration</text>
|
||||
<text x="290" y="108" text-anchor="middle" class="mute">compiled whole; touched packages run</text>
|
||||
<rect x="770" y="90" width="120" height="28" rx="6" fill="none" stroke="var(--mesh)" stroke-width="2" stroke-dasharray="5 4"/><text x="830" y="109" text-anchor="middle" class="mute">push once</text>
|
||||
<rect x="920" y="90" width="120" height="28" rx="6" fill="var(--mesh)"/><text x="980" y="109" text-anchor="middle" style="fill:var(--bg)" class="t">merge check</text>
|
||||
</g>
|
||||
|
||||
Reference in New Issue
Block a user