@nklisch/pi-agile-workflow 0.16.1 → 0.16.3
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.
- package/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/docs/ARCHITECTURE.md +23 -11
- package/docs/PRINCIPLES.md +84 -18
- package/docs/SPEC.md +19 -2
- package/docs/VISION.md +11 -6
- package/hooks/scripts/prompt-context.py +7 -1
- package/hooks/scripts/test_prompt_context.py +16 -0
- package/package.json +1 -1
- package/scripts/work-view.sh +1 -1
- package/skills/autopilot/SKILL.md +49 -34
- package/skills/convert/SKILL.md +27 -3
- package/skills/epic-design/SKILL.md +21 -3
- package/skills/feature-design/SKILL.md +34 -11
- package/skills/gate-cruft/SKILL.md +69 -24
- package/skills/gate-docs/SKILL.md +12 -5
- package/skills/gate-patterns/SKILL.md +7 -3
- package/skills/gate-refactor/SKILL.md +18 -6
- package/skills/gate-security/SKILL.md +16 -7
- package/skills/gate-tests/SKILL.md +86 -71
- package/skills/implement/SKILL.md +18 -8
- package/skills/principles/SKILL.md +67 -13
- package/skills/principles/references/advisory-review.md +8 -1
- package/skills/principles/references/code-design.md +62 -5
- package/skills/refactor-design/SKILL.md +23 -13
- package/skills/review/SKILL.md +36 -17
- package/skills/review/references/substrate-side-effects.md +17 -10
- package/skills/scope/SKILL.md +20 -7
- package/work-view/crates/cli/.work-view-version +1 -1
- package/work-view/dist/aarch64-apple-darwin/work-view +0 -0
- package/work-view/dist/aarch64-unknown-linux-musl/work-view +0 -0
- package/work-view/dist/x86_64-apple-darwin/work-view +0 -0
- package/work-view/dist/x86_64-unknown-linux-musl/work-view +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agile-workflow",
|
|
3
3
|
"description": "Markdown-based work-tracking substrate for AI-driven projects. Items as files in .work/, late-binding releases, gates that produce items, goal-backed autopilot queue runner. See docs/VISION.md.",
|
|
4
|
-
"version": "0.16.
|
|
4
|
+
"version": "0.16.3",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "nklisch"
|
|
7
7
|
},
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agile-workflow",
|
|
3
|
-
"version": "0.16.
|
|
3
|
+
"version": "0.16.3",
|
|
4
4
|
"description": "Markdown-based work-tracking substrate for AI-driven projects. Items as files in .work/, late-binding releases, gates that produce items, goal-backed autopilot queue runner.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "nklisch"
|
package/docs/ARCHITECTURE.md
CHANGED
|
@@ -369,7 +369,10 @@ Advisory review follows risk in both direct and autopilot design. Independent
|
|
|
369
369
|
review uses completeness/advisory before adversarial posture, is labeled
|
|
370
370
|
cross-model only for a known different model class, and is non-blocking at
|
|
371
371
|
design time. Final autopilot completion still requires the successful review
|
|
372
|
-
path selected by the effective review weight.
|
|
372
|
+
path selected by the effective review weight. The receiving orchestrator owns
|
|
373
|
+
finding disposition: it verifies reviewer proposals in repository context,
|
|
374
|
+
keeps only credible material current-cycle risks blocking, and parks valid
|
|
375
|
+
lower-priority work in the unbound backlog.
|
|
373
376
|
|
|
374
377
|
### Queue selection algorithm
|
|
375
378
|
|
|
@@ -397,11 +400,12 @@ path selected by the effective review weight.
|
|
|
397
400
|
7. Re-read substrate state after the production skill returns; it may already
|
|
398
401
|
have completed review and eligible parent roll-up. Commit each item
|
|
399
402
|
transition separately.
|
|
400
|
-
8. If review bounced an item, treat
|
|
401
|
-
implementation input and keep cycling implementation → verification
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
403
|
+
8. If review bounced an item, treat only receiver-confirmed material blockers as
|
|
404
|
+
the next implementation input and keep cycling implementation → verification
|
|
405
|
+
→ review. Park valid lower-priority findings unbound; they do not reopen the
|
|
406
|
+
scoped queue. Bounce count is diagnostic history, never a stop condition.
|
|
407
|
+
Recurring blockers trigger deeper root-cause/design diagnosis and fresh
|
|
408
|
+
context where useful, but repetition alone does not elevate severity.
|
|
405
409
|
9. Goto 1 unless a stop condition applies.
|
|
406
410
|
```
|
|
407
411
|
|
|
@@ -500,6 +504,9 @@ session epoch:
|
|
|
500
504
|
Code-design capsule:
|
|
501
505
|
- Ports & Adapters: keep domain logic independent of DB/filesystem/HTTP/time/randomness.
|
|
502
506
|
- Single Source of Truth: define growing variant sets once; derive downstream behavior.
|
|
507
|
+
- Proportional rigor: validate real boundaries; add invariants, edge handling, and determinism only when context warrants them.
|
|
508
|
+
- Code economy: prefer the shortest clear solution; test useful interfaces, complex units, and bug regressions.
|
|
509
|
+
- Leave it simpler: eliminate unnecessary code, tests, checks, abstractions, and compatibility paths; ask before reducing guarantees.
|
|
503
510
|
...
|
|
504
511
|
```
|
|
505
512
|
|
|
@@ -548,14 +555,19 @@ Override via `gates_for_release` in `.work/CONVENTIONS.md`.
|
|
|
548
555
|
|
|
549
556
|
### Gate-as-item-producer pattern
|
|
550
557
|
|
|
551
|
-
Each gate
|
|
552
|
-
and produces new items rather than
|
|
558
|
+
Each gate focuses on the bundle of items at
|
|
559
|
+
`release_binding: <current-version>` and produces new items rather than
|
|
560
|
+
emitting a pass/fail report. The bundle is a center of gravity, not a hard scan
|
|
561
|
+
boundary: gates may follow concrete evidence into adjacent dependencies, shared
|
|
562
|
+
infrastructure, or system-wide mechanisms. Findings caused by, exposed by, or
|
|
563
|
+
materially relevant to the release bind to it; merely ambient discoveries go
|
|
564
|
+
to the unbound backlog so the gate does not silently expand release scope.
|
|
553
565
|
|
|
554
566
|
| Gate | What it scans | What it produces |
|
|
555
567
|
|---|---|---|
|
|
556
568
|
| `gate-security` | Bound items' code changes against security checklist | Items with `gate_origin: security`, tagged `[security]`, `release_binding` set |
|
|
557
|
-
| `gate-tests` |
|
|
558
|
-
| `gate-cruft` |
|
|
569
|
+
| `gate-tests` | Useful coverage at stable interfaces, complex units, and bug regressions; low-value tests exposed by the bundle | Items with `gate_origin: tests`, tagged `[testing]` for valuable gaps or removals |
|
|
570
|
+
| `gate-cruft` | Local or system-wide code, tests, checks, compatibility paths, and abstractions that may no longer earn their cost | Items with `gate_origin: cruft`, tagged `[cleanup]`; guarantee-reducing removals require user confirmation |
|
|
559
571
|
| `gate-docs` | Foundation-doc alignment with the bundle's behavior changes | Items with `gate_origin: docs`, tagged `[documentation]` — enforces rolling-foundation |
|
|
560
572
|
| `gate-patterns` | Reusable patterns that emerged in the bundle | Detailed pattern-skill files in `.agents/skills/patterns/` (single source of truth) with optional Claude mirror, the generated hook-loaded `.agents/rules/patterns.md` digest (slug+one-liner index pointing back at the skill, with banner + source hash), plus a tracking item with `gate_origin: patterns` |
|
|
561
573
|
|
|
@@ -741,7 +753,7 @@ configured in `CONVENTIONS.md` (default: security → tests → cruft → docs
|
|
|
741
753
|
|
|
742
754
|
| Skill | Role | Notes |
|
|
743
755
|
|---|---|---|
|
|
744
|
-
| `principles` | Loads code-design + substrate-execution principles | Code-design
|
|
756
|
+
| `principles` | Loads code-design + substrate-execution principles | Code-design includes clear boundaries, proportional rigor, code economy, useful tests, and continuous simplification; substrate-execution includes item-IS-the-work, rolling-foundation, and late-binding |
|
|
745
757
|
| `research` | Investigate libraries/APIs | Carried; produces research docs in `docs/research/` (separate from `.work/`) |
|
|
746
758
|
| `refactor-conventions-creator` | Create project-specific refactor conventions skill | Carried |
|
|
747
759
|
|
package/docs/PRINCIPLES.md
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
The plugin's `principles` skill loads two distinct paradigms:
|
|
4
4
|
|
|
5
|
-
- **Code-design principles** —
|
|
6
|
-
|
|
5
|
+
- **Code-design principles** — clear boundaries and sources of truth,
|
|
6
|
+
proportional rigor, code economy, useful tests, and continuous simplification.
|
|
7
7
|
These tell the agent how to write good code at design time and
|
|
8
8
|
implementation time.
|
|
9
9
|
- **Substrate-execution principles** — Item-IS-the-Work, Rolling-Foundation,
|
|
@@ -18,7 +18,7 @@ shapes how work moves through the system.
|
|
|
18
18
|
|
|
19
19
|
# Part I — Code-Design Principles
|
|
20
20
|
|
|
21
|
-
These
|
|
21
|
+
These principles govern both architectural decisions and how code is
|
|
22
22
|
written. Each section has guidance for design time and implementation time.
|
|
23
23
|
|
|
24
24
|
## 1. Ports & Adapters
|
|
@@ -213,21 +213,20 @@ If a generated type needs extending, use
|
|
|
213
213
|
`type MyType = GeneratedType & { extra: string }` — extend the source of
|
|
214
214
|
truth, don't replace it.
|
|
215
215
|
|
|
216
|
-
## 4. Fail Fast
|
|
216
|
+
## 4. Fail Fast—Where It Matters
|
|
217
217
|
|
|
218
|
-
Catch bad data at
|
|
219
|
-
|
|
220
|
-
|
|
218
|
+
Catch bad data at real trust boundaries, not three calls deep. Validate
|
|
219
|
+
untrusted input and required external contracts before domain logic runs. Add
|
|
220
|
+
internal checks only where a violated precondition is plausible and
|
|
221
|
+
consequential for this project.
|
|
221
222
|
|
|
222
223
|
- At system boundaries (HTTP handlers, CLI args, external API responses,
|
|
223
|
-
config files): parse
|
|
224
|
-
- At internal
|
|
225
|
-
|
|
226
|
-
- Prefer
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
"expected positive number, got -3" beats a cryptic null reference five
|
|
230
|
-
layers down
|
|
224
|
+
config files): parse before logic runs
|
|
225
|
+
- At internal boundaries: add guards when they protect a real invariant, not
|
|
226
|
+
mechanically at every function
|
|
227
|
+
- Prefer early, specific failure when failure is part of the required contract
|
|
228
|
+
- Do not manufacture exhaustive edge handling, invariants, retries, or firm
|
|
229
|
+
determinism that the project's scope and consequences do not need
|
|
231
230
|
|
|
232
231
|
**Good:**
|
|
233
232
|
```typescript
|
|
@@ -250,6 +249,73 @@ function processOrder(input: any) {
|
|
|
250
249
|
}
|
|
251
250
|
```
|
|
252
251
|
|
|
252
|
+
## 5. Code Economy
|
|
253
|
+
|
|
254
|
+
Short, direct code is a virtue when it stays clear. Prefer fewer concepts,
|
|
255
|
+
layers, branches, options, and lines over speculative generality. Terse does not
|
|
256
|
+
mean cryptic: simplify the model first, then its expression. Every abstraction
|
|
257
|
+
or extension point must earn its maintenance cost in current scope.
|
|
258
|
+
|
|
259
|
+
### At design time
|
|
260
|
+
|
|
261
|
+
- Start with the most direct solution that satisfies the actual brief
|
|
262
|
+
- Reject hypothetical flexibility without a current second use or committed need
|
|
263
|
+
- Compare approaches by concepts removed as well as capabilities added
|
|
264
|
+
|
|
265
|
+
### At implementation time
|
|
266
|
+
|
|
267
|
+
- Delete obsolete paths and incidental machinery exposed by the change
|
|
268
|
+
- Inline or consolidate before extracting another abstraction
|
|
269
|
+
- Match rigor to the project's context rather than treating every codebase as
|
|
270
|
+
critical infrastructure
|
|
271
|
+
|
|
272
|
+
## 6. Tests Earn Their Keep
|
|
273
|
+
|
|
274
|
+
Tests are maintained code. Prioritize stable public interfaces, important seams,
|
|
275
|
+
high-consequence behavior, and regressions learned from real bugs. Unit tests
|
|
276
|
+
belong around genuinely complex isolated logic, not every wrapper, branch, or
|
|
277
|
+
line. Coverage numbers are evidence, not goals.
|
|
278
|
+
|
|
279
|
+
### At design time
|
|
280
|
+
|
|
281
|
+
- Name the interface, risk, or regression each proposed test protects
|
|
282
|
+
- Prefer one useful interface test over several implementation-bound unit tests
|
|
283
|
+
- Do not require one automated test per unit, edge, or acceptance statement
|
|
284
|
+
|
|
285
|
+
### At implementation time
|
|
286
|
+
|
|
287
|
+
- Add regression tests when bugs reveal meaningful risk
|
|
288
|
+
- Remove duplicate, tautological, brittle, obsolete, or low-value tests
|
|
289
|
+
- Keep simple code simple when an isolated test adds no useful confidence
|
|
290
|
+
|
|
291
|
+
## 7. Leave It Simpler
|
|
292
|
+
|
|
293
|
+
Exploration, design, and implementation include an elimination pass. Look for
|
|
294
|
+
code, tests, checks, abstractions, configuration, and compatibility paths the
|
|
295
|
+
feature can make unnecessary. Fold safe cohesive cleanup into the task or create
|
|
296
|
+
explicit cleanup/refactor stories; park broader opportunities.
|
|
297
|
+
|
|
298
|
+
Question whole systems, not only local fragments. A validation layer, invariant
|
|
299
|
+
system, test suite, compatibility mechanism, or defensive subsystem may no
|
|
300
|
+
longer justify its cost. Removing behavior, guarantees, validation, determinism,
|
|
301
|
+
compatibility, or safety is a product decision: explain the trade-off and ask
|
|
302
|
+
the user rather than silently weakening it.
|
|
303
|
+
|
|
304
|
+
### Review proportionality
|
|
305
|
+
|
|
306
|
+
Reviewer output is evidence, not authority. The receiving agent verifies claims
|
|
307
|
+
and judges their current-cycle risk against the repository's acceptance criteria,
|
|
308
|
+
supported users and deployment shape, likelihood, blast radius, recoverability,
|
|
309
|
+
safeguards, and delay cost. Credible material risks to required correctness,
|
|
310
|
+
security, data, public contracts, acceptance, release safety, or trustworthy
|
|
311
|
+
verification block. Valid lower-priority concerns are parked unbound; nits stay
|
|
312
|
+
in review notes; unsupported advice is rejected with a brief rationale.
|
|
313
|
+
|
|
314
|
+
A successful independent review path requires adjudicating every proposal, not
|
|
315
|
+
implementing every suggestion. A rare severe case may still block, while a real
|
|
316
|
+
corner case with negligible consequence need not. Reviewer labels, model
|
|
317
|
+
strength, and repeated mention do not replace the receiving agent's judgment.
|
|
318
|
+
|
|
253
319
|
---
|
|
254
320
|
|
|
255
321
|
# Part II — Substrate-Execution Principles
|
|
@@ -259,7 +325,7 @@ shape stage transitions, item bodies, foundation-doc evolution, and
|
|
|
259
325
|
release binding. The agent applies these whenever operating on `.work/`
|
|
260
326
|
or `docs/`.
|
|
261
327
|
|
|
262
|
-
##
|
|
328
|
+
## 8. Item-IS-the-Work
|
|
263
329
|
|
|
264
330
|
The unit of work is its file. The brief, the design, the implementation
|
|
265
331
|
notes, and the review findings all accumulate in the item's body as
|
|
@@ -314,7 +380,7 @@ stages advance. Reading the file IS reading the state of the work.
|
|
|
314
380
|
- [ ] Item body at completion is a complete record
|
|
315
381
|
- [ ] Code does not reference item IDs; only logical concepts
|
|
316
382
|
|
|
317
|
-
##
|
|
383
|
+
## 9. Rolling-Foundation
|
|
318
384
|
|
|
319
385
|
Foundation docs (`docs/VISION.md`, `docs/SPEC.md`, `docs/ARCHITECTURE.md`,
|
|
320
386
|
and any others) describe the project's vision (future-looking) and current
|
|
@@ -398,7 +464,7 @@ which timing style was used.
|
|
|
398
464
|
- [ ] `git log docs/<file>.md` shows the audit trail; the doc shows the
|
|
399
465
|
present
|
|
400
466
|
|
|
401
|
-
##
|
|
467
|
+
## 10. Late-Binding
|
|
402
468
|
|
|
403
469
|
Items advance stages when work actually completes. Releases bind items
|
|
404
470
|
only when the user cuts a version. Foundation docs are not pre-decided
|
package/docs/SPEC.md
CHANGED
|
@@ -95,7 +95,9 @@ item kind as a starting heuristic. Low-risk stories can close from recorded
|
|
|
95
95
|
green verification, while risky stories, features, and epics receive the
|
|
96
96
|
fresh-context coverage allowed by the effective weight. Child completion may
|
|
97
97
|
make a parent eligible for its own review, but never approves the parent by
|
|
98
|
-
itself.
|
|
98
|
+
itself. Fresh-reviewer findings are proposals: the receiving agent verifies and
|
|
99
|
+
classifies them against repository context. Only credible material current-cycle
|
|
100
|
+
risk blocks advancement; valid lower-priority findings are parked unbound.
|
|
99
101
|
|
|
100
102
|
### Questions and advisory review
|
|
101
103
|
|
|
@@ -125,7 +127,13 @@ convention, then `standard`:
|
|
|
125
127
|
available for the highest-risk scopes.
|
|
126
128
|
|
|
127
129
|
These levels state review intent and ceilings, not fixed reviewer counts or pass
|
|
128
|
-
recipes.
|
|
130
|
+
recipes. A successful review path requires every proposed finding to be
|
|
131
|
+
adjudicated, not implemented. The receiving orchestrator weighs acceptance
|
|
132
|
+
criteria, supported users and deployment shape, likelihood, blast radius,
|
|
133
|
+
recoverability, safeguards, and delay cost. It fixes or activates material
|
|
134
|
+
current-cycle blockers, parks valid lower-priority concerns in the unbound
|
|
135
|
+
backlog, and rejects unsupported advice with a rationale. Reviewer labels and
|
|
136
|
+
repetition are evidence, not authority.
|
|
129
137
|
|
|
130
138
|
### Backlog item shape
|
|
131
139
|
|
|
@@ -204,6 +212,15 @@ backlog_staleness_days: 90
|
|
|
204
212
|
The default `gates_for_release` order is fixed: **security → tests → cruft
|
|
205
213
|
→ docs → patterns**. Override only if the project has a justified reason.
|
|
206
214
|
|
|
215
|
+
Release-bound items define each gate's focus, not a hard scan boundary. A gate
|
|
216
|
+
may follow concrete evidence into adjacent dependencies, shared infrastructure,
|
|
217
|
+
or system-wide mechanisms. Findings caused by, exposed by, or materially
|
|
218
|
+
relevant to the release bind to it. Merely ambient discoveries must be written
|
|
219
|
+
to the unbound backlog, so wider inspection does not silently expand release
|
|
220
|
+
scope. Any cruft proposal that reduces behavior, validation, determinism,
|
|
221
|
+
compatibility, safety, or another meaningful guarantee requires explicit user
|
|
222
|
+
confirmation before it becomes active removal work.
|
|
223
|
+
|
|
207
224
|
**`gate-refactor` is an opt-in gate** — not in the default list. Add it when your project has
|
|
208
225
|
scan-rule libraries installed under `gate_refactor_scan_library_roots` (defaults:
|
|
209
226
|
`{project}/.agents/skills/scan-*/SKILL.md`, then
|
package/docs/VISION.md
CHANGED
|
@@ -42,10 +42,10 @@ The plugin enforces three execution principles:
|
|
|
42
42
|
No pre-tagged release bindings. Items advance stages when work actually
|
|
43
43
|
completes. Releases bind items only when the user cuts a version.
|
|
44
44
|
|
|
45
|
-
The plugin's `principles` skill loads these alongside
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
45
|
+
The plugin's `principles` skill loads these alongside code-design principles
|
|
46
|
+
for clear boundaries, proportional rigor, code economy, useful tests, and
|
|
47
|
+
continuous simplification. The two paradigms—substrate execution and code
|
|
48
|
+
design—operate together during agile-workflow work.
|
|
49
49
|
|
|
50
50
|
## Who this is for
|
|
51
51
|
|
|
@@ -95,9 +95,14 @@ agile-workflow is complete enough to operate as the supported workflow engine:
|
|
|
95
95
|
- Questions and advisory review are consequence-driven: routine reversible
|
|
96
96
|
choices use recorded judgment; strategic or difficult-to-reverse choices get
|
|
97
97
|
an explicit checkpoint; independent review scales through the project's
|
|
98
|
-
high-level review weight while preserving fresh-context deep review.
|
|
98
|
+
high-level review weight while preserving fresh-context deep review. Reviewer
|
|
99
|
+
findings remain proposals: the receiving orchestrator weighs actual repository
|
|
100
|
+
risk, blocks only on material current-cycle concerns, and parks valid
|
|
101
|
+
lower-priority work rather than forcing every suggestion into implementation.
|
|
99
102
|
- Real releases move through scope → design → implement → review →
|
|
100
|
-
release-deploy on the substrate; gates
|
|
103
|
+
release-deploy on the substrate; gates focus on bound work while following
|
|
104
|
+
relevant evidence into adjacent or system-wide code, distinguish release
|
|
105
|
+
findings from ambient backlog discoveries, and produce durable items. The
|
|
101
106
|
release ships only after every bound item is terminal. Foundation docs roll
|
|
102
107
|
forward, release binding stays late, and terminal retention keeps git as the
|
|
103
108
|
audit trail without leaking obsolete authority.
|
|
@@ -78,7 +78,10 @@ CAPSULES = {
|
|
|
78
78
|
"Ports & Adapters: domain logic stays independent of DB/filesystem/HTTP/time/randomness.",
|
|
79
79
|
"Single Source of Truth: growing variant sets have one registry; types, validation, routing, and display derive from it.",
|
|
80
80
|
"Generated Contracts: boundary types come from schema/router/DB inference or generation instead of hand copies.",
|
|
81
|
-
"
|
|
81
|
+
"Proportional rigor: validate real boundaries; add invariants, edge handling, and determinism only when context warrants them.",
|
|
82
|
+
"Code economy: prefer the shortest clear solution and fewer concepts over speculative generality.",
|
|
83
|
+
"Useful tests: protect important interfaces, complex units, and bug regressions—not every line or surface.",
|
|
84
|
+
"Leave it simpler: when touching an area, eliminate unnecessary code, tests, checks, abstractions, and compatibility paths; ask before reducing guarantees.",
|
|
82
85
|
],
|
|
83
86
|
},
|
|
84
87
|
"dispatch_economy": {
|
|
@@ -92,6 +95,7 @@ CAPSULES = {
|
|
|
92
95
|
"Agents are for breadth, isolation, fresh judgment, or independent write ownership.",
|
|
93
96
|
"Parallelism follows ownership and dependency layers rather than item count.",
|
|
94
97
|
"Dispatch rationale belongs in run notes or the item body when it affects bundling or wave width.",
|
|
98
|
+
"Gate scope: release-bound work is the focus, not a hard boundary; follow concrete evidence and route ambient findings to the unbound backlog.",
|
|
95
99
|
],
|
|
96
100
|
},
|
|
97
101
|
"advisory_review": {
|
|
@@ -104,6 +108,8 @@ CAPSULES = {
|
|
|
104
108
|
"Cross-model peer review applies only when a different model class is available.",
|
|
105
109
|
"Same-model review uses a fresh-context sub-agent rather than inline self-review.",
|
|
106
110
|
"Stories fast-advance on verification; features and epics get deeper review.",
|
|
111
|
+
"Reviewer findings are proposals; the receiving orchestrator judges actual risk in repository context.",
|
|
112
|
+
"Only material current-cycle risk blocks completion; park valid lower-priority findings and continue.",
|
|
107
113
|
"Advisory review is non-blocking during design, but final autopilot completion needs a successful review path.",
|
|
108
114
|
],
|
|
109
115
|
},
|
|
@@ -372,6 +372,22 @@ class RulesLoaderTest(unittest.TestCase):
|
|
|
372
372
|
printed = out.getvalue()
|
|
373
373
|
self.assertIn("Agile Workflow Principles", printed)
|
|
374
374
|
self.assertIn("Code-design capsule", printed)
|
|
375
|
+
self.assertIn("Code economy", printed)
|
|
376
|
+
self.assertIn("Useful tests", printed)
|
|
377
|
+
self.assertIn("ask before reducing guarantees", printed)
|
|
378
|
+
|
|
379
|
+
def test_gate_prompt_emits_wider_scope_rule(self) -> None:
|
|
380
|
+
payload = self._payload(
|
|
381
|
+
session_id="gate-scope", cwd=str(self.root), prompt="gate the release items"
|
|
382
|
+
)
|
|
383
|
+
out = io.StringIO()
|
|
384
|
+
with mock.patch.object(
|
|
385
|
+
prompt_context.sys, "stdin", io.StringIO(json.dumps(payload))
|
|
386
|
+
), mock.patch.object(prompt_context.sys, "stdout", out):
|
|
387
|
+
rc = prompt_context.main()
|
|
388
|
+
self.assertEqual(rc, 0)
|
|
389
|
+
self.assertIn("release-bound work is the focus, not a hard boundary", out.getvalue())
|
|
390
|
+
self.assertIn("ambient findings", out.getvalue())
|
|
375
391
|
|
|
376
392
|
def test_main_sessionstart_emits_rules(self) -> None:
|
|
377
393
|
(self.rules_dir / "a.md").write_text("Rule A body", encoding="utf-8")
|
package/package.json
CHANGED
package/scripts/work-view.sh
CHANGED
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
set -euo pipefail
|
|
23
23
|
|
|
24
24
|
# Kept in lockstep with plugin.json by scripts/bump-version.sh. Do not hand-edit.
|
|
25
|
-
WORK_VIEW_VERSION="0.16.
|
|
25
|
+
WORK_VIEW_VERSION="0.16.3"
|
|
26
26
|
|
|
27
27
|
# ============================================================================
|
|
28
28
|
# Version prelude (POSIX / bash 3.2 safe — runs BEFORE the Bash-4 guard)
|
|
@@ -6,9 +6,10 @@ description: >
|
|
|
6
6
|
make autonomous progress on the substrate. Reads .work/active/, picks ready items by depends_on and
|
|
7
7
|
stage, delegates to design, implement, and review skills, commits transitions, and repeats until the
|
|
8
8
|
scope is done or blocked. Before reporting complete, runs a final peer-review/fresh-context
|
|
9
|
-
completion pass
|
|
10
|
-
|
|
11
|
-
active work; free-text scope
|
|
9
|
+
completion pass, adjudicates reviewer proposals, fixes material blockers, and parks lower-risk
|
|
10
|
+
valid findings. No /loop or --resume mechanics; the harness goal/continuation feature owns
|
|
11
|
+
long-running persistence. Epic-scoped by default; --all drains all active work; free-text scope
|
|
12
|
+
directives are allowed.
|
|
12
13
|
---
|
|
13
14
|
|
|
14
15
|
# Autopilot
|
|
@@ -166,8 +167,11 @@ this caller note in every delegated prompt:
|
|
|
166
167
|
> advisory policy from `principles/SKILL.md` Part IV in direct and autopilot
|
|
167
168
|
> modes: use independent review only when the risk and review weight warrant it,
|
|
168
169
|
> and label review cross-model only when a different model class is actually
|
|
169
|
-
> selected.
|
|
170
|
-
>
|
|
170
|
+
> selected. Treat reviewer findings as proposals: independently adjudicate them
|
|
171
|
+
> against repository context, fix or activate only material current-cycle
|
|
172
|
+
> blockers, and park valid lower-risk work in the unbound backlog. Peer failures
|
|
173
|
+
> during design are non-blocking. Preserve complementary→adversarial order when
|
|
174
|
+
> both phases run. For reviewer posture and
|
|
171
175
|
> host-native roles, load `principles/references/subagents.md`; for capability
|
|
172
176
|
> mapping, load `principles/references/models.md`. A top-tier reasoning peer may
|
|
173
177
|
> take 10 to 30 minutes; quiet output after a few minutes is not a hang.
|
|
@@ -227,19 +231,23 @@ bounces[<item-id>] = times this item has gone implementing -> review -> implemen
|
|
|
227
231
|
|
|
228
232
|
After every bounce:
|
|
229
233
|
|
|
230
|
-
1. Confirm the
|
|
231
|
-
|
|
232
|
-
|
|
234
|
+
1. Confirm the receiving agent—not the reviewer alone—adjudicated the proposals
|
|
235
|
+
and left concrete, receiver-confirmed blockers in the item body.
|
|
236
|
+
2. Park valid findings below the material current-cycle bar in the unbound
|
|
237
|
+
backlog; they do not keep the item bounced or enter this run's queue.
|
|
238
|
+
3. Rebuild the queue so the item naturally re-enters implementation.
|
|
239
|
+
4. Implement the blockers, run the relevant verification, and send the item
|
|
233
240
|
through review again.
|
|
234
|
-
|
|
241
|
+
5. Continue until review approves the item or autonomous work reaches a genuine
|
|
235
242
|
hard blocker under `principles/SKILL.md` Part III.
|
|
236
243
|
|
|
237
|
-
There is no fixed bounce limit. If the same
|
|
238
|
-
|
|
239
|
-
design model
|
|
240
|
-
cause, revise the item design or implementation notes when needed, and use
|
|
241
|
-
fresh implementation or review context when that would add independent
|
|
242
|
-
judgment.
|
|
244
|
+
There is no fixed bounce limit. If the same material finding survives more than
|
|
245
|
+
one correction pass, treat recurrence as evidence that the attempted fix or
|
|
246
|
+
design model may be wrong: re-read the item and foundation docs, diagnose the
|
|
247
|
+
root cause, revise the item design or implementation notes when needed, and use
|
|
248
|
+
a fresh implementation or review context when that would add independent
|
|
249
|
+
judgment. Recurrence alone never elevates a low-risk finding into a blocker. Do
|
|
250
|
+
not park the active item at `review`, label it stuck, or require human
|
|
243
251
|
intervention solely because a counter reached two (or any other number).
|
|
244
252
|
|
|
245
253
|
### Phase 6: Refactor Cadence (`--all` Only)
|
|
@@ -310,20 +318,25 @@ When the scoped queue appears drained:
|
|
|
310
318
|
blocked on final review and include the reason. `none` requires complete
|
|
311
319
|
administrative evidence instead of a fresh reviewer; missing evidence blocks
|
|
312
320
|
rather than becoming an invented pass.
|
|
313
|
-
5.
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
and
|
|
319
|
-
|
|
320
|
-
|
|
321
|
+
5. The receiving autopilot agent adjudicates every proposed finding against the
|
|
322
|
+
repository's acceptance criteria, users and deployment shape, likelihood,
|
|
323
|
+
blast radius, recoverability, safeguards, and delay cost. Reviewer severity
|
|
324
|
+
is evidence, not the verdict:
|
|
325
|
+
- Receiver-confirmed material current-cycle blocker: fix it immediately when
|
|
326
|
+
small and safe, or create/update an active item at the right stage
|
|
327
|
+
(`drafting` for design gaps, `implementing` for concrete fixes); verify,
|
|
328
|
+
commit, and rebuild the queue.
|
|
329
|
+
- Valid but below the blocker bar: park an unbound backlog item with a brief
|
|
330
|
+
risk rationale, commit it, and continue. It does not reopen the drained
|
|
331
|
+
scope or prevent completion.
|
|
332
|
+
- Nit or unsupported/inapplicable claim: note or reject it with a one-line
|
|
333
|
+
rationale; do not create active work.
|
|
321
334
|
6. If rebuilding the queue finds new or regressed `drafting`, `implementing`, or
|
|
322
|
-
`review` items in scope, return to Phase 2 and drain them.
|
|
323
|
-
|
|
324
|
-
7. Once the final review path succeeds,
|
|
325
|
-
|
|
326
|
-
as complete.
|
|
335
|
+
`review` items in scope, return to Phase 2 and drain them. Parked review
|
|
336
|
+
follow-ups remain outside autopilot scope until separately promoted.
|
|
337
|
+
7. Once the final review path succeeds, every proposal is adjudicated, no
|
|
338
|
+
receiver-confirmed blocker remains, and the queue is still empty, report the
|
|
339
|
+
goal as complete.
|
|
327
340
|
|
|
328
341
|
Record the final review in the autopilot final summary. Do not paste the full
|
|
329
342
|
peer transcript into item bodies; summarize accepted/rejected points where they
|
|
@@ -343,8 +356,8 @@ Narrate briefly as items advance. Final summary:
|
|
|
343
356
|
- Effective worker capability and selection rationale
|
|
344
357
|
- Effective review weight and source
|
|
345
358
|
- Final completion-review status: administrative, cross-model, same-harness
|
|
346
|
-
fresh-context, or failed;
|
|
347
|
-
findings
|
|
359
|
+
fresh-context, or failed; summarize blockers fixed/activated, lower-risk
|
|
360
|
+
findings parked, and proposals rejected
|
|
348
361
|
- Goal outcome: complete, blocked, or interrupted
|
|
349
362
|
|
|
350
363
|
## Guardrails
|
|
@@ -352,11 +365,13 @@ Narrate briefly as items advance. Final summary:
|
|
|
352
365
|
- Never use structured question tool while an autopilot goal is actively driving the
|
|
353
366
|
delegated work. Resolve with judgment and log rationale.
|
|
354
367
|
- Do not report `complete` until Phase 8 has run successfully at the effective
|
|
355
|
-
review weight
|
|
356
|
-
queue.
|
|
368
|
+
review weight, every proposal has been adjudicated, and all receiver-confirmed
|
|
369
|
+
material blockers have been fixed or filed into the active queue. Parked
|
|
370
|
+
lower-risk findings do not block completion.
|
|
357
371
|
- Commit after every item state change or blocker note.
|
|
358
372
|
- Do not push, force-push, or release; the user controls publication.
|
|
359
|
-
- Do not
|
|
360
|
-
|
|
373
|
+
- Do not drain or promote `.work/backlog/`; it is outside autopilot scope.
|
|
374
|
+
Review disposition may park valid lower-priority findings there without
|
|
375
|
+
reopening the run.
|
|
361
376
|
- The substrate is the resume point. No `PROGRESS.md`, no watchdog loops, no
|
|
362
377
|
`--resume`.
|
package/skills/convert/SKILL.md
CHANGED
|
@@ -628,6 +628,22 @@ must already exist at their new home or the dense content is lost.
|
|
|
628
628
|
All other tags are project-specific (see `.work/CONVENTIONS.md`) and do not
|
|
629
629
|
affect skill routing.
|
|
630
630
|
|
|
631
|
+
### Engineering posture
|
|
632
|
+
|
|
633
|
+
Prefer short, clear code and context-appropriate rigor over speculative
|
|
634
|
+
generality. Not every project needs exhaustive invariants, edge handling,
|
|
635
|
+
firm determinism, or universal coverage. Test important interfaces, complex
|
|
636
|
+
units, and regressions learned from bugs—not every line. When touching an
|
|
637
|
+
area, eliminate unnecessary code, tests, checks, abstractions, and
|
|
638
|
+
compatibility paths; leave it simpler. Ask before removing meaningful
|
|
639
|
+
behavior, guarantees, validation, compatibility, or safety.
|
|
640
|
+
|
|
641
|
+
Release-bound items define a gate's focus, not a hard scan boundary. Gates
|
|
642
|
+
may follow concrete evidence into adjacent dependencies, shared
|
|
643
|
+
infrastructure, or system-wide mechanisms. Bind release-relevant findings;
|
|
644
|
+
route merely ambient discoveries to the unbound backlog so a scan does not
|
|
645
|
+
silently expand a release.
|
|
646
|
+
|
|
631
647
|
### Test integrity
|
|
632
648
|
|
|
633
649
|
When running, writing, or modifying tests:
|
|
@@ -643,6 +659,11 @@ must already exist at their new home or the dense content is lost.
|
|
|
643
659
|
green again, if a parked production bug is small enough for a single
|
|
644
660
|
stride, pick it up immediately as `/agile-workflow:scope` → design →
|
|
645
661
|
implement. Larger bugs stay in backlog for prioritization.
|
|
662
|
+
- **Tests must earn their upkeep.** Prefer tests at stable interfaces,
|
|
663
|
+
regression tests for real bugs, and unit tests for genuinely complex
|
|
664
|
+
units. Do not add tests merely to cover every line or surface; remove
|
|
665
|
+
duplicate, tautological, implementation-bound, or obsolete tests when
|
|
666
|
+
they add less confidence than maintenance cost.
|
|
646
667
|
- **NEVER game a test to make it pass.** A failing test that documents
|
|
647
668
|
*why* it fails — an inline comment naming the bug, a `skip` linked to a
|
|
648
669
|
backlog id, an `xfail` with a reason — is more honest than a green test
|
|
@@ -654,8 +675,11 @@ must already exist at their new home or the dense content is lost.
|
|
|
654
675
|
override agile-workflow defaults. When peeragent is available with a different
|
|
655
676
|
model class, large/risky autopilot design decisions may use one advisory pass;
|
|
656
677
|
small/low-risk work skips it. Autopilot also runs a final peer-review loop
|
|
657
|
-
before reporting completion
|
|
658
|
-
|
|
678
|
+
before reporting completion. Reviewer findings are proposals: the receiving
|
|
679
|
+
orchestrator verifies them against repository context and actual risk. Only
|
|
680
|
+
credible material current-cycle risks block; park valid lower-priority
|
|
681
|
+
findings in the unbound backlog and continue. Same-model peers fall back to
|
|
682
|
+
local sub-agents instead. Claude Opus peeragent
|
|
659
683
|
calls can take 10 to 30 minutes on large reviews; no return after a few minutes
|
|
660
684
|
is not evidence that the call has hung.
|
|
661
685
|
|
|
@@ -670,7 +694,7 @@ must already exist at their new home or the dense content is lost.
|
|
|
670
694
|
this managed-section overwrite — content verification, NOT just a non-empty +
|
|
671
695
|
end-marker check): confirm `.agents/rules/agile-workflow.md` exists AND that the
|
|
672
696
|
dense rule content the slim removes from AGENTS actually landed there — each
|
|
673
|
-
section is present (`### Tag semantics`, `### Test integrity`, the
|
|
697
|
+
section is present (`### Tag semantics`, `### Engineering posture`, `### Test integrity`, the
|
|
674
698
|
advisory-review paragraph, and Broad entry points), or recompute per the Phase
|
|
675
699
|
1.8 provenance check. Only when the content is verified present do you write or
|
|
676
700
|
refresh the slim AGENTS section (Phase 6), overwriting the managed AGENTS block.
|
|
@@ -125,9 +125,9 @@ Instead:
|
|
|
125
125
|
|
|
126
126
|
### Phase 2: Ground yourself
|
|
127
127
|
|
|
128
|
-
The principles skill auto-loads —
|
|
129
|
-
|
|
130
|
-
Rolling-Foundation, Late-Binding
|
|
128
|
+
The principles skill auto-loads — code-design includes proportional rigor, code
|
|
129
|
+
economy, useful tests, and leaving touched areas simpler; substrate-execution
|
|
130
|
+
includes Item-IS-the-Work, Rolling-Foundation, and Late-Binding.
|
|
131
131
|
|
|
132
132
|
Read:
|
|
133
133
|
1. `docs/VISION.md`, `docs/SPEC.md`, `docs/ARCHITECTURE.md` — foundation that
|
|
@@ -207,6 +207,17 @@ Aim for 2-6 child features per epic. Fewer than 2 means the epic was probably
|
|
|
207
207
|
sized as a feature; flag the user. More than 6 means you're slicing too thin;
|
|
208
208
|
collapse.
|
|
209
209
|
|
|
210
|
+
### Phase 4.4: Identify simplification arcs
|
|
211
|
+
|
|
212
|
+
For each area the epic touches, ask what capabilities, code, tests, checks,
|
|
213
|
+
abstractions, compatibility paths, or whole subsystems the new direction can
|
|
214
|
+
make unnecessary. Prefer feature arcs that replace and remove over arcs that
|
|
215
|
+
only layer on more machinery. Fold cohesive elimination into the owning feature
|
|
216
|
+
brief or create an explicit `[refactor]`/`[cleanup]` child feature when it needs
|
|
217
|
+
independent design and review. Park unrelated cleanup. Any arc that removes
|
|
218
|
+
behavior or meaningful guarantees becomes a high-level design decision for user
|
|
219
|
+
confirmation, not an assumed refactor.
|
|
220
|
+
|
|
210
221
|
### Phase 4.5: Identify cross-feature dependencies
|
|
211
222
|
|
|
212
223
|
For each candidate feature, ask:
|
|
@@ -309,6 +320,9 @@ capability it covers, why it exists in this epic, what it does NOT cover>
|
|
|
309
320
|
- Position in epic: <e.g., "foundation feature — others depend on its types"
|
|
310
321
|
/ "consumer of feature-X" / "independent capability">
|
|
311
322
|
|
|
323
|
+
## Simplification opportunity
|
|
324
|
+
- <what this feature should delete, consolidate, replace, or deliberately retain>
|
|
325
|
+
|
|
312
326
|
## Foundation references
|
|
313
327
|
- `docs/VISION.md` — relevant section(s) (only if directly relevant)
|
|
314
328
|
- `docs/ARCHITECTURE.md` — relevant component(s)
|
|
@@ -362,6 +376,10 @@ feature lands.">
|
|
|
362
376
|
- `<feature-id-2>` — <one-line description> — depends on: `[<feature-id-1>]`
|
|
363
377
|
- `<feature-id-3>` — <one-line description> — depends on: `[<feature-id-1>]`
|
|
364
378
|
|
|
379
|
+
### Simplification arcs
|
|
380
|
+
|
|
381
|
+
- <feature-id> — <code/tests/checks/abstractions/subsystems it should remove or consolidate>
|
|
382
|
+
|
|
365
383
|
### Decomposition risks
|
|
366
384
|
|
|
367
385
|
<from pre-mortem, if any. Otherwise omit the section.>
|