@pareto4/pp-core 1.19.0 → 1.20.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 (79) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/agents/pp-phase-researcher.md +10 -0
  3. package/agents/pp-planner.md +15 -0
  4. package/agents/pp-vault-reviewer.md +2 -0
  5. package/agents/pp-verifier.md +12 -8
  6. package/commands/pp-discovery.md +3 -2
  7. package/gemini-extension.json +1 -1
  8. package/package.json +6 -3
  9. package/pareto-skills/_shared/pp-claude-md-protocol.md +1 -1
  10. package/pareto-skills/pp-project-setup/SKILL.md +18 -343
  11. package/pp-core/bin/lib/capability-registry.cjs +1 -1
  12. package/pp-core/bin/lib/discovery-access.cjs +276 -0
  13. package/pp-core/bin/lib/discovery-charter.cjs +664 -0
  14. package/pp-core/bin/lib/discovery-deviations.cjs +264 -0
  15. package/pp-core/bin/lib/discovery-entities.cjs +323 -0
  16. package/pp-core/bin/lib/discovery-for-phase.cjs +628 -0
  17. package/pp-core/bin/lib/discovery-integrations.cjs +286 -0
  18. package/pp-core/bin/lib/discovery-migration.cjs +246 -0
  19. package/pp-core/bin/lib/discovery-phases.cjs +233 -0
  20. package/pp-core/bin/lib/discovery-processes.cjs +355 -0
  21. package/pp-core/bin/lib/discovery-research-track.cjs +5 -4
  22. package/pp-core/bin/lib/discovery-rollup.cjs +8 -7
  23. package/pp-core/bin/lib/discovery-rules.cjs +216 -0
  24. package/pp-core/bin/lib/discovery-screens.cjs +1 -1
  25. package/pp-core/bin/lib/discovery-session-check.cjs +264 -0
  26. package/pp-core/bin/lib/discovery-stories.cjs +273 -0
  27. package/pp-core/bin/lib/discovery-sweep.cjs +1 -1
  28. package/pp-core/bin/lib/discovery-table.cjs +55 -0
  29. package/pp-core/bin/lib/io.cjs +22 -0
  30. package/pp-core/bin/lib/vault-standards-review.cjs +50 -2
  31. package/pp-core/bin/pp-tools.cjs +143 -1
  32. package/pp-core/references/discovery-access.md +112 -0
  33. package/pp-core/references/discovery-build-consumption.md +256 -0
  34. package/pp-core/references/discovery-charter.md +127 -0
  35. package/pp-core/references/discovery-data-model.md +145 -0
  36. package/pp-core/references/discovery-id-conventions.md +50 -14
  37. package/pp-core/references/discovery-integrations.md +151 -0
  38. package/pp-core/references/discovery-processes.md +190 -0
  39. package/pp-core/references/discovery-rebaseline.md +2 -2
  40. package/pp-core/references/discovery-research-track.md +5 -6
  41. package/pp-core/references/discovery-session-output.md +70 -0
  42. package/pp-core/references/discovery-standards.md +107 -0
  43. package/pp-core/references/discovery-traceability.md +2 -2
  44. package/pp-core/references/planner-discovery-extract.md +35 -0
  45. package/pp-core/references/verifier-discovery-conformance.md +36 -0
  46. package/pp-core/templates/project-charter.md +161 -100
  47. package/pp-core/templates/project.md +3 -3
  48. package/pp-core/templates/requirements.md +18 -0
  49. package/pp-core/templates/verification-report.md +16 -0
  50. package/pp-core/workflows/discovery-sprint/charter.md +114 -0
  51. package/pp-core/workflows/discovery-sprint/prefill.md +1 -1
  52. package/pp-core/workflows/discovery-sprint/prototype.md +4 -4
  53. package/pp-core/workflows/discovery-sprint/session-13-gates.md +10 -0
  54. package/pp-core/workflows/discovery-sprint/sessions/01-kick-off.md +5 -2
  55. package/pp-core/workflows/discovery-sprint/sessions/02-as-is.md +27 -5
  56. package/pp-core/workflows/discovery-sprint/sessions/03-to-be.md +56 -31
  57. package/pp-core/workflows/discovery-sprint/sessions/04-ux-design.md +1 -1
  58. package/pp-core/workflows/discovery-sprint/sessions/05-architecture.md +42 -19
  59. package/pp-core/workflows/discovery-sprint/sessions/06-security.md +27 -12
  60. package/pp-core/workflows/discovery-sprint/sessions/07-identity.md +41 -23
  61. package/pp-core/workflows/discovery-sprint/sessions/08-integration.md +50 -23
  62. package/pp-core/workflows/discovery-sprint/sessions/09-qa.md +26 -11
  63. package/pp-core/workflows/discovery-sprint/sessions/10-infrastructure.md +28 -9
  64. package/pp-core/workflows/discovery-sprint/sessions/11-roadmap.md +21 -0
  65. package/pp-core/workflows/discovery-sprint/sessions/13-wrap-up.md +24 -9
  66. package/pp-core/workflows/discovery-sprint.md +12 -15
  67. package/pp-core/workflows/discovery-to-build/steps/architecture-deliverables.md +80 -29
  68. package/pp-core/workflows/discovery-to-build/steps/{screen-inventory-gate.md → handoff-gates.md} +111 -3
  69. package/pp-core/workflows/discovery-to-build/templates/discovery-references.md +12 -9
  70. package/pp-core/workflows/discovery-to-build/templates/pp-handoff.md +27 -26
  71. package/pp-core/workflows/discovery-to-build.md +70 -34
  72. package/pp-core/workflows/discuss-phase/discovery.md +83 -0
  73. package/pp-core/workflows/discuss-phase/templates/context.md +4 -0
  74. package/pp-core/workflows/discuss-phase.md +10 -7
  75. package/pp-core/workflows/new-project.md +3 -3
  76. package/pp-core/workflows/plan-phase/steps/discovery-extract.md +41 -0
  77. package/pp-core/workflows/plan-phase.md +15 -10
  78. package/pp-core/workflows/vault-review.md +5 -0
  79. package/pp-core/workflows/discovery-sprint/templates/context-template.md +0 -272
