chore(release): 5.11.0 — the intent approval gate is a new capability
Version 5.11.0 in every file that carries it: .claude-plugin/plugin.json, package.json, package-lock.json (both entries; they said 5.10.0, drift from before 5.10.1), the README badge, and a CHANGELOG entry for everything since v5.10.1. Chose a minor bump because /trekplan gains a halt (a new capability, additive schema). Handover 1 changes for downstream producers: their briefs stop at /trekplan until approved. No tag and no catalog bump here: release-plugin.mjs runs in the operator's push round. Suite after git add: 1234 tests, 1232 pass / 0 fail / 2 skip in 2 of 3 runs. The third failed only the known timing test otel SC #14 tail-latency (877 ms against an 800 ms ceiling), which this order leaves alone. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
e7687650c4
commit
ea66a98c60
5 changed files with 68 additions and 5 deletions
63
CHANGELOG.md
63
CHANGELOG.md
|
|
@ -4,6 +4,69 @@ All notable changes to this project will be documented in this file.
|
|||
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
||||
|
||||
## v5.11.0 — 2026-09-23 — /trekplan plans only against an approved intent
|
||||
|
||||
### Added
|
||||
|
||||
- **Intent approval gate.** `/trekplan` (both `--brief` and `--project`, also
|
||||
`--quick`, no override flag) runs `lib/validators/intent-approval.mjs --check`
|
||||
before it reads the brief. It **halts** on `BRIEF_INTENT_NOT_APPROVED`,
|
||||
`BRIEF_INTENT_APPROVAL_STALE` or `BRIEF_INTENT_APPROVAL_INVALID`, and an
|
||||
approval check that cannot run halts too. The marker is `intent_approved_hash`
|
||||
(sha256 over the normalized `## Intent` + `## Goal`) plus `intent_approved_at`.
|
||||
Editing either section after approval makes it stale. `/trekbrief` Phase 4h
|
||||
shows Intent and Goal verbatim and stamps only on "Approve".
|
||||
`/trekbrief --approve <project-dir | brief-file>` does that step alone for a brief
|
||||
from any producer. A `## ` line inside a code block or HTML comment is not a
|
||||
heading, and each section must appear exactly once. The marker is a trace that the
|
||||
step ran against this text, not a signature: any session on the same machine can
|
||||
stamp.
|
||||
- **`scripts/yardstick.mjs`** prints Voyage's three numbers (use, trust,
|
||||
interrupts) with the denominator and the source each one was read from. It
|
||||
exits non-zero while any number cannot be counted, and today it is RED.
|
||||
- **`scripts/end-state-gate.mjs`** counts the distance to "Voyage is finished"
|
||||
(defects, experiments, dormant agents, open decisions). It is fail-closed: an
|
||||
entry whose check cannot run counts as open.
|
||||
- **Plugin eval suite (`evals/`, `docs/proevesett.md`)**: eight cases run as
|
||||
real `claude -p` children with only Voyage loaded, deterministic graders,
|
||||
and each expectation committed before its first run. Measured stability: every
|
||||
case 5 of 5 over three full runs, and the sequencing-gate case 15 of 15.
|
||||
- `lib/stats/stats-append.mjs`: `/trekbrief` and `/trekplan` stats records
|
||||
land in the data dir the yardstick reads when `CLAUDE_PLUGIN_DATA` is empty,
|
||||
and a failed write is reported, not skipped silently. `intent_approved`
|
||||
reaches the OTel field allowlist.
|
||||
|
||||
### Changed
|
||||
|
||||
- **Handover 1 (PUBLIC CONTRACT): a brief from any producer now stops at
|
||||
`/trekplan` until its intent is approved.** The schema change is additive (two
|
||||
optional fields, no `brief_version` bump). The requirement sits in the
|
||||
consumer. See `docs/HANDOVER-CONTRACTS.md` §Handover 1.
|
||||
- The arg parser has a CLI. `/trekreview` runs it with `$ARGUMENTS` and relays
|
||||
`Error: --project <dir> is required.` from code (it passed `"$@"`, which the
|
||||
Bash tool never has, so the parser never ran).
|
||||
|
||||
### Fixed
|
||||
|
||||
- `/trekexecute` runs the plan's `## Verification` on the single-session path
|
||||
too (D-03), and `/trekreview` runs the brief's success-criteria commands and
|
||||
gives the reviewer the result (D-04), through `lib/verification/criteria-runner.mjs`.
|
||||
- The criteria runner screens with an **allowlist** of test runners, not a
|
||||
denylist, and refuses writes a brief may not perform. A backticked span runs only
|
||||
when it is a command, and the runner reads the repo's own plan format.
|
||||
- The end-state gate can no longer be turned green by editing its own ledger,
|
||||
and a behaviour probe must fell a stub, not just name a test.
|
||||
- The review gold-scorer key separator is written as an escape, not a raw
|
||||
NUL byte. The `/trekresearch` swarm engine points only at the External agents block.
|
||||
- Docs no longer claim an opus orchestrator: the commands follow the session model.
|
||||
|
||||
### Removed
|
||||
|
||||
- `/trekplan`'s "execute with team" path: Claude Code 2.1.178 removed
|
||||
TeamCreate/TeamDelete, so it always fell back to sequential execution.
|
||||
- `TaskCreate`/`TaskUpdate` from `/trekplan`'s tool lists. Claude Code 2.1.233
|
||||
stopped offering them on current models, and no prose called them.
|
||||
|
||||
## v5.10.1 — 2026-09-03 — gemini-bridge dropped; fail-closed review verdicts
|
||||
|
||||
### Removed
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue