Skip to content

docs(csd): ready-to-promote list, #1213 rows for agent 2.12.1, drafts README matches CSD.md - #128

Merged
emooreatx merged 4 commits into
mainfrom
docs/promote-testable
Sep 29, 2026
Merged

emooreatx merged 4 commits into
mainfrom
docs/promote-testable

Conversation

@emooreatx

@emooreatx emooreatx commented Sep 29, 2026 •

Copy link
Copy Markdown
Contributor

Docs only. Nothing under client/ changed.

1. Ready-to-promote list, kept at building (7628cc3)

Under CSD.md §1, a card reaches testable only when its flow's floor is a released version and the flow runs on the matrix. No flow here has run on the matrix, and the runner that would run them (#97) is not on main. So:

  • CSD-005, 006 and 091 go back from testable to building. The people review promoted them with >=0.5.225 floors and flows that have never run on the matrix.
  • 22 cards now open §5 with the same line: "Spec complete and flow written (<file>, floor <x>); promotes to testable when the floor is released and the flow runs on the matrix (feat(testing): CSD flows run on the five-platform matrix; state: now asserts something #97)." The 22 are CSD-005, 006 and 091 plus the 19 below, which each pass check_csd_v3 when trial-set to testable and have a draft flow: CSD-008, 032, 033, 036, 040, 045, 046, 047, 048, 049, 057, 068, 069, 081, 082, 090, 092, 100, 101.
  • Ten cards had a stale "Flow: unwritten" header even though a draft exists. Those headers now name the draft: 040, 057, 068, 069, 081, 082, 083, 085, 087, 090.

The other 49 cards at building fail that trial:

Reason Count CSDs
No flow 4 003, 026, 070, 110
Proposed tag only 16 002, 024, 025, 028, 051, 052, 056, 066, 067, 071, 080, 083, 084, 085, 086, 087
Unconfirmed field only 4 007, 065, 102, 103
Both proposed tag and unconfirmed field 25 004, 010, 011, 012, 013, 014, 015, 016, 020, 021, 022, 023, 027, 029, 031, 035, 039, 041, 043, 050, 053, 054, 055, 104, 105

2. CIRISAgent#1213 rows, for agent 2.12.1 (920c7e6)

CIRISAgent#1213 was closed by #1215, which shipped in agent 2.12.1 on 2026-09-26. The agent's node proxy now forwards /v1 paths the agent does not serve itself, /v1/admin included.

The rows in CSD-005, 007, 045, 091, 092 and 102 now say two things: reach through the agent works from agent 2.12.1, and the client still calls the node URL directly, which works on every agent version. No typed block had a blocked_by: CIRISAgent#1213, so nothing needed removing.

3. Nav-only drafts: none promoted (ec61a1d, 7628cc3)

csd-025, 036, 057, 066, 068 and 087 do not load on main:

  • No runner: testing/gate/run_flows.py does not exist on main.
  • Key refused: FlowSpec.load refuses the csd: key with unknown key(s) ['csd'].
  • Nothing else wrong: with that key removed, all six parse.
  • csd-036 is also still floored unreleased.

The table in testing/flows/drafts/README.md records this row by row. Its "Promoting one" section now states the CSD.md bar: testable needs a released floor and a matrix run, and verified needs that run green on every declared platform.

4. Codex review fixes (64e258b)

  • Wording: testable needs a floor that is no longer unreleased (CSD.md §1); a published version is shipped. The README and every §5 line now say so.
  • 18 cards keep the "Spec complete and flow written" line after their flows were fixed so an ordinary run can go green: 005, 008, 032, 033, 036, 040, 045, 046, 048, 049, 057, 068, 069, 081, 090, 092, 100, 101. The fixes: optional steps gated on the state they test (032, 033, 036, 045, 048, 049, 081, 090); CSD-057's conditional cards dropped from the flow and disclaimed; CSD-069's remint_done_* removed; CSD-040's storage_error un-proposed; CSD-068/069 Stage paragraphs updated.
  • 4 cards now say "Flow not complete" with the reason: 006 (never opens a concrete receipt), 047 (never picks a peer), 082 (the Finish step cannot be gated), 091 (a room holding only a system note fails the history step).

Checks

  • check_csd_v3 passes on every CSD
  • pytest -q testing/test_csd_state_tags.py: 189 passed
  • check_csd_routes.py: no new uncited routes, baseline current
  • bash packaging/gates.sh: exit 0, ending [OK] every release gate passed
  • pytest -q testing/: 323 passed, 79 skipped

🤖 Generated with Claude Code

https://claude.ai/code/session_0155SkTGdbwnSnR6tWBqJvUM

emooreatx and others added 3 commits September 28, 2026 20:04
…nt#1213 rows

