Skip to content

Naming Conventions

REFERENCE — consult while working. No rationale here; see understanding-explanation/ for design decisions.

Files

ContextConventionExample
General fileskebab-case, lowercasereference_audio-pipeline.md
Federation context{rank}_{pillar}_{agent}_context.mdcolonel_goku-fire_killua-friendship_context.md
Federation agent def{rank}_{pillar}_{agent}_agent.mdcolonel_goku-fire_killua-friendship_agent.md
Federation sub-topic{rank}_{pillar}_{agent}_{topic}_context.mdcolonel_levi-ackerman-forge_squidward-music_piano_context.md
Captain contextcaptain_{captain-name}_context.mdcaptain_canary-organiser_context.md
Captain lieutenantcaptain_{captain}_{lieutenant}_context.mdcaptain_canary-organiser_nami-routing_context.md
Handover filesmemory/memory_{cli-name}.mdmemory_claude-code.md
Transcript files{cli-name}-transcript.mdclaude-code-transcript.md
Date-stamped filesYYYY-MM-DD-{topic}.md2026-06-07-vps-migration.md
Audit files{dd-mm-yy}_{audit-type}.md — flat in the-government/audits/14-06-26_agent.md, 11-06-26_task.md
One-shot scriptsoneshot-YYYY-MM-DD-{purpose}.py or .sh — deleted in the same session they runoneshot-2026-06-11-id-migration.py

Audit files (2026-06-14)

All audit outputs live flat in the-government/audits/ under {dd-mm-yy}_{audit-type}.md. The folder name carries "audit"; the file name carries date + type only. audit-type is the kind of audit (agent, task, website, credential, transcript, orchestration, diataxis-migration, documentation-gaps, etc.) — never includes the word "audit" itself. Date is the leading 2-digit dd-mm-yy. Lowercase kebab-case applies to the audit-type slug. Multiple audits of the same type on the same day take a -b, -c suffix on the slug (e.g. 09-06-26_task-b.md). Index lives at audits/index.md. Ruling: Michael, 2026-06-14 ("flat folder in audits/ {dd-mm-yy}_{audit-type}"). Supersedes the prior [scope]-audit-YYYY-MM-DD.md and audit_[scope]-YYYY-MM-DD.md shapes.

One-shot scripts & script registry (2026-06-11)

Permanent top-level .py/.sh scripts in Sandpit/hinata-sandpit/scripts/ and Sandpit/hinata/scripts/ must hold a row in scripts/script-manifest.json (one-line purpose). scan-orphan-scripts.py (session-end Batch 2) flags unregistered scripts, oneshot-* files older than 24h, and stale manifest rows. One-shots are never registered — run, then delete in the same session. Ruling: 2026-06-11, after four orphaned one-shot patch scripts accumulated unreferenced (task 800136).

Retired scripts are deleted outright (git rm for tracked files; manifest row removed in the same commit) — git history is the recovery surface. The former scripts/_archive/ holding pen is purged and retired; never recreate it, and never park a script under a -deprecated-* suffix. Ruling: Michael, 2026-06-11 ("delete deprecated scripts").

No historical versions are retained on any surface (Mac, sandpit, vault, Z2 host, containers): the moment a successor goes live, the superseded script and its runtime artefacts (systemd/launchd units, logs, token copies) are deleted in the same session — only the most efficient, effective current version survives. Ruling: Michael, 2026-06-11 ("all dead scripts should be deleted — don't need historical scripts, just the most efficient effective version today retained").

Folders

ContextConventionExample
Top-level directorieskebab-case, lowercasesupreme-court/, the-government/
Subdirectorieskebab-case, lowercaseinformation-reference/, how-to-guides/
No empty placeholder namesname describes content, not aspirationformat-design/ not format-design-TODO/
No version suffixescontent replaces, never versionshinata-infrastructure/ not hinata-infrastructure-v2/
No date prefixes on foldersdates go on files, not foldersz2-sandpit-sync/ not 2026-05-z2-sandpit-sync/

Agents

ContextConventionExample
Commander namekebab-case character namekillua-friendship, bulma-finances
Colonel name{character}-{pillar-theme}levi-ackerman-forge, saitama-foundation
Captain namekebab-case with role suffixcanary-organiser, jimmy-neutron-brain-ops
Lieutenant namekebab-case role descriptornami-routing, robin-intent
Compound agent{captain}-{lieutenant}meruem-toph
Demoted/archived agentmove to federation/demoted/demoted/splinter-reading.md

Subagent Dispatch

Every dispatch carries five dimensions. Three map to Agent tool parameters; two are encoded in the prompt.

Five dispatch dimensions

DimensionAgent tool fieldValueExample
subagent_namedescription (prefix)Federation member name"Jimmy Neutron"
subagent_typesubagent_typeCommander/Captain name (registered in .claude/agents/)"Jimmy Neutron"
action_typePrompt prefix [Plan] / [Explore] / omit for executeOperation mode[Plan]
descriptiondescription (body after name)Task description"CT106 Itachi bind mount"
modelmodelAlways "sonnet" for subagents (see model-policy)"sonnet"

Working-directory rule (2026-06-11)

Dispatches never instruct an agent to cd away from the vault — Sandpit/Z2 work uses absolute paths. The harness writes agent memory relative to the project dir the agent runs from; running from another repo sprouts a parallel .claude/agent-memory/ there (observed: Jimmy-Neutron in hinata-sandpit, 2026-06-10). The vault copy is sole canon; other repos gitignore .claude/. See ../runtime/memory-architecture.

Description field format

