Home / Projects / Orchestrata Ultimate / Decisions / ADR index / ADR-0105

ADR-0105: The components branch pushes only after the affected-test gate learns the packages/** layout — a 345-commit push is not shipped past the gate with --no-verify

field value
Status Accepted — Accepted (ruling, Mohamed, 2026-10-18, on the push-decision prompt, verbatim: "Remediate the gate, then push")
Date 2026-10-18
Register factory (docs/adr, 4-digit ids)
Source docs/adr/0105-the-components-branch-pushes-only-after-the-affected-test-gate-learns-the-packages-layout-a-345-commit-push-is-not-shipped-past-the-gate-with-no-verify.md — permalink at 7328a1d12 (unchanged on master since that commit)
Wiki register entry ADR-0105 (wiki status: Accepted)

← ADR-0104 · ADR-0106 →

The record

Status: Accepted (ruling, Mohamed, 2026-10-18, on the push-decision prompt, verbatim: "Remediate the gate, then push") · Date: 2026-10-18

Context

Session 271 (2026-10-18), Mohamed's instruction: "clean up and push" on the wt-components project. The cleanup completed in five commits (chore gov/out ignore cd59b9b97; VOLKS lift v11 landing 5d8265be5; SPEC-AUDIT reverify evidence 028993f1d; WIKI toolchain scripts 0822e643f; session context/docs sync 191765874) and the working tree is clean. The branch components (HEAD 191765874) is 345 commits ahead of origin/master, has never been pushed, and no origin/components exists.

The push is blocked, and every push path to it is blocked by the same finding:

UNTESTED breakdown (range origin/master...HEAD), by subtree:

Subtree Files
packages/kernel 2,742
packages/contracts 1,388
packages/volks 828
packages/governance 806
packages/knowledge_graph 502
packages/design-scripts 475
packages/session 234
packages/gateway 175
.dsh/skills (symlink tree, 15 links) 15
packages/review-tools 10
packages/tools 1

By extension: 6,505 .py, 568 .json, 22 .toml, 20 .mmd, and a tail of lock/err/feature/ xml/gitignore files.

Root cause: the affected-selection model predates the multi-package layout. Only top-level src/ and tests/ are recognized coverage homes. The component lift (ADR-0103, VK-01 scaffold) lands components under packages/<pkg>/** with parity suites under packages/<pkg>/tests (measured on disk: contracts 128, kernel 298, governance 164, knowledge_graph 120, session 78, volks 220 test files) that run in per-package venvs — each packages/<pkg>/pyproject.toml is its own uv project, and the root pyproject.toml declares none of them as dependencies, so the root runner cannot even collect those suites. The gate therefore cannot see any of the packages' verification: component-wave parity reports (volks v11: parity PASS 32/32), lander records, per-package test runs, import_each.py. No pushed commit on origin/master ever touched packages/** — there is no precedent to follow.

Decision (proposed)

The components branch pushes only after the affected-test gate learns the packages/** layout. A 345-commit push is NOT shipped past the gate with --no-verify. The gate extension is a bounded packet:

  1. an affected_tests resolution source mapping packages/<pkg>/** to the package's own parity test tree (which genuinely covers it);
  2. a runner seam so run_tests.py executes per-package suites in the package's own venv (or a root wrapper the runner invokes and verifies) — the parity suites are not collectable under the root venv today;
  3. manifest rules for the machine-inert artifact classes: the .dsh/skills symlink tree → a link-tree test; .realize-out ledgers and design JSONs; packages/*/uv.lock → the lock parity check VK-01 already claims;
  4. then verify via deploy/ship.sh and push. Until the packet is green, the branch stays unpushed; the five cleanup commits remain on it.

Alternatives rejected

Consequences

Provenance

Rulings cited

None.

Specs cited

None (or no spec page exists for the ones named).