Skip to content

Code Tribunal 1.0.0

Choose a tag to compare

@seanleecoder seanleecoder released this 26 Jul 09:19
· 219 commits to main since this release

Code Tribunal 1.0.0 — first stable release.

Release identity

Runtime source R 88bc9412b283d4a44328ab3ffd9f9708b0290f8e
Release commit P 3ad443e0b3d91f2736c3dd3b4f1fb5d7f8d21997
Publication run 30125524008
Manifest sha256 b7570e173d86680998cfd77cff34d5c42de55f8e5cf57b4e17ea944744f02f7f

Images (pull by digest, never by the mutable 1.0 tag):

ghcr.io/seanleecoder/code-tribunal/ai-review-base:1.0-88bc9412b283d4a44328ab3ffd9f9708b0290f8e@sha256:f2a433ac1094d45943a2973c334ff0d711d6aca73980cd44cfefe3aa0b403896
ghcr.io/seanleecoder/code-tribunal/ai-review-reviewer:1.0-88bc9412b283d4a44328ab3ffd9f9708b0290f8e@sha256:2fd84c43fc4529182bf077c809ba40bc6e628b5e77d6f1a2a0ffd24e902591fe

Both subjects are anonymously resolvable by digest, carry an OCI revision label equal to R, and have GitHub provenance attestations bound to the publication run above.

⚠️ Known defect: GitHub pull requests that add or delete files

On GitHub, findings can be dropped and the review can fail to complete when a pull request adds or deletes a file. GitHub renders an added file's diff with --- /dev/null, which anchor resolution rejects while scanning; affected findings are dropped, and when every seat is affected consensus exits 3, post/gate are skipped, and the required gate check cannot succeed.

  • Triggers for a finding on an added/deleted file, or on a file ordered after one in the diff.
  • Affects real reviewers, not only the deterministic mock. GitLab is unaffected.
  • No state corruption; the failure is visible rather than silent.
  • Workaround: land file additions in a separate change request from the code you want reviewed, or re-run once the added file has merged.
  • Fix verified and scheduled for 1.0.1.

Detection symptoms are in release/1.0.0.md.

Live evidence

Release-gating evidence was re-run against this exact image pair:

Row Result
Image publication passed — anonymous digests, revision labels, provenance attestations
GitHub lifecycle passed — create, unchanged rerun, changed-body in-place update, resolve, persistence, reopen, stale-head no-op; required check genuinely blocked the merge
GitHub default-model smoke passed — real three-seat panel, panel_status: full, four real security findings
GitLab lifecycle passed — same lifecycle in the hardened child topology; "Pipelines must succeed" withheld the merge
GitLab hostile MR passed — protected credentials withheld on an unprotected ref, prepare failed closed, empty input bundle, trust auditor rejected the hostile composition
GitHub revision failures (SPEC-34) waived — non-gating and regression-covered; the stale-head boundary was reproduced live anyway

The positive changed-body in-place update, previously never demonstrated live on either platform, is now proven on both.

Deployment posture — read before relying on isolation claims

  • Trusted image pinning is not enforced in-pipeline. A consumer CI config can substitute the base/reviewer images by declaring them in its own top-level variables: and enabling variable forwarding. This was reproduced live. Containment comes from protected-credential withholding plus the operator-run scripts/verify_pipeline_trust.py, which does reject such a composition — run it against your consumer config.
  • Credential isolation is evidenced narrowly: protected credentials withheld from a hostile MR on an unprotected ref in the hardened child topology. Not a product-wide guarantee. GitLab fork MRs untested; GitHub external forks are skipped by design.
  • /ai-review wontfix durably dismisses a finding but does not clear the merge gate.
  • A reviewer that omits the required confidence field has all its findings dropped, which can silently degrade a panel.
  • Network egress is not enforced at the container/runner boundary.
  • Cursor is experimental, has no evidence row, and is not evidence-backed.

Verifying this release

shasum -a 256 -c code-tribunal-1.0.0-release-manifest.json.sha256
python scripts/check_release_manifest.py code-tribunal-1.0.0-release-manifest.json
gh attestation verify \
  oci://ghcr.io/seanleecoder/code-tribunal/ai-review-reviewer@sha256:2fd84c43fc4529182bf077c809ba40bc6e628b5e77d6f1a2a0ffd24e902591fe \
  --repo seanleecoder/code-tribunal

Rollback means restoring the previous immutable template/image set, not moving a mutable tag. See docs/operations.md.