Repository navigation
Added
- Review health in the summary comment (SPEC-66). Every published run now
creates or refreshes the summary comment, including a clean run with no
findings. Its first section shows afull,degradedorre-run recommended
grade, the completed review and critique jobs, panel-wide finding counts, each
failed job with its redacted error, and one action line. Collapsed run details
give each job's model, effort, outcome and duration. A failed panel is still
not published; the consensus job log now prints the same health report
before exiting 3. Consensus reads the adapter status files through a new
--status-dirargument, which both canonical templates pass, and writes the
record asrun_health, an optional property ofconsensus.v2. Health never
changes a decision,panel_statusor an exit code. Post refuses a consensus
artifact withoutrun_health, which means one from an earlier release. Each
existing summary comment is refreshed once on the next run.
Changed
- Inline threads hash only their rendered text (N12), as the summary comment
already did. The marker'ssource=is no longer read and is written as 64
zeros, so 2.0.3 can still read 2.1.0 markers after a rollback; markers with
or without it remain valid. Each existing bot-authored inline thread surfaced on
its next run is edited once in place, with the same issue ID and state record;
its visible text is unchanged.group.body_hashinconsensus.jsonis now
always 64 zeros: posting computes the hash from the body it publishes, and the
field is removed inconsensus.v3. - Consensus no longer re-checks values the adapter runner computes: a finding
batch's counts, itsusable_for_resolutionflag, and itsmodel(N15). The
schema still bounds the counts, and the config-digest binding covers the
model. A critique whoseduplicate_of_source_finding_idnames no finding in
the run now counts as adispute, like any other unusable duplicate link,
instead of failing consensus. - Contributor tooling: Renovate keeps the npm, Python, image-digest and action
pins current, andmake qualityruns zizmor's pinning audits over the GitHub
Actions workflows. The in-repo pin checker keeps only the checks neither tool
makes, and now requires every DockerfileFROMto be digest-pinned. Nothing
changes for consumers. - Release process (ADR-0004):
a release is the SSH-signed tag whose canonical templates pin both images by
digest, published only after a cited Candidate Canary run on those digests is
verified. The release body is the version's CHANGELOG section followed by its
identity: runtime source, release commit, both image references, the canary
verdicts, and thegh attestation verifycommand. Releases no longer attach a
release manifest or checksum asset,release/<version>.mdnotes and
release/release-inputs.jsonare no longer published, and tags carry a
Canary-run:trailer instead ofRelease-manifest-sha256. Releases up to 2.0.3
are unchanged. The generated evidence records are gone fromdocs/evidence/;
each earlier release's records remain at its tag. - Upgraded reviewer CLIs to Claude Code 2.1.303, Codex 0.163.0, OpenCode
1.19.3, and Cursor Agent 2026.10.18-ea085cb; refreshed the Python, Node builder
and Debian base image digests, Node to 26.12.0, certifi to 2026.10.18, rpds-py
to 2026.9.1, and Ruff to 0.17.1. OpenCode remains paired with its expected
ripgrep 15.1.0.
Release identity
- Runtime source (R):
6ca538106d1eef7f449e5227408c99013c75aedc - Release commit (P):
a965da627ac866461bdcf6630f0897d00e4d28c9 - Base image:
ghcr.io/seanleecoder/code-tribunal/ai-review-base:2.1-6ca538106d1eef7f449e5227408c99013c75aedc@sha256:d855b177b4bfcd109f7cf1c8d86908a98dc22e83c4fbce911fdad4a68ccdaa52 - Reviewer image:
ghcr.io/seanleecoder/code-tribunal/ai-review-reviewer:2.1-6ca538106d1eef7f449e5227408c99013c75aedc@sha256:280c858d58ceee662c95f02455bb6da3846802a5d19234dc28872c02df8fa985 - Candidate Canary: https://github.com/seanleecoder/code-tribunal/actions/runs/39315351495
- panel / github: full panel, 7 threads posted, cleanup succeeded
- panel / gitlab: full panel, 2 threads posted, cleanup succeeded
- lifecycle / github: 7/7 steps passed
- lifecycle / gitlab: 6/6 steps passed
- hostile / gitlab: 5/5 steps passed
- Publication: https://github.com/seanleecoder/code-tribunal/actions/runs/39320078400
Verify an image's build provenance, for example the reviewer image:
gh attestation verify oci://ghcr.io/seanleecoder/code-tribunal/ai-review-reviewer:2.1-6ca538106d1eef7f449e5227408c99013c75aedc@sha256:280c858d58ceee662c95f02455bb6da3846802a5d19234dc28872c02df8fa985 \
--repo seanleecoder/code-tribunal \
--predicate-type https://slsa.dev/provenance/v1 \
--source-ref refs/heads/main --source-digest 6ca538106d1eef7f449e5227408c99013c75aedc \
--cert-identity https://github.com/seanleecoder/code-tribunal/.github/workflows/publish-ai-review-images.yml@refs/heads/main