Skip to content

How To Admit A Wave

You have a topic in ongoing state. You want to admit a new wave under it.

Recipe

  1. Confirm topic state. topic.yaml shows state: ongoing. If pending, move to ongoing first (or admit a remediation wave that justifies reactivating).
  2. Authoritative wave id. Compose wave_id following wave-N-<slug> pattern; ensure no collision with existing waves in this topic.
  3. Add wave entry to topic.yaml. Required fields:
    • wave_id, slug, state (start as candidate)
    • primary_closure_goal (one paragraph)
    • deps (list of prior closed waves this depends on; can be empty)
    • owner_domain (one primary owner domain)
    • parallelizable_after (one of admitted values)
    • selected: true (if this is now the active wave)
  4. At most one selected wave. Set previously-selected wave's selected: false.
  5. Author packet artifact. Use a wave-qualified packet id and filename, for example packet-wave-2-content-rewrite.md. Required fields are packet_id, topic_id, wave_id, packet_kind, status, authority_owner, canonical_seams, forbidden_shortcuts, acceptance_invariants, negative_tests, and reopen_conditions. For worker-bound packets, also include allowed_reads and allowed_writes so the execution boundary is explicit.
  6. Run preflight. preflight-result-<wave_id>.md with verdict.
  7. If authority convergence gate fires (packet kind is authority/spec/redesign/preflight or refs .nimi/spec/): run pre-implementation audit; record result_kind: audit, verdict: PASS.
  8. Update wave state. state: candidate → admitted in topic.yaml once preflight (and audit, if required) PASS.
  9. Update topic.yaml.last_transition_reason. Concise reason like wave-2-foo-admitted_after_pre_audit_pass.

What To Watch For

SymptomMeaning
Two waves both selected: trueReject; only one selected at a time
Wave admitted without preflightReject; preflight is the stop-line
Wave touches .nimi/spec/ without pre-auditReject; authority convergence gate must fire
deps references a wave id that does not existReject; deps must be real
owner_domain says multiple domainsReject; one primary owner per packet
Packet id omits the wave identityReject; generated packet-*.md names can become ambiguous

Reader Scenario

You are managing a docs remediation topic. Wave-1 closed; user accepted; wave-2 needs admission.

StepOutput
Confirm topic ongoingYes
Wave id wave-2-content-rewriteComposed
Add to topic.yamlstate: candidate, selected: true
Set wave-1 selected: falseDone
Author packetAll required fields present
Preflight PASSRecorded
No spec touch → no auth convergence requiredOK
Move state to admittedDone
last_transition_reason updated"wave-2-content-rewrite_admitted_after_user_acceptance_of_wave_1"

Wave-2 is now ready for dispatch.

Source Basis

Nimi AI open world platform documentation.