| settings.json | model | opus (tier alias) | unset (no pin) | production, hard-enforced (L1, PR #71/#64) | check_settings.py rule L1: rejects pinned claude-* IDs and bare claude | grep -n TIER_ALIASES pipeline/hooks/check_settings.py |
| settings.json | env.CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS | "1" | unset | production, required by council teams backend | none | jq -r .env.CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS settings.json |
| settings.json | env.CLAUDE_CODE_DISABLE_1M_CONTEXT | "1" | unset | production, deliberate (AC-005 verified) | docs/model-routing.md | jq -r .env.CLAUDE_CODE_DISABLE_1M_CONTEXT settings.json |
| settings.json | env.CLAUDE_CODE_DISABLE_AUTO_MEMORY | "1" | unset | production, deliberate (handover protocol wins) | none | jq -r .env.CLAUDE_CODE_DISABLE_AUTO_MEMORY settings.json |
| settings.json | permissions.allow | 27 entries, real workload | [] | production, PR #69 merged (US-003, shipped 2026-07-05) | none automated | jq '.permissions.allow' settings.json |
| settings.json | permissions.deny | 26 entries | [] | production | none automated | jq '.permissions.deny' settings.json |
| settings.json | permissions.defaultMode | acceptEdits | default (ask) | production | semantics: mcs-claude-code-platform | jq -r .permissions.defaultMode settings.json |
| settings.json | effortLevel | high | unset | production | none | jq -r .effortLevel settings.json |
| settings.json | tui | fullscreen | unset | production, app-written (0954f52) | none | jq -r .tui settings.json |
| settings.json | statusLine.command | claude-hud via bun | unset | production, this machine only | none | jq -r .statusLine.command settings.json |
| settings.json | enabledPlugins | 9 plugins | {} | production | none | jq '.enabledPlugins' settings.json |
| settings.json | extraKnownMarketplaces | skill-codex + research-toolkit-local (local dir, this machine only) | {} | production | none | jq '.extraKnownMarketplaces' settings.json |
| settings.json | mcpServers.openrouter | repo-local .venv interpreter, this machine only | absent | production, manual bootstrap; OPENROUTER_API_KEY unset in this shell (verified 2026-07-02) | mcp/openrouter/README.md | test -x mcp/openrouter/.venv/bin/python && echo ok |
| hooks.json | PreCompact → pre-compact-handover.sh | matcher auto | none | production | none | jq '.hooks.PreCompact' hooks.json |
| settings.json hooks | PreToolUse (TaskUpdate) → acceptance-gate.sh | live blocking gate | none | production | exit-2/stderr contract in script header | jq '.hooks.PreToolUse' settings.json |
| settings.json hooks | 5 events → telemetry-dispatch.sh | fail-soft dispatcher (US-001, PR #67, c562ab8) | none | production | self-guards, never exits 2 | jq '.hooks.SessionStart' settings.json |
| hooks/telemetry-dispatch.sh | CLAUDE_TELEMETRY_HOOK | unset (defaults to private-repo path, this machine only) | unset | production, optional | dispatcher's own readability check | grep -n CLAUDE_TELEMETRY_HOOK hooks/telemetry-dispatch.sh |
| .claude/settings.local.json | permissions.allow | 38 entries, accretion incl. debug junk | absent, gitignored | pattern is production; entries vary | none, "2-week" rule is unenforced | jq '.permissions.allow | length' .claude/settings.local.json |
| commands/council.md | DEFAULT_PROFILE | balanced | balanced | production | none | grep DEFAULT_PROFILE commands/council.md |
| commands/_council-engine.md | cost-profile spawn-site table | sonnet/opus/fable per site | n/a | production | none | grep -A10 "Cost Profiles" commands/_council-engine.md |
| hooks/acceptance-gate.sh | ACCEPTANCE_GATE_STALE_HOURS | 72 (overridable) | 72 | production | script itself | grep STALE_HOURS hooks/acceptance-gate.sh |
| runtime env | CLAUDE_CODE_DISABLE_WORKFLOWS | unset (needs CC ≥2.1.154; here 2.1.198, verified 2026-07-02) | unset | production | _council-engine.md:39 | printenv CLAUDE_CODE_DISABLE_WORKFLOWS; claude --version |
| skills/council/model-routing.json | tasks.* | fresh IDs (openai/gpt-5.4-nano, google/gemini-3.5-flash, openai/gpt-5.4-mini) | n/a | production, shipped (#62/US-004 closed, PR #70 merged) | AC-010..012 verified; mcp/openrouter/check_models.py (monthly + pre-caller cadence) | cat skills/council/model-routing.json |
| skills/council/model-routing.json | lenses | {} stub | {} | candidate, Phase-2 design-only | none | jq '.lenses' skills/council/model-routing.json |
| skills/council/model-routing.json | schema expansion (tiers/profiles/spawn_sites/egress_policy) | spec_version 2.0 on main (merged 2026-07-05) | n/a | production, #63/US-005 closed via PR #72 | check_model_routing.py (hard, pre-commit) | gh pr view 72 --json state |
| pipeline/config/budgets.json | overrides (25 soc-security entries) | orphaned: keys say skills/<name>/..., real path is skills/soc-security/skills/<name>/... | {} | known-wrong, low severity (WARN-tier, always exit 0) | check_token_budget.py | python3 -c "import json,os;d=json.load(open('pipeline/config/budgets.json'));print([k for k in d['overrides'] if not os.path.exists(k)])" |
| pipeline/config/budgets.json | max_simultaneous_tokens | 5500 | 5500 | production, enforcement truth | check_token_budget.py | jq .max_simultaneous_tokens pipeline/config/budgets.json |
| pipeline/config/model-routing.yaml | tier defaults, overrides: {} | defined, not wired: no hook reads it | n/a | documentation-only | none | grep -rl "model-routing.yaml" pipeline/hooks/*.py (expect empty) |
| pipeline/config/security-suppressions.json | suppressions | [] | [] | design-only, not wired: no check_security.py exists | none | ls pipeline/hooks/check_security.py 2>&1 (expect "No such file") |