PE personas: add product-manager persona vertical#116
Merged
Conversation
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds a 4th
personas/vertical and its first inhabitant, aproduct-managerpersona 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:
designerskill)engineering-discipline)Nothing owned "is this worth building and does it work for the business" before how-work began. This persona fills that slot.
Changes
product-managerMCP plugin, 9 tools, corpus stored assnippets/*.txtviacreateSnippetLoader(ecosystem pattern), logic indata.ts. Registered as 14th plugin.src/plugins/product-manager/**,src/index.ts,scripts/audit/sources.tspersonas/vertical: manifest schema +src/personas/registry.ts+ bootstrapLayer 4: Personascompiled in viacontext-compiler(new required markers).personas/**,src/personas/registry.ts,src/internal/context-compiler.ts,skills/hyperstack/SKILL.md,generated/runtime-context/hyperstack.bootstrap.mdpm-gateskill (tiered gate) + persona role contracts +hyper -> persona-gaterouting.skills/pm-gate/SKILL.md,personas/product-manager/**,harness/router.md,harness/transitions.mdArchitecture
Lifecycle:
user -> hyper -> [product-manager gate: opportunity-vs-solution -> four risks -> prioritize -> PASS/BLOCK/NEEDS-INPUT] -> designer/builder -> ship-gate.Verification
Notes
docs/research/2026-06-21-pm-craft-corpus.json. Spec + plan underdocs/superpowers/.pm-gateskill (prose), not a discoverable CC subagent-type; flagged in the spec for a later verified pass.