Skip to content
Chapter 6 of 8

The /interview flow

You do not fill TELOS by staring at empty files. You run /interview, a guided conversation where you speak in your own words and the DA formats what you say into the files. It runs in four phases. Phase one is foundational TELOS, walked in order: MISSION, then GOALS, PROBLEMS, STRATEGIES, CHALLENGES, NARRATIVES, SPARKS, BELIEFS, WISDOM, MODELS, FRAMES. Phase two is the IDEAL_STATE dimensions. Phase three is preferences. Phase four is identity. Four phases, and by the end your DA knows your why, your ideal, your preferences, and who you both are.

The mechanics matter as much as the phases. The interview scans completeness first, then picks a mode. If a section is at least 80 percent complete it runs Review mode: it reads what you have back to you and asks whether it is still accurate, outdated, missing something, or worth sharpening. Below 80 percent it runs Fill mode and walks the empty prompts. And the rule that never bends, the one that makes the whole thing usable: one question at a time, never a firehose. A wall of ten questions makes people freeze; a single question invites a real answer. You speak, the DA writes. Before it rewrites 50 percent or more of a file it backs the file up, and at the very end it regenerates PRINCIPAL_TELOS.md, the @-imported summary, so every future session opens with your fresh context. In this lab you drive the interview state machine over a sample TELOS and prove it chose the right mode and never surfaced more than one question per turn.

The lab: read it, then run it

labs/lifeos-mastery/lm6-interview-state-machine.py
#!/usr/bin/env python3
"""
LAB LM6: The /interview state machine. One question at a time, never a firehose.

The /interview flow fills your TELOS by talking to you. It scans completeness
first, then picks a mode: if your files are at least 80 percent complete it runs
REVIEW (read each back, ask if it is still accurate, outdated, missing, or worth
sharpening); below that it runs FILL (walk the empty prompts). The one rule that
never bends: you get ONE question at a time. A wall of ten questions is a firehose
that makes people freeze, so the machine emits exactly one and waits. In this lab
you drive the state machine over a sample TELOS and prove it chose the right mode
and never emitted more than one question per turn. Sample data only.

Run: python3 modules/academy-content/labs/lifeos-mastery/lm6-interview-state-machine.py
"""
import sys

# STEP 1: completeness of a sample TELOS. Each section is filled or empty.
sections = {
    "MISSION": True, "GOALS": True, "PROBLEMS": True, "STRATEGIES": True,
    "CHALLENGES": False, "NARRATIVES": True, "SPARKS": False,
    "BELIEFS": True, "WISDOM": True, "MODELS": True, "FRAMES": True,
}
completeness = sum(1 for v in sections.values() if v) / len(sections)
mode = "REVIEW" if completeness >= 0.80 else "FILL"
print("STEP 1: scan completeness, pick mode")
print(f"  filled {sum(sections.values())}/{len(sections)} = {completeness:.0%}  ->  mode = {mode}")

# STEP 2: the machine yields questions one at a time. In FILL mode it asks about
# empty sections; in REVIEW mode it reads a filled section back for a check.
def questions(sections, mode):
    if mode == "FILL":
        for name, filled in sections.items():
            if not filled:
                yield f"Your {name} is empty. In your own words, what belongs here?"
    else:
        for name, filled in sections.items():
            if filled:
                yield f"Here is your {name}. Still accurate, outdated, or worth sharpening?"

# STEP 3: emit turns. We record how many questions were surfaced per turn: the
# invariant is that it is ALWAYS exactly one (never a firehose).
per_turn = []
turns = []
for q in questions(sections, mode):
    per_turn.append(1)          # one question surfaced this turn
    turns.append(q)
print("")
print(f"STEP 2-3: {mode} mode surfaced {len(turns)} turns, one question each")
for i, q in enumerate(turns[:3], 1):
    print(f"  turn {i}: {q}")
if len(turns) > 3:
    print(f"  ... {len(turns)-3} more, still one at a time")

# INVARIANTS: mode chosen correctly from completeness, at least one question
# produced, and every single turn surfaced exactly one question.
mode_ok = (mode == "REVIEW" and completeness >= 0.80) or (mode == "FILL" and completeness < 0.80)
one_at_a_time = all(n == 1 for n in per_turn) and len(per_turn) >= 1
print("")
print(f"  mode matches completeness rule : {mode_ok}")
print(f"  every turn = exactly 1 question : {one_at_a_time}")

ok = mode_ok and one_at_a_time
print("")
print(f"ONE QUESTION AT A TIME (mode chosen by completeness, never a firehose): {'YES' if ok else 'NO'}")
if not ok:
    sys.exit(1)
print("The interview meets you where you are, one question at a time. Next: migrate your context.")
Runnable lab
lm6-interview-state-machine.py

Drive the interview state machine over a sample TELOS and prove it picks the right mode and asks one question at a time.

Proves: ONE QUESTION AT A TIME (mode chosen by completeness, never a firehose): YES

Open the notebook

Runs in your browser via Pyodide. First run loads the runtime once; no install, no server.

The interview is how you go from blank scaffolds to a real TELOS without it feeling like a form. But TELOS is only part of you. You have years of context already written down somewhere, old notes, a resume, your opinions, your writing voice. The next chapter brings all of that in, and encodes your actual expertise as something the system can use.
Check your understanding
  1. 1. How many questions does the /interview ask at once?

  2. 2. How does the interview choose Review mode versus Fill mode?

  3. 3. What happens at the end of the interview?