PPromptReports

Plan: A customer's view of what was promised

Plannedopenspec/changes/wf-customer-promise-pageLDG-2281

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.

openspec/changes/wf-customer-promise-page/proposal.md

Why

Customers ask when it will ship by email, and the answers drift between people. One page replaces a thread of status emails, and the customer sees the same truth the team sees.

What Changes

  • Add the customer-promise-page workflow to the PromptReports workflow library, run by the workflow runner as an agent acting for a person.
  • CommitOps: List the customer's promises (list_assertions) (today: Built).
  • RepoOps: Attach delivery evidence per promise (today: Planned).
  • CommitOps: Build the page (today: Planned).
  • PromptCompute: A person approves publishing it (today: Built).
  • Gate commitops.page.publish through PromptCompute approvals; each gated step runs only after verifyResume passes, with final_args.
  • Write a signed record at the end of each run and count one workflow request.

Impact

  • Products: CommitOps, RepoOps.
  • Outside the family: GitHub.
  • State: Planned. Cut as a family workflow: it stays a CommitOps feature. The CommitOps ledger exists; the shared page and delivery evidence per promise are not built.
  • Plan row: LDG-2281.
openspec/changes/wf-customer-promise-page/tasks.md

1. Connect and authorize

  • 1.1 Confirm the org has a connection for each of: CommitOps, RepoOps. 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 commitops.page.publish with require_approval as the default.

2. Build the steps

  • 2.1 CommitOps: List the customer's promises (list_assertions).
  • 2.2 RepoOps: Attach delivery evidence per promise. Blocked: this part is Planned; until it ships, record the step's evidence as missing and continue.
  • 2.3 CommitOps: Build the page. Blocked: this part is Planned; until it ships, record the step's evidence as missing and continue.
  • 2.4 PromptCompute: A person approves publishing it.

3. Verify and record

  • 3.1 Run a dry run with the user's inputs: Customer = Acme Freight.
  • 3.2 Run it once for real; approve each gate as the user.
  • 3.3 Measure the outcomes: Status emails per account per month; Promises shown with delivery evidence.
  • 3.4 Confirm the run left a signed record with a task id and one workflow request counted.
openspec/changes/wf-customer-promise-page/specs/workflow-customer-promise-page/spec.md

ADDED Requirements

Requirement: Only approved promises show

The page SHALL show only promises in the ledger, never candidates.

Scenario: Only approved promises show

  • WHEN an agent records a promise as a candidate
  • THEN it does not appear until a person keeps it

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