{Name}: {task} — the name is the primary key for per-commander token attribution.

ContextConventionExample
Commander dispatch{Name}: {task}"Trunks: studio dashboard fix"
Captain dispatch{Name}: {task}"Jimmy Neutron: Z2 mount config"
Colonel dispatchColonel {Name}: {task}"Colonel Levi Ackerman: forge synthesis"
Lieutenant dispatch{Name}: {task}"Toph: grounding check"

Canonical dispatch example

python
Agent(
  subagent_type="Jimmy Neutron",
  description="Jimmy Neutron: CT106 Itachi bind mount",
  model="sonnet",
  prompt="Load captain_jimmy-neutron-brain-ops_context.md from /Users/nnamdi/hinata-v2/federation/. Task: ..."
)

Prompt structure

Every subagent prompt MUST:

  1. Load the agent's context file: Load federation/{context_file}. Then: ...
  2. Reference relevant supreme-court strategy if the task touches doctrine
  3. Constrain file access to approved paths only — subagents do not inherit access rules from the main thread

Dispatch output contract (research / audit / multi-step execute)

Law since 2026-06-10 (finding H14, full-stack diagnostic — four of seven first-wave audit arms died on working notes; every contract-carrying rescue succeeded, including a 7-item infra bundle closed in 24 calls). Every research, audit, or multi-step execute dispatch MUST carry all six elements:

ElementForm
ObjectiveOne sentence — what done looks like
Seed evidenceThe files/paths/facts already known, so the agent doesn't re-derive them
Tool budget≤N tool calls, sized to the task
Stop-at-80% ruleAt ~80% of budget, STOP gathering and WRITE the report regardless of completeness
Final-message schemaThe exact headings/fields the last message must contain
Failure clauseNo report = failed run — working notes do not count as output

A dispatch missing any element is malformed — the dispatcher owns the failure, not the agent.

Access control propagation

Subagents have no knowledge of the blacklist or whitelist unless told. Any prompt involving file search or reads MUST include:

Permitted search paths: /Users/nnamdi/hinata-v2/, /Users/nnamdi/Sandpit/hinata/, /Users/nnamdi/Sandpit/hinata-sandpit/, ~/Library/CloudStorage/OneDrive-Personal/hinata/hinata-inbox/
Do NOT search or read outside these paths.

Never use find /Users/nnamdi/ (home root scan) — always scope to a specific permitted path.

Forbidden

  • subagent_type: "general-purpose" — never use
  • subagent_type with an unregistered name — register in .claude/agents/ first
  • Omitting subagent_type — defaults to general-purpose, equally forbidden
  • Omitting the agent name from description — breaks token attribution
  • Omitting model — always required, always "sonnet" for subagents

Attribution chain

description field → JSONL session log → check-delegation-ratio.py parses commander tag → classifies into band → per-commander token attribution → Orochimaru token-burn report → Meruem evolution assessment (token efficiency dimension).

Git Branches

ContextConventionExample
Cloud task branchescloud/{task-id}cloud/t212c1
Feature branches{scope}/{kebab-description}infra/z2-collector-deploy
Never push tomain (from cloud)

Identifiers

ContextConventionExample
Task IDs#{category-prefix}{sequence}#840045
Category prefixes2=michael, 3=learning, 4=coding, 5=music, 6=health, 7=portfolio, 8=infra, 9=strategy#800028 = infra
Short task IDs6-char alphanumeric, ≥4 numeralst212c1, 49b001
Task ID validity6 characters, at least 4 numerals (Michael ruling 2026-06-11) — applies to both forms800128 ✓ · task-028
Session IDsCLI-assigned

Task ID binding (2026-06-11)

the-government/tasks/tasks.json id fields store the category-prefixed numeric form, bare — no # sigil (800128, not #800128); the # is prose/display only. Sequential task-NNN IDs are forbidden. Drift incident: the v2 task file was seeded 2026-06-09 with task-001-style IDs and every subsequent session pattern-matched the file instead of consulting this law — 36 rows accreted before the 2026-06-11 migration (full old→new map in 11-06-26_task). When writing a task row, take the format from this table, never from existing rows. New rows continue the category's sequence ({prefix}{5-digit sequence}).

Terminology Ownership (2026-06-11)

Three surfaces, three jobs — no overlap (resolves full-stack-diagnostic L2):

SurfaceOwnsDoes not own
This file (naming-conventions)Naming rules — formats, conventions, validityDefinitions, inventories
glossaryTerm definitions vault-wideNaming rules
naming-registerInfrastructure name inventory (hosts, CTs, accounts) under this file's rulesRules or terminology

Phase Numbering

Phases in skills, audits, and multi-step plans use integers only (1–200). No sub-letters (1a, 1b, 2c). If a step needs substeps, promote each substep to its own numbered phase.

CorrectForbidden
Phase 1, Phase 2, Phase 3Phase 1a, Phase 1b, Phase 2a
Phase 4 (was "3a")Phase 3a

Prohibited Patterns

  • No version labels: v1, v2, upgraded-from-v1 — content replaces or is new
  • No Co-Authored-By trailers in commits
  • No vendor model names in author-controlled content — use Tier-O / Tier-S / Tier-H
  • No underscores in folder names except the-government diataxis subfolders (see folder-naming-preference)
  • No spaces in any file or folder name
  • All files and folders lowercase — exceptions: CLAUDE.md, CLOUD.md, CODEX.md, GEMINI.md, ANTIGRAVITY.md (harness contracts), SKILL.md (Claude Code convention), Dockerfile (Docker convention)