Skip to content

PE personas: add product-manager persona vertical#116

Merged
KailasMahavarkar merged 10 commits into
mainfrom
f-PE-pm-persona-vertical
Jun 21, 2026
Merged

PE personas: add product-manager persona vertical#116
KailasMahavarkar merged 10 commits into
mainfrom
f-PE-pm-persona-vertical

Conversation

@KailasMahavarkar

Copy link
Copy Markdown
Collaborator

Adds a 4th personas/ vertical and its first inhabitant, a product-manager persona that owns the value and viability product risks Hyperstack previously left unowned. The persona gates net-new build decisions (tiered: hard for features/products, advisory for tweaks, user override always) using 9 MCP tools grounded in adversarially-verified PM-craft research.

Why (the structural gap)

The four product risks (Cagan) map onto Hyperstack roles and expose the hole that made decisions feel arbitrary:

Risk Owner Status before
value Product Manager MISSING (the leak)
viability Product Manager MISSING (the leak)
usability Designer (designer skill) covered
feasibility Engineer (engineering-discipline) covered

Nothing owned "is this worth building and does it work for the business" before how-work began. This persona fills that slot.

Changes

Part What Key files
A product-manager MCP plugin, 9 tools, corpus stored as snippets/*.txt via createSnippetLoader (ecosystem pattern), logic in data.ts. Registered as 14th plugin. src/plugins/product-manager/**, src/index.ts, scripts/audit/sources.ts
B personas/ vertical: manifest schema + src/personas/registry.ts + bootstrap Layer 4: Personas compiled in via context-compiler (new required markers). personas/**, src/personas/registry.ts, src/internal/context-compiler.ts, skills/hyperstack/SKILL.md, generated/runtime-context/hyperstack.bootstrap.md
C pm-gate skill (tiered gate) + persona role contracts + hyper -> persona-gate routing. skills/pm-gate/SKILL.md, personas/product-manager/**, harness/router.md, harness/transitions.md

Architecture

before:  src/plugins (MCP)  +  skills  +  agents
after:   src/plugins (MCP)  +  skills  +  agents  +  personas  <- new Layer 4
                                                      product-manager
                                                        owns value+viability
                                                        gate runs BEFORE designer/build

Lifecycle: user -> hyper -> [product-manager gate: opportunity-vs-solution -> four risks -> prioritize -> PASS/BLOCK/NEEDS-INPUT] -> designer/builder -> ship-gate.

Verification

bun test            61 pass / 0 fail (11 files)
bun run build       tsc --noEmit clean
bun run compile:context   idempotent, bootstrap diff-clean
gate smoke          resolve_product_decision("add CSV export", netNew)
                    -> NEEDS-INPUT (HARD), names value + viability

Notes

  • Corpus grounded in deep research (24 claims confirmed, primary sources Cagan/SVPG, Torres, Intercom, Christensen, Doshi); persisted at docs/research/2026-06-21-pm-craft-corpus.json. Spec + plan under docs/superpowers/.
  • 4 research-gap areas (MVP-cut, Kano/MoSCoW/ICE, product-sense practices, decision-template) deferred to Phase 2 - not faked.
  • Agent-registration mechanism for the persona role is realized via contracts + pm-gate skill (prose), not a discoverable CC subagent-type; flagged in the spec for a later verified pass.
  • Merge is blocked by the STABLE_MAIN ruleset until ruleset 15079615 is toggled.

Adds a 4th 'personas/' vertical and a product-manager persona that owns
the value+viability product risks Hyperstack currently leaves unowned.
Tiered gate (hard for net-new, advisory for tweaks, user override).

Spec grounded in adversarial deep research (24 claims confirmed, primary
sources: Cagan/SVPG, Torres, Intercom, Christensen, Doshi); corpus persisted
alongside. Phase 1 = scaffold+plugin+skill+wiring; gaps stubbed NEEDS-RESEARCH.
3-part TDD plan (plugin / vertical infra / skill+binding), code-complete,
grounded in the optimizer plugin pattern + verified test breakpoints
(plugin count 13->14, bootstrap compile:context regen).
9 tools (four-risks, jtbd, discovery, anti-patterns, strategy, opportunity-vs-
solution, validate-job-statement, score-rice, resolve-product-decision).
Corpus prose stored as snippets/*.txt via createSnippetLoader (ecosystem
pattern, not inline); logic stays in data.ts. Registered as 14th plugin;
audit SOURCES entry added (editorial). bun test 59 pass, tsc clean.
Persona vertical: top-level personas/ holds manifests (content), src/personas/
registry.ts loads them (type-checked, reads top-level personas/ same as the
context-compiler reads skills/). product-manager manifest binds plugin+skill+
role with tiered gate_policy.
… B2)

SKILL.md gains Layer 4 Personas + Persona Registry sections; context-compiler
extracts the registry and emits a Personas block, guarded by new required
markers (Personas, product-manager). Bootstrap regenerated (58.1% savings).
product-manager persona contracts (PROFILE/LIFECYCLE/CHECKS), pm-gate skill
(tiered: hard net-new, advisory tweaks, user override), sources.ts skill link,
and hyper -> product-manager persona-gate transitions in router/transitions.
Secondary-pass validation (1 empirical battery + 2 independent red-team agents)
found the 3 'logic' tools were theater: resolve_product_decision could never
return PASS/BLOCK (hardcoded NEEDS-INPUT), and the regex classifiers were ~80%
accurate, gameable, and confidently wrong - violating the ground-truth-not-
judgment philosophy the rest of the stack follows.

- resolve_product_decision: now takes value+viability assessments as input and
  returns a real PASS (both addressed) / BLOCK (net-new, missing) / ADVISORY
  (tweak) verdict. PASS is earned, not automatic.
- opportunity_vs_solution + validate_job_statement: drop the regex verdicts;
  return the Torres / JTBD rubric for the agent to apply (new snippets/rubrics/).
- persona.json: drop the dangling 'agent: product-manager' claim (no such agent
  exists); persona is engaged_by hyper, realized via the pm-gate skill.
- LIFECYCLE: remove the unimplemented 'decision trail' overclaim.

bun test 63 pass, tsc clean. The 6 framework tools were sound and untouched.
@KailasMahavarkar KailasMahavarkar merged commit 15c025d into main Jun 21, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant