@llblab/pi-actors 0.12.0

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.
Files changed (86) hide show
  1. package/AGENTS.md +72 -0
  2. package/BACKLOG.md +38 -0
  3. package/CHANGELOG.md +179 -0
  4. package/README.md +338 -0
  5. package/docs/README.md +21 -0
  6. package/docs/actor-messages.md +149 -0
  7. package/docs/async-runs.md +335 -0
  8. package/docs/command-templates.md +424 -0
  9. package/docs/component-recipes.md +148 -0
  10. package/docs/recipe-library.md +176 -0
  11. package/docs/task-first-recipes.md +233 -0
  12. package/docs/template-recipes.md +285 -0
  13. package/docs/tool-registry.md +142 -0
  14. package/index.ts +198 -0
  15. package/lib/actor-messages.ts +120 -0
  16. package/lib/async-runs.ts +688 -0
  17. package/lib/command-templates.ts +795 -0
  18. package/lib/config.ts +266 -0
  19. package/lib/execution.ts +720 -0
  20. package/lib/file-state.ts +24 -0
  21. package/lib/identity.ts +29 -0
  22. package/lib/observability.ts +525 -0
  23. package/lib/output.ts +123 -0
  24. package/lib/paths.ts +35 -0
  25. package/lib/prompts.ts +75 -0
  26. package/lib/recipe-references.ts +586 -0
  27. package/lib/registry.ts +302 -0
  28. package/lib/runtime.ts +101 -0
  29. package/lib/schema.ts +402 -0
  30. package/lib/temp.ts +44 -0
  31. package/lib/tools.ts +651 -0
  32. package/package.json +52 -0
  33. package/recipes/music-player.json +25 -0
  34. package/recipes/pipeline-architect-coordinator.json +88 -0
  35. package/recipes/pipeline-artifact-report.json +52 -0
  36. package/recipes/pipeline-artifact-write.json +66 -0
  37. package/recipes/pipeline-async-run-ops.json +67 -0
  38. package/recipes/pipeline-checkpoint-continuation.json +57 -0
  39. package/recipes/pipeline-development-tasking.json +73 -0
  40. package/recipes/pipeline-docs-maintenance.json +72 -0
  41. package/recipes/pipeline-media-library.json +51 -0
  42. package/recipes/pipeline-quorum-review.json +72 -0
  43. package/recipes/pipeline-release-readiness.json +83 -0
  44. package/recipes/pipeline-repo-health.json +81 -0
  45. package/recipes/pipeline-research-synthesis.json +87 -0
  46. package/recipes/pipeline-review-readiness.json +49 -0
  47. package/recipes/subagent-artifact.json +26 -0
  48. package/recipes/subagent-checkpoint.json +27 -0
  49. package/recipes/subagent-conflict-report.json +25 -0
  50. package/recipes/subagent-contradiction-map.json +26 -0
  51. package/recipes/subagent-critic.json +28 -0
  52. package/recipes/subagent-evidence-map.json +26 -0
  53. package/recipes/subagent-followup.json +27 -0
  54. package/recipes/subagent-judge.json +26 -0
  55. package/recipes/subagent-merge.json +26 -0
  56. package/recipes/subagent-message.json +29 -0
  57. package/recipes/subagent-normalize.json +24 -0
  58. package/recipes/subagent-plan.json +26 -0
  59. package/recipes/subagent-prompt.json +22 -0
  60. package/recipes/subagent-quorum.json +41 -0
  61. package/recipes/subagent-review-coordinator.json +107 -0
  62. package/recipes/subagent-review.json +30 -0
  63. package/recipes/subagent-task-card.json +28 -0
  64. package/recipes/subagent-tools.json +17 -0
  65. package/recipes/subagent-verify.json +27 -0
  66. package/recipes/subagents-prompts.json +32 -0
  67. package/recipes/utility-actor-message.json +24 -0
  68. package/recipes/utility-artifact-manifest.json +17 -0
  69. package/recipes/utility-artifact-write.json +17 -0
  70. package/recipes/utility-changelog-head.json +12 -0
  71. package/recipes/utility-changelog-section.json +14 -0
  72. package/recipes/utility-git-log.json +12 -0
  73. package/recipes/utility-git-status.json +10 -0
  74. package/recipes/utility-jsonl-tail.json +11 -0
  75. package/recipes/utility-markdown-index.json +15 -0
  76. package/recipes/utility-package-summary.json +12 -0
  77. package/recipes/utility-playlist-build.json +18 -0
  78. package/recipes/utility-playlist-scan.json +12 -0
  79. package/recipes/utility-run-state-files.json +14 -0
  80. package/recipes/utility-run-summary.json +12 -0
  81. package/recipes/utility-validate-recipe.json +14 -0
  82. package/recipes/utility-validation-wrapper.json +14 -0
  83. package/scripts/async-runner.mjs +170 -0
  84. package/scripts/music-player.mjs +637 -0
  85. package/scripts/recipe-utils.mjs +273 -0
  86. package/scripts/validate-recipe.mjs +89 -0
