HumanOS primitives: Waves 0–1 — spec lock and foundation
The moment we stopped arguing about what “Capture” means
This is the story of Wave 0 and Wave 1 of the HumanOS primitives program — the stretch where we traded hallway definitions for kb/22 prose you can cite in a PR.
Calm competence starts with shared words
Before anyone ships another migration, the organization has to agree on twelve primitives and four consolidation tracks. Wave 0’s job was not to impress investors; it was to make a new engineer able to answer: What is Capture vs Watch? using only kb/22. Capture is a one-time handoff — “something was submitted now,” with intent, scope, and receipts. Watch is durable attention over time. Mix those in UX or database naming and you bake confusion into the trust layer for years.
The Spirit subsection in kb/22 is deliberately not fluff. If the mechanics are right but the product feels spooky, we failed. Calm competence means users are never gaslit, never surprised by irreversible action, and never forced to become YAML engineers to stay safe.
The ADR nobody wanted to write (but everyone needed)
C1 — dual async — is the kind of debt that only hurts when you are tired. Command Plane async and gateway async both “work,” yet they tell two persistence stories. Wave 1’s ADR (docs/architecture/humanos-async-unification.md in the open-source tree) does not pretend the problem is solved in one PR. It names the target: a single user-facing model for async agent runs, with internal phasing allowed but no long-lived parallel public APIs for the same story.
That is how you keep v1 honest: break consumers in one train if you must, but do not leave a “legacy” route family around as furniture.
HITL without theater
C2 is about durable approval, not clever throws. The inventory file lists muscle gates that already create approval_requests versus paths that still punt. The bar is simple: if a human must intervene, the platform should remember the request, not echo a stack trace to a chat window and hope.
What we want you to feel
When Waves 0–1 are done right, the feeling is relief: the hardest arguments are documented, the scariest duplication has an owner, and the next wave can focus on shipping instead of re-deciding.
Trust expectation: If you read kb/22’s primitive section and the ADR, you should trust that the org knows where the bodies are buried — and has a dated plan to bury fewer of them over time.
Given / When / Then (use case 1)
Given a workflow team about to add “intake v2,” when they open kb/22, then they use Capture vocabulary and link modality handoffs to kb/52, not a new synonym.
Given / When / Then (use case 2)
Given an operator asking why two async IDs exist, when they read the C1 ADR, then they see the target state and forbidden dual-public-surface rule.
Given / When / Then (use case 3)
Given security review of HITL, when they open the hitl inventory, then every grep hit is classified fix, keep, or issue-linked — no TBD.
Extended narrative — closure pass
Wave 0 was the pause where we admitted that naming is policy. If “intake” means three different things in three services, your auditors will hear three different stories about consent and retention. Locking Capture and Watch into kb/22 is not pedantry; it is how we keep multimodal pipelines from becoming a dozen bespoke upload widgets that all claim to be “the platform.” The Spirit paragraph is the emotional checksum: if a feature feels clever but evasive, it fails before it ships.
Wave 1 then forced the uncomfortable diagram: two async worlds feeding one mental model. The ADR is not permission to stall; it is permission to sequence honestly. Phase 2 issues are numbered — C1-P2-1 through C1-P2-5 — so “later” cannot mean “never.” The deployment matrix calls C1 GAP until those issues close; that is intentional pressure.
The HITL inventory is the moral companion to C1. Throws are fine in tests; in production they are amnesia. When the muscle gate creates approval_requests, we get a ticket number for the human story. When something only throws, we get a chat log and a prayer.
Trust expectation (extended): A founder should be able to read Waves 0–1 artifacts in one sitting and conclude: “We are not pretending dual-async is fine, and we are not pretending HITL is someone else’s problem.”
Given / When / Then (use case 4)
Given a release captain preparing notes for a self-hosted pilot, when they read kb/22 Spirit + C1 ADR Phase 2 list, then they can name five concrete follow-ups without opening Slack archaeology.
Given / When / Then (use case 5)
Given a security reviewer who distrusts “magic routing,” when they trace HITL inventory rows to code, then they see durable approval IDs on the happy path, not ephemeral errors.
Given / When / Then (use case 6)
Given a new hire who inherited a workflow named “intake,” when they propose renaming UI copy, then the PR cites Capture vs Watch from kb/22 and links C3 glossary — no new synonym ships quietly.
HumanOS primitives program — Part 1 of 6