Skip to content

I1962 — The evidence gates read subject findings and widgets

Make subject findings refusing, rewriting the evidence baseline in the same change, and make the evidence validator read every rendered widget, so that a widget without a subject or a count hard-coded into a template fails CI (ADR 0087 decision 10).

BLOCKED wave 6 · p1 · implementation profile · runs alone

Part of test-evidence — Every verifiable claim and widget resolves to revision-bound test evidence, on every surface.

Blocked. This issue cannot start until I1960, I1953 are done. The status is derived from that, not declared.

Objective

Make subject findings refusing, rewriting the evidence baseline in the same change, and make the evidence validator read every rendered widget, so that a widget without a subject or a count hard-coded into a template fails CI (ADR 0087 decision 10).

Why

Subject findings stay advisory until a gate reads them, and ADR 0087 names this validator as the mechanism against a widget without a subject and a hard-coded count.

Current state

scripts/evidence-check ratchets claims only; subject findings are advisory; no gate reads the site's widgets for a subject; lib/commands.sh and scripts/ci/command-furnished derive command coverage in shell.

Desired state

evidence-check refuses a subject finding beyond the rewritten baseline; a stable feature without evidence and a widget without a subject each fail a gate by name; the shell command-coverage readers read the index artifact or are held equal to it by a case.

Scope

  • scripts/evidence-check
  • .ai/repo/evidence-baseline.txt
  • scripts/rust-coverage
  • lib/commands.sh
  • scripts/ci/command-furnished
  • scripts/lib/evidence-widgets.mjs
  • scripts/lib/interactions.mjs
  • scripts/site-check
  • .ai/repo/automation/inventory.jsonl
  • .ai/repo/ci/gates.yaml
  • .ai/repo/rules/project/no-stable-feature-without-a-test.v1.md
  • .ai/repo/rules/project/a-widget-names-its-evidence-subject.v1.md
  • .ai/repo/features/evidence.md
  • .ai/repo/features/coverage.md
  • docs/CLAIMS.yaml
  • docs/claims
  • test/cases

Out of scope

  • Weakening the baseline's ratchet

Dependencies

What waits on this

Acceptance criteria

  • Subject findings refuse, and the baseline is rewritten in the same change, with its reason
  • A rendered widget without a subject fails the validator, naming the widget
  • A count or a percentage hard-coded into a template fails the validator
  • The shell command-coverage readers agree with the subject index

Validation

  • bash test/run.sh 522_evidence_check_reads_widgets
  • bash test/run.sh 523_evidence_rules_are_gated
  • scripts/evidence-check

Evidence required

  • subject_findings_refuse
  • widgets_name_subjects

Evidence

None recorded. Every token above needs a command or an artifact behind it before this issue can be completed; narrative is refused.

Timeline

started
—
verified
—
completed
—

Those three fields, the evidence above and the state of the dependencies are all the status is made of. There is no status field to disagree with them.

Canonical record: .ai/repo/project/issues/I1962.yaml. Read it back with majordomus plan show I1962.

Searches the titles and descriptions of every page this site publishes.