Skip to content

feat(evidence): repo-scoped session evidence verb - #181

Merged
rldyourmnd merged 3 commits into
mainfrom
feat/session-evidence
Sep 19, 2026
Merged

rldyourmnd merged 3 commits into
mainfrom
feat/session-evidence

Conversation

@rldyourmnd

Copy link
Copy Markdown
Contributor

Summary

Adds gds evidence record / gds evidence verify: signed, repo-scoped session evidence for the repository the agent ran in, including every Git module inside its boundary — the remaining program item session-evidence-collector.

  • core/sessionevidence — canonical payload, Ed25519 Sign under domain gds-session-evidence/v1 (role session-evidence), and an independent Verifier (schema, digest, signature, structural invariants).
  • core/app/session_evidence.go — record binds the .gds/repository.yaml identity, HEAD/upstream position, change counts and sorted changed paths (porcelain v2), and per-submodule gitlink/checked-out OIDs; links each artifact to the previous one for the same repository via previous_evidence_digest. Artifacts are private: written under the device state root, mode 0600, never into the repository.
  • gds evidence verify needs only the artifact + trust policy — not the session, harness, or repository.
  • New session-evidence schema (v1) with valid + invalid fixtures; evidence registered in the capability registry; ADR 0039; CLI contract docs; CHANGELOG.

Design follows the audited consensus for agent audit trails (in-toto-style subject/predicate/envelope separation, canonical signed manifests, hash chaining) and states honestly what the artifact does not prove: that the named session produced the state, or that the work was correct.

Test plan

  • go test ./... — all packages green
  • pytest — 70 passed (schema fixtures incl. new session-evidence cases)
  • scripts/validate_shell.sh — shellcheck 0.11.0, 8 scripts
  • scripts/validate_go_core.sh — full
  • scripts/validate_assurance.sh — GDS integrated assurance: PASS
  • New tests: sign/verify round-trip, hash chain, tampered digest, forged digest+stale signature, wrong actor/key, expired key, malformed invariants, CLI record→verify end-to-end

Generated with Devin

Add gds evidence record and gds evidence verify: a signed, canonical
artifact scoped to exactly the repository the agent ran in, including
every Git module inside its boundary. Records bind the repository anchor
identity, HEAD/upstream position, change counts and sorted changed paths,
and per-submodule gitlink/checked-out OIDs; each record links the newest
prior artifact for the same repository through previous_evidence_digest.

Artifacts are private (they name working-tree paths), so they are written
under the device state root mode 0600 and never into the repository.
Signatures use Ed25519 under the gds-session-evidence/v1 domain with the
session-evidence trust role; verify needs only the artifact and a trust
policy. New session-evidence schema with valid and invalid fixtures, ADR
0039, and CLI contract documentation.
GDS_PLAN_ENABLEMENT_REQUIRED checked eight bindings behind one generic
message, so a session-id mismatch between enable and apply produced an
error that did not say why. The error now names the failing binding and,
for the common session mismatch, states the required relationship.
@rldyourmnd
rldyourmnd merged commit 5eabaf2 into main Sep 19, 2026
8 checks passed
@rldyourmnd
rldyourmnd deleted the feat/session-evidence branch September 19, 2026 22:23
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