Plan: Release notes with proof
Written for an AI agent to fetch and follow: it says what to connect, which steps to build with which product, what a person must approve, and how to check the result. Steps that depend on a part that is not built say so, and tell the agent to record the gap instead of guessing.
URL pattern: /use-cases/<id>/openspec.md, all plans at /use-cases/index.json. Checkboxes on this page are for reading only.
Why
Release notes are written from memory and skip what customers were promised. Customers see their promise kept in writing, and the notes never claim work that did not ship.
What Changes
- Add the
release-notes-with-proofworkflow to the PromptReports workflow library, run by the workflow runner as an agent acting for a person. - RepoOps: List shipped changes (today: Built).
- CommitOps: Match them to promises (shipped_not_told) (today: Built).
- PromptReports: Draft the notes (today: Proposed).
- PromptCompute: A person approves (today: Built).
- AI Source of Truth: Record each line (today: Built).
- Gate
product.release_notes.publish,commitops.customer.notifythrough PromptCompute approvals; each gated step runs only afterverifyResumepasses, withfinal_args. - Write a signed record at the end of each run and count one workflow request.
Impact
- Products: RepoOps, CommitOps, PromptReports, AI Source of Truth.
- Outside the family: GitHub, Your blog or changelog.
- State: Proposed. Named in the research as later work.
- Plan row: none yet (Proposed).
1. Connect and authorize
- 1.1 Confirm the org has a connection for each of: RepoOps, CommitOps, PromptReports, AI Source of Truth. Stop and tell the user which is missing.
- 1.2 Get a PromptReports ID agent token for each product the run calls (RFC 8693 exchange). Where a product does not accept ID tokens yet, use its connect key.
- 1.3 Register policy for
product.release_notes.publish,commitops.customer.notifywithrequire_approvalas the default.
2. Build the steps
- 2.1 RepoOps: List shipped changes.
- 2.2 CommitOps: Match them to promises (shipped_not_told).
- 2.3 PromptReports: Draft the notes. Blocked: this part is Proposed; until it ships, record the step's evidence as
missingand continue. - 2.4 PromptCompute: A person approves.
- 2.5 AI Source of Truth: Record each line.
3. Verify and record
- 3.1 Run a dry run with the user's inputs: Range = Since the last release; Destination = /changelog.
- 3.2 Run it once for real; approve each gate as the user.
- 3.3 Measure the outcomes: Lines in the notes with a source change: target 100%; Promised customers told within a day of release.
- 3.4 Confirm the run left a signed record with a task id and one workflow request counted.
ADDED Requirements
Requirement: No line without a change
Each line SHALL cite a merged change.
Scenario: No line without a change
- WHEN a drafted line has no change behind it
- THEN the draft step drops it and lists it for the approver
Requirement: Evidence stays honest
Each step SHALL report what it saw as measured, inferred or missing, and SHALL never report missing as measured.
Scenario: A product part is not built
- WHEN a step depends on a part that is Planned or Proposed
- THEN the step records
missing, names the part, and the approval card shows the gap
Requirement: One run is one workflow request
The runner SHALL count one workflow request when the first step starts, and SHALL NOT count retries, resumes or dry runs.
Scenario: A gated step resumes after two days
- WHEN a person approves a step and the run resumes
- THEN the org's usage does not change