CIRISAgent#1213 closed via #1215 (released in agent 2.12.1, 2026-09-26):
the node proxy now forwards any /v1 path the brain does not serve. The
rows in CSD-005, 007, 045, 091, 092 and 102 that cited #1213 as missing
reach through the agent now say reach works from agent 2.12.1, and that
the client still calls the node URL directly, which works on every agent
version. No `blocked_by: CIRISAgent#1213` existed in any typed block, so
there was nothing to remove; check_csd_v3 passes on every CSD.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0155SkTGdbwnSnR6tWBqJvUM
None of csd-025, 036, 057, 066, 068, 087 loads with the loader on main:
testing/gate/run_flows.py does not exist there, and FlowSpec.load refuses
the `csd:` key every draft carries. The binder that reads it is in #97,
still open. With `csd:` removed each parses, so the key is the only thing
refused. csd-036 is additionally floored `unreleased`. The README table
says so per row, and step 3 of "Promoting one" now reserves the green run
for `verified`, matching what `testable` means on the promoted cards.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0155SkTGdbwnSnR6tWBqJvUM
CSD.md §1 makes `testable` a released floor AND a matrix run; no flow here
has run on the matrix, and the runner that would (#97) is not on main.
So CSD-005, 006 and 091 go back from `testable` to `building`, and they
and the 19 cards whose spec passes check_csd_v3 at `testable` with a
written flow (CSD-008, 032, 033, 036, 040, 045, 046, 047, 048, 049, 057,
068, 069, 081, 082, 090, 092, 100, 101) each open §5 with one line naming
the flow and floor, and what promotes them. Stale "Flow: unwritten"
headers on ten cards with drafts (040, 057, 068, 069, 081, 082, 083, 085,
087, 090) now name the draft. The drafts README's "Promoting one" now
states the CSD.md bar for testable and verified.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0155SkTGdbwnSnR6tWBqJvUM

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 7628cc3201

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread testing/flows/drafts/README.md Outdated
Comment on lines +72 to +73
- `testable` needs the flow's `client:` floor to name a released version (not
`unreleased`) **and** the flow to run on the matrix;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Keep the testable rule distinct from shipped

For a flow whose floor has changed from unreleased to a not-yet-published version, this rule would keep the card at building even after it runs on the matrix. CSD.md:49-51 requires only a non-unreleased floor for testable; requiring a published version belongs to shipped. Following this README would therefore stall valid promotions, so describe the testable floor as non-unreleased, not necessarily released.

Useful? React with 👍 / 👎.

Comment thread FSD/CSD/CSD-057-wallet.md Outdated

## 5. QA plan

