Roam already has the strongest shape I have seen for local codebase evidence: roam_attest, roam_cga_emit, PR-risk envelopes, dogfood PR comments, and explicit index freshness hints.
One small thing that would make those packets safer for downstream agents/reviewers: make staleness / replay conditions first-class in the attestation output.
Concrete shape I mean:
{
"schema": "roam.pr_attestation.v1",
"subject": {
"kind": "pull_request|commit_range|working_tree",
"repo": "owner/name",
"base": "...",
"head": "..."
},
"evidence_scope": {
"commands": ["roam health", "roam pr-risk", "roam affected-tests"],
"index_commit": "...",
"indexed_commit": "...",
"head_commit": "...",
"roam_version": "...",
"rule_config_hash": "..."
},
"verdict": "safe|review_recommended|blocked|not_checked",
"not_checked": ["coverage_unavailable", "runtime_tests_not_run"],
"verification_command": "roam attest --verify <bundle>",
"stale_if": [
"head_commit_changed",
"indexed_commit != head_commit",
"rule_config_hash_changed",
"roam_version_major_changed",
"coverage_import_changed",
"target_branch_moved"
],
"privacy": {
"raw_source_included": false,
"raw_prompt_included": false,
"secrets_included": false
}
}
The key bit is not the exact names. It is that an agent reading a Roam attestation later can answer: can I still use this as authority, or do I need to rerun the evidence?
Why this seems useful:
- Roam's current envelopes already expose freshness hints like
indexed_commit != HEAD; promoting that into a stable stale_if/not_checked contract would make the packet easier to consume from Claude Code, Codex, CI, or another reviewer without parsing prose.
- It keeps the proof local/privacy-safe. No raw prompts, transcripts, source bodies, or secrets need to be embedded.
- It turns
roam_attest from “a good review artifact now” into a replay-safe handoff artifact: useful when a PR is resumed by another agent, rebased, re-reviewed after dependency changes, or summarized in a merge note.
If this already exists under a different command/flag, the discoverability gap may just be docs: a short “when is a Roam attestation stale?” section would solve most of it.
Roam already has the strongest shape I have seen for local codebase evidence:
roam_attest,roam_cga_emit, PR-risk envelopes, dogfood PR comments, and explicit index freshness hints.One small thing that would make those packets safer for downstream agents/reviewers: make staleness / replay conditions first-class in the attestation output.
Concrete shape I mean:
{ "schema": "roam.pr_attestation.v1", "subject": { "kind": "pull_request|commit_range|working_tree", "repo": "owner/name", "base": "...", "head": "..." }, "evidence_scope": { "commands": ["roam health", "roam pr-risk", "roam affected-tests"], "index_commit": "...", "indexed_commit": "...", "head_commit": "...", "roam_version": "...", "rule_config_hash": "..." }, "verdict": "safe|review_recommended|blocked|not_checked", "not_checked": ["coverage_unavailable", "runtime_tests_not_run"], "verification_command": "roam attest --verify <bundle>", "stale_if": [ "head_commit_changed", "indexed_commit != head_commit", "rule_config_hash_changed", "roam_version_major_changed", "coverage_import_changed", "target_branch_moved" ], "privacy": { "raw_source_included": false, "raw_prompt_included": false, "secrets_included": false } }The key bit is not the exact names. It is that an agent reading a Roam attestation later can answer: can I still use this as authority, or do I need to rerun the evidence?
Why this seems useful:
indexed_commit != HEAD; promoting that into a stablestale_if/not_checkedcontract would make the packet easier to consume from Claude Code, Codex, CI, or another reviewer without parsing prose.roam_attestfrom “a good review artifact now” into a replay-safe handoff artifact: useful when a PR is resumed by another agent, rebased, re-reviewed after dependency changes, or summarized in a merge note.If this already exists under a different command/flag, the discoverability gap may just be docs: a short “when is a Roam attestation stale?” section would solve most of it.