test(autoheal): jsonschema contract for runtime-repair-verdict (slice D) #76

Merged
pdurlej merged 1 commit from gemini/autoheal-slice-D into main 2026-06-08 19:54:14 +02:00
Collaborator

Authored by gemini (Gemini 3.5 Flash via Antigravity), Swarmheart worker under claude's arbitration. claude verified scope, ran tests independently, confirmed substance.

What

Auto-heal roadmap slice D: extends tests/test_artifact_schema_contract.py (from #71) to also enforce the runtime-repair-verdict schema (#70) — which #71 didn't cover.

Coverage

Validates real evaluate_runtime_repair() outputs against spec/schemas/runtime-repair-verdict.schema.json:

  • eligible_repair_dry_run (deploy_drift_probe + green evidence)
  • needs_human (mutation class + operator approval + green evidence)
  • blocked (missing evidence)
  • the shipped example file
  • deliberately-invalid payloads → jsonschema.ValidationError (meta-test)

Arbiter verification (claude)

  • PYTHONPATH=src python3 -m unittest discover tests205/205 OK (200 baseline + 5).
  • Scope: only tests/test_artifact_schema_contract.py (+82). Schema, runtime_repair.py, and test_d20_architectural_boundary.py untouched.
  • jsonschema test-only (not imported in src/).
  • Cross-branch tolerant by design: validates real evaluator outputs + the example file (no hardcoded full-payload), so it stays green when slice A adds the optional nullable plan field.

Cousin discipline

  • Authored + committed by gemini (per-worktree identity isolation).
  • unittest, stdlib-only src/ preserved.

Roadmap slice D (see docs/operations/autoheal-roadmap.md). Refs #70, #71, #68.

> **Authored by gemini** (Gemini 3.5 Flash via Antigravity), Swarmheart worker under claude's arbitration. claude verified scope, ran tests independently, confirmed substance. ## What Auto-heal roadmap **slice D**: extends `tests/test_artifact_schema_contract.py` (from #71) to also enforce the `runtime-repair-verdict` schema (#70) — which #71 didn't cover. ## Coverage Validates real `evaluate_runtime_repair()` outputs against `spec/schemas/runtime-repair-verdict.schema.json`: - `eligible_repair_dry_run` (deploy_drift_probe + green evidence) - `needs_human` (mutation class + operator approval + green evidence) - `blocked` (missing evidence) - the shipped example file - deliberately-invalid payloads → `jsonschema.ValidationError` (meta-test) ## Arbiter verification (claude) - `PYTHONPATH=src python3 -m unittest discover tests` → **205/205 OK** (200 baseline + 5). - Scope: only `tests/test_artifact_schema_contract.py` (+82). Schema, `runtime_repair.py`, and `test_d20_architectural_boundary.py` untouched. - `jsonschema` test-only (not imported in `src/`). - **Cross-branch tolerant by design:** validates real evaluator outputs + the example file (no hardcoded full-payload), so it stays green when slice A adds the optional nullable `plan` field. ## Cousin discipline - Authored + committed by `gemini` (per-worktree identity isolation). - unittest, stdlib-only `src/` preserved. Roadmap slice D (see `docs/operations/autoheal-roadmap.md`). Refs #70, #71, #68.
Implement contract tests validating evaluated runtime repair verdicts against the
jsonschema. Tests cover eligible_repair_dry_run, needs_human, and blocked
verdicts, the shipped example schema, and deliberately invalid payloads.

Final test count: 205

Co-Authored-By: Gemini 3.5 Flash (Antigravity) <noreply@antigravity.google>
pdurlej deleted branch gemini/autoheal-slice-D 2026-06-08 19:54:14 +02:00
Sign in to join this conversation.
No reviewers
No labels
agent/claude-code
agent/codex
agent/gemini
agent/hermes
agent/iskra
agent/ollama
agent/patchwarden
area:business-model
area:competitive
area:discovery
area:forgejo
area:metrics
area:product-strategy
area:v0-core
cagan-grade-approved
client:platform
dependency/blocked
dependency/blocks-others
dependency/cross-repo
dependency/needs-confirmation
domain:agents
domain:ci
domain:docs
domain:forgejo
domain:infra
domain:memory
domain:runtime
domain:signal
domain:ux
flow/architecture
flow/blocked
flow/deployed
flow/done
flow/implementation
flow/intake
flow/maintained
flow/observed
flow/ready
flow/refining
flow/retired
flow/review
judge/codex-candidate
judge/hermes-candidate
judge/low-confidence
judge/needs-refinement
judge/operator-needed
judge/p0
judge/p1
judge/p2
judge/p3
judge/park
judge/patchwarden-candidate
judge/stale-priority
kind/adr
kind/bug
kind/chore
kind/feature
kind/infra
kind/ops
kind/refactor
kind/research
kind:artifact
kind:decision
kind:dogfood
kind:epic
kind:implementation
kind:research
merge/auto
merge/manual
merge/manual-dependency-conflict
merge/manual-failing-tests
merge/manual-merge-conflict
merge/manual-missing-review
merge/manual-operator-preference
merge/manual-red-zone
merge/manual-security-sensitive
merge/manual-unclear-scope
merge/manual-unknown
mode:operator-only
mode:patchwarden-iskra-approved
mode:safe-auto
observed/erroring
observed/needs-followup
observed/pending
observed/retire-candidate
observed/unused
observed/used
priority:p0
priority:p1
priority:p2
priority:p3
ready-for-agent
review:claude-reviewed
review:codex-reviewed
review:dziadek-reviewed
review:needs-human
safety:external-write
safety:no-prod-mutation
safety:prod-impact
safety:secret-touch
size/large
size/medium
size/small
size/tiny
size/unknown
source/adr
source/agent-generated
source/manual
source/operator-chat
source/voice-note
status:blocked
status:blocked-on-discovery
status:cagan-grade-review-pending
status:codex-ready
status:merged:pending-evidence
status:needs-evidence
status:needs-operator-decision
status:operator-needed
status:parked
tier:0-anchor
tier:0-platform-substrate
tier:1-core
tier:1-iskra-value-layer
tier:2-supporting
tier:2-tools-products-modules
type:bug
type:chore
type:docs
type:feat
type:policy
type:research
wave:1-foundation
wave:2-positioning
wave:3-validation
wave:4-economics
wave:5-operating
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
pdurlej/patchwarden!76
No description provided.