Spec complete and flow written (`testing/flows/drafts/csd-057-wallet.yaml`, floor `>=0.5.224`); promotes to `testable` when the floor is released and the flow runs on the matrix (#97).

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Replace the stale Wallet “Unwritten” flow section

This now says the Wallet flow is written, but §4 at lines 131-147 still begins “Unwritten” and labels its inline YAML as only a candidate. Anyone consulting the CSD for the canonical flow therefore gets contradictory status and obsolete guidance despite the real draft file now being named; update §4 to point to and describe the draft flow.

Useful? React with 👍 / 👎.


## 5. QA plan

Spec complete and flow written (`testing/flows/drafts/csd-068-provision-accord-holder.yaml`, floor `>=0.5.224`); promotes to `testable` when the floor is released and the flow runs on the matrix (#97).

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Remove CSD-068's obsolete unreleased-floor blocker

The draft and this new line both set the floor to >=0.5.224, which the repository records as released, but lines 255-260 still say this exact draft is client: "unreleased" and that no release carries the screen. That stale Stage paragraph now identifies a blocker that has already been cleared and obscures that the remaining promotion condition is the matrix run.

Useful? React with 👍 / 👎.

Comment thread FSD/CSD/CSD-069-accord-ceremony.md Outdated

## 5. QA plan

Spec complete and flow written (`testing/flows/drafts/csd-069-accord-ceremony.yaml`, floor `>=0.5.224`); promotes to `testable` when the floor is released and the flow runs on the matrix (#97).

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Remove CSD-069's obsolete unreleased-floor blocker

This line and the actual draft declare >=0.5.224, yet the Stage paragraph at lines 328-331 still says the draft floor is unreleased and no release carries the relevant UI. Since 0.5.224 is recorded as released, the document now gives two incompatible reasons for remaining at building; update the Stage text so only the outstanding matrix-run condition remains.

Useful? React with 👍 / 👎.

Comment thread FSD/CSD/CSD-040-storage.md Outdated

## 5. QA plan

Spec complete and flow written (`testing/flows/drafts/csd-040-storage.yaml`, floor `unreleased`); promotes to `testable` when the floor is released and the flow runs on the matrix (#97).

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Replace the obsolete proposed Storage error tag

This declares the Storage spec complete, but its §4 error-state assertion at line 156 still expects the literal tag proposed:storage_error, while the csd:states block and the actual client tag are storage_error. If that documented fixture is moved into the runnable flow during promotion, it will wait for a tag that can never render; update the §4 assertion to the real tag before calling the spec complete.

Useful? React with 👍 / 👎.


**CSD**: CSD-069 · **Standard**: CSD/3 (`CSD.md`) · **Origin**: the Locked Spec, wave 1
**Flow**: unwritten
**Flow**: `testing/flows/drafts/csd-069-accord-ceremony.yaml` (floor `>=0.5.224`)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Remove foreign-screen tags from the ceremony flow

The newly referenced draft's completed-ceremony step expects remint_done_family and remint_done_holders, but this CSD explicitly states at lines 299-304 that those tags belong to the Accord re-mint sheet, are not present on AccordCeremony, and were moved to CSD-067. When the optional hardware ceremony is actually completed, this flow will therefore fail while waiting for elements from another screen, preventing the declared flow from ever going green on that path.

Useful? React with 👍 / 👎.

Comment thread FSD/CSD/CSD-057-wallet.md

**CSD**: CSD-057 · **Standard**: CSD/3 (`CSD.md`) · **Origin**: the Locked Spec, Rules tab
**Flow**: unwritten
**Flow**: `testing/flows/drafts/csd-057-wallet.yaml` (floor `>=0.5.224`)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Seed or condition the Wallet's optional status cards

The newly declared Wallet flow unconditionally expects card_transaction_history, card_spending_progress, and card_trust_warning, but WalletPage.kt renders them only for nonempty transactions, non-null spending, and hardwareTrustDegraded == true; the defaults are empty/null/false, and this flow declares no fixture that changes them. A normal healthy or fresh wallet will therefore fail this draft before it can run on the matrix, so these assertions need deterministic seeded data or optional preconditions matching the states they test.

Useful? React with 👍 / 👎.

Comment thread FSD/CSD/CSD-081-login.md Outdated

## 5. QA plan

Spec complete and flow written (`testing/flows/drafts/csd-081-login.yaml`, floor `>=0.5.224`); promotes to `testable` when the floor is released and the flow runs on the matrix (#97).

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Give the optional Login steps selective preconditions

In the flow this line declares complete, both fixture-specific steps are marked optional but require only screen: Login. After the preceding input step that condition is always true, so FlowRunner will not skip them: a normal owner login must immediately show the observer-refusal card and then the post-setup banner, causing every ordinary matrix run to fail. Require the fixture-specific visible state for each step, or split them into separately seeded flows.

Useful? React with 👍 / 👎.

Comment thread FSD/CSD/CSD-006-receipt.md Outdated

## 5. QA plan

Spec complete and flow written (`testing/flows/drafts/csd-006-receipt.yaml`, floor `>=0.5.225`); promotes to `testable` when the floor is released and the flow runs on the matrix (#97).

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Open the receipt before asserting its facts

The declared CSD-006 draft never clicks a btn_receipt_*: its first step only counts hamburger tags, while every fact assertion is optional and requires sheet_receipt to already be visible. With a contact those fact steps are skipped because nothing opened the sheet, and without a contact the entire receipt path skips, so a matrix run can provide no evidence for the receipt contract while still completing. Add an action that opens a concrete receipt before calling this flow complete.

Useful? React with 👍 / 👎.

…x on #128)

A §5 line that says a flow is written must mean the flow can go green on
an ordinary matrix run. Per Codex's nine findings, and the same defect
class found by scanning every optional step whose precondition was empty
or only `screen:`:

- testable needs a floor that is no longer `unreleased` (CSD.md §1), not a
  published version (that is `shipped`): README rule and every §5 line say so.
- CSD-057: §4 describes the draft; the draft no longer asserts the spending,
  history and trust-warning cards WalletPage renders only with seeded state
  (disclaimed in §5); address and transfer steps are gated on their cards.
- CSD-068 / CSD-069 Stage paragraphs: the floor is >=0.5.224; the matrix run
  is the only remaining condition.
- CSD-069 draft: the completed-ceremony step asserts what AccordCeremony
  renders, not the re-mint sheet's remint_done_* (CSD-067).
- CSD-040 §4: storage_error is real, not proposed.
- CSD-081 draft: the observer and post-wizard steps are gated on
  card_observer_blocked and banner_setup_complete_relogin.
- Gated on their own state: CSD-032, 033, 036 (both branches), 045 (plus
  typed / picked delegation steps), 048, 049, 090.
- Line replaced by "Flow not complete" with the reason: CSD-006 (never
  opens a concrete receipt), CSD-047 (never picks a peer), CSD-082 (finish
  step ungatable), CSD-091 (a system-note-only room fails the history step).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0155SkTGdbwnSnR6tWBqJvUM
@emooreatx
emooreatx merged commit 435a1ce into main Sep 29, 2026
5 checks passed
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