praxis-stack

megapraxis + metamegapraxis — a self-auditing session-bootstrap system, materialized

What this is

Claude Code sessions start cold: hundreds of installed skills, agents, and MCP servers; memory spanning every project on a machine; no deterministic opening move. The praxis stack is a pair of skills that fixes this — and then audits itself.

megapraxis — the session bootstrap

megapraxis runs at session start. It detects one of seven modes from the working directory's shape and history, inventories skills/agents/MCP servers, flags silently-broken ("dark") plugins, reads project memory and git state, and emits a 15-second dashboard briefing. Its contract: every line corresponds to a truth on disk — unverified claims are dropped, never emitted; counts that weren't computed render as count-skipped, never as guesses.

ModeFires when
hook-autoSessionStart hook; 3-line kernel briefing, no questions
active-projectcwd is a real project (git repo / manifest / memory)
containercwd holds multiple project subdirs
picker2+ sub-projects recently active — asks which one
machine-dashboard"show all projects" — machine-wide scan
coldno prior context; minimal catalog
resume"pick up where we left off" — replays the last unresolved thread

metamegapraxis — the meta-auditor

Where megapraxis briefs the session, metamegapraxis briefs megapraxis. It rolls through 23 documented operational traps (each with a disk-verifiable probe), checks the bridge manifest's referential integrity, computes coverage deltas, and — when single-lens auditing isn't enough — dispatches a four-agent audit swarm whose verdicts persist to a knowledge graph. Six modes: audit, trap N, bridges, propose, swarm, diff.

The 23 operational traps

Silent-failure classes learned in production. Each has a signal (the disk signature that identifies it) and a fix. The live roll-call is on the State tab.

#TrapOne-line signal
1plugin-manifest-misplacedmanifest at plugin root instead of .claude-plugin/ — plugin silently absent while settings say ON
2session-vs-app-restartnew session ≠ new process; plugin configs load only at app launch
3user-belief-vs-harness"it should be registered now" is a hypothesis until the harness confirms it
4stdio-works-cc-never-launchedserver responds when run manually, but the host never spawned it
5http-up-not-stdio-upHTTP health check green while the stdio MCP sibling is down — separate processes
6windows-python-store-stubbare python resolves to a Store alias that prints an install nag and exits 1
7stale-pyc-shadowingbytecode mtime ties can shadow a fresh source edit
8fabricated-counta number derived from a truncated listing instead of a real count
9heuristic-classificationclient-side guesswork silently replacing an auditable server-side contract
10fix-violates-feedbacka proposed action contradicting a saved user correction
11ghost-warm-slugdirectory looks recently active because a memory file was touched, not a session
12stale-graph-cachegraph snapshot lagging fresh disk state
13new-agent-needs-restartagent files written mid-session are invisible until app relaunch
14marketplace-root-claude-plugina marketplace manifest dir misread as a stray plugin — deleting it darkens everything it publishes
15mcp-disconnect-mid-sessiontool roster shrinks mid-session while the HTTP backend stays up
16tmp-on-windows/tmp/ writes that the next shell can't read back
17shell-escape-json-winpathbackslash paths mangled across shell/curl escape layers
18claude-md-aspirational-routedocs describe an endpoint the code never shipped — the handler is the truth
19bulk-finalize-no-contribution-checkblanket-failing pending work destroys provenance of runs that succeeded
20userpromptsubmit-empty-payloadsaudit rows persisted before their fields were populated leak forever-pending
21settings-dark-harness-resolvessettings say a plugin is off; the runtime dispatches it anyway — the harness wins
22malformed-settings-jsonone trailing comma silently disables every plugin and hook
23while-read-subshell-hangper-iteration subshells on MSYS stretch a 300ms scan to minutes

Verdicts and Tarski honesty

Audit cycles terminate with an explicit verdict — converged, converged-modulo-restart, extend, extend-stable, degrade, cycle-complete-extend-deferred, or INCOMPLETE (with reason). What can't be decided is named, never absorbed: five canonical undecidables (unknown-unknowns, true-lens-independence, fixed-point-vs-plateau, state-validity-horizon, converged-vs-correct) plus four observation-class buckets (values-question, oracle-required, telemetry-required, intent-vs-drift) appear in every audit rather than being quietly folded into "all done".

Swarms and the bridge flywheel

When one lens isn't enough — self-audit above all, since the audit target is the auditor — the stack composes an agent swarm: four reviewers with different toolsets in a pipeline, a coordinator synthesizing a verdict, every contribution persisted to a graph. Recurring reasoning gets compiled into bridges: memoized transfer rules (short-circuits, pre-populated templates, delta-scopes) consulted before any new work. A byte-identical re-audit short-circuits to its prior verdict for ~20 tokens instead of a ~150K-token cycle — marginal cost per invocation trends toward zero, bounded below only by the genuinely novel, which always pays full price. That residual is load-bearing, not a failure.

Operational state

loading snapshot…