@@ -63,7 +63,7 @@ for the plan-checker gate to be meaningful.
63
63
 
64
64
  ## 0. Git Branch Invariant
65
65
 
66
- **Do not create, rename, or switch git branches during plan-phase.** Branch identity is established at discuss-phase and is owned by the user's git workflow. A phase rename in ROADMAP.md is a plan-level change only — it does not mutate git branch names. If `phase_slug` in the init JSON differs from the current branch name, that is expected and correct; leave the branch unchanged.
66
+ **Do not create, rename, or switch git branches during plan-phase.** Branch identity is established at discuss-phase and owned by the user's git workflow. A phase rename in ROADMAP.md is a plan-level change only — it never mutates branch names. A `phase_slug` differing from the current branch name is expected; leave the branch unchanged.
67
67
 
68
68
  ## 1. Initialize
69
69
 
@@ -96,7 +96,7 @@ Parse JSON for: `researcher_model`, `planner_model`, `checker_model`, `research_
96
96
 
97
97
  ## 1.5. Closed-Phase Gate (#3569)
98
98
 
99
- The init JSON includes `phase_status` — one of `Pending | Planned | In Progress | Executed | Complete | Needs Review`. `Complete` means the phase has all summaries AND a `VERIFICATION.md` with `status: passed`. Replanning a closed phase silently rewrites plan docs that no longer match the shipped code, so the workflow must hard-stop here unless the operator explicitly overrides.
99
+ The init JSON includes `phase_status` — one of `Pending | Planned | In Progress | Executed | Complete | Needs Review`. `Complete` means all summaries exist AND a `VERIFICATION.md` with `status: passed`. Replanning a closed phase silently rewrites plan docs that no longer match the shipped code; the workflow hard-stops here unless the operator overrides.
100
100
 
101
101
  Parse `phase_status` from the init JSON, then:
102
102
 
@@ -142,7 +142,7 @@ The gate fires only on `Complete`. `Executed` and `Needs Review` are not gated
142
142
 
143
143
  Extract from $ARGUMENTS: phase number (integer or decimal like `2.1`), flags (`--research`, `--skip-research`, `--research-phase <N>`, `--gaps`, `--skip-verify`, `--skip-ui`, `--prd <filepath>`, `--ingest <path-or-glob>`, `--ingest-format <auto|nygard|madr|narrative>`, `--reviews`, `--text`, `--bounce`, `--skip-bounce`, `--chunked`, `--mvp`, `--tdd`, `--granularity <coarse|standard|fine>`, `--force` (override closed-phase gate, see §1.5), `--unattended`).
144
144
 
145
- **`--research-phase <N>` — research-only mode (#3042 + #3044).** When this flag is present, parse `<N>` as the phase number (overrides any positional phase argument), set `RESEARCH_ONLY=true`, and treat the rest of this workflow as a research-dispatch only — the planner spawn (step 8), plan-checker, verification, gaps, bounce, and post-planning-gaps blocks all skip on `RESEARCH_ONLY`. Use this for cross-phase research, doc review before committing to a planning approach, and correction-without-replanning loops. Replaces the deleted `/pp-research-phase` command.
145
+ **`--research-phase <N>` — research-only mode (#3042 + #3044).** When present, parse `<N>` as the phase number (overrides any positional phase argument), set `RESEARCH_ONLY=true`, and treat the rest of this workflow as a research dispatch only — the planner spawn (step 8), plan-checker, verification, gaps, bounce and post-planning-gaps blocks all skip on `RESEARCH_ONLY`. Use it for cross-phase research, doc review before committing to an approach, and correction-without-replanning loops. Replaces the deleted `/pp-research-phase` command.
146
146
 
147
147
  In research-only mode, two modifiers control behavior when `RESEARCH.md` already exists:
148
148
 
@@ -162,9 +162,9 @@ if $RESEARCH_ONLY && [[ "$ARGUMENTS" =~ (^|[[:space:]])--view([[:space:]]|$) ]];
162
162
  fi
163
163
  ```
