Skip to content

feat(graph): VAS-1 — CLAIMED→verdict provenance (foundation for verify-docs) - #213

Merged
ernanibmurtinho merged 1 commit into
mainfrom
feat/vas1-claimed-verdict-provenance
Jul 27, 2026
Merged

feat(graph): VAS-1 — CLAIMED→verdict provenance (foundation for verify-docs)#213
ernanibmurtinho merged 1 commit into
mainfrom
feat/vas1-claimed-verdict-provenance

Conversation

@ernanibmurtinho

Copy link
Copy Markdown
Contributor

Milestone-1 (Verified Agent Surface) step 1 — the provenance foundation for gecko verify-docs. Model + pure lift only; no CLI/ingest/live-replay (that's VAS-2). Roadmap: docs/specs/2026-07-26-verified-agent-surface-milestone-1.md.

What's here

  • CLAIMED added to the canonical Provenance Literal (graph.py, single source of truth) — a docs-source op (Context7 / from-docs) not yet checked against reality.
  • VerifyVerdict (frozen, control-plane) — status: VERIFIED|REFUTED|UNVERIFIED, basis, shape_ok. No payload field (asserted).
  • Carrierverify: VerifyVerdict | None on the op node; additive, and serialize() stays byte-identical (content hash unchanged when a verdict is attached — tested).
  • The liftverdict_from_replay(outcome) maps a validator CallOutcome → verdict, keying off source == "observed": non-observed → UNVERIFIED (never overclaims), observed 2xx/3xx → VERIFIED, observed 404/contract-mismatch → REFUTED. Pure, no network.

Safety

Single-source-of-truth types; UNVERIFIED for recorded/paywalled (the roadmap's honesty flag — never badge VERIFIED without wire evidence); control-plane clean (no response value stored). Gate: ruff + mypy clean · full suite 1924 passed / 1 skipped.

Next: VAS-2 gecko verify-docs (run the replay, attach verdicts), VAS-3 Scorecard badges.

🤖 Generated with Claude Code

Add the verified-against-reality tier the milestone-1 spec flags as the missing
provenance layer. Net-new model only — no verify-docs CLI, ingest, or live replay
(those are VAS-2). All additive and backward-compatible.

- Extend the canonical Provenance Literal (graph.py, single source of truth) with
  CLAIMED: a docs-source op not yet checked against reality.
- Add frozen VerifyVerdict (status/basis/shape_ok) beside it — control-plane clean,
  no field a response body could occupy (invariant #1).
- Carry an optional verify verdict on the op Node, default None; excluded from
  serialize() so the content hash stays byte-identical (drift-independent).
- verdict_from_replay(outcome) lifts an already-obtained CallOutcome: observed 2xx
  -> VERIFIED, 404/4xx/5xx -> REFUTED, preflight contract failure -> REFUTED,
  recorded/synthetic -> UNVERIFIED (never overclaimed). Pure, no network.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@ernanibmurtinho ernanibmurtinho self-assigned this Jul 27, 2026
@ernanibmurtinho
ernanibmurtinho merged commit 187af11 into main Jul 27, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant