Skip to content

chore(release): v0.8.0 "Breadth" — Phase 7 - #196

Merged
doublegate merged 2 commits into
mainfrom
release/v0.8.0
Jul 29, 2026
Merged

chore(release): v0.8.0 "Breadth" — Phase 7#196
doublegate merged 2 commits into
mainfrom
release/v0.8.0

Conversation

@doublegate

Copy link
Copy Markdown
Owner

Cuts the Phase 7 release. Both cut criteria from to-dos/VERSION-PLAN.md are met, and were verified rather than assumed:

Criterion Evidence
The battery hits its target pass rate 54 probes, 100% across two Angrylion oracle suites (41 RDP rasteriser + 13 VI scan-out vectors)
Every residual has a ledger entry R-1 … R-23 all carry a disposition; no residual is referenced anywhere in docs/ or to-dos/ without one

The headline: commercial cartridges render

Super Mario 64 draws its title screen, and 29 of 66 staged titles render through their own graphics microcode. Fourteen frames are committed under screenshots/, every one rendered and looked at.

Both defects that unblocked this were in the CPU and the PIF — not the RDP, where R-18 had been looking for months:

Both oracle-validated: n64-systemtest Phase 1 Failed: 0, suite-wide 90, unchanged throughout.

T-71-003 — the one non-CI gate

