Skip to content
Jonathan D.A. Jewell edited this page Aug 7, 2026 · 1 revision

What is owed

A tool that prices other repositories' waste has no business hiding its own.

The full register — every item evidenced with a file reference or a reproducible command — is DEBT.adoc in the repository. This page is the orientation summary.

The three things to know before relying on OikosBot

1. Per-file resource figures are one number in disguise. estimate_resources() derives energy, duration, carbon and memory from a single integer — the raw AST node count. Four of the five Pareto objectives are therefore scalar multiples of each other, and a frontier over collinear axes collapses to a one-dimensional sort. The dominance mathematics is correct; the inputs make it nearly vacuous. Solved at estate level (telemetry gives genuinely independent axes); unsolved at file level.

2. Two policy engines exist and neither executes.

  • policy-engine/datalog/eco_rules.dl defines the eco/econ/Pareto/allocation/debt rules in Souffle Datalog. Souffle is packaged as a dependency in guix/manifest.scm — and invoked nowhere. The rules have never run. Its allocation-waste and technical-debt rules have no Rust counterpart at all; the Alloc and Debt score terms are unrelated stand-ins.
  • The Eclexia policy backend that runs by default dispatches on the .ecl filename and never reads the file. Its hardcoded thresholds contradict the files they claim to implement. It now warns loudly on every evaluation — loud, and still fake.

3. --check cannot block a merge. Only Measured/Calibrated inputs may fail a run, and the per-file analyser emits only Estimated. The calibration module that would fix this is written in full and has zero callers (#48). It refuses loudly rather than passing silently — the honest handling of a gate that cannot yet gate.

By area

Area Worst Summary
Licence hygiene An orphaned AGPL text and a duplicated SPDX header (a doc licensed as code) — both fixed in the 2026-08-07 audit
Docs structural Two boilerplate files described a directory layout the repo doesn't have; ARCHITECTURE.adoc specifies components never built
Code blocking The collinearity problem above, plus unwired calibration
Proof blocking Both policy engines are specifications, not implementations
CI/CD hygiene This repo's CI is green; the consumer fleet cannot run until each repo ships an Actions lockfile

Things that were fixed by writing this down

The audit turned up three defects that a reader would otherwise have taken at face value:

  • An unearned OpenSSF Best Practices badge. A hardcoded green badge linking to the registration form. The OpenSSF API returns empty for this repository: never registered, no criteria passed. Removed.
  • ARCHITECTURE.md and GOVERNANCE.md — generic boilerplate describing a src/ tests/ scripts/ layout this repo does not have, shadowing the real .adoc versions. Deleted.
  • A duplicated SPDX header in docs/README.adocMPL-2.0 on line 1 shadowing CC-BY-SA-4.0 on line 2. Since the linter reads line 1 only, the documentation map was licensed as code. A duplicated header is more dangerous than a missing one: it passes the presence check while asserting the wrong licence.

What is explicitly not debt

So it is not re-litigated:

  • The dominance engine is correct work — ε-tolerant, normalised before distance, weights inside the metric, total functions, conformance-tested against the Datalog semantics.
  • The confidence ladder is a real mechanism, not decoration. Carbon is never labelled better than Estimated, and a test asserts that rather than trusting convention.
  • SARIF output is schema-valid and demonstrably ingestible — 101 results accepted by GitHub code scanning on a live pilot.
  • Snapshot analysis is deterministic — two runs produce byte-identical output.

Clone this wiki locally