164
164
 
165
- **`--granularity <coarse|standard|fine>` — CLI override (#703).** When present, this value is the resolved granularity passed to the planner — it wins over any per-phase `granularities.<type>` config, top-level `granularity` config, or project defaults. The init JSON always includes a `granularity` field reflecting the resolved value; read it from there. Invalid values (anything other than `coarse`, `standard`, `fine`) cause an error at the CLI boundary.
165
+ **`--granularity <coarse|standard|fine>` — CLI override (#703).** When present, this is the resolved granularity passed to the planner — it wins over per-phase `granularities.<type>` config, top-level `granularity` config and project defaults. The init JSON always carries the resolved `granularity` field; read it from there. Any other value (not `coarse`, `standard`, `fine`) errors at the CLI boundary.
166
166
 
167
- **`--unattended`** — set by `/pp:autonomous` (never `--auto`, which would auto-advance into execute-phase). At each prompt site marked `U-Pn` below, do not prompt: apply rule `U-Pn` from `pp-core/references/autonomous-best-effort.md` (Read it at the first such site) and append the record it names to the phase's AUTONOMOUS-REPORT. It does not touch `workflow._auto_chain_active`.
167
+ **`--unattended`** — set by `/pp:autonomous` (never `--auto`, which would auto-advance into execute-phase). At each prompt site marked `U-Pn` below, do not prompt: apply rule `U-Pn` from `pp-core/references/autonomous-best-effort.md` (Read at first use) and append the record it names to the phase's AUTONOMOUS-REPORT. It does not touch `workflow._auto_chain_active`.
168
168
 
169
169
  Set `TEXT_MODE=true` if `--text` is present in $ARGUMENTS OR `text_mode` from init JSON is `true`. When `TEXT_MODE` is active, replace every `AskUserQuestion` call with a plain-text numbered list and ask the user to type their choice number. This is required for Claude Code remote sessions (`/rc` mode) where TUI menus don't work through the Claude App.
170
170
 
@@ -194,7 +194,7 @@ When `WALKING_SKELETON=true`:
194
194
  - Planner is instructed to produce `SKELETON.md` in the phase directory alongside `PLAN.md`. The template lives at `~/.claude/pp-core/references/skeleton-template.md` — the planner reads it when producing SKELETON.md (lazy; not loaded on non-skeleton runs).
195
195
  - The plan must scaffold project + routing + one real DB read/write + one real UI interaction + dev deployment — the thinnest possible end-to-end working slice.
196
196
 
197
- **Interaction with `--prd <filepath>`.** `--mvp` and `--prd` compose. The PRD express path (Step 3.5) creates `CONTEXT.md` from the PRD file and continues to research; the Walking Skeleton gate fires independently from the conditions above. When both are active on Phase 1 of a new project, the planner receives `WALKING_SKELETON=true` and PRD-derived context simultaneously — the PRD informs *what the skeleton should prove*. No precedence is needed; the two signals are orthogonal. See [`references/mvp-concepts.md`](../references/mvp-concepts.md) for the broader interaction map.
197
+ **Interaction with `--prd <filepath>`.** `--mvp` and `--prd` compose: the PRD express path (Step 3.5) creates `CONTEXT.md` from the PRD file and continues to research; the Walking Skeleton gate fires independently. On Phase 1 of a new project the planner receives `WALKING_SKELETON=true` and PRD-derived context together — the PRD informs *what the skeleton should prove*; the two signals are orthogonal. See [`references/mvp-concepts.md`](../references/mvp-concepts.md).
198
198
 
199
199
  Extract express-path args from $ARGUMENTS: `PRD_FILE` (`--prd <filepath>`), `INGEST_PATH` (`--ingest <path-or-glob>`), and optional `INGEST_FORMAT` (`--ingest-format <auto|nygard|madr|narrative>`, default `auto`).
200
200
 
@@ -527,7 +527,9 @@ Read and execute `pp-core/workflows/execute-phase/steps/vault-fetch.md` — the
527
527
 
528
528
  ### into:researcher contributions
529
529
 
530
- In `PLAN_PRE_HOOKS_JSON`, read active plan:pre entries where `kind == "contribution"` and `into == "researcher"` (in array order). If none, inject nothing. If present, append each entry's `fragment.inline` verbatim to `filled_research_hook_fragment` (or add it as a `<files_to_read>`/context line in the researcher prompt) — typically a pointer to `.planning/vault/SUMMARY.md` (the bounded vault index). Inject verbatim — do not paraphrase.
530
+ In `PLAN_PRE_HOOKS_JSON`, read active plan:pre entries where `kind == "contribution"` and `into == "researcher"` (in array order). If none, inject nothing. If present, append each entry's `fragment.inline` verbatim to `filled_research_hook_fragment` (or as a `<files_to_read>` line in the researcher prompt) — typically a pointer to `.planning/vault/SUMMARY.md`. Inject verbatim — do not paraphrase.
531
+
532
+ When `DISCOVERY_EXTRACT_PATH` (§7) is set, add `- {DISCOVERY_EXTRACT_PATH} (Discovery extract — required reading)` to the researcher `<files_to_read>`.
531
533
 
532
534
  Find the active `research` step hook in `PLAN_PRE_HOOKS_JSON`. Use the hook's `fragment.inline` as the prompt template and substitute the phase fields below before spawning its declared `ref.agent`.
533
535
 
@@ -612,7 +614,7 @@ Resolve active contribution hooks from `PLAN_PRE_HOOKS_JSON` where `kind == "con
612
614
 
613
615
  **If no active security contribution hook exists:** Skip to step 5.6.
614
616
 
615
- **If an active security contribution hook exists:** Read `SECURITY_ASVS` from the active hook's `configValues.security_asvs_level` (default: `1`) and `SECURITY_BLOCK` from `configValues.security_block_on` (default: `"high"`). These values are resolved by the capability registry from user config using the same four-level precedence as hook activation — no inline `config-get` is needed.
617
+ **If an active security contribution hook exists:** Read `SECURITY_ASVS` from the active hook's `configValues.security_asvs_level` (default: `1`) and `SECURITY_BLOCK` from `configValues.security_block_on` (default: `"high"`). The registry resolves them from user config with the same four-level precedence as hook activation — no inline `config-get` is needed.
616
618
 
617
619
  Display banner:
618
620
 
@@ -775,6 +777,8 @@ SPEC_FILE=$(ls "${PHASE_DIR_FOR_SPEC}"/*-SPEC.md 2>/dev/null | grep -Ev -- '-(AI
775
777
  SPEC_PATH="${SPEC_FILE}"
776
778
  ```
777
779
 
780
+ Then Read and execute `pp-core/workflows/plan-phase/steps/discovery-extract.md` (sets `DISCOVERY_EXTRACT_PATH`; inert without `.planning/discovery/`).
781
+
778
782
  ## 7.5. Verify Nyquist Artifacts
779
783
 
780
784
  Skip if `nyquist_validation_enabled` is false OR `research_enabled` is false.
@@ -890,6 +894,7 @@ Planner prompt:
890
894
  - {AI_SPEC_PATH} (AI Design Contract — framework and evaluation strategy, if exists)
891
895
  - {UI_SPEC_PATH} (UI Design Contract — visual/interaction specs, if exists)
892
896
  - {SPEC_PATH} (Phase SPEC — carries the ## Edge Coverage section to lift covered/backstop edges from, if exists)
897
+ - {DISCOVERY_EXTRACT_PATH} (Discovery extract — required reading, embed verbatim as <discovery_extract>; if exists)
893
898
  - {SPIKE_FINDINGS_PATH} (Spike Findings — validated patterns, constraints, landmines from experiments, if exists)
894
899
  - {SKETCH_FINDINGS_PATH} (Sketch Findings — validated design decisions, CSS patterns, visual direction, if exists)
895
900
  - {API_SURFACE_PATH} (API Surface — HINT ONLY, when intel capability is active; see <intel_surface_hint> below)
@@ -904,7 +909,7 @@ ${CONTEXT_WINDOW >= 500000 ? `
904
909
  </files_to_read>
905
910
  ${API_SURFACE_PATH ? `
906
911
  <intel_surface_hint>
907
- **API Surface (HINT — may be incomplete):** When \`intel.enabled\` is true, \`.planning/intel/API-SURFACE.md\` lists symbols extracted from the codebase by regex/JS analysis. Prefer symbols listed there when referencing existing code. This surface is regex/JS-derived and MAY BE INCOMPLETE — a symbol's absence means *unknown*, not *nonexistent*. Never treat the surface as exhaustive. If you reference a symbol that is not in the surface and this phase creates it, list it under "Artifacts this phase produces".
912
+ **API Surface (HINT — may be incomplete):** When \`intel.enabled\` is true, \`.planning/intel/API-SURFACE.md\` lists symbols extracted from the codebase by regex/JS analysis. Prefer its symbols when referencing existing code. The surface is regex/JS-derived and MAY BE INCOMPLETE — a symbol's absence means *unknown*, not *nonexistent*; never treat it as exhaustive. If you reference a symbol not in the surface that this phase creates, list it under "Artifacts this phase produces".
908
913
  </intel_surface_hint>
909
914
  ` : ''}
910
915
  ${AGENT_SKILLS_PLANNER}
@@ -944,7 +949,7 @@ Output consumed by /pp:execute-phase. Plans need:
944
949
  - Verification criteria
945
950
  - must_haves for goal-backward verification
946
951
  - If the SPEC has an `## Edge Coverage` section, lift every `covered` edge's acceptance criterion into `must_haves.truths`, and every `backstop` edge into `must_haves.truths` as a non-inferable check (note it needs a held-out/property-based test). `unresolved` edges are explicit assumptions — surface them in the plan, do not silently drop them.
947
- - If the SPEC has a `## Prohibitions` section, lift every resolved prohibition into the `must_haves.prohibitions:` sibling block (NOT `truths` — ADR-550 D3) carrying `statement` + `status` + `verification`; unresolved prohibitions are explicit assumptions — surface them in the plan, do not silently drop them. A prohibition is a must-NOT (negative) check that belongs in its own `must_haves.prohibitions` block. Never place a must-NOT under `must_haves.truths` — that block keeps positive-observable semantics only.
952
+ - If the SPEC has a `## Prohibitions` section, lift every resolved prohibition into the `must_haves.prohibitions:` sibling block (NOT `truths` — ADR-550 D3) carrying `statement` + `status` + `verification`; unresolved prohibitions are explicit assumptions — surface them in the plan, do not silently drop them. A prohibition is a must-NOT (negative) check with its own `must_haves.prohibitions` block. Never place one under `must_haves.truths`, which keeps positive-observable semantics only.
948
953
  - **"Artifacts this phase produces" section (MANDATORY)** — list every symbol this phase creates: decorators, classes, functions, CLI flags, struct/dataclass fields, new file paths. The plan-review-convergence source-grounding pass reads this section to exclude newly-created symbols from drift verification; omitting it causes new symbols to be flagged for acknowledgement.
949
954
  </downstream_consumer>
950
955
 
@@ -85,6 +85,11 @@ reinterpret it.
85
85
  range (`filesTruncated` when the list was capped).
86
86
  - `gaps[]`: facts the CLI could not establish. Every gap goes into the artifact's `## Not Derived`
87
87
  section; a gap is never silently dropped and never turned into a verdict.
88
+ - `deviations[]`: the rows of `.planning/discovery/_deviations.md` when the project ran the
89
+ Discovery Sprint (`id`, `standard`, `status`, `decision`, `approver`); empty otherwise. An
90
+ `Approved` deviation that covers a clause turns that document's `FAIL` into `N-A` with the reason
91
+ `deviation on file: …` — the agent's rule, in `agents/pp-vault-reviewer.md`
92
+ (`references/discovery-build-consumption.md` § `_deviations.md` read contract).
88
93
 
89
94
  ## 3. Spawn pp-vault-reviewer
90
95
 
@@ -1,272 +0,0 @@
1
- # Bootstrap Template — .planning/discovery/_context.md
2
-
3
- > **Lazy-loaded.** Read this file from `workflows/discovery-sprint.md` — from
4
- > Flow 2 Step 1, or from the Bootstrap Templates section — when
5
- > `.planning/discovery/_context.md` is absent (first-ever session on this
6
- > project). Create that file verbatim from the fenced schema below. The path is
7
- > fixed under `.planning/discovery/` (T-04-03): never a root-level directory,
8
- > never an absolute path, never a path containing `..`.
9
-
10
- **`.planning/discovery/_context.md`:**
11
-
12
- ```markdown
13
- # Cross-Session Context — [PROJECT_NAME]
14
-
15
- This file accumulates key outputs from each completed session to provide context for subsequent sessions. It is automatically maintained as sessions are completed.
16
-
17
- ---
18
-
19
- ## Session 1: Kick-off Outputs
20
- _Populated after Session 1 completion_
21
-
22
- ### Project Context
23
- <!-- Notes about the rationale and context -->
24
-
25
- ### Business Vision
26
- <!-- Business vision summary, KPIs -->
27
-
28
- ### Stakeholders
29
- <!-- Key stakeholder list with roles -->
30
-
31
- ### Approval Routes
32
- <!-- Who approves scope, budget, architecture and security deviations, go-live -->
33
-
34
- ### Platform and Team Shape
35
- <!-- Mandated platform (D-01-n) or "open"; team shape for the build -->
36
-
37
- ### Discovery Sprint Scope
38
- **In Scope:**
39
- -
40
-
41
- **Out of Scope:**
42
- -
43
-
44
- ---
45
-
46
- ## Session 2: As-Is Outputs
47
- _Populated after Session 2 completion_
48
-
49
- ### Core Processes
50
- <!-- Current business processes -->
51
-
52
- ### Pain Points
53
- <!-- Prioritized pain points -->
54
-
55
- ### User Personas
56
- <!-- Key personas and their journeys -->
57
-
58
- ### Current Systems
59
- <!-- Systems landscape -->
60
-
61
- ### Data Flows
62
- <!-- How information moves today -->
63
-
64
- ---
65
-
66
- ## Session 3: To-Be Outputs
67
- _Populated after Session 3 completion_
68
-
69
- ### Business Objectives
70
- <!-- Measurable outcomes and KPIs -->
71
-
72
- ### MVP Scope
73
- <!-- What's in/out for MVP -->
74
-
75
- ### EPICs Summary
76
- <!-- EPIC registry table -->
77
-
78
- ### User Stories Summary
79
- <!-- Story count and distribution -->
80
-
81
- ### Requirements Summary
82
- <!-- Copy the rollup:auto totals table verbatim from .planning/discovery/_requirements.md — never hand-count -->
83
-
84
- ---
85
-
86
- ## Session 4: UX Design Outputs
87
- _Populated after Session 4 completion_
88
-
89
- ### Design Principles
90
- <!-- Numbered design principles -->
91
-
92
- ### UX Standards
93
- <!-- Standards Applied: the frontend standard citations and every D-04 deviation -->
94
-
95
- ### Key Personas (Refined)
96
- <!-- Persona categories and interaction patterns -->
97
-
98
- ### Key Screen Decisions
99
- <!-- Screen layout decisions -->
100
-
101
- ### Prototype
102
- <!-- Session 4 Closing Step answer; per /pp-discovery prototype round: flows validated, open feedback count -->
103
-
104
- ---
105
-
106
- ## Session 5: Architecture Outputs
107
- _Populated after Session 5 completion_
108
-
109
- ### Target Architecture
110
- <!-- Platform, architecture style, ownership -->
111
-
112
- ### Technology Stack
113
- <!-- Full stack listing -->
114
-
115
- ### Key Components
116
- <!-- Module/component list -->
117
-
118
- ### Integration Points
119
- <!-- External system integrations -->
120
-
121
- ### ADRs
122
- <!-- Architecture Decision Records -->
123
-
124
- ### Domain Model / Entity Register
125
- <!-- Entity, key attributes, relationships, owner module -->
126
-
127
- ---
128
-
129
- ## Session 6: Security Outputs
130
- _Populated after Session 6 completion_
131
-
132
- ### Data Classification
133
- <!-- Data sensitivity levels -->
134
-
135
- ### Compliance Framework
136
- <!-- Standards and regulations -->
137
-
138
- ### Encryption
139
- <!-- In-transit, at-rest, key management -->
140
-
141
- ### Network & Access
142
- <!-- Network security approach -->
143
-
144
- ### Audit Logging
145
- <!-- Logging strategy and retention -->
146
-
147
- ### Availability
148
- <!-- SLA targets -->
149
-
150
- ---
151
-
152
- ## Session 7: Identity Management Outputs
153
- _Populated after Session 7 completion_
154
-
155
- ### RBAC Model
156
- <!-- Roles and permissions summary -->
157
-
158
- ### IdP Integration
159
- <!-- Identity provider details -->
160
-
161
- ### User Lifecycle
162
- <!-- Provisioning approach -->
163
-
164
- ---
165
-
166
- ## Session 8: Integration Outputs
167
- _Populated after Session 8 completion_
168
-
169
- ### External Systems
170
- <!-- Systems and their interfaces -->
171
-
172
- ### Interface Patterns
173
- <!-- Chosen patterns and protocols -->
174
-
175
- ### Data Exchange
176
- <!-- Key data flows and formats -->
177
-
178
- ---
179
-
180
- ## Session 9: QA Outputs
181
- _Populated after Session 9 completion_
182
-
183
- ### Test Strategy
184
- <!-- Testing approach -->
185
-
186
- ### Tooling
187
- <!-- Test management and automation tools -->
188
-
189
- ### Test Environments
190
- <!-- Environment list and purposes -->
191
-
192
- ### Quality Gates
193
- <!-- Gate definitions -->
194
-
195
- ### UAT
196
- <!-- UAT participants, period, criteria -->
197
-
198
- ---
199
-
200
- ## Session 10: Infrastructure Outputs
201
- _Populated after Session 10 completion_
202
-
203
- ### Infrastructure
204
- <!-- Cloud/hosting setup -->
205
-
206
- ### Deployment
207
- <!-- Deployment strategy -->
208
-
209
- ### Monitoring
210
- <!-- Monitoring and alerting approach -->
211
-
212
- ### Backup & DR
213
- <!-- Backup and disaster recovery -->
214
-
215
- ### Go-Live Readiness
216
- <!-- Readiness checklist status -->
217
-
218
- ---
219
-
220
- ## Session 11: Roadmap Outputs
221
- _Populated after Session 11 completion_
222
-
223
- ### Project Phases
224
- <!-- Phase breakdown -->
225
-
226
- ### Timeline
227
- <!-- Iteration model (sprints or pp-core phases) and key dates -->
228
-
229
- ### MVP Scope (Confirmed)
230
- <!-- Must-have vs nice-to-have -->
231
-
232
- ### Build Order
233
- <!-- Iteration-by-iteration plan -->
234
-
235
- ### Key Milestones
236
- <!-- Milestone dates -->
237
-
238
- ### Risks
239
- <!-- Top risks and mitigations -->
240
-
241
- ---
242
-
243
- ## Session 12: Delivery Model Outputs
244
- _Populated after Session 12 completion_
245
-
246
- ### Team Structure
247
- <!-- Key roles and people -->
248
-
249
- ### Governance
250
- <!-- Governance framework summary -->
251
-
252
- ### Ceremonies
253
- <!-- Iteration cadence and the meetings held -->
254
-
255
- ### Support Model
256
- <!-- Post-go-live support approach -->
257
-
258
- ---
259
-
260
- ## Session 13: Wrap-up Outputs
261
- _Populated after Session 13 completion_
262
-
263
- ### Decision Readiness
264
- <!-- Go / Conditional Go / No-Go assessment -->
265
-
266
- ### Open Items
267
- <!-- Items carried forward -->
268
-
269
- ### Next Steps
270
- <!-- Transition plan to execution -->
271
- ```
272
-