@zalom/plastic 2.0.0-alpha.7 → 2.0.0-alpha.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -103,20 +103,25 @@ For a live intent's directory:
103
103
  the next thing the stage needs (see the matrix). The newest `## Insights` entry supplies
104
104
  the human-readable context; an entry marked `(autonomous)` means an auto team was
105
105
  delivering it, so say so and offer to hand back to `plastic-auto`.
106
- 5. **Print the intent screen as the first thing in the reply, then continue at that stage.**
106
+ 5. **Print the report screen as the first thing in the reply, then continue at that stage.**
107
107
  The screen must open the message with nothing before it. On Claude Code, a fail-open
108
108
  `MessageDisplay` hook recognizes a reply that opens this way and substitutes a styled ANSI
109
109
  rendering for it there; the transcript and every other harness keep exactly this plain
110
- form, and nothing about how the screen is printed here ever changes. Run
111
- `ruby ~/.plastic/scripts/intent-screen <intent_dir>` and print its output as it is: the
112
- title, the field table, and the Steps table come from the record, never by eye. Under it
110
+ form. For "where are we" on one named intent, run
111
+ `ruby ~/.plastic/scripts/report-screen state <intent_dir>` and print its output as it is:
112
+ the title, the field table, the `Changed` row, and the Steps table come from the record,
113
+ never by eye. For "where are we" with no intent named, run
114
+ `ruby ~/.plastic/scripts/report-screen state --all <store_root>` for the roster across every
115
+ in-delivery intent. Route "why did X take so long" to
116
+ `ruby ~/.plastic/scripts/report-screen delay <intent_dir>` instead - every verb prints the
117
+ same plain screen on any harness, painted only where the harness supports it, with no
118
+ branching on harness name. Under the `state` screen
113
119
  write **What this means** as two to four bullets in plain words (what the intent is for,
114
- what has landed, what is left, any defect named by step), then close with
115
- **needs input:** naming the first open step. The screen's shape is
116
- `~/.plastic/templates/intent-screen.md`; the script fills it, the session never edits the numbers.
117
- Then continue the work in the session's current mode. In auto mode the running team
118
- already holds the delivery lock; if a lock is held by a session that is gone, the
119
- `plastic-doctor` skill's lock section repairs or reclaims it.
120
+ what has landed, what is left, any defect named by step), then close with **needs input:**
121
+ naming the first open step. Then continue the work in the
122
+ session's current mode. In auto mode the running team already holds the delivery lock; if a
123
+ lock is held by a session that is gone, the `plastic-doctor` skill's lock section repairs or
124
+ reclaims it.
120
125
 
121
126
  ## Roadmap route: resume the mid-flight roadmap
122
127
 
@@ -63,8 +63,14 @@ on disk is what the record becomes, so before the call:
63
63
 
64
64
  Author outcome.md yourself when it deserves prose: copy `templates/outcome.md`,
65
65
  set the frontmatter to `disposition: delivered` or `disposition: abandoned`, and