@@ -0,0 +1,176 @@
1
+ # Recipe Library
2
+
3
+ The root `recipes/` directory is the packaged standard actor recipe library for pi-actors. These recipes are reusable building blocks, not automatically installed operator policy. Copy or reference them from local tool registrations when the operator wants a durable callable tool.
4
+
5
+ Helper scripts that belong to library recipes live in root `scripts/`. The music player standard uses the executable Node.js wrapper only: `scripts/music-player.mjs`.
6
+
7
+ ## Layout
8
+
9
+ - `recipes/subagent-*.json`: Atomic subagent components such as prompt launchers, reviewers, critics, planners, verifiers, mergers, checkpoints, follow-ups, judges, and normalizers.
10
+ - `recipes/pipeline-*.json`: Higher-level composed recipes built from component imports.
11
+ - `recipes/music-player.json`: Async local music player recipe backed by `scripts/music-player.mjs`.
12
+ - `recipes/utility-*.json`: Small operator utility recipes that are not subagent coordinators.
13
+
14
+ ## Install Locally
15
+
16
+ Recipes can be copied into the user recipe root:
17
+
18
+ ```bash
19
+ mkdir -p ~/.pi/agent/recipes
20
+ cp <repo>/recipes/*.json ~/.pi/agent/recipes/
21
+ ```
22
+
23
+ Or a registered tool can point directly at a recipe path when that is more convenient.
24
+
25
+ ## Async Subagent Components
26
+
27
+ Core subagent recipes:
28
+
29
+ - `recipes/subagent-prompt.json`: Start one prompt-driven subagent.
30
+ - `recipes/subagent-tools.json`: Start a subagent with an explicit tool allowlist.
31
+ - `recipes/subagents-prompts.json`: Run prompt fanout with one imported subagent component.
32
+ - `recipes/subagent-review.json`: Evidence-grounded review lens.
33
+ - `recipes/subagent-critic.json`: Assumption and failure-mode critique.
34
+ - `recipes/subagent-plan.json`: Bounded plan slices and validation gates.
35
+ - `recipes/subagent-evidence-map.json`: Evidence and confidence map.
36
+ - `recipes/subagent-contradiction-map.json`: Contradiction and missing-evidence map.
37
+ - `recipes/subagent-verify.json`: Claim verification.
38
+ - `recipes/subagent-merge.json`: Consensus/risk-first synthesis.
39
+ - `recipes/subagent-normalize.json`: Stable output shaping.
40
+ - `recipes/subagent-artifact.json`: Durable artifact-shaped output for a target path. It prepares content and write guidance; it does not write files unless the caller deliberately grants write tools or uses a deterministic writer.
41
+ - `recipes/subagent-message.json`: Prompted actor-message-envelope-shaped coordinator message record with envelope-aligned args.
42
+ - `recipes/subagent-quorum.json`: Same prompt across a model pool.
43
+ - `recipes/subagent-task-card.json`: Bounded implementation task card.
44
+ - `recipes/subagent-conflict-report.json`: Integrator-oriented conflict report.
45
+ - `recipes/subagent-checkpoint.json`: Coordinator checkpoint artifact.
46
+ - `recipes/subagent-followup.json`: Same-context or degraded continuation.
47
+ - `recipes/subagent-judge.json`: Post-merge/report quality judge.
48
+
49
+ Most atoms expose policy knobs such as `model`, `thinking`, `tools`, `output_format`, `evidence_policy`, `risk_policy`, source policy, continuity policy, handoff format, or model pools. Interactive async atoms also declare mailbox metadata for their basic control, completion, and domain-result message surface. Higher-level recipes pass these knobs through instead of hard-coding local policy.
50
+
51
+ Register one atom:
52
+
53
+ ```text
54
+ register_tool name=subagent_prompt \
55
+ description="Start an async no-tools pi subagent" \
56
+ template="subagent-prompt.json"
57
+ ```
58
+
59
+ Start it:
60
+
61
+ ```text
62
+ subagent_prompt prompt="Review docs/async-runs.md for unclear wording." run_id=docs-review
63
+ inspect target=run:docs-review view=status
64
+ inspect target=run:docs-review view=tail
65
+ ```
66
+
67
+ ## Composed Pipelines
68
+
69
+ Pipeline recipes demonstrate second-order composition:
70
+
71
+ - `recipes/subagent-review-coordinator.json`: Lens reviewers → verifier → merger → judge → normalizer.
72
+ - `recipes/pipeline-release-readiness.json`: Task-first release cell: changelog section → validation → release review → artifact report.
73
+ - `recipes/pipeline-repo-health.json`: Task-first repository-health cell: git status/log → docs index → validation → normalized artifact report.
74
+ - `recipes/pipeline-async-run-ops.json`: Task-first async-run operations cell: run summary → event tail → normalized operations report → artifact report.
75
+ - `recipes/pipeline-review-readiness.json`: Release/readiness gate over selected lenses.
76
+ - `recipes/pipeline-quorum-review.json`: Quorum vote shape → merge → judge → normalize.
77
+ - `recipes/pipeline-architect-coordinator.json`: Architecture lens fanout → critique → verification → synthesis → next slice.
78
+ - `recipes/pipeline-research-synthesis.json`: Plan → evidence map → contradiction map → verification → synthesis.
79
+ - `recipes/pipeline-checkpoint-continuation.json`: Checkpoint → follow-up → normalized handoff.
80
+ - `recipes/pipeline-development-tasking.json`: Plan → task card → critique → integrator handoff.
81
+ - `recipes/pipeline-docs-maintenance.json`: Docs index → documentation review → maintenance plan → artifact report.
82
+ - `recipes/pipeline-media-library.json`: Playlist build → media-library artifact report.
83
+ - `recipes/pipeline-artifact-report.json`: Normalize → artifact-shaped output → actor-message-shaped record. This pipeline prepares a candidate artifact and emits `artifact.prepared`/`artifact.blocked`; the `artifact_path` is a target path, not a guarantee that the file was written.
84
+ - `recipes/pipeline-artifact-write.json`: Normalize → artifact-shaped output → deterministic artifact write → actor-message-shaped record. Use only when the caller explicitly wants filesystem writes; `write_mode` is `create`, `overwrite`, or `append`.
85
+
86
+ These are examples of library composition, not a workflow DSL. Pipeline recipes declare mailbox metadata for their high-level completion, artifact, and control message surface. The recipe layer owns imports and saved defaults; command templates own execution shape; async runs own lifecycle.
87
+
88
+ ## Utility Recipes
89
+
90
+ Utility recipes cover local operator workflows that do not need subagents:
91
+
92
+ - `recipes/utility-markdown-index.json`: List Markdown files in a directory as input for README/docs index maintenance.
93
+ - `recipes/utility-jsonl-tail.json`: Tail a JSONL/event log with a configurable line count.
94
+ - `recipes/utility-validation-wrapper.json`: Run a caller-supplied validation command in a scoped directory with a bounded timeout.
95
+ - `recipes/utility-git-status.json`: Read concise branch/worktree state for a repo.
96
+ - `recipes/utility-git-log.json`: Read recent decorated commit history for a repo.
97
+ - `recipes/utility-run-state-files.json`: List run-state files such as `run.json` under an async run state root.
98
+ - `recipes/utility-changelog-head.json`: Read the top slice of a changelog for release summary prep.
99
+ - `recipes/utility-playlist-scan.json`: List local media files as playlist-building input.
100
+ - `recipes/utility-run-summary.json`: Use `scripts/recipe-utils.mjs` to summarize async run state files as JSON.
101
+ - `recipes/utility-playlist-build.json`: Use `scripts/recipe-utils.mjs` to build a filtered playlist listing as newline paths, M3U, or inline `|`-separated source.
102
+ - `recipes/utility-changelog-section.json`: Use `scripts/recipe-utils.mjs` to extract one changelog release section.
103
+ - `recipes/utility-artifact-manifest.json`: Use `scripts/recipe-utils.mjs` to emit a machine-readable JSON manifest for an artifact path.
104
+ - `recipes/utility-artifact-write.json`: Deterministically write prepared artifact content from stdin to `artifact_path` with explicit `create`, `overwrite`, or `append` mode.
105
+ - `recipes/utility-actor-message.json`: Deterministically wrap stdin as a validated addressed actor-message envelope with the same public names as the envelope: `to`, `from`, `type`, `summary`, `body`, optional `correlation_id`/`reply_to`, and `metadata`.
106
+ - `recipes/utility-package-summary.json`: Use `scripts/recipe-utils.mjs` to emit bounded package metadata such as name, version, files, scripts, and dependency counts.
107
+ - `recipes/utility-validate-recipe.json`: Use `scripts/validate-recipe.mjs` to validate one template recipe file, or all packaged recipes in a directory with `all: true`.
108
+
109
+ These recipes are intentionally small. Register them only for trusted local commands and prefer narrow scopes. The helper-backed utilities share `scripts/recipe-utils.mjs` so repeated parsing/listing logic stays out of recipe strings.
110
+
111
+ ## Music Player
112
+
113
+ Files:
114
+
115
+ - `recipes/music-player.json`
116
+ - `scripts/music-player.mjs`
117
+
118
+ Purpose: start a local or URL audio source as an async run so the agent can continue working while playback runs in the background. The running script exposes one run-local mailbox/FIFO, so addressed `message` calls can control playback without a second recipe.
119
+
120
+ Requirements: Linux, macOS, or WSL with `mkfifo`, Node.js, and one of `mpv`, `ffplay`, `cvlc`, or SoX `play`. Native Windows is not supported because the wrapper uses a Unix FIFO and Unix signals.
121
+
122
+ The required `source` arg accepts:
123
+
124
+ - A single local file or URL.
125
+ - A directory containing audio files; the wrapper scans `.mp3`, `.ogg`, `.wav`, `.flac`, and `.m4a` files.
126
+ - An `.m3u`, `.m3u8`, or `.txt` playlist file.
127
+ - A `|`-separated inline list of local files or URLs.
128
+
129
+ Install locally:
130
+
131
+ ```bash
132
+ mkdir -p ~/.pi/agent/recipes
133
+ cp <repo>/recipes/music-player.json ~/.pi/agent/recipes/music-player.json
134
+ ```
135
+
136
+ Register playback:
137
+
138
+ ```text
139
+ register_tool name=music_player \
140
+ description="Start async music player playback through the Node.js wrapper" \
141
+ template="music-player.json" \
142
+ args="source:string,loop:bool=true,volume:int=70,player:enum(auto,mpv,ffplay,cvlc,play)=auto"
143
+ ```
144
+
145
+ Start playback:
146
+
147
+ ```text
148
+ music_player source="~/Music" volume=55 run_id=music
149
+ ```
150
+
151
+ Control it through addressed actor messages. This is the canonical reactive pattern for long-lived recipes: the run emits actor messages upward, and the coordinator sends explicit commands downward instead of polling on a timer.
152
+
153
+ ```text
154
+ message to=run:music type=player.pause body=pause
155
+ message to=run:music type=player.play body=play
156
+ message to=run:music type=player.next body=next
157
+ message to=run:music type=player.previous body=previous
158
+ message to=run:music type=player.stop body=stop
159
+ ```
160
+
161
+ Use `inspect target=run:music view=status` only when an event or operator decision requires inspection.
162
+
163
+ The wrapper also accepts control commands directly when a caller already has the run state dir:
164
+
165
+ ```text
166
+ scripts/music-player.mjs next ~/.pi/agent/tmp/pi-actors/runs/music
167
+ ```
168
+
169
+ Message body is currently adapted to one newline-delimited command written to `<run state dir>/control.fifo`. The script writes `status.txt`, `player.json`, and track-change actor messages in `outbox.jsonl` in the same state dir. Track-change messages stay diagnostic by default; interactive recipes should define a small command vocabulary for addressed messages, emit semantic actor messages for decision points, and let the coordinator react to messages rather than sleep-polling state.
170
+
171
+ ## Safety Notes
172
+
173
+ - Only play trusted local files or URLs.
174
+ - Volume is clamped to `0..100` by the wrapper.
175
+ - Prefer a stable `run_id` such as `music` when the operator expects to control the run by name.
176
+ - Use `message type=runtime.kill` only when graceful cancellation fails.
@@ -0,0 +1,233 @@
1
+ # Task-First Recipe Design
2
+
3
+ Task-first recipe design starts from a high-level operator or coordinator task, then derives the component cells, utility recipes, helper scripts, and runtime semantics needed to make that task reusable.
4
+
5
+ This complements atom-first growth. Atom-first asks: "What small capability can we expose?" Task-first asks: "What complete work pattern should an agent/operator be able to invoke, and which atoms must exist to support it?"
6
+
7
+ ## Method
8
+
9
+ For each high-level recipe candidate:
10
+
11
+ 1. Name the task in operator language.
12
+ 2. Define the trigger and expected output artifact.
13
+ 3. Sketch the recipe pipeline at the highest useful abstraction.
14
+ 4. Identify missing component cells.
15
+ 5. Decide which cells are subagent components, local utilities, or helper-backed transforms.
16
+ 6. Keep domain policy knobs public: models, tools, paths, evidence/risk policy, output shape, mailbox contract, and validation gates.
17
+ 7. Add only the next smallest recipe/helper slice that validates the design.
18
+
19
+ ## High-Level Recipe Cells
20
+
21
+ ### Release Readiness Cell
22
+
23
+ Purpose: decide whether a repo/package is ready for release.
24
+
25
+ Pipeline:
26
+
27
+ ```text
28
+ scope snapshot → changelog/package check → release lens reviews → risk verifier → readiness report → release checklist artifact
29
+ ```
30
+
31
+ Likely needed cells:
32
+
33
+ - package metadata reader
34
+ - changelog section extractor
35
+ - package contents summarizer
36
+ - validation command wrapper
37
+ - release-risk reviewer
38
+ - readiness merger/judge
39
+ - release checklist artifact writer
40
+
41
+ Existing seeds:
42
+
43
+ - `utility-changelog-section`
44
+ - `utility-package-summary`
45
+ - `utility-validation-wrapper`
46
+ - `pipeline-review-readiness`
47
+ - `subagent-judge`
48
+ - `subagent-artifact`
49
+
50
+ Implemented seed:
51
+
52
+ - `pipeline-release-readiness`: changelog section → validation wrapper → release review coordinator → artifact report.
53
+
54
+ ### Repository Health Cell
55
+
56
+ Purpose: summarize repo state for the next coordinator turn or release prep.
57
+
58
+ Pipeline:
59
+
60
+ ```text
61
+ git status/log → package/docs/backlog snapshot → validation summary → health report → next action recommendation
62
+ ```
63
+
64
+ Likely needed cells:
65
+
66
+ - git status/log utility
67
+ - package version reader
68
+ - backlog open/blocked extractor
69
+ - docs index checker
70
+ - validation summary normalizer
71
+ - next-action recommender
72
+
73
+ Existing seeds:
74
+
75
+ - `utility-markdown-index`
76
+ - `utility-validation-wrapper`
77
+ - `subagent-normalize`
78
+ - `subagent-plan`
79
+
80
+ Implemented seed:
81
+
82
+ - `pipeline-repo-health`: git status/log → docs index → validation wrapper → normalized artifact report.
83
+
84
+ ### Async Run Operations Cell
85
+
86
+ Purpose: inspect, summarize, and decide actions for local async runs.
87
+
88
+ Pipeline:
89
+
90
+ ```text
91
+ run-state summary → event tail → stale/active classification → recommended action → optional stop/control message
92
+ ```
93
+
94
+ Likely needed cells:
95
+
96
+ - run summary helper
97
+ - JSONL event tailer
98
+ - stale-run classifier
99
+ - control-message recommender
100
+ - run report artifact
101
+
102
+ Existing seeds:
103
+
104
+ - `utility-run-summary`
105
+ - `utility-jsonl-tail`
106
+ - `subagent-message`
107
+ - `pipeline-artifact-report`
108
+
109
+ Implemented seed:
110
+
111
+ - `pipeline-async-run-ops`: run summary → event tail → normalized operations report → artifact report.
112
+
113
+ ### Research Brief Cell
114
+
115
+ Purpose: turn a question and source set into a bounded evidence-backed brief.
116
+
117
+ Pipeline:
118
+
119
+ ```text
120
+ question framing → evidence map → contradiction map → claim verification → synthesis → evidence gaps → next evidence slice
121
+ ```
122
+
123
+ Likely needed cells:
124
+
125
+ - question framer
126
+ - source inventory utility
127
+ - evidence mapper
128
+ - contradiction mapper
129
+ - verifier
130
+ - synthesis merger
131
+ - limitations normalizer
132
+
133
+ Existing seeds:
134
+
135
+ - `pipeline-research-synthesis`
136
+ - `subagent-evidence-map`
137
+ - `subagent-contradiction-map`
138
+ - `subagent-verify`
139
+
140
+ ### Implementation Tasking Cell
141
+
142
+ Purpose: prepare bounded work for one or more implementation agents.
143
+
144
+ Pipeline:
145
+
146
+ ```text
147
+ goal → mutation zones → task cards → validation gates → conflict risks → integrator handoff
148
+ ```
149
+
150
+ Likely needed cells:
151
+
152
+ - mutation-zone planner
153
+ - task-card generator
154
+ - ownership/conflict checker
155
+ - validation-gate normalizer
156
+ - integrator handoff artifact
157
+
158
+ Existing seeds:
159
+
160
+ - `pipeline-development-tasking`
161
+ - `subagent-task-card`
162
+ - `subagent-conflict-report`
163
+
164
+ ### Documentation Maintenance Cell
165
+
166
+ Purpose: keep docs/index/readme surfaces coherent after changes.
167
+
168
+ Pipeline:
169
+
170
+ ```text
171
+ doc file inventory → index diff → stale link/routing review → rewrite suggestion → docs maintenance artifact
172
+ ```
173
+
174
+ Likely needed cells:
175
+
176
+ - markdown index utility
177
+ - link checker wrapper
178
+ - docs consistency reviewer
179
+ - docs update planner
180
+ - docs artifact writer
181
+
182
+ Existing seeds:
183
+
184
+ - `utility-markdown-index`
185
+ - `subagent-review`
186
+ - `subagent-plan`
187
+ - `subagent-artifact`
188
+
189
+ Implemented seed:
190
+
191
+ - `pipeline-docs-maintenance`: docs index → documentation review → maintenance plan → artifact report.
192
+
193
+ ### Media/Playlist Operations Cell
194
+
195
+ Purpose: convert local media directories into controllable playback workflows.
196
+
197
+ Pipeline:
198
+
199
+ ```text
200
+ media scan → playlist build → playback start → event summary → controls
201
+ ```
202
+
203
+ Likely needed cells:
204
+
205
+ - playlist builder
206
+ - music player
207
+ - run/event summary
208
+ - control recommender
209
+
210
+ Existing seeds:
211
+
212
+ - `utility-playlist-build`
213
+ - `music-player`
214
+ - `utility-run-summary`
215
+ - `utility-jsonl-tail`
216
+
217
+ Implemented seed:
218
+
219
+ - `pipeline-media-library`: playlist build → media-library artifact report.
220
+
221
+ ## Selection Rule
222
+
223
+ Prefer adding a high-level recipe when at least three cells already exist and the missing cells are small. Prefer adding an atom when multiple high-level recipes need the same missing cell.
224
+
225
+ ## Near-Term Candidates
226
+
227
+ Good next candidates for the standard library after the first task-first wave:
228
+
229
+ 1. Package/release metadata enrichment: use `utility-package-summary` with changelog and validation cells to make release-readiness reports more evidence-rich without adding publish automation.
230
+ 2. Artifact packaging and manifesting: compose `pipeline-artifact-write`, `utility-artifact-manifest`, artifact reports, and validation summaries into a machine-readable handoff bundle when the caller explicitly requests filesystem writes.
231
+ 3. Async run cleanup planning: extend async-run operations with stale-run classification and recommended `message`, `cancel`, or `kill` controls, keeping actual control execution operator-gated.
232
+
233
+ Each candidate should land with the minimum missing cells rather than a broad one-shot framework. Already implemented task-first seeds include `pipeline-release-readiness`, `pipeline-repo-health`, `pipeline-async-run-ops`, `pipeline-docs-maintenance`, and `pipeline-media-library`.