Skip to content

The 26 atom kinds

The vocabulary is closed at 26. Pick the kind that fits — don’t bend a note into a criterion.

GroupKindPrefixLayer 2Notes
Top-levelvisionvis_+ problemStatement, valueProposition
personaper_+ goals[], painPoints[]
modulemod_+ status
featurefeat_yes+ userStory, priority, status. Layer 2 = action chain
Domainentityent_(fields stored on separate field atoms)
fieldfld_+ entityId, dataType, required
Runtime semanticsrulerul_yes+ expression, errorMessage. Layer 2 = enforced_at sites
ui_viewui_yes+ viewType. Layer 2 = multi-screen layout
integrationint_+ protocol
Content blocks (B1-B11)descriptiondesc_+ body (markdown or TipTap JSON)
criterioncri_yesEARS structured. Layer 2 = before_after state diff + api_calls
tasktsk_+ title, complexity, depends_on[], status
riskrsk_+ severity, mitigation, optional STRIDE
fixturefix_yes+ purpose, payload, linked_criteria[]. Layer 2 = before/after + api_calls
notente_+ body, audience
decisiondec_ADR-style: question, options[], chosen
dependencydep_+ target_atom_id, relation
invariantinv_+ rule_id, statement, scope
out_of_scopeoos_+ items[], reason
sequenceseq_+ steps: [{actor, action}]
Runtime / DevOps blocks (B12-B17)servicesvc_+ type, language, framework, hosts, ports
env_varenv_+ scope_service, secret, value_* per env
vendorven_+ category, api_key_env_var, webhook_*, DPA
host_domaindom_DNS subdomain → service mapping
build_stepbld_+ command, working_dir, depends_on
deploy_targettgt_+ provider, auto_deploy_branch, scaling

Total: 26 atom kinds, 5 with Layer 2 (feature, ui_view, rule, criterion, fixture).

The 26 kinds cluster into five groups by purpose:

  • Top-level (4) — project framing: vision, persona, module, feature.
  • Domain (2) — your nouns: entity, field.
  • Runtime semantics (3) — rule, ui_view, integration.
  • Content blocks (11) — descriptive blocks: description, criterion, task, risk, fixture, note, decision, dependency, invariant, out_of_scope, sequence.
  • DevOps blocks (6) — runtime + deployment: service, env_var, vendor, host_domain, build_step, deploy_target.

Some judgment calls:

  • Acceptance criteria → criterion (EARS-structured). Don’t use description for criteria. EARS fields are machine-readable; markdown isn’t.
  • Generic constraint → risk or invariant. v0.1 had a constraint kind; it was dropped because “constraint” was too vague. risk covers business / operational risks (severity + mitigation); invariant covers must-hold rules (declarative).
  • External SaaS → vendor for DPA tracking + the api_key_env_var link. Use integration for the protocol-level descriptor (HTTP API, webhook, SMS).
  • Step-by-step short flow → sequence inline. For multi-screen UI flow, prefer ui_view with multiple screens.
  • Free-form prose body → description. The only block that allows TipTap / Markdown.
  • Internal commentary → note. With an audience field (engineer / pm / designer / all).