66
- fill `## Summary`, `## Delivered`, `## Verification`, `## Follow-ups`. On
67
- abandon, `## Summary` states the abandonment reason and the trail (see Pivot
66
+ fill `## Summary`, `## Delivered`, `## Verification`, `## Follow-ups`. `## Delivered` is a
67
+ `| Row | What |` table: one row per thing delivered, in plain wording a reader
68
+ recognizes, not a method name or an implementation summary (that detail
69
+ belongs in `## Summary`). Each row's label must appear as a standalone token
70
+ in an action-file heading (`### S1 - ...` proves row S1); that heading's
71
+ matrix rows become the row's Proven-by cell on `report-screen delivered`'s
72
+ post-delivery screen. `## Needs you` is the literal None or a
73
+ `| N | What | Why |` table. On abandon, `## Summary` states the abandonment reason and the trail (see Pivot
68
74
  below). A placeholder outcome.md is backfilled from the record instead, with the
69
75
  close's disposition and the `--outcome-summary` line as its summary. Also author
70
76
  the rich INDEX entry note now (a short line in the store's existing
@@ -61,6 +61,8 @@ Run Step 0 (Sync Worktree First) before this step.
61
61
 
62
62
  Dispatch ONE executor subagent and give it the whole delivery: every task's full text from `plan.md` (pasted in, never a file reference), every action file with its failure-mode matrix, the checklist items it must tick, the project context from CLAUDE.md, the active intent context from `{ID}--{slug}.md`, and the worktree path. In auto mode this is the `plastic-executor` agent; elsewhere use the `implementer-prompt.md` template. The executor writes the matrix's tests and commits them red, implements the consolidated action in order, ticks each item as it lands (see `## Tick-as-you-land`), and drives the test suite green.
63
63
 
64
+ After each commit lands (the red commit and every commit after it), append a `Commit` line to the savepoint ledger: `ruby ~/.plastic/scripts/savepoint-note <intent_dir> --kind Commit --text "<sha> <what it proves>"` (intent 317, D17). This is what feeds `report-screen delay`; a commit with no line is a gap the delay report cannot explain.
65
+
64
66
  Read its response by code:
65
67
  - DONE or DONE_WITH_CONCERNS → proceed to Step 3.
66
68
  - NEEDS_CONTEXT → provide the missing context, re-dispatch the executor.
@@ -69,6 +71,10 @@ Read its response by code:
69
71
  ### Step 3: Review by Risk
70
72
  Apply the auto skill's risk rule to the executor's return and the diff: a matrix row no test could prove, a diff touching a hook, the lock, the worktree code, the installer, or a release file, a DONE_WITH_CONCERNS or a deviation from the matrix, or an owner-facing surface no test pins. When a rule fires, dispatch the post-execution reviewer with `code-quality-reviewer-prompt.md` (a separate agent with fresh context, never the maker); if it returns changes, re-dispatch the executor to fix them, then run the suite once more. When no rule fires, the green suite is the review.
71
73
 
74
+ Whenever a review verdict returns - the plan review before code, or the post-execution review above - the lead appends a `Review` line: `ruby ~/.plastic/scripts/savepoint-note <intent_dir> --kind Review --text "<verdict, what changed>"` (intent 317, D17). This is the other half of what `report-screen delay` reads.
75
+
76
+ **The D19 heading convention.** An action file's `## Delivered` row (in `outcome.md`) is proven by whichever `actions/ACTION_N.md` heading carries that row's label as a standalone token - `### Row A -` proves row A, `### S1 -` proves row S1. Write action-file section headings so the label they prove is unambiguous (never a substring another label could also match, like `A` inside `AB`); `report-screen delivered`'s Proven-by column renders `not recorded` when no heading matches.
77
+
72
78
  ### Step 4: Update Intent and Complete
73
79
  Capture observations in `## Insights`. When ALL checklist items are checked:
74
80
 
@@ -7,10 +7,23 @@ disposition: delivered|abandoned
7
7
  (what was delivered)
8
8
 
9
9
  ## Delivered
10
- - ...
10
+ <!-- One row per thing delivered, in plain wording a reader recognizes, not
11
+ an implementation summary; the technical detail belongs in ## Summary. Each
12
+ row's label must appear as a standalone token in an actions/*.md heading
13
+ (for example "### S1 - ..." proves row S1): that heading's matrix rows become
14
+ the row's Proven-by cell on the delivered screen (intent 317 D19, 317a). -->
15
+ | Row | What |
16
+ | --- | --- |
17
+ | S1 | ... |
11
18
 
12
19
  ## Verification
13
20
  - <acceptance criterion> — verified by ... → result
14
21
 
22
+ ## Needs you
23
+ <!-- The literal None, or a table shaped | N | What | Why | with one row per
24
+ open owner action. Prose is tolerated by the reader but renders as a single
25
+ untyped row - write the table. -->
26
+ None
27
+
15
28
  ## Follow-ups
16
29
  None
@@ -0,0 +1,11 @@
1
+ ## ▶ {{id}} · {{name}}
2
+
3
+ | | | |
4
+ | --- | --- | --- |
5
+ {{fields.rows}}
6
+
7
+ **Steps**
8
+
9
+ | Step | Status | What |
10
+ | --- | --- | --- |
11
+ {{steps.rows}}