Commit graph

2 commits

Author SHA1 Message Date
Shay
069ceb55c5 docs(adr-audit,census): publish the evidence the keel cites — 314 ADRs, 431 findings, and the module census
The keel names this repository as its evidence source and cites these paths by
name in its most-read documents. They existed only in a working tree.

  coreai/docs/atlas/00-atlas-overview.md      "Evidence base: ... the full ADR
                                              audit (../core/docs/adr-audit/:
                                              all 314 ADRs, 431 findings, four
                                              governance patterns)"
  coreai/docs/plans/2026-07-29-specification-reconciliation.md
                                              "Predecessor evidence:
                                              ../core/docs/adr-audit/ ...,
                                              the 2026-07-28 census"
  coreai/docs/Whitepaper.md                   "Sources: ../core/docs/adr-audit/
                                              finding AA-250 and Pattern C-bis"

A citation to a path nobody else can reach is testimony about this repository,
not evidence from it — the keel's own transit rule, applied here. Until this
commit the atlas's entire evidence base, the specification reconciliation's
predecessor evidence, and a Whitepaper source were unreachable to every reader
but one.

  docs/adr-audit/    56 files — the ADR census, stack taxonomy, per-ADR cards,
                     component cards, triage log, finding register, and the
                     cross-batch synthesis the keel's protocol step 2b reads
  docs/census/       10 files — the 2026-07-28 module census (666 modules,
                     293 serving-reachable) the atlas quotes
  docs/plans/2026-07-29-adr-audit-plan.md
  docs/adr/INDEX-by-domain.md  regenerated
  evals/             two obligation fixtures updated

This is the same defect the keel spent today finding in its own records, in the
other direction: there, a pin resolved against a working tree and let an
unpublished file discharge an accepted claim. Here, published prose cited
unpublished evidence. Both are the gap between what one machine can see and what
the record can prove, and both close the same way — publish, then cite.

[Verification]: uv run core test --suite smoke -q -> 786 passed (run before this
commit; docs plus two eval fixtures, no code path touched — re-run recorded on
the PR).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Qw8vDY2bpYHUQYQp5SFKEG
2026-07-30 11:28:57 -07:00
Shay
1f90cb6cf6
feat(ADR-0114a.6): depth-curve auditor — Obligation #6 wired for B3 (assertion holds, coverage gap named) (#190)
Implements the external auditor for ADR-0114a Obligation #6:
"depth_curve.py produces a per-bucket curve;
accuracy(N) >= accuracy(depth_1) * (1 - eps)^(N - 1) for eps = 0.05."

Mirrors PR #189's auditor pattern (re-runs lane via the candidate-
graph pipeline, aggregates over committed cases, emits deterministic
report). Uses len(trace.steps) as the authoritative depth — the
engine's actually-executed reasoning, not the case's declared depth.

New module core/capability/depth_curve.py:
  - Bucket schema mirrors ADR-0119.6: depth_1, depth_2-3,
    depth_4-5, depth_6-8. Depth > 8 raises rather than silently
    extending. Depth == 0 (initial-only problems) skipped — nothing
    to decay.
  - representative_depth = min(bucket) — most permissive bound
    convention; tightening requires an ADR amendment.
  - epsilon = 0.05 pinned per ADR-0120 §Threshold rationale.
  - Two-axis verdict: obligation_6_mechanism_wired (always true if
    auditor ran), obligation_6_assertion_holds (every populated
    bucket satisfies the decay bound), coverage_sufficient (>=2
    buckets populated AND >=3 cases each — required for the
    assertion to be statistically meaningful).

CLI: core capability depth-curve (added to core/cli.py).
Writes evals/obligation_6_depth_curve/<lane_id>.json.

Empirical verdict on current main:
  lane:                B3_bounded_grammar
  cases_total:         50
  cases_solved:        22
  mechanism_wired:     True
  assertion_holds:     True
  coverage_sufficient: False
  populated:           [depth_1 (21/21=1.0000), depth_2-3 (1/1=1.0000)]

Both populated buckets satisfy the decay bound. Coverage gap is
honestly named in the refusal_reason: depth_2-3 has only 1 case,
depth_4-5 and depth_6-8 have none. This is B3-owner work (case
authoring under the existing grammar contract), not auditor work;
reserved as a B3 v1.1 follow-up PR.

Honest scope-limit: B3 only. B1 (algebra, no trace) and B2 (chain
validation, not problem-solving) need different metrics — separate
sub-ADRs.

Trust boundary: read-only access to B3 cases + transitive pack
reads via the pipeline; single deterministic write to artifact path.

Tests: 24/24 covering bucket schema closure (depth 1..8 + raise on
9+), decay bound math (epsilon pinned, formula correct, depth_1 has
no bound), coverage-sufficient policy (thresholds pinned), lane
evaluation (passes on real B3 + refuses on missing cases),
coverage-sufficient distinction (B3 today vs synthetic 5+5 fixture
showing both pass), determinism (report identical + artifact
byte-equal).
2026-05-23 16:19:58 -07:00