Files
rune/henxels.yaml
T
Nick 6ad7a9efce
CI Pipeline / best-practices (push) Successful in 9s
CI Pipeline / documentation (push) Successful in 9s
CI Pipeline / go-surface (push) Failing after 20s
CI Pipeline / required-checks (push) Canceled after 0s
CI Pipeline / CI Pipeline / notify-event-bridge (push) Canceled after 0s
Auto-version and Release / release (push) Canceled after 24s
CI Pipeline / unit-tests (push) Canceled after 24s
CI Pipeline / lint (push) Canceled after 22s
CI Pipeline / type-check (push) Canceled after 16s
CI Pipeline / canary (push) Canceled after 26s
CI Pipeline / rust-surface (push) Canceled after 26s
deploy / deploy (push) Canceled after 6s
CI Pipeline / gitea-offline (push) Canceled after 18s
feat(governance): the dichotomy gate as a henxel — D1/D2/D3 with machine-actionable feedback
Nick's order: enforce the dichotomy at the commit boundary via henxels, with
the SRE rigor. dichotomy_language_verdict (henxels_checks.py) checks every
src/rune/*.py against the measured map (store/rebase/classification.json):

- D1 wrong-language kernel: a RUST-classified module owning only a Go dir
  (with the wave-3 exemption: cc_<stem> in cognition_core/lib.rs is a
  correct RUST landing) — and the mirror case
- D2 dead-oracle facade: kernel ported (src/go|rust/<stem>/) but the Python
  module has zero delegation refs (cc_loader/_cc_core/sibling *_loader/
  ctypes/CDLL). Pre-existing 62 facades seeded into
  store/rebase/dichotomy_debt.json — tracked, ONLY SHRINKS; new facades fail
- D3 ratchet regression: a module in ported_ratchet.json (77-module floor)
  whose kernel directory vanished — ported work must never be deleted

Every failure message IS the next implementation instruction (target path,
parity-battery requirement, contract-first law) — the gate feeds Rune/
MiMo-Rune the correct implementation, not just a red X.

SRE: gate starts GREEN (debt is tracked, not silent); ratchet floors never
decrease; CI-enforced through the lint job's existing henxels check step.
Verification: synthetic-fixture probes prove all three classes fire and all
pass-cases stay silent; the probe itself found and fixed 2 statement bugs
(dict-shaped ratchet read; missing delegation forms); real-tree gate clean;
shims regression slice 122 passed.
2026-10-10 13:46:47 +01:00

151 lines
5.1 KiB
YAML

settings:
warn_about_similar_files:
above: 0.85
ignore:
- docs/review-lessons.yaml
- docs/v1/**
- docs/wiki/**
- store/spine/**
- shared/**
- src/rune/drift_core.py
- src/rune/drift_compression.py
- src/rune/drift_observability.py
- src/rune/shard_manager.py
- src/rune/subconscious_pass.py
- .gitea/ISSUE_TEMPLATE/**
- shared/issue_templates/**
- bridge/daemon/completion_file.py
- scripts/completion_file.py
- interop/rebase-proof/**
- src/rust/*/Cargo.lock
- src/rust/*/src/pyjson.rs
- src/rust/query_memory/src/json_min.rs
- store/scaffold/**
henxels:
- henxel: Canaries live at the repo's canary slot and are registered in CI
in: ./src/rune/**/canary_*.py
ci_runs_all_canaries: true
- henxel: No secrets in tracked files
no_secrets: true
except:
- ./tests/test_gitea_provision.py
- ./tests/test_gitea_auth.py
- ./.ci-venv/**
- ./.test-venv/**
- ./.canary-venv/**
- ./backups/**
- henxel: Plans are markdown, one per build
in: ./plans
allowed_filetypes:
- .md
filename_casing: kebab-case
- henxel: Top-level docs are markdown or yaml references
in: ./docs/*
allowed_filetypes:
- .md
- .yaml
except:
- ./docs/v1/**
- ./docs/wiki/**
- ./docs/gitea_issue_reconciliation.json
- ./docs/rebase/**
- henxel: "The known giant stays visible \u2014 file-size debt is tracked, not silent"
in: ./src/rune/*
except:
- ./src/rune/rune_tui.py
- ./src/rune/rune_operator.py
- ./src/rune/memory_store.py
- ./src/rune/curator.py
- ./src/rune/tool_executor.py
- ./src/rune/warm_router.py
- ./src/rune/spine.py
max_lines: 1250
- henxel: "The umbrella impact map is complete and truthful \u2014 every module mapped,\
\ no phantom entries"
in: ./config/umbrellas.json
umbrella_manifest_is_complete: true
- henxel: "Umbrella canaries exist in the repo \u2014 the propagation gate cannot\
\ reference ghosts"
in: ./config/umbrellas.json
umbrella_canaries_exist: true
- henxel: "The umbrella dependency graph stays a DAG \u2014 reflexive updates cannot\
\ cycle"
in: ./config/umbrellas.json
umbrella_dag_acyclic: true
- henxel: "The bug-fix discharge contract is a governed doc \u2014 it exists, is markdown,\
\ and changes are deliberate"
in: ./docs/bugfix-contract.md
allowed_filetypes:
- .md
- henxel: "The discharge checker ships with the repo \u2014 red-first enforcement\
\ is structural"
in: ./scripts
required_files:
- check_discharge_contract.py
- henxel: Discharge checker and its CI wiring change together
changed_with:
when: scripts/check_discharge_contract.py
expect: ./.gitea/workflows/pipeline-gate.yml
- henxel: "Every workflow is registered in the pipeline registry \u2014 new pipeline\
\ machinery ships with documentation"
in: ./.gitea/workflows/*.yml
workflows_are_governed: true
- henxel: "Every TUI surface is registered \u2014 no silent UI growth"
in: ./src/rune/*tui*.py
tui_panels_are_governed: true
- henxel: "New rune modules ship with tests or a canary \u2014 no ungoverned code\
\ surfaces"
in: ./src/rune/*.py
new_rune_modules_have_canary_or_test_coverage: true
- henxel: Rust crate files stay under a line budget
in: ./src/rust/*/src/*.rs
except:
- ./src/rust/*/src/pyjson.rs
- ./src/rust/*/src/json_min.rs
max_lines: 3000
- henxel: Go modules stay under a line budget
in: ./src/go/**/*.go
max_lines: 2000
- henxel: No secrets in Rust or Go source files
in:
- ./src/rust/*/src/*.rs
- ./src/go/**/*.go
no_secrets: true
- henxel: "PRDs are living documents \u2014 their generated state sections regenerate\
\ identically from governed sources"
changed_with:
when: config/umbrellas.json
expect: ./docs/pipeline-prd.md
- henxel: "PRD staleness is a CI failure \u2014 docs rot is silent failure"
in: ./scripts/gen_prd_state.py
required_files:
- gen_prd_state.py
- henxel: "The adversarial review procedure is binding \u2014 dispatch templates must\
\ reference it"
in: ./docs/adversarial-review.md
required_files:
- ../docs/reviewer-dispatch-template.md
- henxel: "The fixture pipeline ships with the repo \u2014 production failure capture\
\ is structural"
in: ./scripts
required_files:
- capture_failure.py
- henxel: "Production failure fixtures are a governed surface \u2014 the registry\
\ and its README exist"
in: ./tests/fixtures/production
required_files:
- manifest.json
- README.md
- henxel: "Fixture payloads and the manifest travel together \u2014 tamper-evidence\
\ needs both"
changed_with:
when: tests/fixtures/production/**/payload.json
expect: tests/fixtures/production/manifest.json
- henxel: The fixture manifest and its generated regression tests travel together
changed_with:
when: tests/fixtures/production/manifest.json
expect: tests/fixtures/production/test_production_fixtures.py
- henxel: "The dichotomy is enforced at the commit boundary — every src/rune module lands in its measured side, dead oracles and wrong-language kernels fail with the correct implementation as the instruction"
in: ./src/rune
dichotomy_language_verdict: true