Added
- D1 migrations that are additive and reversible now run start-to-finish in one task instead of pausing to ask (stack.C8); the ask-first gate stays only for the genuinely irreversible case.
- install.py --check prints installed vs latest version and exits, and the install prompt is skipped when you install from the exact checkout you're on.
- New lookups: macOS code-signing/TCC, and which coding agents read AGENTS.md.
- Every multi-step task re-reads the original request at the finish line and reports any missed demand instead of quietly dropping it (agent.B2).
- Anti-bias intensity pack and skill-token dispatch rule for the Gemini/Antigravity bootstrap.
Changed
- A release now syncs every record surface — plans, arch/feat docs, README, task notes, bound standards docs — not just docs under docs/.
- Research docs are frozen event records with dated amendments; a successor doc is required only when the decision itself changes.
- Council seats are declared by tier (top/mid/cheap), not by a Claude model name, so other hosts use their own cheaper models.
Fixed
- The update-check hook never detected updates (both changelogs start with Unreleased); it now compares the first real version.
- releases.json now has a real "internal" type instead of disguising internal-only releases.
- Windows installer printed a broken bash propagate command; both blocks now print the correct per-platform command.
Full Changelog: 2.7.0...2.8.0