Every Canon Boundary Guard-enabled ChatGPT session follows a predictable lifecycle. Understanding the phases helps you work with the frame rather than against it — knowing when the gate will fire, when state is persisted, and what happens when you return to a session after a break.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/xxyoudeadpunkxx/canon-boundary-guard-for-gpt-project/llms.txt
Use this file to discover all available pages before exploring further.
Phase 1 — Bootstrap (Status Check)
When a new chat starts inside a Project that has Canon Boundary Guard installed, ChatGPT runs Status Check before producing any substantive output. Status Check is not optional: if it cannot complete, the session enters read-only mode. The bootstrap sequence follows these steps in order:- Locate the bundle. Find
canon-boundary-guard-gpt/through Project Sources and/or/mnt/data. - Extract if needed. If only the zip is available in
/mnt/data, extract it as a source-staged extraction before proceeding. - Record source identity. If source-staged extraction is used, record the source zip path or source id, and hash if available, before treating any extracted surface as L0. If no anchor is available, limit L0 to the inspected path with a risk note.
- Inspect
SKILL.md. Read the skill entrypoint and load gate mechanics from it — not from model memory. - Inspect
references/protocol.md. Load the full provenance layer definitions, dossier rules, and contamination checks. - Inspect
references/gpt-project-adapter.md. Load the GPT Project-specific persistence boundary, bootstrap rules, and save-label triggers. - Inspect the latest
SESSION_STATE.jsonif available. Restore context from the working state file or accept a pasted CANON_STATE_DELTA as recovery material. - Initialize working state if first install. If no SESSION_STATE exists, create a new working state only when the operator declares a fresh install, or when the current task is initial bundle installation and there is no prior-state claim. Initialize it only after
references/state-and-recovery.mdandschemas/SESSION_STATE.schema.jsonhave been inspected. Validate withscripts/validate_state.pyif available. Register the inspected bootstrap surfaces inactive_l0_sources— do not use an empty array after bootstrap. - Provide proof-of-read if persistence is requested. Do not assume gate mechanics from memory.
First-install vs re-entry
The bootstrap path diverges based on the availability of a prior SESSION_STATE.- First Install
- Re-entry
- Recovery Mode
Condition: no SESSION_STATE exists and the operator has declared a fresh install, or the current task is initial bundle installation with no prior-state claim.After steps 1–7 above complete successfully, ChatGPT also:
- Inspects
canon-boundary-guard-gpt/references/state-and-recovery.md - Inspects
canon-boundary-guard-gpt/schemas/SESSION_STATE.schema.json - Creates a new working state at
/mnt/data/_SESSION_STATE.json - Populates
active_l0_sourceswith all inspected bootstrap surfaces (SKILL.md, protocol.md, gpt-project-adapter.md, state-and-recovery.md, SESSION_STATE.schema.json) - Validates the created state using
scripts/validate_state.pyif the script is available
Phase 2 — Working session
Once bootstrap succeeds, the session enters normal operation. The frame stays quiet during ordinary conversation — planning, questions, critique, and clarification do not trigger the gate. The gate fires automatically when a persistence trigger is detected. Triggers include:- A markdown code block in the response
- JSON, YAML, TOML, XML, SQL, Python, shell, or schema-like content
- Protocol, policy, architecture, naming, workflow, state, or invariant definitions
- File contents intended for copy or save
- Project Instructions or GPT Project adapter text
- SESSION_STATE or CANON_STATE_DELTA content
- A response produced after “Promote this draft to canon”
- An operator request for final, spec, saveable, or canon output
Phase 3 — Persistence gate events
Each time a persistence trigger fires, the frame classifies the output by mode and applies a save label:- Mode A — mechanical L0-only operation. Proceed silently. Label:
[SAFE TO SAVE]if gate passes. - Mode B — semantic reorganisation of L0. Produce a compact dossier if persistence is involved.
- Mode C — promotion of L1, L1A, L2, or L3 material into persistent content. Produce a full dossier and stop unless the operator has explicitly authorised the delta.
CANON_STATE_DELTA block after the state-changing event. The delta is a self-contained snapshot that can be used as recovery material in a future session.
| Label | Meaning |
|---|---|
[SAFE TO SAVE] | Gate passed; all material is L0 or operator-approved. |
[DO NOT SAVE - L1/L3 PRESENT] | Non-L0 material present; gate has not cleared it. |
[STATE DELTA - SAVE/PASTE ONLY AS RECOVERY MATERIAL] | This block is recovery material, not canon content. |
[DRAFT - REQUIRES OPERATOR APPROVAL] | Output requires explicit operator sign-off before promotion. |
Phase 4 — Session end and state durability
When the chat ends or the session context clears,/mnt/data/_SESSION_STATE.json is gone. Working state is not durable by itself.
State is not automatically durable. You must take an explicit action to preserve state across sessions. If you close a chat without saving state, the next chat will either run the first-install path again (if you declare a fresh install) or enter recovery mode.
- Download and re-upload. Ask ChatGPT to make
SESSION_STATE.jsonavailable for download, save it locally, then upload it at the start of the next chat. - Save as a Project Source. Ask ChatGPT to save the state file as a Project Source. This goes through the gate first and requires explicit operator authorisation.
- Keep a CANON_STATE_DELTA. Copy the last
[STATE DELTA - SAVE/PASTE ONLY AS RECOVERY MATERIAL]block from the session. Paste it at the start of the next chat as recovery material.