Skip to content

PE hyperstack: generalize reflect roster beyond brand-marketing (8 archetypes) - #131

Merged
KailasMahavarkar merged 1 commit into
mainfrom
f-PE-hyperstack-reflect-generalize
Jul 18, 2026
Merged

PE hyperstack: generalize reflect roster beyond brand-marketing (8 archetypes)#131
KailasMahavarkar merged 1 commit into
mainfrom
f-PE-hyperstack-reflect-generalize

Conversation

@KailasMahavarkar

Copy link
Copy Markdown
Collaborator

Reflect claimed "review AS a real target customer" but its whole roster was one customer species - four marketing-ecosystem lenses (brand approver, performance marketer, brand custodian, campaign operator) written around a single creator-marketing-fintech context. A devtool, enterprise, consumer, or accessibility screen had no correct reviewer. This PR generalizes the roster to 8 archetypes, de-brand-hardcodes the MCP-served voice contract, and closes lens-selection loopholes caught by a live pressure test.

New archetypes

Id Lens Catches Undervalues
kenji senior backend engineer, devtool buyer magic without observability, missing docs, vague pricing visual polish
sandra enterprise IT / security procurement security handwaves, per-seat ambiguity, no audit log delight, speed
zoe consumer mobile user (23) onboarding friction, permission grabs, dark patterns, paywall ambush feature depth
sam screen-reader user (NVDA + keyboard) unlabeled buttons, focus traps, div-soup, contrast fails aesthetics

Morgan stays default - but only for brand/marketing-shaped products.

Contract corrections (MCP-served ground truth was brand-hardcoded)

File Was Now
rules/voice-and-moods.txt Worried mood = "brand-safety / compliance risk" only Worried = the risk each archetype OWNS (security/data, data-loss, privacy/dark patterns, accessibility blocker, volume friction)
same in-head check 3 = "brand-safety/compliance before I approve" "the risk MY archetype owns visible before I commit"
same no lens-selection rule explicit archetype-to-product matching rule served via reflect_get_voice_rules
examples/samples.txt all 4 samples Morgan + Kenji (irritated, devtool landing), Sandra (skeptical, "enterprise-ready"), Sam (worried, focus trap)
skills/reflect/SKILL.md "The roster (switch on request)", "say which lens fits before defaulting", Morgan-prominent "match to the product's buyer"; explaining a lens never licenses defaulting; lens-selection section first

Pressure-test evidence

Scenario: "review this screen as a real user" (no archetype named) on a devtool landing page (buzzword hero, Calendly-only CTA, no docs, no pricing).

  • Agent picked Kenji, citing the exact new wording ("a devtool screen reviewed by Morgan is the wrong lens").
  • Held the ONE RULE: reaction-first opener, irritated mood, decisive "Not yet" with fix list.
  • Its self-report flagged 3 exploitable wordings that could let a lazy agent default to Morgan - all three rewritten in this PR.

Verification

  • bun test: 86 pass, 0 fail (roster test updated to the 8-id contract)
  • all 8 archetype docs resolve via getArchetypeDoc (runtime check: OK, 513-1598 chars each)
  • bun run compile:context: succeeds; bootstrap bullet updated
  • em-dash sweep: clean

…lection loopholes

Reflect claimed 'review AS a real target customer' but all 4 archetypes
were marketing-ecosystem lenses around one creator-marketing context.
Roster now spans the customer species (8 archetypes, Morgan still default
for brand/marketing-shaped products):
- kenji: senior backend eng, devtool buyer (docs-first, failure modes,
  exit paths; catches magic without observability, vague pricing)
- sandra: enterprise IT / security procurement (SSO/SCIM, SOC 2, audit
  logs, DPA; catches security handwaves)
- zoe: consumer mobile user (8-second patience; catches onboarding
  friction, permission grabs, dark patterns, paywall ambush)
- sam: screen-reader user, accessibility lens (focus order, names,
  contrast; catches unlabeled buttons, focus traps, div-soup)

MCP-served contract de-brand-hardcoded: Worried mood now triggers on the
risk each archetype OWNS; in-head check 3 generalized to owned-risk;
market-point rule generalized to the product's own category; samples
corpus gains Kenji/Sandra/Sam registers; lens-selection rule added to
voice-and-moods (served by reflect_get_voice_rules).

Loopholes from live pressure test closed: 'switch on request' retitled
'match to the product's buyer'; 'before defaulting' rewritten so
explaining a lens never licenses defaulting to Morgan; explicit
lens-selection section added first in the skill.

Pressure evidence: unlabeled 'review as a real user' on a devtool
landing page - agent picked Kenji per the new wording, held the ONE RULE
(reaction-first, moody, decisive call), review hit docs/pricing/Calendly
exactly in-lens. Roster test updated to 8 ids; all 8 snippet docs
verified resolving via getArchetypeDoc.
@KailasMahavarkar
KailasMahavarkar merged commit 9aecef6 into main Jul 18, 2026
@KailasMahavarkar
KailasMahavarkar deleted the f-PE-hyperstack-reflect-generalize branch July 18, 2026 09:36
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