F3DEX ships inside commercial ROMs that ADR 0008 forbids committing, so this criterion can never be CI-gated. Per the maintainer decision it closes on a committed local census (microcode_families.rs, #[ignore]d, skips loudly) plus the screenshots — recorded in VERSION-PLAN.md as the single documented exception, not an unstated weakening of the gate.

Pre-release gate

1. clean tree ............ OK      5. no ROMs staged ....... OK
2. version consistent .... OK      6. no conflict markers .. OK
3. no stale 0.7.0 ........ OK      7. CHANGELOG entry ...... OK
4. v0.8.0 tag free ....... OK      8. no_std build ......... OK

Plus fmt · clippy -D warnings · cargo test --workspace · rustdoc -D warnings · markdownlint.

Explicitly NOT claimed

v0.8.0 is a phase close, not the end of the plan. Still open and tracked: 24 titles issue zero RDP commands (each a separate root-cause hunt — they halt, they are not stalled), the mirrored-text defect (mirror_s cleared by oracle; negative DsDx and triangle winding remain), the ledger-extraction refactor, and 1080's IPL3 fault. Those are v0.9.0 "Threshold" material by the release plan's own definition.

Cuts the Phase 7 release. Both cut criteria from to-dos/VERSION-PLAN.md are
met and were verified rather than assumed:

- The battery reports a real pass rate: 54 probes, 100%, across two Angrylion
  oracle suites (41 RDP rasteriser vectors + 13 VI scan-out vectors).
- Every residual R-1 through R-23 carries a ledger disposition, and no residual
  is referenced anywhere in docs/ or to-dos/ without a ledger entry.

The headline is that commercial cartridges render. Super Mario 64 draws its
title screen and 29 of 66 staged titles render through their own graphics
microcode. Both defects that unblocked that were in the CPU and the PIF, not
the RDP where R-18 had been looking:

- an interrupt taken across an ERET was charged to the ERET, overwriting EPC
  with the ERET's own address and livelocking the CPU (#189);
- the PIF answered as a connected controller on all four joybus channels, so
  osContInit reported four pads on a one-pad console and Super Mario 64 halted
  in its own assert (#190).

T-71-003 -- the one cut criterion CI can never run, because F3DEX ships inside
ROMs ADR 0008 forbids committing -- closes on a committed local census plus 14
viewed screenshots, recorded in VERSION-PLAN as the single documented
exception rather than an unstated weakening of the gate.

Version bumped 0.7.0 -> 0.8.0 across the workspace and all path dependencies;
CHANGELOG [Unreleased] cut to [0.8.0]; STATUS records Phase 7 complete and the
release history through v0.8.0.

Pre-release gate: clean tree, version consistent (Cargo == CHANGELOG), no
stale 0.7.0 in manifests, v0.8.0 tag free, no ROMs staged, no conflict
markers, CHANGELOG entry present, no_std build green. Plus fmt, clippy
-D warnings, cargo test --workspace, rustdoc -D warnings, markdownlint.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jul 29, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 172a02a7-b487-4d93-b086-a93680b415fd

📥 Commits

Reviewing files that changed from the base of the PR and between 1a33806 and a8db63f.

📒 Files selected for processing (1)
  • CHANGELOG.md

📝 Walkthrough

Summary by CodeRabbit

  • New Features
    • Released version 0.8.0, “Breadth”, with newly unblocked Super Mario 64 title screen rendering results.
    • Documented Phase 7 accuracy-battery coverage, including 54 probes achieving 100% against the reference oracle.
  • Documentation
    • Expanded the 0.8.0 “Breadth” changelog entry with the full accuracy-battery cut criteria and results.
    • Updated project status to reflect the expanded Phase 1–7 scope and v0.8.0 release narrative.
  • Chores
    • Bumped package versions across the workspace to 0.8.0.

Walkthrough

The workspace and RustyN64 crates are bumped to v0.8.0. Changelog and status documentation identify “Breadth” as the current release and record Phase 7 accuracy-battery results, Super Mario 64 title-screen rendering status, and release automation coverage.

Changes

Release metadata

Layer / File(s) Summary
Version and dependency alignment
Cargo.toml, crates/rustyn64-*/Cargo.toml
Workspace and crate package versions, plus affected internal dependency constraints, are updated from 0.7.0 to 0.8.0.
Release narrative and status evidence
CHANGELOG.md, docs/STATUS.md
Release documentation records v0.8.0 “Breadth”, Phase 7 accuracy results, SM64 title-screen rendering status, and release automation coverage through v0.8.0.

Estimated code review effort: 1 (Trivial) | ~5 minutes

Possibly related PRs

  • doublegate/RustyN64#182: Adds the accuracy vector and ledger updates referenced by the Phase 7 release documentation.
🚥 Pre-merge checks | ✅ 9 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Changelog Entry For User-Visible Changes ⚠️ Warning FAIL: CHANGELOG.md leaves [Unreleased] empty; the visible release note is only under [0.8.0], so the Unreleased rule isn’t met. Add a short [Unreleased] entry for the user-visible change, or move the note there before cutting the tag.
✅ Passed checks (9 passed)
Check name Status Explanation
Title check ✅ Passed Meets the Conventional Commits title rule and accurately summarises the v0.8.0 Breadth Phase 7 release.
Description check ✅ Passed The description is directly about cutting v0.8.0 Phase 7 and remains fully on-topic.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Oracle Number Is Stated ✅ Passed Docs-only release cut; CHANGELOG.md and docs/STATUS.md state the oracle count (n64-systemtest Failed: 0, suite-wide 90) and the 54-probe battery.
Docs-As-Spec Sync ✅ Passed PR range only bumps package/path versions in chip manifests; no chip source files changed and no docs/.md moved, so no behaviour-doc sync is required.
Measured, Never Tuned ✅ Passed No new untethered hardware constants or timings were added; the release-note figures are already grounded in docs/accuracy-ledger.md (AccuracyScorer::default_battery, R-18, R-23).
Unsafe Stays Out Of The Chip Crates ✅ Passed PASS: the PR only changes CHANGELOG.md; structural scans found no unsafe blocks/functions/impls and all chip/core crates still have #![forbid(unsafe_code)].

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@CHANGELOG.md`:
- Around line 19-20: Update the release-note sentence in CHANGELOG.md by
replacing “Both defects that unblocked that were” with “Both defects that
unblocked it were”, leaving the surrounding wording unchanged.
- Around line 9-20: Keep the v0.8.0 release claims consistent with tag creation:
in CHANGELOG.md lines 9-20, place the entry under [Unreleased] until the tagged
release commit; in docs/STATUS.md lines 6-15, describe v0.8.0 as pending; in
docs/STATUS.md line 139, remove the claim that v0.8.0 is tagged and released;
and in docs/STATUS.md lines 316-318, keep the exercised release range ending at
the latest existing tag.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 05f35c2d-77a8-4031-abe0-f6f8620e931e

📥 Commits

Reviewing files that changed from the base of the PR and between d9b0762 and 1a33806.

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock, !Cargo.lock
📒 Files selected for processing (14)
  • CHANGELOG.md
  • Cargo.toml
  • crates/rustyn64-audio/Cargo.toml
  • crates/rustyn64-cart/Cargo.toml
  • crates/rustyn64-cheevos/Cargo.toml
  • crates/rustyn64-core/Cargo.toml
  • crates/rustyn64-cpu/Cargo.toml
  • crates/rustyn64-frontend/Cargo.toml
  • crates/rustyn64-netplay/Cargo.toml
  • crates/rustyn64-rdp/Cargo.toml
  • crates/rustyn64-rsp/Cargo.toml
  • crates/rustyn64-snapshot/Cargo.toml
  • crates/rustyn64-test-harness/Cargo.toml
  • docs/STATUS.md

Comment thread CHANGELOG.md
Comment thread CHANGELOG.md Outdated
Adopts a CodeRabbit wording fix in the v0.8.0 release note.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@doublegate

Copy link
Copy Markdown
Owner Author

Adjudication — review round

CI 13/13 (release PRs run the full matrix plus test-roms). One fix adopted, two rejected on precedent.

Wording: "unblocked that" → "unblocked it" — adopted

Fixed.

"Do not claim a v0.8.0 release before the tag exists" — rejected: the wording already says exactly that

This is the standard release-commit pattern in this repo, and the text is explicit about the ordering rather than glossing it:

Current release: v0.8.0 "Breadth" — this commit is the v0.8.0 release; the v0.8.0 tag is cut from it on merge to main.

Identical phrasing to the v0.7.0 release commit, verified with git show v0.7.0:docs/STATUS.md:

Current release: v0.7.0 "Shell" — this commit is the v0.7.0 release; the v0.7.0 tag is cut from it on merge to main.

The alternative — keeping the entry under [Unreleased] and editing it after tagging — would mean the tagged commit does not contain its own release notes, so git show v0.8.0:CHANGELOG.md would not describe v0.8.0. That is strictly worse for provenance, which is why the convention runs this way.

"Retain an empty ## [Unreleased] section" — rejected: it is retained

CHANGELOG.md lines 5-9:

[Semantic Versioning](https://semver.org/).

## [Unreleased]

## [0.8.0] - 2026-07-29 — "Breadth"

The header was not replaced; a new versioned section was inserted beneath it, exactly as suggested.


Merging on that basis. After merge: annotated v0.8.0 tag on main, then the GitHub release — the ceremony to-dos/VERSION-PLAN.md §Release specifies and that v0.1.0v0.7.0 all followed.

@github-actions

Copy link
Copy Markdown

Antigravity review (Gemini via Ultra)

This pull request performs the v0.8.0 release version bump across all workspace Cargo.toml files and Cargo.lock, while updating CHANGELOG.md and docs/STATUS.md.

Blocking issues

None found.

Suggestions

None found. This is a mechanical release version bump; workspace crate dependencies and documentation were updated consistently.

Nitpicks

None.

Automated first-pass review by agy on a self-hosted runner -- not a human review.

@doublegate
doublegate merged commit 5a18d53 into main Jul 29, 2026
13 checks passed
@doublegate
doublegate deleted the release/v0.8.0 branch July 29, 2026 18:43
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