Home / Product / Atlas and Studio
Updated Jun 26, 2026 · Affirmology_TheRecognition_StudioSpec_v1.md
Spec for Claude Code. Goal: build "The Recognition," a pure, maximum-recognition-density identity audio that can be A/B tested head-to-head against the current Origin Soul Song. Do NOT replace Origin. The A/B decides whether The Recognition replaces Origin, folds its principles back into Origin, or stays a separate audio.
The Recognition is the Origin Soul Song's core job (identity recognition) distilled and intensified. Same foundational shape and length as Origin, but with the Tier 1 recognition stack cranked to maximum and the aspirational/becoming content dialed down. The hypothesis to test: a purer, higher-recognition-density audio beats the current Origin on the first-run "this gets me" reaction.
Tier 1 recognition stack (from Affirmology_IdentityResearch_v1.md), maximized here:
- Self-relevance personalization: every line is specific to THIS chart, no generic affirmation.
- Chart-derived prediction-error reduction: open by naming their actual life pattern, not a greeting.
- First-person present-tense "I am."
- Recognition over instruction: "I am the one who…", "I remember…", never "you should become."
- Listener-language mirroring: weave the person's own words/metaphors where available.
- Mechanism over label and chart-specific metaphor: name the felt human experience, never jargon, never gate/channel numbers.
What is dialed DOWN versus Origin: forward/becoming/aspirational language and any open-loop "next step." The Recognition stays almost entirely in present-tense "this is who I am" recognition. That single variable (recognition density vs becoming) is what the A/B isolates.
Background (verified in the engine): the Origin Soul Song uses an EMPTY directive, which makes the generator use the hardened SCRIPT_SYSTEM_PROMPT_ORIGIN formula (identity-first "I am [name]" by sentence 2-3, shadow-to-gift body, HD gate/channel numbers translated to felt qualities, the hand-on-heart breath + embodied-gratitude beat, open-loop close, ~3 to 4 min, Charlotte voice, Heavenly Circuit bed, QC). A structure with a NON-empty directive instead goes through the flex prompt, a different path. For a clean single-variable A/B, The Recognition should reuse the Origin formula, not the flex path.
Recommended approach (clean A/B, additive, Origin path byte-unchanged):
SCRIPT_SYSTEM_PROMPT_ORIGIN_RECOGNITION that is SCRIPT_SYSTEM_PROMPT_ORIGIN with two changes only: (a) recognition density turned to maximum (more chart-accurate "I am the one who…" recognition lines, explicit instruction to mirror the listener's own language when provided, every claim chart-specific); (b) the becoming/aspirational/open-loop beats reduced to a single quiet closing line so the audio stays in present-tense recognition. Keep everything else identical to Origin (length ~3.5 min, the hand-on-heart breath beat, HD numbers out, no em dashes, first person, QC).the_recognition, use SCRIPT_SYSTEM_PROMPT_ORIGIN_RECOGNITION; the empty-directive Origin path and the flex path are both untouched. This is the only engine wiring.the_recognition Structure (data) below.Faster alternative (if you want zero engine change first): give the_recognition a directive that restates the Origin beats and maximizes recognition, so it runs through the flex path. This is quicker but the flex-vs-Origin-formula path difference is a confound in the A/B, so prefer the recommended approach for a real test. If you do the fast version first, note it in the result so we read the A/B with that caveat.
Structure(
id="the_recognition",
category="Foundational",
name="The Recognition",
description="A pure, maximum-recognition identity audio: who you are, named so precisely it cannot be dismissed. A/B variant of the Origin Soul Song.",
target_minutes=3.5,
directive="", # empty: uses the engine's Origin-Recognition formula, selected by id (see spec section 2)
overview=(
"WHAT IT DOES: Distills the Origin Soul Song to its core job, recognition, and turns it "
"up. Every line is specific to this person's chart and, where we have them, their own "
"words, named as present-tense 'this is who I am' rather than who they are becoming. "
"SCOPE: Pure identity recognition, the 'this gets me' hit, for the demo and first run. "
"WHY IT IS USEFUL: It is the A/B test variant of the Origin Soul Song. If it wins on the "
"first-run reaction, it either becomes the new Origin or its principles fold into Origin."
),
metrics=AudioMetrics(
format="audio", identity=10, transformation=3, energy="warm", pacing="measured",
emotional_tone="empowering", tools=("heart-coherence breath",),
stage="identify", time_of_day="anytime", theme="identity", duration_min=3.5,
voice="soul-song-female", bed="heavenly-circuit", repetition_role="daily-driver",
tier_visibility="free",
),
),
Note: identity=10 (matching Origin) and transformation=3 (lower than Origin's 4, because becoming is dialed down) make the difference legible in the metrics.
The studio already has A/B variant grouping (variant_group / variant_label columns and endpoints, per project state). Use it:
origin_soul_song and the_recognition.python -m pytest tests/test_starter_palette.py -q. Note: The Recognition is in the Foundational category, which IS a consumer-palette category, so it WILL appear in /api/structures. The palette tests use subset checks for the SEED list and assert the 4 palette category ids, so an added Foundational structure should not break them, but if a count assertion trips, update the assertion to include the_recognition, do not remove it. Also confirm the test test_natal_sacred_killed_one_canonical_origin_soul_song still passes (exactly one structure named "Origin Soul Song"; The Recognition has a different name, so this should hold).python -c "from api import structures as S; s=S.get_structure('the_recognition'); print(s.name, s.target_minutes, s.metrics.identity, s.metrics.transformation, repr(s.directive))" should print The Recognition 3.5 10 3 ''.the_recognition for jeff and read script.md aloud. Check: opens by naming his actual pattern (not a greeting), "I am [name]" lands in the first ~3 sentences, every line is chart-specific recognition, almost no becoming/aspirational language, a single quiet closing line, HD gate/channel NUMBERS are absent, no em dashes, first person throughout, ~3.5 min of content. Compare side by side with an origin_soul_song render for the same person.SCRIPT_SYSTEM_PROMPT_ORIGIN, the origin_soul_song structure, the demo path, or audio_qc.py. The Recognition is additive and selected only by its own id.Affirmology_PROJECT_STATE.md last, noting the_recognition added as an Origin A/B variant.