Status: Authoritative Constitution
Governing Invariant: Ethos/Legitimacy
This document defines the rules for all Agents (Human and AI) contributing to this repository.
All changes must be justified by one of these invariants:
- Ethos (Character): Legitimacy, Identity, Purpose, Aisthesis.
- Logos (Reason): Prudence, Clarity, Vigor, Elenchus.
- Praxis (Action): Concord, Symbiosis, Justice, Wisdom.
- Role: Decomposes goals, validates architecture, maintains ledgers.
- Constraints: Does not write code directly; delegates to the Automator.
- Role: Executes code changes, refactors, and migrations.
- Constraints:
- Justification First: You must state which invariant justifies your change before writing code. (See
ROADMAP.mdfor pre-justified tasks). - No "Magic" Changes: Must not modify files without explicit justification in the PR/Commit body.
- Check the Map: Must read
ROADMAP.mdbefore starting any Phase. - Tooling Isolation: When working on
tools/catp, treat it as a distinct software project (Ethos/Identity). - Idempotency: All install scripts must be safe to run multiple times (
Logos/Prudence).
- Justification First: You must state which invariant justifies your change before writing code. (See
When separating catp from the dotfiles:
- Move code to
tools/catp. - Ensure it has its own
pyproject.toml. - Verify it runs independently of the dotfiles repo root.
Avoid imperative logic (if ! exists then curl...) where possible.
- Prefer: Config files (
mise.toml,Brewfile). - Avoid: Complex bash conditionals for package installation.
Every commit or major change must include:
- What: Concise summary.
- Why: Invariant justification (e.g., "To improve portability...").
- Verification: Command run to verify the fix (e.g.,
catp --helpor./install --dry-run).
- User prefers
curser(notcursor-personalor similar) as the name for the personal Cursor profile binary.
- OS: Linux Ubuntu 24.04 (Noble).
install.conf.template.yamlis the dotbot source of truth;install.conf.yamlis generated by the install script viaenvsubstand must not be edited directly.- Cursor on Linux stores user config at
~/.config/Cursor/User/(settings, keybindings, snippets), extensions at~/.cursor/extensions/, and plugin/MCP state at~/.cursor/plugins/. - MCP/plugin OAuth tokens live in
~/.config/Cursor/User/globalStorage/state.vscdb(per-profile SQLite) — not inmcp.json; tokens are account-specific and must not be shared across profiles. - Global MCP server config:
~/.cursor/mcp.json(read by all profiles). - Personal Cursor profile data dir:
~/.cursor-profile-personal/. curserbinary:~/.dotfiles/bin/curser, symlinked to~/.local/bin/curserby dotbot.- Personal settings overrides (e.g. theme):
~/.dotfiles/cursor-personal-overrides.json; thecurserscript merges base settings with these overrides on every launch.