Technical White Paper · v1.1 · 2026-07-18
A self-auditing session-bootstrap system for agentic coding harnesses — architecture, operational traps, SwarmInvocation methodology, bridge flywheel, and production materialization on Cloudflare Pages.
Agentic coding sessions start cold: hundreds of skills and agents, multi-project memory, optional MCP backends, and no deterministic opening move. The praxis stack is a pair of portable skills — megapraxis (session bootstrap) and metamegapraxis (meta-auditor of that bootstrap) — that make cold start operationally honest and then audit the auditor.
This white paper specifies the complete technical system as of package 1.5.0 and snapshot #5 (2026-07-18): boot modes, disk-verifiable trap probes, verdict vocabulary, SwarmInvocation dialect, bridge short-circuits, multi-harness install paths, Cloudflare Pages + D1 live state, and the optional sibling graph operant. Every “complete” claim in this paper is bounded by explicitly named Tarski residuals; what cannot be decided is never silently absorbed into success.
*Origin-machine coverage from scrubbed snapshot #5; numbers are machine-specific, not universal constants. Live re-check: /api/snapshots/latest.
Modern agent harnesses (Claude Code, Codex CLI, Grok Build, Cursor, Gemini CLI) load large inventories: skills, plugins, MCP servers, agents, hooks, and project memories. Without a disciplined bootstrap:
A bootstrap skill that itself drifts becomes a liability: it briefs confidently on stale or wrong state. Therefore the stack includes a second skill whose sole job is to audit the first — traps, bridges, coverage deltas, and multi-lens swarms — without mutating disk unless the operator issues an explicit apply.
Not every session has Pharosiraptor MCP or a local GraphDoc server. Filesystem-fallback is a designed first-class path (Tier 0). Graph-backed features are optional. Onboarding short-circuits must not force a ~150K-token self-audit swarm onto every new project.
Thesis. Session orientation for agentic harnesses can be made contractual: every emitted claim maps to a disk- or API-verifiable fact; every undecidable remainder is named; recurring reasoning amortizes via bridges; novel work still pays full price.
count-skipped, never as guesses.| Component | Role | Required? |
|---|---|---|
megapraxis/SKILL.md | Session bootstrap briefing | Yes (Tier 0) |
metamegapraxis/SKILL.md | Meta-audit of megapraxis + stack | Yes for self-evolution |
| Pharosiraptor MCP / GraphDoc | Coverage, swarms, ASEC nodes | No (optional) |
| praxis-stack.pages.dev | Explainer, package, live snapshots | Distribution surface |
| export_state.py + D1 API | Scrubbed snapshot accrete | Live State tab |
| intrikata.com operant | Per-user CF graph isolation | No (sibling) |
megapraxis runs at session start (or on demand). It detects mode from cwd shape and history, inventories skills/agents/MCP, flags dark plugins, reads project memory and git state, and emits a short dashboard briefing.
| Mode | Fires when | Output character |
|---|---|---|
hook-auto | SessionStart hook | 3-line kernel briefing; no questions |
active-project | cwd is a real project (git / manifest / memory) | Full project-oriented brief |
container | cwd holds multiple project subdirs | Multi-project inventory |
picker | 2+ sub-projects recently active | Asks which project to orient |
machine-dashboard | “show all projects” | Machine-wide scan |
cold | No prior context | Minimal catalog |
resume | “pick up where we left off” | Replays last unresolved thread |
_via: filesystem_.Missing MCP is not a failed install. On pure Grok orientation, traps #4/#5 are N/A unless graph features are in scope.
The briefing is a contract, not a narrative. Counts come from enumeration or are marked skipped. Dark-plugin alerts name the directory and reason. Completeness verdicts use the shared vocabulary (§8). No machine-identifying detail is required for a correct brief.
Where megapraxis briefs the session, metamegapraxis briefs megapraxis: traps, bridge integrity, coverage deltas, proposed patches, and optional multi-lens swarm dispatch.
| Mode | Trigger | Output |
|---|---|---|
audit | default / bare invoke | 23-trap roll-call + bridges + residuals + coverage delta |
trap N | trap 18 / named trap | Deep probe: signal, evidence, fix path |
bridges | bridges | Full BridgeCompilationManifest resolution |
propose | propose | Write _proposed_*.diff artifacts (no apply) |
apply | apply / apply all | Apply with per-file verification |
swarm | swarm / dispatch | Compose self-audit swarm; requires explicit dispatch |
diff | diff | Delta vs last metamegapraxis baseline |
Hard ceiling ≈ 12 tool calls for audit mode (soft target 10). When a same-session megapraxis boot exists, coverage MCP gathers are reused (0 of 5 spent). Bridge consultation can short-circuit repeat audits against byte-identical surfaces.
Silent-failure classes learned in production. Each has a signal (disk/runtime signature) and a fix. Live roll-call: Live State tab / API.
| # | Trap | One-line signal |
|---|---|---|
| 1 | plugin-manifest-misplaced | manifest at plugin root instead of .claude-plugin/ — plugin silently absent while settings say ON |
| 2 | session-vs-app-restart | new session ≠ new process; plugin configs load only at app launch |
| 3 | user-belief-vs-harness | “it should be registered now” is hypothesis until harness confirms |
| 4 | stdio-works-cc-never-launched | server responds manually, but host never spawned it |
| 5 | http-up-not-stdio-up | HTTP green while stdio MCP sibling is down |
| 6 | windows-python-store-stub | bare python is a Store alias that nags and exits 1 |
| 7 | stale-pyc-shadowing | bytecode mtime ties can shadow a fresh source edit |
| 8 | fabricated-count | a number derived from a truncated listing |
| 9 | heuristic-classification | client guesswork replacing an auditable server contract |
| 10 | fix-violates-feedback | proposed action contradicts a saved user correction |
| 11 | ghost-warm-slug | directory looks active because memory was touched, not a session |
| 12 | stale-graph-cache | graph snapshot lagging fresh disk state |
| 13 | new-agent-needs-restart | agent files written mid-session invisible until relaunch |
| 14 | marketplace-root-claude-plugin | marketplace manifest dir misread as stray plugin — delete darkens publishers |
| 15 | mcp-disconnect-mid-session | tool roster shrinks mid-session while HTTP stays up |
| 16 | tmp-on-windows | /tmp/ writes the next shell cannot read back |
| 17 | shell-escape-json-winpath | backslash paths mangled across shell/curl escape layers |
| 18 | claude-md-aspirational-route | docs describe an endpoint code never shipped |
| 19 | bulk-finalize-no-contribution-check | blanket-failing pending work destroys successful provenance |
| 20 | userpromptsubmit-empty-payloads | audit rows persisted before fields populated → forever-pending |
| 21 | settings-dark-harness-resolves | settings say off; runtime dispatches anyway — harness wins |
| 22 | malformed-settings-json | one trailing comma silently disables every plugin and hook |
| 23 | while-read-subshell-hang | per-iteration subshells on MSYS stretch a 300ms scan to minutes |
Status vocabulary for roll-call: CLOSED, OPEN, UNKNOWN, DOC-ONLY, N/A, META. The six tallies must sum to 23.
Audit cycles terminate with an explicit verdict from a closed set:
converged — decidable surface closed under stated probesconverged-modulo-restart — closed after harness process restartconverged-modulo-harness — closed for a given harness (e.g. Grok Tier 0)extend — decidable work remains; epistemic state improvedextend-stable — extend queue saturated; no further cheap gainsdegrade — previously closed items re-opened or regressedcycle-complete-extend-deferred — cycle finished; residual work deferred with namesINCOMPLETE (with reason) — stop condition with explicit causebudget_exhausted — wall/token/agent budget hit before verdict qualityWhen a finding instantiates one of: values-question, oracle-required, telemetry-required, intent-vs-drift — it is listed under undecidable observation-class, not folded into decidable.
Anti-pattern (forbidden): silent default of unknowns into “CLOSED” or “complete.” That is the Tarski-silent-default pathology; the stack treats it as a first-class failure mode of coverage claims.
Self-audit of the auditor is the canonical multi-lens case: a single Claude-family context cannot claim lens-independence. metamegapraxis composes the seed swarm megapraxis-self-audit and requires an explicit operator dispatch before fire (~150K tokens class cost).
| Role | Agent (typical) | Lens |
|---|---|---|
| step 1 | plugin-dev:skill-reviewer | skill-text / SKILL.md contracts |
| step 2 | pr-review-toolkit:code-reviewer (registry substitute for superpowers) | live code paths |
| step 3 | pharosiraptor:graph-analyst | ASEC graph integrity |
| step 4 | feature-dev:code-explorer | execution-path tracing |
| coordinator | pharosiraptor:metamethodology-convergence-agent | CTL synthesis → verdict |
Rule: pipeline. Each member sees prior steps’ findings. Contributions persist as graph nodes with contributed_to edges; coordinator finalizes the SwarmInvocation in place.
SwarmInvocation rows use a schema-free, colon-delimited name encoding (ASEC dialect), also used for onboarding certificates:
SwarmInvocation::inv-mmgp-YYYYMMDD-<seq>-<slug>
::source=metamegapraxis
::class=surface-audit|onboarding-short-circuit|self-audit
::verdict=converged|extend|…
::harness=grok-build|codex|claude-code
::package=1.5.0
::production_branch=master
::notes=…
Machine-readable short-circuit certificates live at /demo/grok-onboard.json and /demo/codex-onboard.json. Surface-audit cert: /demo/surface-audit.json.
MetaMethodology cycles follow: audit → classify → bridge → apply → verify → converge. Named residuals from cycle N become audit inputs for cycle N+1. Decidable items get concrete remediations; semi-decidable items queue policy refinement; undecidable items stay named.
Recurring reasoning compiles into bridges: memoized transfer rules consulted before new work. Classes include short-circuit, pre-populate, delta-scope, routing, template.
If the audit surface (skill texts + relevant ops) is byte-identical to the last saturating verdict, phase=start may return short_circuit=bridge::fixed-point-short-circuit instead of a dispatch plan. Cost collapses from ~150K tokens to ~20 tokens. The residual that novelty still pays full price is load-bearing, not a bug.
BridgeCompilationManifest.bridge_ids[] must resolve to live Bridge nodes. Drift classes:
Snapshot #5: 11/11 resolved-active, 0 drift.
Skills and agents are classified into four layers used for coverage grids:
| Layer | Name | Character |
|---|---|---|
| M | META | Reasoning-about-reasoning, methodology, classifiers |
| G | GENESIS | Scaffolding, creation, generative ops |
| S | SHADOW | Detection, missingness, silent failures (read-mostly) |
| MGS | MGS lifecycle | Stateful ops, deploys, ordering-sensitive mutations |
Completeness requires zero tarski-unclassified inventory items under the active classifier, plus an explicit residual section. Snapshot #5 reports completeness=converged with tarski_unclassified=0 for both skills and agents on the origin machine.
praxis-stack.pages.dev materializes the stack as a public Cloudflare Pages project: static explainer + operational Live State + distributable package + proven-cycle receipts. No external frontend dependencies.
praxis-stack/
├── public/ # deployed artifact root
│ ├── index.html # System / Live State / Proven Cycle
│ ├── whitepaper.html # this document
│ ├── install.md, onboard-*.md, harness.md, backend.md
│ ├── adapters/ # AGENTS.md, CODEX, GROK, GEMINI, Cursor
│ ├── demo/ # cycle.json, onboard certs, surface-audit
│ ├── pkg/ # praxis-stack-skills.zip
│ ├── git/praxis-stack.git # dumb-HTTP clone / marketplace
│ └── llms.txt # agent discovery
├── functions/api/snapshots/ # D1-backed list/get/post
├── export_state.py # GraphDoc → scrub → POST
├── build_package.py # zip + bare git from live skills
├── schema.sql · wrangler.toml · validate.py
└── README.md
| Route | Method | Auth | Behavior |
|---|---|---|---|
/api/snapshots | POST | Bearer ingest token | Validate + insert scrubbed payload |
/api/snapshots | GET | none | List metadata + summary tallies |
/api/snapshots/latest | GET | none | Newest full payload |
/api/snapshots/:id | GET | none | One full payload |
Contract: API routes always answer as APIs (JSON + correct Content-Type), never HTML SPA fallback.
Load-bearing: production branch is master. Deploy without --branch=master (or with --branch=main) only updates a preview alias while production continues serving the previous deployment. Always:
npx wrangler pages deploy public --project-name=praxis-stack --branch=master
megapraxis + metamegapraxis skill treesinstall.py with harness targetsadapters/ for AGENTS.md family, Cursor rules, Gemini, GrokMANIFEST.jsonPackage 1.5.0+ ships skill praxis-local-realize and scripts realize.py / backend_stub.py that materialize this white paper’s local architecture on Windows, macOS, and Linux for Claude Code, Codex, and Grok skill roots. Tier 0 (skills only) is a complete valid deployment; Tier 1 adds the HTTP stub from §12/BACKEND; Tier 2 full MCP graph remains optional and is never silently claimed by a Tier 0/1 success.
| Harness | Path | Proof of install |
|---|---|---|
| OpenAI Codex | marketplace add + praxis@praxis-stack plugin | task registry lists $praxis:megapraxis |
| Grok Build | zip/git → install.py --target ~/.grok/skills | filesystem megapraxis brief (_via: filesystem_) |
| Claude Code | skill copy or marketplace | skill hot-reload next turn; plugin needs app restart |
Playbooks: onboard-codex.md · onboard-grok.md · install.md · harness.md.
After skills install, operators who want graph isolation without running local GraphDoc can use the sibling Cloudflare operant at intrikata.com:
instance new <handle>bootstrapoperant — seeds 7 machinery graphs in D1Certificate: operant-bootstrap.json. This is not required for a valid megapraxis briefing. Cross-links appear in llms.txt and Grok onboard to reduce discovery residual.
Sections 5–14 describe the parts. This section states what the whole is: megapraxis, metamegapraxis, MetaMethodology, SwarmInvocation, and the intrikata instance layer compose into a single unconverged perpetual residual operant system — a loop whose product is the wisdom of what to do next over a maximally optimal time horizon, generated by the system reflecting on its own M/G/S/MGS layers inside each instance.
Every convergence verdict in the stack is scoped: converged is always per-cycle, per-surface, per-probe-set. Global, final convergence is not merely unachieved — it is excluded by the verdict grammar itself. The five canonical undecidables (§8.2) must appear in every audit, so the residual catalog is never empty. A system whose residual set could reach zero would have a terminal state; this one cannot, and that is load-bearing:
The residual is the fuel. Each cycle’s named residuals are the audit inputs of cycle N+1 (§9.4). If residuals were ever silently absorbed into “done,” the loop would starve — which is exactly why the Tarski-silent-default is treated as the stack’s cardinal failure mode (§8.3). Unconvergence here is not a deficiency to be engineered away; it is the thermodynamic gradient the operant runs on.
“Operant” is meant in the behavioral sense: the system emits behavior, consequences select future behavior, and the selection history is persisted. The mapping is exact, not decorative:
| Operant conditioning | Praxis stack mechanism |
|---|---|
| Operant behavior | The emitted next-move: megapraxis next block, plan_next recommendation, or swarm dispatch |
| Consequence / reinforcement | Cycle verdict (converged … degrade) + outcome-weighted score mutation on Agent and Swarm nodes |
| Discriminative stimulus | Task-signature match against BridgeCompilationManifest — the learned cue for “this situation is known” |
| Shaping | SwarmEvolver generations: promote ad-hoc plans that succeed, adjust member scores, refine composition rules |
| Habit formation | Bridge compilation — recurring reasoning collapses from ~150K tokens to ~20 (fixed-point short-circuit) |
| Extinction | Retirement: swarms with consistent budget_exhausted, bridges and agents marked status=retired |
| Behavior history | SwarmInvocation + Contribution nodes — the append-only record selection operates over |
One full revolution: state → briefing → next-move → action → verdict → score/bridge update → new state. megapraxis reads the world; metamegapraxis reads megapraxis; the MetaMethodology CTL cycle (audit → classify → bridge → apply → verify → converge) turns findings into applied diffs; SwarmInvocation records what happened; the next boot sees a changed system.
“What to do next” is computed against four horizons simultaneously, not greedily against the current turn:
The recommendation surface therefore behaves like a policy improving over its own history: short-circuits make known territory nearly free, full-cost swarms are reserved for genuine novelty (§10.1), and ritual invocation — paying swarm cost on known ground — is an explicitly named anti-pattern.
The reflection is not metaphorical: the system’s self-description is literally the data each instance carries. An intrikata bootstrap seeds the seven machinery graphs — among them the M/G/S/MGS Fusion Complex (which classifies the stack’s own skills, megapraxis included), the Agent Swarm Extension Complex (which contains megapraxis-self-audit, the swarm that audits the auditor), and the Caramello Bridge Complex (the compiled habits). The classifier that files megapraxis under META is itself a node reachable from the instance that runs megapraxis: the loop closes inside the instance, per user, in isolation.
Live evidence (2026-07-18): POST /api/bootstrap on intrikata.com returns 201 with graphs=7, seed_nodes=878 for a fresh instance — machinery only, run-history deliberately empty, so each instance begins its own operant history rather than inheriting the origin machine’s. Access is contact-verified (Twilio SMS / SendGrid email OTP) and instance growth beyond two per contact is gated by a Stripe Link subscription with an HMAC-verified webhook — the operant’s multi-tenant boundary is itself probe-verified (402/400/429 guard classes live).
A loop that never terminates invites two failure modes: burning full cost on unchanged state, and declaring false fixed points to stop early. The stack closes both: byte-identical audit surfaces re-emit the prior saturating verdict for ~20 tokens (no waste), while the fixed-point-vs-plateau residual is named undecidable in every audit (no false stop). The system idles nearly free and pays exactly when reality changes — which is the only economically stable configuration for a process designed to run forever.
On 2026-07-17 the stack ran a full loop against itself and published receipts at /demo/cycle.json (Proven Cycle tab on the home page). Abbreviated stages:
| # | Stage | Outcome | Evidence tier |
|---|---|---|---|
| 1 | /megapraxis boot | container-mode; completeness converged | graph |
| 2 | /metamegapraxis audit | 23-trap baseline recorded | graph |
| 3 | swarm phase=start | 4+1 composed; MCP arg-drop forced sideload | graph |
| 4 | pipeline steps 1–4 | 3× EXTEND-LIST-PROVIDED, 1× OK | graph |
| 5 | coordinator finalize | verdict=extend — prior F7 fix was dead code | graph |
| 6 | apply decidable queue | 8/9 items landed with verification | origin |
| 7 | publish site | snapshot + package + Pages | live |
Evidence tiers: live re-checked by the browser; graph scrubbed at build; origin attested at build, not client-checkable. The CRITICAL finding (arg unwrap landed in a zero-caller dead method) was discovered because dispatch tooling failed during the cycle — the trail includes the machinery’s own failure.
Non-exhaustive but explicit for this paper’s scope:
| Residual | Class | Mitigation / stance |
|---|---|---|
| Agents may not discover sibling operant without links | semi-decidable | llms.txt + onboard cross-links (2026-07-18) |
| True multi-model lens independence | undecidable | named every audit; partial multi-agent only |
| Fixed-point vs plateau | undecidable | subset-check / time-box; never claim absolute fixed point |
| GraphDoc/MCP not hosted on praxis-stack site | decidable omission | by design — skills + scrubbed state only |
| Snapshot roll_call status nulls for some traps | semi-decidable | exporter tallies closed/open; per-row status enrichment optional |
| Whether every future harness auto-loads skills | undecidable harness variance | adapters + short-circuit certs; harness-modulo verdicts |
Public snapshots intentionally exclude: absolute filesystem paths, usernames, full UUIDs, project slugs, and free-text that fails the redaction pass. Trap names, bridge names, verdicts, and counts are generic system vocabulary and publish as-is.
Pages _headers enforce CSP (self + inline for the single-file UI), HSTS-class posture via CF, X-Frame-Options: DENY, nosniff, strict referrer, and locked-down Permissions-Policy.
# venv python — never bare python (trap #6)
export_state.py # or --dry-run / --selftest
build_package.py # regenerates zip + bare git + install.md
validate.py # pre-deploy checks
npx wrangler pages deploy public --project-name=praxis-stack --branch=master
npx wrangler pages dev public --port 8788 --d1=DB=praxis_stack
/megapraxis — orient/metamegapraxis — auditpropose → review → apply for decidable itemsswarm + explicit dispatch when multi-lens required| Surface | URL |
|---|---|
| Home (System / State / Cycle) | https://praxis-stack.pages.dev/ |
| This white paper | /whitepaper |
| Agent discovery | /llms.txt |
| Install guide | /install.md |
| Codex short-circuit | /onboard-codex.md · cert |
| Grok short-circuit | /onboard-grok.md · cert |
| Harness adapters | /harness.md · /adapters/ |
| Backend contract | /backend.md |
| Skills zip | /pkg/praxis-stack-skills.zip |
| Dumb-HTTP git / marketplace | /git/praxis-stack.git |
| Latest snapshot API | /api/snapshots/latest |
| Proven cycle JSON | /demo/cycle.json |
| Surface-audit cert | /demo/surface-audit.json |
| Sibling operant | https://intrikata.com/ |
Document control. White paper version 1.1, generated 2026-07-18 from package 1.5.0, snapshot #5, cycle c3354c03 receipts, and live surface-audit cert inv-mmgp-20260718-praxis-stack-surface. v1.1 adds §15 (the unconverged perpetual residual operant system), grounded by the live intrikata operant bootstrap (graphs=7, seed_nodes=878, contact-OTP + subscription-gated). Supersedes informal System-tab prose for technical depth; System tab remains the short explainer.
SwarmInvocation certificate for this document publication:
SwarmInvocation::inv-mmgp-20260718-whitepaper
::source=metamegapraxis
::class=technical-whitepaper
::verdict=converged-modulo-harness
::whitepaper=1.1
::adds=perpetual-residual-operant-system-section
::operant_evidence=intrikata-bootstrap-201-graphs-7-seed-878
::surface=https://praxis-stack.pages.dev/whitepaper
::package=1.5.0
::snapshot=5
::production_branch=master