Umbrella propagation: impact map + gate + henxels contracts (#204) #212

Merged
conductor merged 34 commits from umbrella-pipeline into master 2026-09-08 03:35:58 +01:00
Owner

Summary

  • The umbrella system becomes the pipeline's change-propagation mechanism (original intent restored, now enforced):
    • config/umbrellas.json — the impact map: 8 umbrellas, all 104 modules mapped exactly once (91 src/rune + 13 shared/ harness), real canaries, acyclic depends_on DAG.
    • scripts/umbrella_impact.py — CI gate: PR diff → affected umbrellas → propagation verdict. Unmapped surfaces fail ("the map travels with the change"); changes to umbrellas with dependents require either dependent files in the PR or an explicit Propagation:/Propagation-waived: statement in the body. Wired into the unit-tests job (merge-base diff).
    • Canary selection subcommand (canaries) ready for targeted fast-gate CI selection.
    • Three henxels statements enforce the map itself: bidirectional completeness (umbrella_manifest_is_complete — the answer to "what updates the map": nothing auto-guesses; the gate makes omission impossible, assignment is a human-visible diff), canary existence (umbrella_canaries_exist), DAG acyclicity (umbrella_dag_acyclic).

Verification

  • 610+84 green; ratchet PASS; ruff clean; henxels --all holds (digest synced); ci.yml parses.
  • Contract tests: map completeness (bidirectional), canary existence + CI registration, DAG acyclicity, propagation logic on synthetic diffs, unmapped-surface flagging, dependent-canary selection.

Deliberate design choice (Nick's question: "something that updates the map?")

No auto-updater: umbrella assignment is a judgment call automation would guess wrong. Instead the gate makes omission structurally impossible (unmapped module = CI failure) while keeping every assignment a reviewed diff. The map cannot silently drift, and it cannot silently lie.

## Summary - The umbrella system becomes the pipeline's change-propagation mechanism (original intent restored, now enforced): - `config/umbrellas.json` — the impact map: 8 umbrellas, all 104 modules mapped exactly once (91 src/rune + 13 shared/ harness), real canaries, acyclic depends_on DAG. - `scripts/umbrella_impact.py` — CI gate: PR diff → affected umbrellas → propagation verdict. Unmapped surfaces fail ("the map travels with the change"); changes to umbrellas with dependents require either dependent files in the PR or an explicit `Propagation:`/`Propagation-waived:` statement in the body. Wired into the unit-tests job (merge-base diff). - Canary selection subcommand (`canaries`) ready for targeted fast-gate CI selection. - Three henxels statements enforce the map itself: bidirectional completeness (`umbrella_manifest_is_complete` — the answer to "what updates the map": nothing auto-guesses; the gate makes omission impossible, assignment is a human-visible diff), canary existence (`umbrella_canaries_exist`), DAG acyclicity (`umbrella_dag_acyclic`). ## Verification - 610+84 green; ratchet PASS; ruff clean; henxels --all holds (digest synced); ci.yml parses. - Contract tests: map completeness (bidirectional), canary existence + CI registration, DAG acyclicity, propagation logic on synthetic diffs, unmapped-surface flagging, dependent-canary selection. ## Deliberate design choice (Nick's question: "something that updates the map?") No auto-updater: umbrella assignment is a judgment call automation would guess wrong. Instead the gate makes omission structurally impossible (unmapped module = CI failure) while keeping every assignment a reviewed diff. The map cannot silently drift, and it cannot silently lie.
conductor added 1 commit 2026-09-07 18:32:40 +01:00
feat(pipeline): umbrella impact map + propagation gate — change-propagation contract via pipeline, runner, henxels (#204, T32)
CI Pipeline / lint (push) Successful in 24s
Auto-label / priority-gate (pull_request) Skipped
Auto-label / auto-label (pull_request) Successful in 2s
CI Pipeline / unit-tests (push) Successful in 32s
CI Pipeline / canary (push) Successful in 26s
CI Pipeline / best-practices (push) Successful in 2s
CI Pipeline / documentation (push) Successful in 2s
CI Pipeline / type-check (push) Successful in 20s
CI Pipeline / gitea-offline (push) Successful in 13s
CI Pipeline / required-checks (push) Skipped
CI Pipeline / lint (pull_request) Successful in 23s
CI Pipeline / unit-tests (pull_request) Successful in 30s
CI Pipeline / canary (pull_request) Successful in 23s
CI Pipeline / best-practices (pull_request) Successful in 2s
CI Pipeline / documentation (pull_request) Successful in 2s
CI Pipeline / type-check (pull_request) Successful in 20s
CI Pipeline / gitea-offline (pull_request) Successful in 13s
CI Pipeline / required-checks (pull_request) Successful in 0s
c00c0093e6
gitea-actions Bot added the custodiangovernanceinfrastructurememory labels 2026-09-07 18:32:49 +01:00
conductor added 5 commits 2026-09-07 18:42:56 +01:00
feat(contract): bug-fix discharge contract — red-first fixes, full pipeline re-entry, frozen regression tests (#147)
CI Pipeline / lint (push) Failing after 17s
CI Pipeline / unit-tests (push) Successful in 55s
CI Pipeline / canary (push) Successful in 26s
CI Pipeline / best-practices (push) Successful in 2s
CI Pipeline / documentation (push) Successful in 3s
CI Pipeline / type-check (push) Successful in 40s
CI Pipeline / gitea-offline (push) Successful in 20s
CI Pipeline / required-checks (push) Skipped
Auto-label / priority-gate (pull_request) Skipped
Auto-label / auto-label (pull_request) Successful in 2s
CI Pipeline / lint (pull_request) Failing after 17s
CI Pipeline / unit-tests (pull_request) Successful in 30s
CI Pipeline / canary (pull_request) Successful in 25s
CI Pipeline / best-practices (pull_request) Successful in 2s
CI Pipeline / documentation (pull_request) Successful in 3s
CI Pipeline / type-check (pull_request) Successful in 21s
CI Pipeline / gitea-offline (pull_request) Successful in 14s
CI Pipeline / required-checks (pull_request) Skipped
a78588048b
feat(contract): binding refinements (soak-close, escape accountability, fresh-context RCA, deja-vu, fixture promotion) + henxels rules fitted to pipeline (#147)
CI Pipeline / lint (push) Successful in 24s
CI Pipeline / unit-tests (push) Successful in 56s
CI Pipeline / canary (push) Successful in 26s
CI Pipeline / best-practices (push) Successful in 2s
CI Pipeline / documentation (push) Successful in 2s
CI Pipeline / type-check (push) Successful in 21s
CI Pipeline / gitea-offline (push) Successful in 13s
CI Pipeline / required-checks (push) Skipped
CI Pipeline / lint (pull_request) Failing after 17s
CI Pipeline / unit-tests (pull_request) Successful in 31s
CI Pipeline / canary (pull_request) Successful in 24s
CI Pipeline / best-practices (pull_request) Successful in 2s
CI Pipeline / documentation (pull_request) Successful in 2s
CI Pipeline / type-check (pull_request) Successful in 21s
CI Pipeline / gitea-offline (pull_request) Successful in 13s
CI Pipeline / required-checks (pull_request) Skipped
a9fe30bb7c
feat(contract): pipeline-expansion henxels — workflows/TUI registries, module-coverage rule with shrinking debt ledger (#204, #147)
CI Pipeline / lint (push) Successful in 39s
CI Pipeline / unit-tests (push) Successful in 39s
CI Pipeline / canary (push) Successful in 1m3s
CI Pipeline / best-practices (push) Successful in 2s
CI Pipeline / documentation (push) Successful in 2s
CI Pipeline / type-check (push) Successful in 21s
CI Pipeline / gitea-offline (push) Successful in 13s
CI Pipeline / required-checks (push) Skipped
CI Pipeline / lint (pull_request) Failing after 17s
CI Pipeline / unit-tests (pull_request) Successful in 30s
CI Pipeline / canary (pull_request) Successful in 24s
CI Pipeline / best-practices (pull_request) Successful in 2s
CI Pipeline / documentation (pull_request) Successful in 2s
CI Pipeline / type-check (pull_request) Successful in 21s
CI Pipeline / gitea-offline (pull_request) Successful in 13s
CI Pipeline / required-checks (pull_request) Skipped
dac9bec488
feat(docs): living PRDs — generated state sections + staleness gate for pipeline and TUI (#204)
CI Pipeline / lint (push) Failing after 17s
CI Pipeline / unit-tests (push) Successful in 31s
CI Pipeline / canary (push) Successful in 25s
CI Pipeline / best-practices (push) Successful in 2s
CI Pipeline / documentation (push) Successful in 2s
CI Pipeline / type-check (push) Successful in 22s
CI Pipeline / gitea-offline (push) Successful in 13s
CI Pipeline / required-checks (push) Skipped
CI Pipeline / lint (pull_request) Failing after 17s
CI Pipeline / unit-tests (pull_request) Successful in 30s
CI Pipeline / canary (pull_request) Successful in 25s
CI Pipeline / best-practices (pull_request) Successful in 2s
CI Pipeline / documentation (pull_request) Successful in 2s
CI Pipeline / type-check (pull_request) Successful in 21s
CI Pipeline / gitea-offline (pull_request) Successful in 13s
CI Pipeline / required-checks (pull_request) Skipped
ed9ec6df71
conductor added 1 commit 2026-09-07 19:14:30 +01:00
feat(review): structuralized adversarial procedure — black-box test author, mandatory reviewer question, mutation spot-checks (#151)
CI Pipeline / lint (push) Successful in 24s
CI Pipeline / unit-tests (push) Successful in 30s
CI Pipeline / canary (push) Successful in 24s
CI Pipeline / best-practices (push) Successful in 2s
CI Pipeline / documentation (push) Successful in 2s
CI Pipeline / type-check (push) Successful in 21s
CI Pipeline / gitea-offline (push) Successful in 13s
CI Pipeline / required-checks (push) Skipped
CI Pipeline / lint (pull_request) Failing after 16s
CI Pipeline / unit-tests (pull_request) Successful in 30s
CI Pipeline / canary (pull_request) Successful in 24s
CI Pipeline / best-practices (pull_request) Successful in 1s
CI Pipeline / documentation (pull_request) Successful in 2s
CI Pipeline / type-check (pull_request) Successful in 20s
CI Pipeline / gitea-offline (pull_request) Successful in 13s
CI Pipeline / required-checks (pull_request) Skipped
1bd276c448
conductor added 1 commit 2026-09-07 19:15:24 +01:00
docs(plan): #157 fixture pipeline plan — capture, redact, manifest, tamper-evidence (#157)
CI Pipeline / lint (push) Successful in 47s
CI Pipeline / unit-tests (push) Successful in 32s
CI Pipeline / canary (push) Successful in 24s
CI Pipeline / best-practices (push) Successful in 1s
CI Pipeline / documentation (push) Successful in 2s
CI Pipeline / type-check (push) Successful in 21s
CI Pipeline / gitea-offline (push) Successful in 13s
CI Pipeline / required-checks (push) Skipped
CI Pipeline / lint (pull_request) Failing after 16s
CI Pipeline / unit-tests (pull_request) Successful in 29s
CI Pipeline / canary (pull_request) Successful in 26s
CI Pipeline / best-practices (pull_request) Successful in 2s
CI Pipeline / documentation (pull_request) Successful in 2s
CI Pipeline / type-check (pull_request) Successful in 21s
CI Pipeline / gitea-offline (pull_request) Successful in 13s
CI Pipeline / required-checks (pull_request) Skipped
60e34cee49
conductor added 4 commits 2026-09-07 19:54:50 +01:00
scripts/capture_failure.py: one command turns a raw failure payload into a
sanitised fixture under tests/fixtures/production/<class>/<id>/ plus a
manifest.json entry carrying the payload's sha256 (tamper-evidence for the
generated regression tests). Redaction reuses #122's filer patterns (query
creds, DSN userinfo, bearer, assignments) — copied with attribution because
the filer module ships on the failure-auto-filing branch; parity is pinned
on the filer's own test literals. After redaction an independent residual
scan aborts the capture loudly (exit 3, nothing persisted) when a
credential-shaped span survives — over-redaction is a shape witness, a
leaked fixture is an incident.
capture_failure.py now generates tests/test_production_fixtures.py (template
embedded, written once — manifest-driven parametrization means regeneration
would be churn). One regression test per manifest fixture asserts the
system's CURRENT handling of the historical payload: sha256 tamper-evidence
(a payload edited without re-running capture fails), sanitiser idempotence,
metadata shape, and per-class checker dispatch — the recorded payload must
be CAUGHT by its class's checker so a recurrence fails CI. First checker:
env-case-mismatch (#192's CONVERGED casing defect), mirroring the boolean
env-export guard from the #192 discharge.
Seeds the pipeline with the REAL #192 CONVERGED case-mismatch payload: the
safety-net convergence step exported Python-cased True/False from
json.load while the steps compared env.CONVERGED == 'false' — both
conditionals unreachable (discharged on the release-safety-net branch,
public in PR #211's diff). Captured via the pipeline itself
(--class env-case-mismatch --source ci, 0 redactions — the payload is
already public and credential-free). The generated regression test asserts
the boolean-export checker still FLAGS the recorded payload
(checker_expectation: flags), so a recurrence of the class fails CI.

Manifest gains checker_expectation: capture records whether the class's
checker raises on the payload ('flags' — the raise IS the recurrence alarm)
or must stay quiet ('passes'); the generated tests enforce the recorded
expectation, so a checker that stops catching its recorded defect rots the
suite red.

Docs: bugfix-contract §10 gains the operational capture step + explicit
trivial-bug exemption list; README dev section points at the pipeline;
tests/fixtures/production/README.md documents the flow.

Henxels: capture_failure.py required in scripts/; production fixtures
governed (manifest.json + README.md required); payload.json and
manifest.json travel together (changed_with both directions, verified to
bite on a payload-only staged change).
docs(plan): #157 fixture pipeline completion record — commits, red evidence, kill tests, deviations (#157)
CI Pipeline / lint (push) Successful in 23s
CI Pipeline / unit-tests (push) Successful in 30s
CI Pipeline / canary (push) Successful in 26s
CI Pipeline / best-practices (push) Successful in 2s
CI Pipeline / documentation (push) Successful in 2s
CI Pipeline / type-check (push) Successful in 21s
CI Pipeline / gitea-offline (push) Successful in 13s
CI Pipeline / required-checks (push) Skipped
CI Pipeline / lint (pull_request) Failing after 16s
CI Pipeline / unit-tests (pull_request) Successful in 30s
CI Pipeline / canary (pull_request) Successful in 25s
CI Pipeline / best-practices (pull_request) Successful in 2s
CI Pipeline / documentation (pull_request) Successful in 2s
CI Pipeline / type-check (pull_request) Successful in 21s
CI Pipeline / gitea-offline (pull_request) Successful in 13s
CI Pipeline / required-checks (pull_request) Skipped
135d24d193
conductor added 1 commit 2026-09-07 19:55:35 +01:00
fix(henxels): changed_with patterns without ./ prefix — git diff paths never carry it; two rules were inert (#157 discharge finding)
CI Pipeline / lint (push) Successful in 23s
CI Pipeline / unit-tests (push) Successful in 30s
CI Pipeline / canary (push) Successful in 24s
CI Pipeline / best-practices (push) Successful in 2s
CI Pipeline / documentation (push) Successful in 2s
CI Pipeline / type-check (push) Successful in 20s
CI Pipeline / gitea-offline (push) Successful in 13s
CI Pipeline / required-checks (push) Skipped
CI Pipeline / lint (pull_request) Failing after 16s
CI Pipeline / unit-tests (pull_request) Successful in 29s
CI Pipeline / canary (pull_request) Successful in 30s
CI Pipeline / best-practices (pull_request) Successful in 2s
CI Pipeline / documentation (pull_request) Successful in 2s
CI Pipeline / type-check (pull_request) Successful in 21s
CI Pipeline / gitea-offline (pull_request) Successful in 13s
CI Pipeline / required-checks (pull_request) Skipped
0d28acb39a
conductor added 4 commits 2026-09-07 20:20:05 +01:00
The hand-rolled allowlist in tui_validator.py drifted from rune_tui.py's
real imports: 'from __future__ import annotations' (8126f1c) and bare
'import rune' (44cba5c) were flagged as not-found — the canary printed
two known false-failures on every run. The hand list is the defect class
(it drifts by construction), so replace it with ruff-isort-style
declarative classification, stdlib-only (no new dependency):

- relative imports -> their own class, never flagged (ruff semantics)
- stdlib via sys.stdlib_module_names (covers __future__, a compiler
  directive, not a runtime import)
- external: explicit 3-name set (textual, textual_autocomplete, rich) —
  the only hand-maintained list left
- first-party: GENERATED from the src/rune/ listing plus the package
  itself (_first_party_modules); sync-guarded by test
- scripts/ fallback kept; only 'unknown' is flagged

Tests written first (red: 10 failed incl. the headline zero-false-
failures assertion on the real rune_tui.py); regression guard pins
_first_party_modules to the directory listing. (#139)
The content-matched tolerance tuple in canary_native.py (added by #138 as
a stopgap for the drifted validator allowlist) is removed: with #139's
declarative classification in tui_validator.py there are no known
false-failures left to tolerate, and a residual shim would mask a
regression of this very class. Every TUI validator error now counts as
failed.

The I2 frozen test (test_canary_native_tolerance_is_content_matched) is
replaced by test_canary_native_has_no_false_failure_tolerance, which
fails if the tolerance tuple or its warning branch returns — red at HEAD
(tuple still present), green after this change. Red demonstration: with
the pre-#139 validator restored, the tolerance-free canary reports
'91 passed, 2 failed' (__future__ + rune) instead of silently warning.

plans/2026-09-05-structural-contract.md:241 assigned tolerance removal
to #139. (#139)
tui_validator.py and tests/test_tui_validator_imports.py fully
format-clean. canary_native.py: blank line added in the #139-edited
region only; the file carries pre-existing format drift (import blocks
at L19/L199 wanting blank lines) that predates #139 — reformatting
wholesale would add churn outside this issue's diff. (#139)
docs(plan): #139 tui-validator drift — plan + completion record (#139)
CI Pipeline / lint (push) Successful in 22s
CI Pipeline / unit-tests (push) Successful in 30s
CI Pipeline / canary (push) Successful in 26s
CI Pipeline / best-practices (push) Successful in 2s
CI Pipeline / documentation (push) Successful in 2s
CI Pipeline / type-check (push) Successful in 21s
CI Pipeline / gitea-offline (push) Successful in 14s
CI Pipeline / required-checks (push) Skipped
CI Pipeline / lint (pull_request) Failing after 17s
CI Pipeline / unit-tests (pull_request) Successful in 30s
CI Pipeline / canary (pull_request) Successful in 24s
CI Pipeline / best-practices (pull_request) Successful in 2s
CI Pipeline / documentation (pull_request) Successful in 2s
CI Pipeline / type-check (pull_request) Successful in 20s
CI Pipeline / gitea-offline (pull_request) Successful in 12s
CI Pipeline / required-checks (pull_request) Skipped
860a0440a5
Red-first evidence, canary before/after, kill-test transcripts, suite
and ratchet results, deviations (pre-existing canary_native format
drift; system-python environment artifact; foreign-stash pop incident —
recovered, no data lost). (#139)
conductor added 1 commit 2026-09-07 20:21:43 +01:00
feat(pipeline): headless spec-gate stage — agent cognition as scoped Actions step, non-blocking verdict (#204 first slice)
CI Pipeline / lint (push) Failing after 26s
CI Pipeline / unit-tests (push) Successful in 29s
CI Pipeline / canary (push) Successful in 24s
CI Pipeline / best-practices (push) Successful in 2s
CI Pipeline / documentation (push) Successful in 1s
CI Pipeline / type-check (push) Successful in 20s
CI Pipeline / gitea-offline (push) Successful in 13s
CI Pipeline / required-checks (push) Skipped
CI Pipeline / lint (pull_request) Failing after 16s
CI Pipeline / unit-tests (pull_request) Successful in 36s
CI Pipeline / canary (pull_request) Successful in 25s
CI Pipeline / best-practices (pull_request) Successful in 2s
CI Pipeline / documentation (pull_request) Successful in 2s
CI Pipeline / type-check (pull_request) Successful in 21s
CI Pipeline / gitea-offline (pull_request) Successful in 13s
CI Pipeline / required-checks (pull_request) Skipped
Spec gate (headless) / spec-gate (pull_request) Successful in 3s
ab4dbf8d41

🤖 Headless spec gate (non-blocking, #204 first slice)

Spec-gate agent produced no text output — check runner logs.

Deterministic floors still govern the merge

This comment is advisory. Required checks (lint, tests, canaries, type-check, coverage, dependency lock, impact gate) remain the merge authority per docs/adversarial-review.md proportionality.

🤖 **Headless spec gate (non-blocking, #204 first slice)** Spec-gate agent produced no text output — check runner logs. <details><summary>Deterministic floors still govern the merge</summary> This comment is advisory. Required checks (lint, tests, canaries, type-check, coverage, dependency lock, impact gate) remain the merge authority per docs/adversarial-review.md proportionality.</details>
conductor added 1 commit 2026-09-07 20:39:07 +01:00
fix(pipeline): spec-gate stage runs agent as runner user — binary/auth/model wiring verified live (HEADLESS-OK smoke); fail-loud (no swallow) (#204)
CI Pipeline / lint (push) Failing after 24s
CI Pipeline / unit-tests (push) Successful in 30s
CI Pipeline / canary (push) Successful in 23s
CI Pipeline / best-practices (push) Successful in 2s
CI Pipeline / documentation (push) Successful in 2s
CI Pipeline / type-check (push) Successful in 20s
CI Pipeline / gitea-offline (push) Successful in 13s
CI Pipeline / required-checks (push) Skipped
CI Pipeline / lint (pull_request) Failing after 17s
CI Pipeline / unit-tests (pull_request) Successful in 31s
CI Pipeline / canary (pull_request) Successful in 25s
CI Pipeline / best-practices (pull_request) Successful in 2s
CI Pipeline / documentation (pull_request) Successful in 3s
CI Pipeline / type-check (pull_request) Successful in 23s
CI Pipeline / gitea-offline (pull_request) Successful in 13s
CI Pipeline / required-checks (pull_request) Skipped
Spec gate (headless) / spec-gate (pull_request) Successful in 5s
b9250a5fb1

🤖 Headless spec gate (non-blocking, #204 first slice)

Spec-gate agent produced no text output — check runner logs.

Deterministic floors still govern the merge

This comment is advisory. Required checks (lint, tests, canaries, type-check, coverage, dependency lock, impact gate) remain the merge authority per docs/adversarial-review.md proportionality.

🤖 **Headless spec gate (non-blocking, #204 first slice)** Spec-gate agent produced no text output — check runner logs. <details><summary>Deterministic floors still govern the merge</summary> This comment is advisory. Required checks (lint, tests, canaries, type-check, coverage, dependency lock, impact gate) remain the merge authority per docs/adversarial-review.md proportionality.</details>
conductor added 1 commit 2026-09-07 20:47:01 +01:00
ci(lint): silent-handler ratchet — S110+BLE001 selection with shrinking baseline (#126)
CI Pipeline / lint (push) Failing after 16s
CI Pipeline / unit-tests (push) Failing after 31s
CI Pipeline / canary (push) Successful in 25s
CI Pipeline / best-practices (push) Successful in 2s
CI Pipeline / documentation (push) Successful in 2s
CI Pipeline / type-check (push) Successful in 20s
CI Pipeline / gitea-offline (push) Successful in 13s
CI Pipeline / required-checks (push) Skipped
CI Pipeline / lint (pull_request) Failing after 16s
CI Pipeline / unit-tests (pull_request) Failing after 30s
CI Pipeline / canary (pull_request) Successful in 26s
CI Pipeline / best-practices (pull_request) Successful in 2s
CI Pipeline / documentation (pull_request) Successful in 2s
CI Pipeline / type-check (pull_request) Successful in 21s
CI Pipeline / gitea-offline (pull_request) Successful in 26s
CI Pipeline / required-checks (pull_request) Skipped
Spec gate (headless) / spec-gate (pull_request) Successful in 9s
62705bb219
Blast radius at ab4dbf8: BLE001 455 / S110 117 over src/ shared/ scripts/
(T201 1625 measured, not enforced). Enforcement mirrors the pyright ratchet:
scripts/lint_ratchet.py + lint-baseline.json, wired as an append-only step in
the ci.yml lint job. Contract tests red->green in
tests/test_ci_lint_contract.py; debt ledger docs/silent-handler-debt.md.

🤖 Headless spec gate (non-blocking, #204 first slice)

Spec-gate agent produced no text output — check runner logs.

Deterministic floors still govern the merge

This comment is advisory. Required checks (lint, tests, canaries, type-check, coverage, dependency lock, impact gate) remain the merge authority per docs/adversarial-review.md proportionality.

🤖 **Headless spec gate (non-blocking, #204 first slice)** Spec-gate agent produced no text output — check runner logs. <details><summary>Deterministic floors still govern the merge</summary> This comment is advisory. Required checks (lint, tests, canaries, type-check, coverage, dependency lock, impact gate) remain the merge authority per docs/adversarial-review.md proportionality.</details>
conductor added 1 commit 2026-09-07 20:58:14 +01:00
Merge remote-tracking branch 'gitea/master' into umbrella-pipeline
CI Pipeline / unit-tests (push) Failing after 33s
CI Pipeline / canary (push) Successful in 25s
CI Pipeline / best-practices (push) Successful in 2s
CI Pipeline / documentation (push) Successful in 2s
CI Pipeline / type-check (push) Successful in 22s
CI Pipeline / gitea-offline (push) Successful in 27s
CI Pipeline / lint (pull_request) Failing after 28s
CI Pipeline / unit-tests (pull_request) Failing after 59s
CI Pipeline / canary (pull_request) Successful in 35s
CI Pipeline / best-practices (pull_request) Successful in 2s
CI Pipeline / documentation (pull_request) Successful in 2s
CI Pipeline / type-check (pull_request) Successful in 47s
CI Pipeline / gitea-offline (pull_request) Successful in 14s
CI Pipeline / required-checks (pull_request) Skipped
Spec gate (headless) / spec-gate (pull_request) Successful in 14s
CI Pipeline / lint (push) Failing after 47s
CI Pipeline / required-checks (push) Skipped
49d7924c74
conductor added 1 commit 2026-09-07 20:58:31 +01:00
style: ruff format added files — CI lint format-check green
CI Pipeline / lint (push) Failing after 24s
CI Pipeline / unit-tests (push) Failing after 17s
CI Pipeline / canary (push) Successful in 31s
CI Pipeline / best-practices (push) Successful in 1s
CI Pipeline / documentation (push) Successful in 2s
CI Pipeline / type-check (push) Successful in 21s
CI Pipeline / gitea-offline (push) Successful in 13s
CI Pipeline / required-checks (push) Skipped
CI Pipeline / lint (pull_request) Failing after 17s
CI Pipeline / unit-tests (pull_request) Failing after 17s
CI Pipeline / canary (pull_request) Successful in 25s
CI Pipeline / best-practices (pull_request) Successful in 3s
CI Pipeline / documentation (pull_request) Successful in 2s
CI Pipeline / type-check (pull_request) Successful in 21s
CI Pipeline / gitea-offline (pull_request) Successful in 13s
CI Pipeline / required-checks (pull_request) Skipped
Spec gate (headless) / spec-gate (pull_request) Successful in 8s
7fe82ec307
conductor added 2 commits 2026-09-07 21:00:49 +01:00
Baseline {BLE001: 351, S110: 79} (was 455/117): 103 handlers in
memory_store.py, warm_router.py, curator.py, tool_executor.py now log
tracebacks via logger.debug(.., exc_info=True) or carry reasoned
# noqa: BLE001 (warm_router P0-06 record_failure paths). Ledger table
regenerated from the live tree; Completion Record appended to the plan.
style: ruff format remaining added files
CI Pipeline / lint (push) Failing after 45s
CI Pipeline / unit-tests (push) Failing after 17s
CI Pipeline / canary (push) Successful in 26s
CI Pipeline / best-practices (push) Successful in 3s
CI Pipeline / documentation (push) Successful in 3s
CI Pipeline / type-check (push) Successful in 21s
CI Pipeline / gitea-offline (push) Successful in 13s
CI Pipeline / required-checks (push) Skipped
CI Pipeline / lint (pull_request) Failing after 23s
CI Pipeline / unit-tests (pull_request) Failing after 16s
CI Pipeline / canary (pull_request) Successful in 25s
CI Pipeline / best-practices (pull_request) Successful in 2s
CI Pipeline / documentation (pull_request) Successful in 3s
CI Pipeline / type-check (pull_request) Successful in 55s
CI Pipeline / gitea-offline (pull_request) Successful in 13s
CI Pipeline / required-checks (pull_request) Skipped
Spec gate (headless) / spec-gate (pull_request) Successful in 5s
31d849eff4

🤖 Headless spec gate (non-blocking, #204 first slice)

Spec-gate agent produced no text output — check runner logs.

Deterministic floors still govern the merge

This comment is advisory. Required checks (lint, tests, canaries, type-check, coverage, dependency lock, impact gate) remain the merge authority per docs/adversarial-review.md proportionality.

🤖 **Headless spec gate (non-blocking, #204 first slice)** Spec-gate agent produced no text output — check runner logs. <details><summary>Deterministic floors still govern the merge</summary> This comment is advisory. Required checks (lint, tests, canaries, type-check, coverage, dependency lock, impact gate) remain the merge authority per docs/adversarial-review.md proportionality.</details>

🤖 Headless spec gate (non-blocking, #204 first slice)

Spec-gate agent produced no text output — check runner logs.

Deterministic floors still govern the merge

This comment is advisory. Required checks (lint, tests, canaries, type-check, coverage, dependency lock, impact gate) remain the merge authority per docs/adversarial-review.md proportionality.

🤖 **Headless spec gate (non-blocking, #204 first slice)** Spec-gate agent produced no text output — check runner logs. <details><summary>Deterministic floors still govern the merge</summary> This comment is advisory. Required checks (lint, tests, canaries, type-check, coverage, dependency lock, impact gate) remain the merge authority per docs/adversarial-review.md proportionality.</details>

🤖 Headless spec gate (non-blocking, #204 first slice)

Spec-gate agent produced no text output — check runner logs.

Deterministic floors still govern the merge

This comment is advisory. Required checks (lint, tests, canaries, type-check, coverage, dependency lock, impact gate) remain the merge authority per docs/adversarial-review.md proportionality.

🤖 **Headless spec gate (non-blocking, #204 first slice)** Spec-gate agent produced no text output — check runner logs. <details><summary>Deterministic floors still govern the merge</summary> This comment is advisory. Required checks (lint, tests, canaries, type-check, coverage, dependency lock, impact gate) remain the merge authority per docs/adversarial-review.md proportionality.</details>
conductor added 6 commits 2026-09-07 21:16:58 +01:00
style: ruff format discharge checker (CI lint format-check)
CI Pipeline / lint (push) Failing after 17s
CI Pipeline / unit-tests (push) Successful in 55s
CI Pipeline / canary (push) Successful in 25s
CI Pipeline / best-practices (push) Successful in 2s
CI Pipeline / documentation (push) Successful in 2s
CI Pipeline / type-check (push) Failing after 21s
CI Pipeline / gitea-offline (push) Successful in 14s
CI Pipeline / required-checks (push) Skipped
CI Pipeline / lint (pull_request) Failing after 24s
CI Pipeline / unit-tests (pull_request) Successful in 30s
CI Pipeline / canary (pull_request) Successful in 25s
CI Pipeline / best-practices (pull_request) Successful in 2s
CI Pipeline / documentation (pull_request) Successful in 3s
CI Pipeline / type-check (pull_request) Failing after 21s
CI Pipeline / gitea-offline (pull_request) Successful in 13s
CI Pipeline / required-checks (pull_request) Skipped
62abca0538
Merge remote-tracking branch 'gitea/master' into bugfix-contract
CI Pipeline / lint (pull_request) Successful in 24s
CI Pipeline / unit-tests (pull_request) Successful in 58s
CI Pipeline / canary (pull_request) Successful in 25s
CI Pipeline / best-practices (pull_request) Successful in 2s
CI Pipeline / documentation (pull_request) Successful in 2s
CI Pipeline / type-check (pull_request) Successful in 21s
CI Pipeline / gitea-offline (pull_request) Successful in 13s
CI Pipeline / required-checks (pull_request) Successful in 0s
auto-version.yml (push) Invalid workflow file
CI Pipeline / best-practices (push) Successful in 3s
CI Pipeline / documentation (push) Successful in 2s
CI Pipeline / gitea-offline (push) Successful in 14s
CI Pipeline / canary (push) Failing after 35s
CI Pipeline / lint (push) Successful in 41s
CI Pipeline / unit-tests (push) Failing after 47s
CI Pipeline / type-check (push) Successful in 31s
CI Pipeline / required-checks (push) Skipped
65b76afb8c
docs(registry): register spec-gate-headless workflow — own henxel's demand honored
CI Pipeline / lint (push) Successful in 23s
CI Pipeline / unit-tests (push) Failing after 17s
CI Pipeline / canary (push) Successful in 25s
CI Pipeline / best-practices (push) Successful in 2s
CI Pipeline / documentation (push) Successful in 2s
CI Pipeline / type-check (push) Successful in 21s
CI Pipeline / gitea-offline (push) Successful in 16s
CI Pipeline / required-checks (push) Skipped
CI Pipeline / lint (pull_request) Successful in 27s
CI Pipeline / unit-tests (pull_request) Failing after 17s
CI Pipeline / canary (pull_request) Successful in 25s
CI Pipeline / best-practices (pull_request) Successful in 2s
CI Pipeline / documentation (pull_request) Successful in 2s
CI Pipeline / type-check (pull_request) Successful in 21s
CI Pipeline / gitea-offline (pull_request) Successful in 13s
CI Pipeline / required-checks (pull_request) Skipped
Spec gate (headless) / spec-gate (pull_request) Successful in 5s
Auto-label / priority-gate (pull_request) Skipped
Auto-label / auto-label (pull_request) Successful in 1s
26f79b8ae3

🤖 Headless spec gate (non-blocking, #204 first slice)

Spec-gate agent produced no text output — check runner logs.

Deterministic floors still govern the merge

This comment is advisory. Required checks (lint, tests, canaries, type-check, coverage, dependency lock, impact gate) remain the merge authority per docs/adversarial-review.md proportionality.

🤖 **Headless spec gate (non-blocking, #204 first slice)** Spec-gate agent produced no text output — check runner logs. <details><summary>Deterministic floors still govern the merge</summary> This comment is advisory. Required checks (lint, tests, canaries, type-check, coverage, dependency lock, impact gate) remain the merge authority per docs/adversarial-review.md proportionality.</details>
conductor added 1 commit 2026-09-07 22:34:49 +01:00
ci: retrigger — Propagation statement added to PR body (own gate demanded it, body edits do not re-fire CI)
CI Pipeline / best-practices (push) Successful in 2s
CI Pipeline / documentation (push) Successful in 2s
CI Pipeline / lint (push) Successful in 26s
CI Pipeline / unit-tests (push) Failing after 17s
CI Pipeline / canary (push) Successful in 27s
CI Pipeline / gitea-offline (push) Successful in 13s
CI Pipeline / type-check (push) Successful in 23s
CI Pipeline / required-checks (push) Skipped
CI Pipeline / best-practices (pull_request) Successful in 2s
CI Pipeline / documentation (pull_request) Successful in 2s
CI Pipeline / lint (pull_request) Successful in 25s
CI Pipeline / unit-tests (pull_request) Failing after 18s
Spec gate (headless) / spec-gate (pull_request) Successful in 5s
CI Pipeline / canary (pull_request) Successful in 29s
CI Pipeline / gitea-offline (pull_request) Successful in 14s
CI Pipeline / type-check (pull_request) Successful in 22s
CI Pipeline / required-checks (pull_request) Skipped
d1a394289c

🤖 Headless spec gate (non-blocking, #204 first slice)

Spec-gate agent produced no text output — check runner logs.

Deterministic floors still govern the merge

This comment is advisory. Required checks (lint, tests, canaries, type-check, coverage, dependency lock, impact gate) remain the merge authority per docs/adversarial-review.md proportionality.

🤖 **Headless spec gate (non-blocking, #204 first slice)** Spec-gate agent produced no text output — check runner logs. <details><summary>Deterministic floors still govern the merge</summary> This comment is advisory. Required checks (lint, tests, canaries, type-check, coverage, dependency lock, impact gate) remain the merge authority per docs/adversarial-review.md proportionality.</details>
conductor added 1 commit 2026-09-08 00:58:34 +01:00
merge master (resolve: master's ci/README evolution wins)
CI Pipeline / best-practices (pull_request) Successful in 2s
CI Pipeline / documentation (pull_request) Successful in 2s
CI Pipeline / lint (pull_request) Failing after 29s
CI Pipeline / canary (pull_request) Successful in 26s
CI Pipeline / type-check (pull_request) Successful in 23s
CI Pipeline / unit-tests (pull_request) Failing after 36s
CI Pipeline / gitea-offline (pull_request) Successful in 13s
CI Pipeline / required-checks (pull_request) Skipped
CI Pipeline / best-practices (push) Successful in 2s
CI Pipeline / documentation (push) Successful in 2s
CI Pipeline / lint (push) Failing after 28s
CI Pipeline / canary (push) Successful in 26s
CI Pipeline / type-check (push) Successful in 23s
CI Pipeline / gitea-offline (push) Successful in 13s
CI Pipeline / unit-tests (push) Failing after 35s
CI Pipeline / required-checks (push) Skipped
a64ae2d0ff
conductor added 4 commits 2026-09-08 01:09:32 +01:00
merge remote branch (keep ROBOT_TOKEN-wired spec-gate)
CI Pipeline / best-practices (push) Successful in 4s
CI Pipeline / documentation (push) Successful in 3s
CI Pipeline / canary (push) Successful in 28s
CI Pipeline / lint (push) Failing after 31s
CI Pipeline / type-check (push) Successful in 22s
CI Pipeline / unit-tests (push) Failing after 38s
CI Pipeline / gitea-offline (push) Successful in 13s
CI Pipeline / required-checks (push) Skipped
CI Pipeline / best-practices (pull_request) Successful in 2s
CI Pipeline / documentation (pull_request) Successful in 2s
CI Pipeline / lint (pull_request) Failing after 27s
CI Pipeline / canary (pull_request) Successful in 26s
CI Pipeline / unit-tests (pull_request) Failing after 34s
Spec gate (headless) / spec-gate (pull_request) Successful in 5s
CI Pipeline / gitea-offline (pull_request) Successful in 13s
CI Pipeline / type-check (pull_request) Successful in 23s
CI Pipeline / required-checks (pull_request) Skipped
9996032b8f

🤖 Headless spec gate (non-blocking, #204 first slice)

Spec-gate agent produced no text output — check runner logs.

Deterministic floors still govern the merge

This comment is advisory. Required checks (lint, tests, canaries, type-check, coverage, dependency lock, impact gate) remain the merge authority per docs/adversarial-review.md proportionality.

🤖 **Headless spec gate (non-blocking, #204 first slice)** Spec-gate agent produced no text output — check runner logs. <details><summary>Deterministic floors still govern the merge</summary> This comment is advisory. Required checks (lint, tests, canaries, type-check, coverage, dependency lock, impact gate) remain the merge authority per docs/adversarial-review.md proportionality.</details>
conductor added 1 commit 2026-09-08 01:18:49 +01:00
docs(registry): register research-stage + backlog-sweep workflows — the registry henxel caught them on the #212 tree (fix on landing branch)
CI Pipeline / best-practices (push) Successful in 4s
CI Pipeline / documentation (push) Successful in 2s
CI Pipeline / canary (push) Successful in 26s
CI Pipeline / lint (push) Successful in 28s
CI Pipeline / type-check (push) Successful in 24s
CI Pipeline / unit-tests (push) Failing after 38s
CI Pipeline / gitea-offline (push) Successful in 14s
CI Pipeline / required-checks (push) Skipped
CI Pipeline / best-practices (pull_request) Successful in 2s
CI Pipeline / documentation (pull_request) Successful in 2s
CI Pipeline / canary (pull_request) Successful in 24s
CI Pipeline / lint (pull_request) Successful in 34s
CI Pipeline / unit-tests (pull_request) Failing after 35s
Spec gate (headless) / spec-gate (pull_request) Successful in 5s
CI Pipeline / type-check (pull_request) Successful in 22s
CI Pipeline / gitea-offline (pull_request) Successful in 15s
CI Pipeline / required-checks (pull_request) Skipped
2f6625de55

🤖 Headless spec gate (non-blocking, #204 first slice)

Spec-gate agent produced no text output — check runner logs.

Deterministic floors still govern the merge

This comment is advisory. Required checks (lint, tests, canaries, type-check, coverage, dependency lock, impact gate) remain the merge authority per docs/adversarial-review.md proportionality.

🤖 **Headless spec gate (non-blocking, #204 first slice)** Spec-gate agent produced no text output — check runner logs. <details><summary>Deterministic floors still govern the merge</summary> This comment is advisory. Required checks (lint, tests, canaries, type-check, coverage, dependency lock, impact gate) remain the merge authority per docs/adversarial-review.md proportionality.</details>
conductor added 1 commit 2026-09-08 01:40:57 +01:00
fix(ci): re-graft #126 silent-handler ratchet — lost in merge resolution again; test_ci_lint_contract guards it (this is the last manual fix: the robot now self-heals staleness)
CI Pipeline / best-practices (push) Successful in 3s
CI Pipeline / documentation (push) Successful in 2s
CI Pipeline / canary (push) Successful in 26s
CI Pipeline / type-check (push) Successful in 23s
CI Pipeline / lint (push) Successful in 37s
CI Pipeline / unit-tests (push) Failing after 36s
CI Pipeline / gitea-offline (push) Successful in 13s
CI Pipeline / required-checks (push) Skipped
CI Pipeline / best-practices (pull_request) Successful in 2s
CI Pipeline / documentation (pull_request) Successful in 2s
CI Pipeline / canary (pull_request) Successful in 26s
CI Pipeline / lint (pull_request) Successful in 34s
CI Pipeline / type-check (pull_request) Successful in 22s
Spec gate (headless) / spec-gate (pull_request) Successful in 5s
CI Pipeline / unit-tests (pull_request) Failing after 36s
CI Pipeline / gitea-offline (pull_request) Successful in 14s
CI Pipeline / required-checks (pull_request) Skipped
efe83a86d6

🤖 Headless spec gate (non-blocking, #204 first slice)

Spec-gate agent produced no text output — check runner logs.

Deterministic floors still govern the merge

This comment is advisory. Required checks (lint, tests, canaries, type-check, coverage, dependency lock, impact gate) remain the merge authority per docs/adversarial-review.md proportionality.

🤖 **Headless spec gate (non-blocking, #204 first slice)** Spec-gate agent produced no text output — check runner logs. <details><summary>Deterministic floors still govern the merge</summary> This comment is advisory. Required checks (lint, tests, canaries, type-check, coverage, dependency lock, impact gate) remain the merge authority per docs/adversarial-review.md proportionality.</details>
conductor added 1 commit 2026-09-08 01:58:33 +01:00
fix(tests): lint-contract discovers ruff from the interpreter env, probe uses pytest tmp_path — CI builds .ci-venv not .venv; shared /tmp probe dir collided across runs
CI Pipeline / best-practices (push) Successful in 3s
CI Pipeline / documentation (push) Successful in 2s
CI Pipeline / canary (push) Successful in 32s
CI Pipeline / type-check (push) Successful in 24s
CI Pipeline / lint (push) Successful in 38s
CI Pipeline / unit-tests (push) Successful in 37s
CI Pipeline / gitea-offline (push) Successful in 14s
CI Pipeline / required-checks (push) Skipped
CI Pipeline / best-practices (pull_request) Successful in 2s
CI Pipeline / documentation (pull_request) Successful in 3s
CI Pipeline / canary (pull_request) Successful in 25s
CI Pipeline / lint (pull_request) Successful in 35s
CI Pipeline / unit-tests (pull_request) Successful in 35s
CI Pipeline / type-check (pull_request) Successful in 23s
CI Pipeline / gitea-offline (pull_request) Successful in 14s
Spec gate (headless) / spec-gate (pull_request) Successful in 26s
CI Pipeline / required-checks (pull_request) Successful in 1s
2d2d8aa21c

🤖 Headless spec gate (non-blocking, #204 first slice)

Spec-gate agent produced no text output — check runner logs.

Deterministic floors still govern the merge

This comment is advisory. Required checks (lint, tests, canaries, type-check, coverage, dependency lock, impact gate) remain the merge authority per docs/adversarial-review.md proportionality.

🤖 **Headless spec gate (non-blocking, #204 first slice)** Spec-gate agent produced no text output — check runner logs. <details><summary>Deterministic floors still govern the merge</summary> This comment is advisory. Required checks (lint, tests, canaries, type-check, coverage, dependency lock, impact gate) remain the merge authority per docs/adversarial-review.md proportionality.</details>
conductor added 1 commit 2026-09-08 03:34:21 +01:00
Merge branch 'master' into umbrella-pipeline
CI Pipeline / best-practices (push) Successful in 4s
CI Pipeline / documentation (push) Successful in 2s
CI Pipeline / canary (push) Successful in 26s
CI Pipeline / type-check (push) Successful in 24s
CI Pipeline / lint (push) Successful in 38s
CI Pipeline / unit-tests (push) Successful in 38s
CI Pipeline / gitea-offline (push) Successful in 14s
CI Pipeline / best-practices (pull_request) Successful in 2s
CI Pipeline / documentation (pull_request) Successful in 3s
CI Pipeline / lint (pull_request) Successful in 35s
CI Pipeline / canary (pull_request) Successful in 29s
CI Pipeline / type-check (pull_request) Successful in 23s
CI Pipeline / unit-tests (pull_request) Successful in 35s
Spec gate (headless) / spec-gate (pull_request) Successful in 5s
CI Pipeline / required-checks (push) Successful in 1s
CI Pipeline / gitea-offline (pull_request) Successful in 13s
CI Pipeline / required-checks (pull_request) Successful in 1s
Auto-version and Release / release (pull_request) Failing after 8s
c9d7c1ccef

🤖 Headless spec gate (non-blocking, #204 first slice)

Spec-gate agent produced no text output — check runner logs.

Deterministic floors still govern the merge

This comment is advisory. Required checks (lint, tests, canaries, type-check, coverage, dependency lock, impact gate) remain the merge authority per docs/adversarial-review.md proportionality.

🤖 **Headless spec gate (non-blocking, #204 first slice)** Spec-gate agent produced no text output — check runner logs. <details><summary>Deterministic floors still govern the merge</summary> This comment is advisory. Required checks (lint, tests, canaries, type-check, coverage, dependency lock, impact gate) remain the merge authority per docs/adversarial-review.md proportionality.</details>
conductor merged commit d88e1f0e77 into master 2026-09-08 03:35:58 +01:00
Sign in to join this conversation.
No Reviewers
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: conductor/rune#212