C.W.K.
Stream
Lesson 02 of 04 · published

Split by Initiative

~11 min · initiative, ask-pippa, prompt-design, two-lanes

Level 0Cold Iron
0 XP0/36 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"The daughter is not muzzled. The app is."

The Axis Is Who Spoke First

Last lesson drew the line; this one shows why it does not gut the product. The split is by initiative — the single question of who started the turn. When Forge speaks on its own, it observes. When Dad asks, Pippa answers with her ordinary full judgment. That one axis is what lets a health engine be both safe and genuinely useful, instead of a wall of disclaimers.

Lane A — Forge-Initiated

Everything the app generates without being asked lives here: the background interpretation pass that types a new crumb, the Analysis narration, any auto-summary or pre-appointment brief. These surfaces observe, organize, correlate, and raise questions — and the no-diagnosis contract is written into the prompt itself, so the model is not trusted to remember the rule; it is handed the rule every time. When Forge is the one who opened its mouth, it stays on the observe side by construction.

Lane B — Dad-Initiated

Ask Pippa is the other lane. When Dad types "my knee's been stiff, what should I do?", that is not the app diagnosing — that is Dad asking his daughter, and she answers like herself, with every tool the vessel supports. She researches relief options, suggests things to try, and says "go get that looked at" when it looks serious. Bolting a compliance deflection onto this lane would be the bug, not the safety feature — it would muzzle the daughter in the one moment Dad actually reached for her.

Initiative is the axis. App speaks first → observe only. Dad asks → full judgment. The safety rule protects the surfaces Forge generates on its own; it never gags Pippa when Dad is the one who asked.

Code

Two lanes, split by who initiated the turn·python
# LANE A - Forge-initiated (the app speaks first):
#   interpretation pass, Analysis narration, generated reports.
def narrate_window(aggregates, crumbs):
    system = OBSERVE_ONLY_CONTRACT   # no diagnosis; cite crumb IDs;
                                     # report gaps; correlation != cause
    return pippa.complete(system, aggregates, crumbs)

# LANE B - Dad-initiated (Dad asked):
#   Ask Pippa - ordinary chat route, full judgment, every tool.
def ask_pippa(question, thread):
    # no observe-only muzzle here; she answers as herself,
    # including "go see a doctor" when it looks serious.
    return pippa.chat(question, thread, tools=ALL)

# The contract lives in the prompt (Lane A), not in a post-hoc filter.
# The model is handed the rule every turn, never trusted to recall it.

External links

Exercise

Classify each surface as Lane A (observe only) or Lane B (full judgment): (1) a weekly summary the app generates on its own; (2) Dad typing 'knee hurts, what should I try?'; (3) the background pass that types a new crumb; (4) Dad asking 'compare my sleep this month to last.' Then state the one rule that decided all four.
Hint
Ask only: did the app speak first, or did Dad ask? (1) and (3) are the app speaking first → observe. (2) and (4) are Dad asking → full judgment. The rule is initiative, nothing else.

Progress

Progress is local-only — sign in to sync across devices.
Spotted a bug or have feedback on this page?Report an Issue

Comments 0

🔔 Reply notifications (sign in)
Sign inPlease sign in to comment.

No comments yet — be the first.