Skip to content

Code Tribunal 2.0.2

Choose a tag to compare

@github-actions github-actions released this 04 Oct 21:29
· 72 commits to main since this release
v2.0.2
74b869b

Code Tribunal 2.0.2

Release identity

  • Release: 2.0.2
  • Tag: v2.0.2
  • Release inputs: release/release-inputs.json, status: active
  • Runtime source R: 3db908f06d141d23de99e7578ae5b5482ebaa498
  • CI run: 37233827873
  • Image publication run: 37233827865
  • Base image: ghcr.io/seanleecoder/code-tribunal/ai-review-base:2.0-3db908f06d141d23de99e7578ae5b5482ebaa498@sha256:2f3ffaba159e067825d72e889872ac6479bb31461943b6d86516a266e1faf3e9
  • Reviewer image: ghcr.io/seanleecoder/code-tribunal/ai-review-reviewer:2.0-3db908f06d141d23de99e7578ae5b5482ebaa498@sha256:7c59447733e5b6640f7ff759ab879c4682310054de130515841e91389a9b2447

Scope

This compatible patch updates the reviewer CLIs and Python/tooling dependencies,
refreshes the default roster to Claude Haiku 4.5 / medium, GPT-6 Luna / low,
and MiMo-V2.6-Flash with absent effort, and selects Composer 2.5 for the disabled
Cursor seat. It preserves one review and one critique round and the deterministic
informational consensus policy.

Finding grouping, documentation checks, and packaged smoke loading are simpler.
Release validation now preserves handwritten notes, binds evidence to source and
image digests, validates GitLab pins structurally, and verifies signed-tag
publication in an isolated checkout.

The unreleased S05 cutover (#171) and internal follow-up (#172) are reverted.
Artifacts retain finding_batch.v1, critique_batch.v1, consensus.v2, and the
previous pooled and model-authoring formats. Configuration remains
review_config.v3; persisted state and render-body.v4 are unchanged. SPEC-41
remains open, and S05 is deferred to separately planned major-release work.

Migration

Adopt the synchronized templates and digest-pinned image pair together. Existing
2.0 configuration and persisted state need no schema migration. Generate fresh
review and critique artifacts with the matched pair.

For MiMo, remove or blank stale AI_REVIEW_OPENCODE_EFFORT overrides so the
packaged configuration's absent effort applies. To clear a nonempty effort in a
custom YAML configuration, set AI_REVIEW_OPENCODE_EFFORT=unset. Missing or blank
model/effort overrides inherit YAML; a model-only override retains that YAML
seat's effort. Claude and Codex effort overrides also accept unset.

See effort inheritance and clearing
and upgrade operations.

Live campaign

Record Result
record-candidate-canary.md Passed
record-github-current-image.md Passed
record-gitlab-current-image.md Passed
record-gitlab-hostile-mr.md Passed
record-github-default-model-smoke.md Passed
record-model-effort-routes.md Passed
record-github-revision-failures.md Registered waiver; reason in release inputs

Release gates

  • Run the scoped campaign against one frozen runtime source R and the final
    base/reviewer pair.
  • Record only sanitized evidence; keep private consumer coordinates out of the
    public repository. Audit with scripts/scan_evidence_leaks.py and record its
    exact scope.
  • Activate the release inputs only after every non-waived release-gating record
    binds to the same source and image digests.

Tagging

The external manifest binds release_commit and re-derives the R..P diff, so the
tag must point at a commit that satisfies it.

  • Merge the single release PR with a merge commit. Check out that final merged
    commit as P, then run make release-manifest P=<full SHA>.
  • Inspect R..P, the manifest, checksum, and generated tag certificate before
    signing. Sign v2.0.2 locally on exactly P, using the generated message.
  • The signed certificate's Release-manifest-sha256 binds the manifest bytes.
    Any change of tag target requires rebuilding and revalidating the certificate.
  • Push the signed tag and verify automatic publication of these notes and both
    assets. CI never holds the signing key.

Carried known limitations

  • Confidence remains required by the restored finding contract. Omission can
    discard otherwise valid findings; posted summaries do not expose those loss
    counts. SPEC-41
    remains open.
  • In-pipeline trusted-image enforcement and runner/container network-egress
    enforcement remain absent. Credential isolation is established only in the
    recorded hardened-child and unprotected-ref sense; GitLab forks remain untested.
  • Cursor is disabled in the shipped default roster and exercised by the four-seat
    Candidate Canary. MiMo Pro and Grok supplemental runs do not certify Flash or
    the final release pair.
  • Earlier 2026-10-04 model smokes exercised the newer unreleased artifact contract
    and remain supplemental evidence. Fresh final-pair evidence must certify the
    restored 2.0 contract.

Operator sign-off items

Final-pair provenance, real panels and critiques on both platforms, both lifecycle
campaigns, hostile containment and cleanup passed in Candidate Canary 37234182540.
The separate GitHub three-seat smoke 37234212093 passed, including multiple
sequential MiMo tools, structured review/critique, and default effort routes.
Runtime quality passed with 1,098 tests and one skipped; final-head runtime PR CI
and image preflight passed before merge. Demo preflight passed after cleanup.

The release PR also requires full quality and green final-head CI before merge.
The signed certificate and publication checks follow the Tagging procedure above.
No exact-value credential scan or OpenRouter billed token/cost inspection was
performed. Provider-internal effort behavior and non-default effort routes remain
outside the scoped pass.

Finalization

After every required gate passes, make release-repin RUN=<id> and
make release-finalize RUN=<id> EVIDENCE="<all record filenames>" prepare the
pins, active inputs, CHANGELOG promotion, and final notes together for one release
PR. Include quoted WAIVE arguments for every registered waiver. Scope and
Migration remain operator-written. After merging, generate the manifest and
certificate for the final merged P, sign and push the tag locally, and verify
publication. Then make release-open-next V=<next> opens the next draft.
Historical inputs remain available at v2.0.2:release/release-inputs.json.