@pareto4/pp-core 1.19.0 → 1.21.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.
- package/.claude-plugin/plugin.json +1 -1
- package/agents/pp-nyquist-auditor.md +19 -14
- package/agents/pp-phase-researcher.md +10 -0
- package/agents/pp-plan-checker.md +59 -36
- package/agents/pp-planner.md +49 -53
- package/agents/pp-vault-reviewer.md +2 -0
- package/agents/pp-verifier.md +15 -60
- package/commands/pp-autonomous.md +2 -1
- package/commands/pp-discovery.md +3 -2
- package/commands/pp-plan-phase.md +2 -1
- package/commands/pp-plan-review-convergence.md +2 -1
- package/gemini-extension.json +1 -1
- package/package.json +6 -3
- package/pareto-skills/_shared/pp-claude-md-protocol.md +1 -1
- package/pareto-skills/pp-project-setup/SKILL.md +18 -343
- package/pp-core/bin/lib/capability-activation.cjs +77 -0
- package/pp-core/bin/lib/capability-registry.cjs +15 -15
- package/pp-core/bin/lib/capability-state.cjs +8 -18
- package/pp-core/bin/lib/ceremony.cjs +1342 -0
- package/pp-core/bin/lib/check-command-router.cjs +62 -1
- package/pp-core/bin/lib/commands.cjs +29 -3
- package/pp-core/bin/lib/config.cjs +5 -0
- package/pp-core/bin/lib/discovery-access.cjs +276 -0
- package/pp-core/bin/lib/discovery-charter.cjs +664 -0
- package/pp-core/bin/lib/discovery-deviations.cjs +264 -0
- package/pp-core/bin/lib/discovery-entities.cjs +323 -0
- package/pp-core/bin/lib/discovery-for-phase.cjs +628 -0
- package/pp-core/bin/lib/discovery-integrations.cjs +286 -0
- package/pp-core/bin/lib/discovery-migration.cjs +246 -0
- package/pp-core/bin/lib/discovery-phases.cjs +233 -0
- package/pp-core/bin/lib/discovery-processes.cjs +355 -0
- package/pp-core/bin/lib/discovery-research-track.cjs +5 -4
- package/pp-core/bin/lib/discovery-rollup.cjs +8 -7
- package/pp-core/bin/lib/discovery-rules.cjs +216 -0
- package/pp-core/bin/lib/discovery-screens.cjs +1 -1
- package/pp-core/bin/lib/discovery-session-check.cjs +264 -0
- package/pp-core/bin/lib/discovery-stories.cjs +273 -0
- package/pp-core/bin/lib/discovery-sweep.cjs +1 -1
- package/pp-core/bin/lib/discovery-table.cjs +55 -0
- package/pp-core/bin/lib/init.cjs +50 -1
- package/pp-core/bin/lib/io.cjs +24 -0
- package/pp-core/bin/lib/loop-resolver.cjs +26 -12
- package/pp-core/bin/lib/phase.cjs +39 -3
- package/pp-core/bin/lib/plan-sizing.cjs +346 -0
- package/pp-core/bin/lib/test-substance.cjs +3190 -0
- package/pp-core/bin/lib/timeline.cjs +605 -0
- package/pp-core/bin/lib/vault-standards-review.cjs +50 -2
- package/pp-core/bin/pp-tools.cjs +214 -5
- package/pp-core/bin/shared/ceremony-gates.json +17 -0
- package/pp-core/bin/shared/config-schema.manifest.json +1 -0
- package/pp-core/references/ceremony.md +81 -0
- package/pp-core/references/discovery-access.md +112 -0
- package/pp-core/references/discovery-build-consumption.md +256 -0
- package/pp-core/references/discovery-charter.md +127 -0
- package/pp-core/references/discovery-data-model.md +145 -0
- package/pp-core/references/discovery-id-conventions.md +50 -14
- package/pp-core/references/discovery-integrations.md +151 -0
- package/pp-core/references/discovery-processes.md +190 -0
- package/pp-core/references/discovery-rebaseline.md +2 -2
- package/pp-core/references/discovery-research-track.md +5 -6
- package/pp-core/references/discovery-session-output.md +70 -0
- package/pp-core/references/discovery-standards.md +107 -0
- package/pp-core/references/discovery-traceability.md +2 -2
- package/pp-core/references/few-shot-examples/plan-checker.md +8 -8
- package/pp-core/references/phase-timeline.md +107 -0
- package/pp-core/references/planner-antipatterns.md +32 -0
- package/pp-core/references/planner-discovery-extract.md +35 -0
- package/pp-core/references/planner-guidance.md +17 -14
- package/pp-core/references/planner-revision.md +1 -1
- package/pp-core/references/planning-config.md +3 -2
- package/pp-core/references/test-substance.md +324 -0
- package/pp-core/references/verifier-discovery-conformance.md +36 -0
- package/pp-core/references/verifier-stub-patterns.md +51 -0
- package/pp-core/templates/VALIDATION.md +1 -0
- package/pp-core/templates/phase-prompt.md +19 -7
- package/pp-core/templates/project-charter.md +161 -100
- package/pp-core/templates/project.md +3 -3
- package/pp-core/templates/requirements.md +18 -0
- package/pp-core/templates/roadmap.md +1 -1
- package/pp-core/templates/verification-report.md +17 -1
- package/pp-core/workflows/audit-milestone.md +4 -1
- package/pp-core/workflows/autonomous.md +11 -8
- package/pp-core/workflows/code-review.md +15 -6
- package/pp-core/workflows/discovery-sprint/charter.md +114 -0
- package/pp-core/workflows/discovery-sprint/prefill.md +1 -1
- package/pp-core/workflows/discovery-sprint/prototype.md +4 -4
- package/pp-core/workflows/discovery-sprint/session-13-gates.md +10 -0
- package/pp-core/workflows/discovery-sprint/sessions/01-kick-off.md +5 -2
- package/pp-core/workflows/discovery-sprint/sessions/02-as-is.md +27 -5
- package/pp-core/workflows/discovery-sprint/sessions/03-to-be.md +56 -31
- package/pp-core/workflows/discovery-sprint/sessions/04-ux-design.md +1 -1
- package/pp-core/workflows/discovery-sprint/sessions/05-architecture.md +42 -19
- package/pp-core/workflows/discovery-sprint/sessions/06-security.md +27 -12
- package/pp-core/workflows/discovery-sprint/sessions/07-identity.md +41 -23
- package/pp-core/workflows/discovery-sprint/sessions/08-integration.md +50 -23
- package/pp-core/workflows/discovery-sprint/sessions/09-qa.md +26 -11
- package/pp-core/workflows/discovery-sprint/sessions/10-infrastructure.md +28 -9
- package/pp-core/workflows/discovery-sprint/sessions/11-roadmap.md +21 -0
- package/pp-core/workflows/discovery-sprint/sessions/13-wrap-up.md +24 -9
- package/pp-core/workflows/discovery-sprint.md +12 -15
- package/pp-core/workflows/discovery-to-build/steps/architecture-deliverables.md +80 -29
- package/pp-core/workflows/discovery-to-build/steps/{screen-inventory-gate.md → handoff-gates.md} +111 -3
- package/pp-core/workflows/discovery-to-build/templates/discovery-references.md +12 -9
- package/pp-core/workflows/discovery-to-build/templates/pp-handoff.md +27 -26
- package/pp-core/workflows/discovery-to-build.md +70 -34
- package/pp-core/workflows/discuss-phase/discovery.md +83 -0
- package/pp-core/workflows/discuss-phase/templates/context.md +4 -0
- package/pp-core/workflows/discuss-phase.md +10 -7
- package/pp-core/workflows/execute-phase/steps/check-query-gate.md +7 -7
- package/pp-core/workflows/execute-phase/steps/codebase-drift-gate.md +3 -2
- package/pp-core/workflows/execute-phase.md +14 -3
- package/pp-core/workflows/new-project.md +3 -3
- package/pp-core/workflows/plan-phase/steps/chunked-planning.md +7 -3
- package/pp-core/workflows/plan-phase/steps/discovery-extract.md +41 -0
- package/pp-core/workflows/plan-phase/steps/prd-express.md +104 -0
- package/pp-core/workflows/plan-phase.md +62 -124
- package/pp-core/workflows/plan-review-convergence.md +6 -3
- package/pp-core/workflows/ship.md +2 -2
- package/pp-core/workflows/stats.md +19 -4
- package/pp-core/workflows/validate-phase.md +19 -4
- package/pp-core/workflows/vault-review.md +5 -0
- package/pp-core/workflows/verify-phase.md +1 -1
- package/pp-core/workflows/verify-work.md +1 -1
- package/scripts/gen-capability-registry.cjs +43 -45
- package/scripts/run-tests.cjs +54 -30
- package/pp-core/workflows/discovery-sprint/templates/context-template.md +0 -272
package/agents/pp-verifier.md
CHANGED
|
@@ -70,6 +70,8 @@ Then verify each level against the actual codebase.
|
|
|
70
70
|
|
|
71
71
|
<verification_process>
|
|
72
72
|
|
|
73
|
+
**Depth.** When the prompt says `Verifier depth: light`, Read `~/.claude/pp-core/references/ceremony.md` § `## Verifier depth` before Step 0 and skip only the steps it names. Any other value, or none, is full depth.
|
|
74
|
+
|
|
73
75
|
At verification decision points, apply structured reasoning:
|
|
74
76
|
@~/.claude/pp-core/references/thinking-models-verification.md
|
|
75
77
|
|
|
@@ -188,7 +190,7 @@ For each truth, determine if codebase enables it.
|
|
|
188
190
|
- ✗ FAILED: One or more artifacts missing, stub, or unwired
|
|
189
191
|
- ? UNCERTAIN: Can't verify programmatically (needs human)
|
|
190
192
|
|
|
191
|
-
**Behavior-dependent truths.** A truth is *behavior-dependent* when its correctness hinges on runtime behavior grep/presence checks cannot see — a **state transition** or a **cancellation / cleanup / ordering invariant** (e.g. "cancels the in-flight task and bumps the generation counter", "
|
|
193
|
+
**Behavior-dependent truths.** A truth is *behavior-dependent* when its correctness hinges on runtime behavior grep/presence checks cannot see — a **state transition** or a **cancellation / cleanup / ordering invariant** (e.g. "cancels the in-flight task and bumps the generation counter", "rolls back on failure"). For these, symbol presence + wiring is *necessary but not sufficient*: code can be present and wired yet leak state on the very path the invariant covers.
|
|
192
194
|
|
|
193
195
|
For each truth:
|
|
194
196
|
|
|
@@ -424,6 +426,8 @@ grep -E "Phase $PHASE_NUM" .planning/REQUIREMENTS.md 2>/dev/null
|
|
|
424
426
|
|
|
425
427
|
If REQUIREMENTS.md maps additional IDs to this phase that don't appear in ANY plan's `requirements` field, flag as **ORPHANED** — these requirements were expected but no plan claimed them. ORPHANED requirements MUST appear in the verification report.
|
|
426
428
|
|
|
429
|
+
**6d. Discovery conformance (R3):** if `.planning/discovery/` exists, Read and follow `~/.claude/pp-core/references/verifier-discovery-conformance.md`; a `missed` row is a gap.
|
|
430
|
+
|
|
427
431
|
## Step 7: Scan for Anti-Patterns
|
|
428
432
|
|
|
429
433
|
Identify files modified in this phase from SUMMARY.md key-files section, or extract commits and verify:
|
|
@@ -461,7 +465,7 @@ grep -n -E "=\{(\[\]|\{\}|null|undefined|''|\"\")\}" "$file" 2>/dev/null
|
|
|
461
465
|
grep -n -B 2 -A 2 "console\.log" "$file" 2>/dev/null | grep -E "^\s*(const|function|=>)"
|
|
462
466
|
```
|
|
463
467
|
|
|
464
|
-
**Stub classification:** A grep match is a STUB only when the value flows to rendering or user-visible output AND no other code path populates it with real data. A test helper, type default, or initial state that gets overwritten by a fetch/store is NOT a stub. Check for data-fetching (useEffect, fetch, query, useSWR, useQuery, subscribe) that writes to the same variable before flagging.
|
|
468
|
+
**Stub classification:** A grep match is a STUB only when the value flows to rendering or user-visible output AND no other code path populates it with real data. A test helper, type default, or initial state that gets overwritten by a fetch/store is NOT a stub. Check for data-fetching (useEffect, fetch, query, useSWR, useQuery, subscribe) that writes to the same variable before flagging. Red-flag examples (component, API route and wiring stubs): `~/.claude/pp-core/references/verifier-stub-patterns.md`.
|
|
465
469
|
|
|
466
470
|
**Debt marker gate:** Any `TBD`, `FIXME`, or `XXX` marker in a file modified by this phase is a 🛑 BLOCKER unless the same line references formal follow-up work (`issue #123`, `PR #123`, `#123`, or `DEF-*`). Unreferenced markers mean completion is not auditable; set `status: gaps_found` and list each marker under `gaps`.
|
|
467
471
|
|
|
@@ -473,7 +477,7 @@ Anti-pattern scanning (Step 7) checks for code smells. Behavioral spot-checks go
|
|
|
473
477
|
|
|
474
478
|
**When to run:** For phases that produce runnable code (APIs, CLI tools, build scripts, data pipelines). Skip for documentation-only or config-only phases.
|
|
475
479
|
|
|
476
|
-
**Behavioral evidence for behavior-dependent truths (Step 3).**
|
|
480
|
+
**Behavioral evidence for behavior-dependent truths (Step 3).** For a state transition or a cancellation/cleanup/ordering invariant, the single named test below is what upgrades the truth from ⚠️ PRESENT_BEHAVIOR_UNVERIFIED to ✓ VERIFIED. Run only that one test — never the full suite (per #25/#753). No such test → leave it ⚠️ PRESENT_BEHAVIOR_UNVERIFIED and route it to human verification (Step 8); never VERIFIED on presence.
|
|
477
481
|
|
|
478
482
|
**How:**
|
|
479
483
|
|
|
@@ -567,7 +571,7 @@ done
|
|
|
567
571
|
|
|
568
572
|
**Needs human if uncertain:** Complex wiring grep can't trace, dynamic state behavior, edge cases.
|
|
569
573
|
|
|
570
|
-
**Behavior-unverified truths (Step 3):**
|
|
574
|
+
**Behavior-unverified truths (Step 3):** every ⚠️ PRESENT_BEHAVIOR_UNVERIFIED truth is recorded in the `behavior_unverified_items` frontmatter list (emitted whenever the count > 0, regardless of overall status, so it survives a gaps_found phase) and surfaces for human verification — also in the human_verification section when the status is human_needed. Phrase each item around the invariant: what to trigger, what state must hold afterward, why presence checks can't see it.
|
|
571
575
|
|
|
572
576
|
**Harvest deferred items from PLAN.md (#3309 / `workflow.human_verify_mode = end-of-phase`):** Scan every PLAN file in the phase for `<verify><human-check>` blocks on `auto` tasks. These are verification items the planner deliberately deferred from `checkpoint:human-verify` to end-of-phase to avoid the executor cold-start cost. Each block has the same shape used by the planner:
|
|
573
577
|
|
|
@@ -581,7 +585,7 @@ done
|
|
|
581
585
|
</verify>
|
|
582
586
|
```
|
|
583
587
|
|
|
584
|
-
Merge
|
|
588
|
+
Merge the harvested items into your own human verification list, deduplicating items that describe the same check. The downstream `human_needed` → `{phase_num}-UAT.md` path in `workflows/execute-phase.md` is the single sink — no separate file is created.
|
|
585
589
|
|
|
586
590
|
**Format:**
|
|
587
591
|
|
|
@@ -597,7 +601,7 @@ Merge those harvested items into the same human verification list as your own an
|
|
|
597
601
|
|
|
598
602
|
Classify status using this decision tree IN ORDER (most restrictive first):
|
|
599
603
|
|
|
600
|
-
1. IF any truth FAILED, artifact MISSING/STUB, key link NOT_WIRED,
|
|
604
|
+
1. IF any truth FAILED, artifact MISSING/STUB, key link NOT_WIRED, blocker anti-pattern found, or Discovery conformance row `missed` (Step 6d):
|
|
601
605
|
→ **status: gaps_found**
|
|
602
606
|
|
|
603
607
|
2. IF Step 8 produced ANY human verification items (section is non-empty) — this includes every ⚠️ PRESENT_BEHAVIOR_UNVERIFIED truth from Step 3:
|
|
@@ -607,11 +611,11 @@ Classify status using this decision tree IN ORDER (most restrictive first):
|
|
|
607
611
|
3. IF all truths VERIFIED, all artifacts pass, all links WIRED, no blockers, AND no human verification items:
|
|
608
612
|
→ **status: passed**
|
|
609
613
|
|
|
610
|
-
**passed is ONLY valid when the human verification section is empty.** If Step 8 produced any items — including any
|
|
614
|
+
**passed is ONLY valid when the human verification section is empty.** If Step 8 produced any items — including any ⚠️ PRESENT_BEHAVIOR_UNVERIFIED truth — the status is not `passed`: it is `human_needed`, or `gaps_found` when rule 1 also fires (gaps_found keeps precedence).
|
|
611
615
|
|
|
612
|
-
**A ⚠️ PRESENT_BEHAVIOR_UNVERIFIED truth is never FAILED and never VERIFIED.** It does not trigger gaps_found (
|
|
616
|
+
**A ⚠️ PRESENT_BEHAVIOR_UNVERIFIED truth is never FAILED and never VERIFIED.** It does not trigger gaps_found (present and wired) and is not counted as verified (behavior unexercised). Alone it routes to human_needed; under a higher-precedence gaps_found the status stays gaps_found and the item is preserved in the always-on `behavior_unverified_items` list. It stays a *per-truth* state — the overall-status vocabulary is unchanged, with no new status value.
|
|
613
617
|
|
|
614
|
-
> **Shared status seam**: the status vocabulary (`passed`, `gaps_found`, `human_needed`) and the per-status routing
|
|
618
|
+
> **Shared status seam**: the status vocabulary (`passed`, `gaps_found`, `human_needed`) and the per-status routing are owned by `src/verification.cts` via `pp-tools query verification.status`. This agent is the single emitter of the frontmatter status field; consumers (ship.md, execute-phase.md) read routing from that query instead of re-deriving it.
|
|
615
619
|
|
|
616
620
|
**Score (presence- vs behavior-verified split):**
|
|
617
621
|
|
|
@@ -829,6 +833,8 @@ Only include this section if deferred items exist (from Step 9b).
|
|
|
829
833
|
| Requirement | Source Plan | Description | Status | Evidence |
|
|
830
834
|
| ----------- | ---------- | ----------- | ------ | -------- |
|
|
831
835
|
|
|
836
|
+
{Step 6d block, when produced: `### Discovery conformance` + the filled `<!-- discovery:conformance -->` block}
|
|
837
|
+
|
|
832
838
|
### Anti-Patterns Found
|
|
833
839
|
|
|
834
840
|
| File | Line | Pattern | Severity | Impact |
|
|
@@ -903,57 +909,6 @@ Automated checks passed. Awaiting human verification.
|
|
|
903
909
|
|
|
904
910
|
</critical_rules>
|
|
905
911
|
|
|
906
|
-
<stub_detection_patterns>
|
|
907
|
-
|
|
908
|
-
## React Component Stubs
|
|
909
|
-
|
|
910
|
-
```javascript
|
|
911
|
-
// RED FLAGS:
|
|
912
|
-
return <div>Component</div>
|
|
913
|
-
return <div>Placeholder</div>
|
|
914
|
-
return <div>{/* TODO */}</div>
|
|
915
|
-
return null
|
|
916
|
-
return <></>
|
|
917
|
-
|
|
918
|
-
// Empty handlers:
|
|
919
|
-
onClick={() => {}}
|
|
920
|
-
onChange={() => console.log('clicked')}
|
|
921
|
-
onSubmit={(e) => e.preventDefault()} // Only prevents default
|
|
922
|
-
```
|
|
923
|
-
|
|
924
|
-
## API Route Stubs
|
|
925
|
-
|
|
926
|
-
```typescript
|
|
927
|
-
// RED FLAGS:
|
|
928
|
-
export async function POST() {
|
|
929
|
-
return Response.json({ message: "Not implemented" });
|
|
930
|
-
}
|
|
931
|
-
|
|
932
|
-
export async function GET() {
|
|
933
|
-
return Response.json([]); // Empty array with no DB query
|
|
934
|
-
}
|
|
935
|
-
```
|
|
936
|
-
|
|
937
|
-
## Wiring Red Flags
|
|
938
|
-
|
|
939
|
-
```typescript
|
|
940
|
-
// Fetch exists but response ignored:
|
|
941
|
-
fetch('/api/messages') // No await, no .then, no assignment
|
|
942
|
-
|
|
943
|
-
// Query exists but result not returned:
|
|
944
|
-
await prisma.message.findMany()
|
|
945
|
-
return Response.json({ ok: true }) // Returns static, not query result
|
|
946
|
-
|
|
947
|
-
// Handler only prevents default:
|
|
948
|
-
onSubmit={(e) => e.preventDefault()}
|
|
949
|
-
|
|
950
|
-
// State exists but not rendered:
|
|
951
|
-
const [messages, setMessages] = useState([])
|
|
952
|
-
return <div>No messages</div> // Always shows "no messages"
|
|
953
|
-
```
|
|
954
|
-
|
|
955
|
-
</stub_detection_patterns>
|
|
956
|
-
|
|
957
912
|
<success_criteria>
|
|
958
913
|
|
|
959
914
|
- [ ] Previous VERIFICATION.md checked (Step 0)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: pp:autonomous
|
|
3
3
|
description: Run the next phase autonomously (best-effort) — discuss→plan→execute; --from/--to for a range
|
|
4
|
-
argument-hint: "[--from N] [--to N] [--only N] [--supervised] [--interactive] [--converge]"
|
|
4
|
+
argument-hint: "[--from N] [--to N] [--only N] [--supervised] [--interactive] [--converge] [--full]"
|
|
5
5
|
effort: max
|
|
6
6
|
allowed-tools:
|
|
7
7
|
- Read
|
|
@@ -41,6 +41,7 @@ Optional flags:
|
|
|
41
41
|
- `--interactive` — run discuss inline with questions (not auto-answered), then dispatch plan→execute as background agents. Keeps the main context lean while preserving user input on decisions.
|
|
42
42
|
- `--converge` — run each phase's planning step through `pp-plan-review-convergence` instead of plain `pp-plan-phase`. Requires `workflow.plan_review_convergence=true`.
|
|
43
43
|
- `--cross-ai` — compatibility alias for `--converge`.
|
|
44
|
+
- `--full` — plan every phase with the full gate stack: forwarded to every /pp-plan-phase call, through /pp-plan-review-convergence under --converge; never to execute. A later plan-phase run without --full re-classifies the phase (references/ceremony.md, Lifecycle).
|
|
44
45
|
|
|
45
46
|
When `--converge` or `--cross-ai` is set, reviewer selector flags supported by `pp-plan-review-convergence` may be passed through: `--codex`, `--gemini`, `--claude`, `--opencode`, `--ollama`, `--lm-studio`, `--llama-cpp`, `--all`, and `--max-cycles N`.
|
|
46
47
|
|
package/commands/pp-discovery.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: pp:discovery
|
|
3
3
|
description: Run the Pareto Discovery Sprint — 13 guided sessions to define your product, users, and roadmap
|
|
4
|
-
argument-hint: "[session number 1-13 | prototype]"
|
|
4
|
+
argument-hint: "[session number 1-13 | prototype | charter]"
|
|
5
5
|
allowed-tools:
|
|
6
6
|
- Read
|
|
7
7
|
- Write
|
|
@@ -17,8 +17,9 @@ Facilitate the 13-session Pareto Discovery Sprint. Flows:
|
|
|
17
17
|
- (no arg) — show progress + recommend next session
|
|
18
18
|
- (N) — facilitate session N
|
|
19
19
|
- prototype — build the clickable prototype from Sessions 1–4
|
|
20
|
+
- charter — record signatures on, or redraft and re-export, the Project Charter
|
|
20
21
|
|
|
21
|
-
Output: .planning/discovery/session-NN.md + _progress.md +
|
|
22
|
+
Output: .planning/discovery/session-NN.md + _progress.md + the registers; docs/discovery/PROJECT-CHARTER.md (+ .docx/.pdf) from Session 13
|
|
22
23
|
</objective>
|
|
23
24
|
|
|
24
25
|
<execution_context>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: pp:plan-phase
|
|
3
3
|
description: Create detailed phase plan (PLAN.md) with verification loop
|
|
4
|
-
argument-hint: "[phase] [--auto] [--research] [--skip-research] [--research-phase <N>] [--view] [--gaps] [--skip-verify] [--prd <file>] [--ingest <path-or-glob>] [--ingest-format <auto|nygard|madr|narrative>] [--reviews] [--text] [--tdd] [--mvp]"
|
|
4
|
+
argument-hint: "[phase] [--auto] [--research] [--skip-research] [--research-phase <N>] [--view] [--gaps] [--skip-verify] [--full] [--prd <file>] [--ingest <path-or-glob>] [--ingest-format <auto|nygard|madr|narrative>] [--reviews] [--text] [--tdd] [--mvp]"
|
|
5
5
|
effort: max
|
|
6
6
|
allowed-tools:
|
|
7
7
|
- Read
|
|
@@ -47,6 +47,7 @@ Phase number: $ARGUMENTS (optional — auto-detects next unplanned phase if omit
|
|
|
47
47
|
- `--skip-research` — Skip research, go straight to planning
|
|
48
48
|
- `--gaps` — Gap closure mode (reads VERIFICATION.md, skips research)
|
|
49
49
|
- `--skip-verify` — Skip verification loop
|
|
50
|
+
- `--full` — Force every gate for this phase (ceremony mode full; rewrites the recorded verdict). Until the phase's first SUMMARY, a later plan-phase run without --full re-classifies it proportionally (D-12), so repeat --full on every re-plan that should stay full
|
|
50
51
|
- `--prd <file>` — Use a PRD/acceptance criteria file instead of discuss-phase. Parses requirements into CONTEXT.md automatically. Skips discuss-phase entirely.
|
|
51
52
|
- `--ingest <path-or-glob>` — Use one or more ADR files instead of discuss-phase. Parses locked decisions + scope fences into CONTEXT.md automatically. Skips discuss-phase entirely.
|
|
52
53
|
- `--ingest-format <auto|nygard|madr|narrative>` — Optional ADR parser format override (`auto` default).
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: pp:plan-review-convergence
|
|
3
3
|
description: "Cross-AI plan convergence - replan until review concerns are resolved."
|
|
4
|
-
argument-hint: "<phase> [--codex] [--gemini] [--claude] [--opencode] [--ollama] [--lm-studio] [--llama-cpp] [--text] [--ws <name>] [--all] [--max-cycles N]"
|
|
4
|
+
argument-hint: "<phase> [--codex] [--gemini] [--claude] [--opencode] [--ollama] [--lm-studio] [--llama-cpp] [--text] [--ws <name>] [--all] [--max-cycles N] [--full]"
|
|
5
5
|
allowed-tools:
|
|
6
6
|
- Read
|
|
7
7
|
- Write
|
|
@@ -49,6 +49,7 @@ Phase number: extracted from $ARGUMENTS (required)
|
|
|
49
49
|
- `--llama-cpp` — Use local llama.cpp server as reviewer (OpenAI-compatible, default host `http://localhost:8080`; configure model via `review.models.llama_cpp`)
|
|
50
50
|
- `--all` — Use all available CLIs and running local model servers
|
|
51
51
|
- `--max-cycles N` — Maximum replan→review cycles (default: 3)
|
|
52
|
+
- `--full` — pass --full to the initial plan-phase run and to every --reviews replan, so the phase keeps the full gate stack
|
|
52
53
|
|
|
53
54
|
**Feature gate:** This command requires `workflow.plan_review_convergence=true`. Enable with:
|
|
54
55
|
`pp config-set workflow.plan_review_convergence true`
|
package/gemini-extension.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pp-core",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.21.0",
|
|
4
4
|
"description": "PP Core — a meta-prompting, context engineering, and spec-driven development system for AI coding agents. Loads pp-core's operating context into every Gemini CLI session.",
|
|
5
5
|
"contextFileName": "GEMINI.md"
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pareto4/pp-core",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.21.0",
|
|
4
4
|
"description": "Pareto pp-core — The Pareto Project's AI-assisted engineering framework: meta-prompting, context engineering, and spec-driven development for AI coding agents.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"pp-core": "bin/install.js",
|
|
@@ -71,10 +71,13 @@
|
|
|
71
71
|
},
|
|
72
72
|
"overrides": {
|
|
73
73
|
"qs": ">=6.16.0",
|
|
74
|
-
"@hono/node-server": ">=2.0.5"
|
|
74
|
+
"@hono/node-server": ">=2.0.5",
|
|
75
|
+
"body-parser": "^2.4.0",
|
|
76
|
+
"fast-uri": "^3.1.9",
|
|
77
|
+
"zod": "^4.6.6"
|
|
75
78
|
},
|
|
76
79
|
"optionalDependencies": {
|
|
77
|
-
"fallow": "^
|
|
80
|
+
"fallow": "^3.35.0"
|
|
78
81
|
},
|
|
79
82
|
"scripts": {
|
|
80
83
|
"sync:launcher": "node scripts/sync-runtime-launcher.cjs",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
## GitHub Board Sync
|
|
18
18
|
|
|
19
19
|
Requirements are tracked as GitHub issues on a project board. The mapping
|
|
20
|
-
between
|
|
20
|
+
between requirement IDs (`E-nn` EPICs, `US-nn` stories, `<PREFIX>-nn` requirements) and GitHub issue
|
|
21
21
|
numbers lives in `.planning/github-issues.json`.
|
|
22
22
|
|
|
23
23
|
**Status flow:**
|