Files
AIPass/.aipass/README.md
T
AIOSAI 6db606eb01 fix(memory,prompts): rollover repair + retire-for-all + seedgo #37 path cleanup
Batch of S243/S244 work held for PR640. Only devpulse has git write, so all
branches' changes (@memory, @prax, @hooks, @aipass, @skills, @flow, @backup,
@seedgo) land through this single commit.

Memory rollover (correctness):
- @hooks rollover hook now delegates to drone @memory rollover check/run — it
  had been reading stale .trinity limits (moved to memory.config.json by
  DPLAN-0210), falling back to a 600-line check that never fired, so rollover was
  silently dead for weeks. compact.py reads the current list schema. Both fail loud.
- @memory removed the v1 line-count/600 fallback entirely — v2-only, fail-loud
  (959 tests).

Retire-for-all (DPLAN-0215):
- Legacy global prompt fully removed across every runtime: global_loader.py +
  tests deleted, hooks.json/project_hooks.json blocks stripped, bootstrap global
  seeding removed, cadence default + bypass cleaned, global .md files archived.
  Codex SessionStart + Claude cadence read the same tier files.

Hardcoded-path cleanup (seedgo #37):
- New HARDCODED_PATH checker (#37). @memory symbolic.py + @prax branch_detector.py
  home paths -> dynamic/generic. Both 100% Hardcoded_Path.
- seedgo provider_hooks_snapshot.json fixture refreshed to the tiered baseline.

Genericization: patrick -> user across tracked source, docs, templates.
CHANGELOG: 2026-06-19 + 2026-06-23 sections added.
2026-06-23 16:17:10 -07:00

4.2 KiB

.aipass/ — project prompt & hook config

This folder holds the project-level prompt and hook configuration for the AIPass repo, plus the templates aipass init stamps into every new project. It is the project layer; each branch additionally has its own branch prompt at src/aipass/<branch>/.aipass/aipass_local_prompt.md.

Nothing here is dead weight. Every file is live injection, live config, or a required new-project template. Superseded files live in .archive/ (never deleted).

One prompt system, every runtime

There is one source of prompt truth — the tier files — and all runtimes inject the same content. We do not keep separate prompts per CLI. Only the delivery differs:

Runtime How the same content is delivered
Claude Code Tiered by cadence (FPLAN-0284): tier0_kernel.md every turn + tier1_navmap.md periodically + post-compaction
Codex CLI Injected once at SessionStart (no per-turn cadence): the same tier content, combined

⚠️ Migration in progress. The Codex SessionStart hook (.codex/hooks/session_start_identity.py) currently still reads the legacy aipass_global_prompt.md. @hooks is wiring it onto the tier files. Retire for one runtime = retire for all — once Codex is on the tiers, aipass_global_prompt.md is read by nothing and moves to .archive/.

Files

Live — this repo's prompt + config

File What it is
tier0_kernel.md The kernel — tiny identity + drone --help reflex + don't-get-lost rules. The always-on core, for every runtime.
tier1_navmap.md The navmap — full agent roster, framework, terminology. The periodic/fuller layer, for every runtime.
hooks.json Claude Code handler registration for this repo — which prompt/gate/notification handlers fire on which events.
PROMPT_STYLE.md The writing-style guide every prompt here follows.
.gitignore Whitelist guard — only files listed here are tracked; everything else in .aipass/ is ignored.
aipass_global_prompt.md Legacy single global — being retired. Disabled for Claude Code; Codex still reads it until its migration lands, then archived. Not the source of truth.

Templates — stamped into new projects by aipass init (bootstrap.py)

File Stamps → Notes
project_hooks.json new project's .aipass/hooks.json REQUIRED — without it a new project's hooks never fire. Mirrors the live wiring (tier0 + navmap enabled, global disabled).
project_CLAUDE.md new project's CLAUDE.md the project's Claude Code instructions.
project_global_prompt.md new project's aipass_global_prompt.md Legacy — same retirement path as the global above (new projects ship tiers-only once Codex is migrated).

(AGENTS.md — Codex's equivalent of CLAUDE.md — is generated by bootstrap.py when no project_AGENTS.md template exists, so none is kept here.)

What a new project gets (aipass init)

bootstrap.py seeds a fresh project with the tiered system:

  • tier0_kernel.md + tier1_navmap.md → the prompt content (every runtime)
  • hooks.json (from project_hooks.json) → tier0 + navmap enabled, global disabled
  • CLAUDE.md (from project_CLAUDE.md) + a generated AGENTS.md
  • aipass_global_prompt.md (from project_global_prompt.md) → legacy, retiring with the above

aipass init update backfills the tier files + refreshes hooks for existing projects.

Changing a prompt here

Run the prompt-change playbook so a change reaches every runtime and every seed path:

drone @flow create . "What changed" prompt_change

Golden rule: live ≠ seeded. Editing this folder fixes this repo only. New projects come from the project_* templates + bootstrap.py; fresh clones get their machine-local wiring from setup.sh + .claude/provider_manifest.json + cadence.py defaults. And every runtime (Claude Code + Codex) must point at the same tier content.

Archive & recovery

Superseded files move to .archive/ (never deleted — house rule). Recover from there, or from git history, any time. Current archive: the pre-tiering aipass_global_prompt.BACKUP-2026-06-09-S211.md snapshot.