Claude Context Guard epistemic report
Type: agentic-system-analyses/types/agentic-system-epistemic-report.md
Source-and-claim boundary
The question is what licenses later reliance on project records, learned behaviours, helpers and code descriptions, rather than merely making them available. Scope and exclusions are see boundary; evidence identities and layers are see Source register. SRC-1 supplies executable shell implementation and model-facing doctrine/design. It supplies no populated project histories, tests of generated helpers, observed host invocation or causal comparison. Model compliance, actual acceptance, successful recovery and improved future action therefore remain unobserved. External research linked by the README is not evidence acquired in this run. Images and host/provider internals remain excluded as in the boundary.
This analyst directly read the installer, settings, both hooks, all six commands, all eight templates and README at the registered revision. The tracked dispatch surface agrees with the supplied runtime: six command prompts, two event hooks, installer and manual-copy entry points; no additional registered tool operation was found in those paths. The table distinguishes these reads from reliance on runtime records. Nothing in the relevant shipped text surface is left unassessed; this is not complete coverage of possible consumer-project or host operations.
| Entry point or operation | Source path | Coverage and evidence basis |
|---|---|---|
| Install and manual copy | SRC-1, install.sh, README.md, .claude/settings.json |
Direct reads; see RT-RTE-install-package. Copy admission and conditional hook activation, not truth validation. |
| First-run creation and recovery | SRC-1, .claude/commands/start.md |
Direct read; see RT-RTE-start-session. Imports human details; later consumes current files and selected archive entries. |
| Incremental updates and code-index maintenance | SRC-1, templates/CLAUDE.md |
Direct read; see RT-BAP-project-rules. Model-operated logging and description revision, not an executable acceptance gate. |
| Checkpoint, wrap-up, rotation and supersession | SRC-1, .claude/commands/save.md, .claude/commands/end.md |
Direct reads; see RT-RTE-save-session, EPI-RTE-feature-check, EPI-RTE-feature-admission. |
| Scratch-script harvest, helper tests, approval and deletion | SRC-1, .claude/commands/lessons.md |
Direct read; see RT-RTE-harvest-lessons, EPI-RTE-lesson-inference. |
| Code labels, description generation, filtered comparison and restoration | SRC-1, .claude/commands/itemise.md |
Direct read; see RT-RTE-itemise-code, EPI-RTE-itemise-filter. |
| Integrity diagnosis, report retention, selected repairs | SRC-1, .claude/commands/audit.md |
Direct read; see RT-RTE-audit-project. Includes archive IDs, dates, contradictions and source/sidecar parity. |
| Commit reminder | SRC-1, .claude/hooks/pre-commit-check.sh |
Direct read; see RT-RTE-commit-reminder. Raw substring produces advice, not a ledger check. |
| PreCompact backup | SRC-1, .claude/hooks/pre-compact-save.sh |
Direct read; see RT-RTE-compact-backup. Existing bytes copied, no knowledge acceptance or automatic later restore. |
| Retained-state formats | SRC-1, templates/COMMENTS.md, templates/SESSION_LOG.md, templates/RESUME_STATE.md, templates/TASK_REGISTRY.md, templates/DECISIONS.md, templates/LEARNED_BEHAVIOUR.md, templates/FEATURE_LIST.json |
Direct reads; see object records below. Templates are not actual histories or QA results. |
| Host numerical state and compaction | SRC-1, README.md, .claude/settings.json |
Supplied host findings: see RT-CMP-claude-code. No accessible parameters, exact model version, model processing trace or compaction policy; truth-apt numerical content and parameter learning are not determinable. |
Consequential claims are see RT-CLM-progress-protection, EPI-CLM-diff-record, EPI-CLM-helper-safety, EPI-CLM-archive-truth, EPI-CLM-itemise-preservation and EPI-CLM-context-economy. Their scopes differ: recovering records is not producing justified factual knowledge; navigating code is not proving code descriptions true.
Epistemic-object inventory
Object identities, forms, substrates and quoted evidence are owned by the cited records; see below refers to those fields rather than redeclaring them. Candidate content is scoped to hypothetical consumer entries, not to the empty/example templates.
| Object ID | Candidate truth-apt content or none | Claimed role | Evidence source ID and local anchor | Gap/limit |
|---|---|---|---|---|
| EPI-OBJ-comments | That the user said a particular sentence in a session; the sentence itself may be a directive, not a proposition | see record | SRC-1, templates/COMMENTS.md |
Verbatim recording preserves attribution if followed, not the truth of user assertions. |
| EPI-OBJ-session-log | What occurred, what was completed, errors and fixes | see record | SRC-1, templates/SESSION_LOG.md |
Model recollection/compression; no actual entry checked. |
| EPI-OBJ-resume-state | Current approach, in-flight work and next micro-step; clean/unclean marker | see record | SRC-1, templates/RESUME_STATE.md |
A clean marker is a procedure result, not proof all work is preserved. |
| EPI-OBJ-task-registry | Task provenance, status, files and approach | see record | SRC-1, templates/TASK_REGISTRY.md |
Done status is deliberately not feature QA. |
| EPI-OBJ-decisions | Rationale and source assertions; choices/categories also grant policy authority | see record | SRC-1, templates/DECISIONS.md |
Binding force is independent of whether the rationale is true. |
| EPI-OBJ-learned-behaviour | Scoped failure, workaround and optional root-cause explanation | see record | SRC-1, templates/LEARNED_BEHAVIOUR.md |
Ordinary save can admit entries without the lesson approval path. |
| EPI-OBJ-feature-list | A named feature passed human end-to-end verification, or has a reported failing case | see record | SRC-1, templates/FEATURE_LIST.json |
No environment, test protocol or observed user judgment supplied. |
| EPI-OBJ-sidecar-index | What a numbered code block does and when its description was edited | see record | SRC-1, .claude/commands/itemise.md |
Symbolic number parity cannot warrant natural-language meaning. |
| EPI-OBJ-helper-library | None inherent in executable behavior; associated assumptions/specifications may be truth-apt | see record | SRC-1, .claude/commands/lessons.md |
No generated code supplied; whether a helper formally encodes a proposition is not determinable. |
| EPI-OBJ-audit-report | Detected consistency defects, passing checks and proposed fixes | see record | SRC-1, .claude/commands/audit.md |
Report is retained diagnosis, not a independently validated account. |
| RT-OBJ-claude | Principally policy; some factual assumptions about host behavior and recovery | see record | SRC-1, templates/CLAUDE.md |
Host delivery and conflicting instructions remain limits. |
| RT-CMP-claude-code | Not determinable from accessible numerical state | see record | SRC-1, README.md |
Version/fixity/mutable endpoint and hidden reasoning uninspected; no inference of absent learning. |
Authority-route ledger
Rows split consequential functions even where one supplied route is their valid container. Generic progression, return, read-back, selectors, expiry and evidence limits are see the declaring record. All prompt-directed rows are doctrine only: host execution of Bash instructions is requested, not inspected package automation. Implemented applies only to inspected shell logic. No row claims observed operation. None in epistemic license means the route itself licenses no new truth claim, not that its inputs must be false.
| Route ID | Route function | Architectural status | Object/candidate ID | Content/update relation | Transition or check target | Evaluator/condition and domain | Activation and timing | Possible or observed result | Implemented force | Epistemic authority and scope | Operational authority: behavior permitted, blocked, or changed | Behavioral-authority path: consumer, channel, force, horizon | Evidence source ID and local anchor | Claim IDs or none | Mismatch marker or none | Gap/limit |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| RT-RTE-start-session | content transformation | doctrine only | EPI-OBJ-comments, RT-OBJ-claude | truth-apt transformation: acquisition/import | User details and custom/existing project records enter model context | see record | see record | Requested reads and user details; source warrant unknown | see record | Attribution can be preserved; endorsement not established | Setup and recovery context made available | see record and RT-BAP-project-rules | SRC-1, .claude/commands/start.md |
EPI-CLM-context-economy | Partial loading is not full-context warrant | No authentic consumer data supplied |
| RT-RTE-save-session | content transformation | doctrine only | EPI-OBJ-session-log, EPI-OBJ-resume-state, EPI-OBJ-task-registry, EPI-OBJ-decisions, EPI-OBJ-learned-behaviour | truth-apt transformation: indeterminate | Conversation/events become summaries, rationale and causal explanations | see record | see record | Requested entries; no populated instance | see record | Summary fidelity and entailment unestablished; root-cause text can add hypotheses | Entries guide later work before distinct factual acceptance | see record and RT-BAP-project-rules | SRC-1, .claude/commands/save.md |
none | None; retention is not acceptance | Need inputs and authored entries to classify individual edges |
| RT-RTE-save-session | check/evidence production | doctrine only | EPI-OBJ-comments, EPI-OBJ-task-registry, EPI-OBJ-decisions, EPI-OBJ-learned-behaviour | no content change | Missing entries and trigger coverage | Foreground model reviews conversation and named checklists; bookkeeping domain | see record | Requested completeness checklist or return to updating | see record | Internal coverage evidence only; not independent factual testing | May delay Git step until each file addressed | Foreground model, checklist prompt, requested continuation gate, this save | SRC-1, .claude/commands/save.md |
none | Self-check is not independent verification | Accurate conversation interpretation unobserved |
| RT-RTE-save-session | retention | doctrine only | EPI-OBJ-comments, EPI-OBJ-session-log, EPI-OBJ-resume-state, EPI-OBJ-task-registry, EPI-OBJ-decisions, EPI-OBJ-learned-behaviour | no content change | File writes and optional explicit-path Git durability | see record | see record | Requested durable state; no observed write | see record | No additional warrant from persistence | Later sessions can select retained state | see record | SRC-1, .claude/commands/save.md |
RT-CLM-progress-protection | Retention without acceptance | No multi-file transaction |
| RT-RTE-save-session | lineage/freshness/recovery | doctrine only | EPI-OBJ-decisions, EPI-OBJ-learned-behaviour, EPI-OBJ-task-registry | truth-apt transformation: non-ampliative reshaping | Full bodies move intact; index titles/categories point to them | see record | see record | Requested rotation, supersession link, resolved LB marker or backlog disposition | see record | Archival preserves existing warrant at best, creates none | Active constraints remain binding; resolved entries need not be read; superseded decisions point to replacements | Later model, main indexes then archive body, requested policy, later sessions | SRC-1, .claude/commands/end.md |
EPI-CLM-archive-truth, EPI-CLM-context-economy | Movement does not establish truth | Title relevance selection can omit a needed condition; template category conflict see runtime |
| RT-RTE-start-session | operational admission/selection/consumption | doctrine only | EPI-OBJ-resume-state, EPI-OBJ-decisions, EPI-OBJ-learned-behaviour, EPI-OBJ-feature-list, EPI-OBJ-task-registry | no content change | Handoff, pending tasks and relevant rules enter later work | see record | see record | Requested summary, retrieval and wait for user go-ahead | see record | Loaded data retain unknown original warrant; human continuation is not per-claim acceptance | Guides next task and forbids contradicting constraints | see record and RT-BAP-project-rules | SRC-1, .claude/commands/start.md |
EPI-CLM-context-economy, EPI-CLM-archive-truth | Operational force without factual endorsement | Relevance and compliance are model judgments |
| EPI-RTE-feature-check | check/evidence production | doctrine only | EPI-OBJ-feature-list | no content change | Named user-facing feature works end-to-end | see record | see record | Human pass verification or broken-case report, not task completion | see record | Bounded user verification, not all-environment correctness | Supplies input to status admission | see record | SRC-1, .claude/commands/save.md |
none | none | Verification scope/protocol not frozen |
| EPI-RTE-feature-admission | disposition/acceptance | doctrine only | EPI-OBJ-feature-list | non-truth-apt policy/content update: QA status admission or withdrawal | Record pass only after human verification; reset on break report | see record | see record | Requested true or false flag with failure notes | see record | Criterion/intended use are end-to-end user QA tracking; actual accepted instance absent | Later model treats verified versus failing/untested features differently | see record | SRC-1, .claude/commands/save.md |
none | Acceptance rule, not observed acceptance | User authority and file update remain requested |
| EPI-RTE-lesson-inference | content transformation | doctrine only | EPI-OBJ-learned-behaviour, EPI-OBJ-helper-library | truth-apt transformation: indeterminate | Script edits become a challenged belief and classified lesson | see record | see record | Candidate FACT, HELPER, INSTRUMENT FAULT or JUDGEMENT | see record | A diff alone establishes changed text, not falsity, cause or transfer | Produces proposals, not authority to install yet | see record | SRC-1, .claude/commands/lessons.md |
EPI-CLM-diff-record | Diff-as-falsification overstates evidence | Need script inputs, outcomes and candidate to decide entailment/non-entailment |
| RT-RTE-harvest-lessons | check/evidence production | doctrine only | EPI-OBJ-helper-library | no content change | Proposed helper rejects known-broken input and accepts known-good input | see record | see record | Requested two-way self-test proof summary | see record | Contrast licenses only tested cases with trustworthy case labels | Intended guard on installed helper quality | Foreground model, helper self-tests and report, requested protocol, harvest and future callers | SRC-1, .claude/commands/lessons.md |
EPI-CLM-helper-safety | Two cases do not prove universal safety | No tests/results; test is after approval/install, no explicit failed-test rollback |
| RT-RTE-harvest-lessons | disposition/acceptance | doctrine only | EPI-OBJ-learned-behaviour, EPI-OBJ-helper-library, EPI-OBJ-decisions | no content change | User approves class/destination proposals before write, install or delete | see record | see record | Approved subset or no new lesson | see record | Human selection licenses installation, not a specified evidence-consuming truth criterion for every FACT/Why | Unapproved proposals cannot be installed by this prompt | see record | SRC-1, .claude/commands/lessons.md |
EPI-CLM-helper-safety | Approval is not universal epistemic acceptance | Human reasoning not supplied; no actual response |
| RT-RTE-harvest-lessons | retention | doctrine only | EPI-OBJ-learned-behaviour, EPI-OBJ-helper-library, EPI-OBJ-decisions | no content change | Approved content installed before named scratch-script cleanup | see record | see record | Requested LB/helper/decision plus deletion/keep report | see record | Installed result does not gain warrant by replacing its evidence | Removes mined scripts; retains referenced and untracked/unmined files | see record | SRC-1, .claude/commands/lessons.md |
EPI-CLM-diff-record | No mandatory retained input/outcome evidence bundle | Untracked mined evidence deletion may be irreversible |
| RT-RTE-harvest-lessons | behavior/policy adaptation | doctrine only | EPI-OBJ-helper-library, EPI-OBJ-learned-behaviour, EPI-OBJ-decisions | non-truth-apt policy/content update: helper/constraint admission | Approved lesson becomes later guidance or exported executable guard | see record | see record | Requested installed helper, Enforced by link or decision | see record | Helper behavior and linked prose have different licenses; no inherent proposition identified in absent code | Can constrain future callers or later agents | see record and RT-BAP-project-rules | SRC-1, .claude/commands/lessons.md |
EPI-CLM-helper-safety | Export is not future call integration | Consumer use and improved action unobserved |
| RT-RTE-itemise-code | content transformation | doctrine only | EPI-OBJ-sidecar-index | truth-apt transformation: indeterminate | Code body becomes a job description or calls annotation; long units left blank | see record | see record | Requested new descriptions; existing descriptions preserved verbatim | see record | Semantic interpretation not automatically checked; particular descriptions might be faithful reshaping or new claims | Descriptions steer later code selection | see record | SRC-1, .claude/commands/itemise.md |
EPI-CLM-context-economy | Not a semantic proof | Need generated description/body pair; dates/number parity cannot decide truth |
| RT-RTE-itemise-code | check/evidence production | doctrine only | EPI-OBJ-sidecar-index | no content change | Source marker numbers equal sidecar row numbers; each label lands on one job | see record | see record | Requested parity pass/fail and model granularity self-check | see record | Set equality licenses identifier coverage only, not description fidelity, order or granularity | Parity failure delays completion; granularity asks for subdivision | see record | SRC-1, .claude/commands/itemise.md |
EPI-CLM-itemise-preservation | Different checks cover different properties | All checks are prompt operations, no execution supplied |
| EPI-RTE-itemise-filter | check/evidence production | doctrine only | EPI-OBJ-sidecar-index | non-truth-apt policy/content update: comparison-stream normalization | Comparison inputs normalized by marker filtering and CR deletion | see record | see record | No-output diff or difference; concrete false-negative below | see record | Equality in the filter's quotient, not byte or semantic equality | Supplies pass/fail to backup disposition | see record | SRC-1, .claude/commands/itemise.md |
EPI-CLM-itemise-preservation | Filter can hide executable string content | Command is embedded doctrine, not an automatic installed checker |
| RT-RTE-itemise-code | disposition/acceptance | doctrine only | EPI-OBJ-sidecar-index | no content change | Complete parity and normalized diff license completion; diff failure restores source | see record | see record | Requested success, backup deletion or restored source | see record | Operational acceptance for labeling; cannot warrant all-code preservation | Keeps successful edits, restores failed source, ends backup recovery | see record | SRC-1, .claude/commands/itemise.md |
EPI-CLM-itemise-preservation | Sidecar rollback not paired explicitly | False pass can discard recovery copy |
| RT-RTE-audit-project | check/evidence production | doctrine only | EPI-OBJ-audit-report, EPI-OBJ-sidecar-index, EPI-OBJ-decisions, EPI-OBJ-task-registry | truth-apt transformation: indeterminate | Task provenance, archive pointer/ID consistency, contradictions, Git state, dates and parity | see record | see record | Requested severity-tagged findings and passing checks | see record | Internal consistency/mtime evidence, not external truth or feature correctness; contradiction diagnoses require model interpretation | Surfaces issues; does not auto-rewrite descriptions | see record | SRC-1, .claude/commands/audit.md |
EPI-CLM-archive-truth | Resume warning conflicts with normal save behavior, see runtime | No audit accuracy evidence; date mismatch is only a hint |
| RT-RTE-audit-project | disposition/acceptance | doctrine only | EPI-OBJ-audit-report, EPI-OBJ-sidecar-index | non-truth-apt policy/content update: admit user-selected repairs | User chooses each issue to fix or ignore | see record | see record | Requested selected repairs only; ignored issues not failures | see record | User permission, not automatically a truth judgment on diagnosis | Permits chosen fixes, withholds unchosen ones | see record | SRC-1, .claude/commands/audit.md |
none | Ignored diagnosis remains without repair | Rollback/recheck not specified |
| RT-RTE-audit-project | retention | doctrine only | EPI-OBJ-audit-report | no content change | Displayed report saved to timestamped file | see record | see record | Requested durable audit | see record | Retention adds no independent warrant | Latest audit may guide a later agent via template | see record and RT-BAP-project-rules | SRC-1, .claude/commands/audit.md |
none | Report persistence is not lifecycle integration of accepted claims | Startup command lacks explicit latest-audit read |
| RT-RTE-commit-reminder | operational admission/selection/consumption | implemented | RT-OBJ-settings | non-truth-apt policy/content update: per-event reminder | Raw Bash payload contains git commit | see record | see record | Checklist and unconditional zero exit | see record | None; no completeness evidence produced | Commit allowed whether records updated or not | see record | SRC-1, .claude/hooks/pre-commit-check.sh |
none | Not a verifying or enforcing gate | Host/settings activation unobserved |
| RT-RTE-compact-backup | lineage/freshness/recovery | implemented | EPI-OBJ-session-log, EPI-OBJ-task-registry, EPI-OBJ-comments, EPI-OBJ-decisions, EPI-OBJ-feature-list | no content change | Copy existing five root files to timestamped directory | see record | see record | Attempted copies and count; no restore consumer | see record | Byte-copy intent preserves existing content, not unsaved progress or warrant | Provides recovery affordance, never blocks compaction | see record | SRC-1, .claude/hooks/pre-compact-save.sh |
RT-CLM-progress-protection | Five-file/stale-state counterexample to all progress | Unchecked copy failure can still increment count |
No lifecycle-integration row is established for accepted ampliative factual claims in these inspected paths. /lessons does connect approved entries to helpers and decisions, but its generic human permission rule does not specify evidence-consuming factual acceptance; ordinary save admits LB prose without that gate. Feature QA specifies a criterion, but tracking that result is not by itself explanatory integration. This bounded finding leaves open what an actual consumer might do; it does not convert missing deployments into an absence of checking.
System-claim versus route comparison
The claims and their source passages are see the cited claim records. There is no supplied observed-run or causal-experiment support for any row.
| Claim ID | Claimed operation or warrant | Claim source ID/anchor and evidence layer | Doctrine/design support | Implemented route IDs | Observed-run support | Causal support and design limits | Supported conclusion | Mismatch/unknown |
|---|---|---|---|---|---|---|---|---|
| RT-CLM-progress-protection | see record | SRC-1, README.md; doctrine/design |
Incremental logging, checkpoint and backup policy | RT-RTE-compact-backup | Uninspected | No intervention/comparison; stale/omitted state cannot be copied | Narrow backup mechanism plus requested maintenance | All-progress/no-loss exceeds file coverage and unchecked copy result |
| EPI-CLM-diff-record | see record | SRC-1, .claude/commands/lessons.md; doctrine/design |
Classifies changed beliefs, including instrument faults; excludes cosmetics | None; EPI-RTE-lesson-inference is doctrine only | Uninspected | No inputs/outcomes or attribution of edits | Useful candidate-mining instruction | Changed parameter may reflect changed requirements, not falsified belief |
| EPI-CLM-helper-safety | see record | SRC-1, .claude/commands/lessons.md; doctrine/design |
Prefer helpers, two-way tests, approval/install before cleanup | None; see RT-RTE-harvest-lessons | Uninspected | Two examples do not exhaust inputs; future caller may not use helper | Intended executable guard and linked warning | Universal impossibility/never-forgotten claims unsupported |
| EPI-CLM-archive-truth | see record | SRC-1, .claude/commands/end.md; doctrine/design |
Intact bodies, indexes, resolved and superseded markings | None; see RT-RTE-save-session, RT-RTE-audit-project | Uninspected | No archive integrity or recall experiment | Archiving is intended not to revoke active constraints | Continued policy force is supportable design; factual truth does not follow from movement |
| EPI-CLM-itemise-preservation | see record | SRC-1, .claude/commands/itemise.md; doctrine/design |
Insert-only instruction, backups, parity, granularity and filtered comparison | None; EPI-RTE-itemise-filter analyzes requested command | Uninspected | Concrete multiline-string countercase below; Edit can replace matched text | Requested restricted labeling with an operational restore path | Neither tool name nor normalized comparison proves every character/semantics preserved |
| EPI-CLM-context-economy | see record | SRC-1, README.md; doctrine/design |
Last-five-session bodies, index scans, on-demand archive and code reads | None; see RT-RTE-start-session, RT-RTE-itemise-code | Uninspected | Growing indexes/backlog, arbitrary body sizes/custom files, conflicting plan read; no token measurement | Intended selective access can avoid some full bodies | Predictable age-independent small cost, full recovery and measured savings not established |
Bounded conclusion
Records receive operational authority more readily than epistemic warrant. /save, /end and incremental instructions retain conversation-derived status, summaries, decisions and gotchas. Comments are requested verbatim imports: that preserves attribution, not the truth of their propositions. Other outputs require interpretation; without input/output pairs, non-ampliative summary, derivation and conjecture cannot be distinguished claim by claim. Scoped root-cause and workaround fields can host criticizable content, but neither formatting nor retention supplies truth acceptance. See RT-RTE-save-session, EPI-OBJ-comments, EPI-OBJ-learned-behaviour.
Two admission regimes must not be collapsed. Feature QA names a human end-to-end criterion, an intended use (QA tracking), and a withdrawal input (reported breakage). It can license a bounded pass record if followed; no actual accepted instance or protocol-wide correctness is evidenced. /lessons instead asks permission to install proposals, while helper tests check two labeled cases after approval/install. That is a real requested check, not an absent evaluator, but it does not license every FACT or causal Why. Ordinary gotcha logging bypasses lesson approval. See EPI-RTE-feature-check, EPI-RTE-feature-admission, EPI-RTE-lesson-inference, RT-RTE-harvest-lessons.
The later authority paths are concrete but policy-level. /start reloads main records and indexes, uses a handoff marker, and requests relevant full archive bodies at task time. Decision supersession changes the active rule; resolved LB markings reduce reading without destroying the original. Constraints and lessons influence a later model through file reads; helpers can enforce guards only at actual calls. Approval, exporting and loading do not establish content-dependent behavior or successful learning. The numerical host component's version, mutability and internal truth-apt state remain uninspected; opaque reasoning is not evidence for or against hidden checking. See RT-BAP-project-rules, RT-RTE-start-session, RT-CMP-claude-code.
Checks license their own domains. Audit pointer/ID parity and code-marker parity assess internal consistency. Date comparison is expressly a stale-description hint, not a truth check. Contradiction/completeness checks are model interpretations with user-selected repairs. Filtered diff checks normalized text only; its false-negative witness prevents a universal preservation guarantee. The commit hook merely advises; the backup hook duplicates selected existing bytes without checking truth or restoreability. See RT-RTE-audit-project, EPI-RTE-itemise-filter, RT-RTE-commit-reminder, RT-RTE-compact-backup.
Lesson theory properties remain separate. The supplied theory account is see RT-RTE-harvest-lessons: localized LB/helper candidates are afforded; content-dependent consumption, criticism and retained next-round influence are claimed, not observed. This analyst's diff countercase qualifies the evidence that would satisfy criticism, without negating the instruction to distinguish instrument faults. User approval limits autonomy of admission. Retained debug beliefs can represent consumer-agent operation, but actual bidirectional reflection, improved capacity and criticism of Context Guard's own method remain unestablished. The potential improvement objective is avoiding recurrent consumer debugging errors across sessions; proposals, installed guidance and later channels are intended links, while actual update attribution and subsequent change-dependent behavior are missing. No exercised self-improvement or successful improvement follows. These uncertainties coexist with the described retention and checking capacities; they do not yield a single system-wide epistemic score.
Shared records
Operative objects
These objects are distinct consumer artifacts, not additional declarations of RT-OBJ-claude or RT-OBJ-settings. The closest supplied route container is cited per object; a route's description of its output is not a competing declaration of that output object. No supplied object counterpart was found after comparison. Generated objects are specified, not observed.
EPI-OBJ-comments
Label: Verbatim comments
Source-native identity: consumer COMMENTS.md and COMMENTS_pageN.md. Representational form: natural-language utterances plus textual timestamps/session attribution. Storage substrate: project files, optionally Git. Closest supplied record: RT-RTE-save-session, which writes but is not this artifact. Intended later consumer: /start and /audit; actioned comments can move out of the main file. Evidence: SRC-1, templates/COMMENTS.md, .claude/commands/end.md.
Format: Timestamp | Session | Verbatim comment
---
templates/COMMENTS.md
EPI-OBJ-session-log
Label: Session history
Source-native identity: consumer SESSION_LOG.md and its archive pages. Representational form: natural-language event summaries and status claims. Storage substrate: project files, optionally Git. Closest supplied record: RT-RTE-save-session. Historical entries differ from replaceable current state below. Evidence: SRC-1, templates/SESSION_LOG.md, .claude/commands/save.md.
Format: Session ID | Date | Summary of work done | Tasks completed | Tasks remaining
---
templates/SESSION_LOG.md
EPI-OBJ-resume-state
Label: Current in-flight state
Source-native identity: consumer RESUME_STATE.md. Representational form: natural-language handoff with a textual boolean marker interpreted by the model. Storage substrate: overwriteable project file, optionally Git. Closest supplied record: RT-RTE-save-session; unlike historical entries, /end clears this object. Evidence: SRC-1, templates/RESUME_STATE.md, .claude/commands/start.md.
Overwritten by /save. Wiped by /end. Read first by /start.
This file holds ONLY current in-flight state, not history. History lives in SESSION_LOG.md.
---
templates/RESUME_STATE.md
EPI-OBJ-task-registry
Label: Task provenance and status
Source-native identity: consumer TASK_REGISTRY.md and pages. Representational form: natural-language task/approach notes in a textual table with conventional IDs/status markers; host-model interpretation supplies consequences. Storage substrate: files, optionally Git. Closest supplied record: RT-RTE-save-session. Task done is distinct from feature verified. Evidence: SRC-1, templates/TASK_REGISTRY.md, .claude/commands/save.md.
CHECK THIS FILE BEFORE CREATING NEW TASKS. DO NOT DUPLICATE
---
templates/TASK_REGISTRY.md- On completion, amend with:
Files: path1, path2 | Approach: one-sentence pattern/library | Governed by: D-xx---
templates/TASK_REGISTRY.md
EPI-OBJ-decisions
Label: Decisions and rationale
Source-native identity: consumer DECISIONS.md and pages/index. Representational form: natural-language choice/rationale/source and model-interpreted category/links. Storage substrate: files, optionally Git. Closest supplied record: RT-RTE-save-session. Unlike RT-OBJ-claude, these are use-derived per-decision constraints, not the template that tells the agent to respect them. Evidence: SRC-1, templates/DECISIONS.md, .claude/commands/end.md.
Decision: [The choice that was made]
Rationale: [The reasoning that led to it]
Source: [User comment | Plan | Session | External requirement]
---
templates/DECISIONS.md
- If a new decision supersedes an earlier one, mark the old
Category: supersededwith a pointer to the new D-number. ---.claude/commands/end.md
EPI-OBJ-learned-behaviour
Label: Tactical knowledge entries
Source-native identity: consumer LEARNED_BEHAVIOUR.md, pages/index and optional helper references. Representational form: natural-language scoped failure/workaround/explanation; resolved is model-interpreted disposition text. Storage substrate: files, optionally Git. Closest supplied records: RT-RTE-save-session and RT-RTE-harvest-lessons, two writers of the same object, not two object identities. No actual lesson examined. Evidence: SRC-1, templates/LEARNED_BEHAVIOUR.md, .claude/commands/lessons.md.
Context: Where this surfaces (platform, plugin, version) Gotcha: What fails and how (symptom) Workaround: What actually works Why: Root cause if known ---
templates/LEARNED_BEHAVIOUR.md
- An entry whose underlying platform or library has been removed, or upgraded past the bug, can be marked
resolvedin the index, so it stays findable but no longer needs reading. ---.claude/commands/end.md
EPI-OBJ-feature-list
Label: Feature QA status
Source-native identity: consumer FEATURE_LIST.json, initialized with an empty features array. Representational form: symbolic JSON fields whose intended QA semantics require human/model interpretation; natural-language names/failure notes are separate claim content. Storage substrate: files, optionally Git. Closest supplied record: RT-RTE-save-session. Truth-apt human-verification attribution is separate from operational pass classification. Evidence: SRC-1, templates/FEATURE_LIST.json, .claude/commands/save.md.
"verifiedBy": "user | null", "verifiedAt": "YYYY-MM-DD | null", "notes": "Failing case description, linked task IDs, or empty string" ---
templates/FEATURE_LIST.json
EPI-OBJ-sidecar-index
Label: Code sidecar descriptions
Source-native identity: generated <source_filename>.index.md paired with numbered source markers. Representational form: natural-language job descriptions plus symbolic section addresses and date strings; semantic selection by a model, marker matching by grep if executed. Storage substrate: project source/Markdown files, optionally Git. Closest supplied record: RT-RTE-itemise-code. No generated sidecar supplied; descriptions do not have the same warrant as source code. Evidence: SRC-1, .claude/commands/itemise.md, templates/CLAUDE.md.
- If the section is fewer than 50 lines, write a one-line description following the ruleset.
If the section is 50 lines or longer, leave the description as
_(blank, fill on first edit)_. This is a deliberate token-saving choice: long sections need careful summarisation, and an inaccurate auto-generated description is worse than no description (it misleads agents and corrupts their model of the codebase). Calibration scaffolding is not authoritative, so let the next coding agent fill it in when they touch the section for the first time. ---.claude/commands/itemise.mdPreserve every existing description verbatim. Do not rewrite even if it doesn't match the auto-generated style. Hand-written descriptions are sacred and exist for a reason. ---
.claude/commands/itemise.md
EPI-OBJ-helper-library
Label: Installed lesson helpers
Source-native identity: functions in a consumer project's helper library, exported by /lessons, optionally named by LB Enforced by. Representational form: symbolic executable code; associated explanatory prose belongs to the LB object. Storage substrate: consumer code files, optionally Git. Closest supplied record: RT-RTE-harvest-lessons. No helper implementation available, so exact assumptions, consumer call paths and proposition encoding are not determinable. Evidence: SRC-1, .claude/commands/lessons.md.
- LEARNED_BEHAVIOUR entries: standard format (
## LB-NNN: title (Session N, dd/mm/yy)with Context / Gotcha / Workaround / Why). Where a helper now enforces the lesson, add an**Enforced by:**line naming it. That tells a future reader the rule is already load-bearing in code and does not depend on them remembering it. ---.claude/commands/lessons.md
The supplied RT-RTE-harvest-lessons retains the helper export/two-way self-test passage. That instruction does not itself show the helper is called.
EPI-OBJ-audit-report
Label: Persistent integrity diagnosis
Source-native identity: generated audits/YYYY-MM-DD_HHMMSS.md. Representational form: natural-language issue/severity/details/fix and passing checks. Storage substrate: project Markdown file. Closest supplied record: RT-RTE-audit-project. Report creation precedes selected repairs; retained diagnosis is not proof fixes succeeded. Evidence: SRC-1, .claude/commands/audit.md, templates/CLAUDE.md.
Save the full audit report (exactly as displayed above) to:
audits/YYYY-MM-DD_HHMMSS.md---.claude/commands/audit.md
Routes
EPI-RTE-feature-check
Label: Human end-to-end feature check Part of: RT-RTE-save-session
Endpoints/progression/owner: user tests a named feature end-to-end or reports a broken case → foreground model obtains that report → QA admission consumes it. This is the evaluation part of the supplied save/end route, not its file update. Context: user-facing feature under the user's actual test conditions, unspecified in the package. Evaluator and answer reference: human expected end-to-end behavior; the package freezes neither an oracle nor test suite. User supplies judgment, model is recorder; model task-completion status cannot substitute. Operating mode: open project QA, triggered by human verification or a broken report, not a controlled experiment.
- design conclusion status: claimed
- operation conclusion status: uninspected
- Immediate return: user verification or failing-case report, if supplied.
- Later read-back: inapplicable — this part produces the judgment; status retention and later reads belong to admission and the parent route.
- Delegated visibility: inapplicable — no separate worker specified for human verification.
- Selection predicate: a named feature manually verified end-to-end or reported broken by the user.
- Invalidation or expiry: later broken report can defeat the recorded positive result; no version/environment expiry prescribed.
- Activation or effect: requested judgment becomes input to QA status update, not an automatic product pass.
- Evidence limits: no human test transcript, feature implementation, environment or result supplied.
Evidence: SRC-1, .claude/commands/save.md; the load-bearing human-verification passage is see RT-RTE-save-session. Distinct from admission: this part assesses behavior; admission authorizes the record change.
EPI-RTE-feature-admission
Label: Admit or withdraw feature status Part of: RT-RTE-save-session
Endpoints/progression/owner: human verification/break report → foreground model evaluates the admission trigger → changes passes and failure notes → later /start QA summary. Proposed change: bounded status claim, not task completion. Human controls the qualifying evidence and can withhold it; model performs the update. Criterion: user manually verified end-to-end success; intended use and scope: the project's QA tracker for that feature, not universal correctness. A broken report withdraws positive reliance. Operating mode: open QA tracking; reference outcome is the human check above. Guidance is the FEATURE_LIST semantic rule. Recovery: later reports can reverse status; no automatic code rollback is specified. Parent route supplies durability, not independent validation.
- design conclusion status: claimed
- operation conclusion status: uninspected
- Immediate return: requested true/false status and failing-case notes.
- Later read-back: QA status reaches later
/startand model summaries through FEATURE_LIST. - Delegated visibility: uninspected — no host propagation of QA status to other agents supplied.
- Selection predicate: human verification permits true; human break report requires false; task completion alone is insufficient.
- Invalidation or expiry: later break report resets status; no automatic expiry on code change specified.
- Activation or effect: requested status-dependent later QA interpretation; actual changed reliance unobserved.
- Evidence limits: no recorded acceptance instance or downstream behavior supplied; verifiedBy/verifiedAt are template fields, not enforced provenance.
Evidence: SRC-1, .claude/commands/save.md, templates/FEATURE_LIST.json. Separate from EPI-RTE-feature-check: admission changes the status artifact, not the test outcome.
- If the user reports a feature broken, flip
passes: falsewith anotesdescription of the failing case. ---.claude/commands/save.md
EPI-RTE-lesson-inference
Label: Infer lessons from script changes Part of: RT-RTE-harvest-lessons
Endpoints/progression/owner: foreground model selects current-session script series → consecutive diffs → interprets a prior belief and its alleged failure → deduplicates/classifies → presents proposals to human. Context includes existing LB/decision indexes and helper library. This part produces the candidate, unlike the parent's approval/install/check/cleanup stages. Proposed change: scoped FACT, HELPER, INSTRUMENT FAULT or JUDGEMENT. Model proposes and classifies; human can veto the later installation. Operating mode: open debugging harvest, no frozen expected-answer oracle. Static guidance prefers helpers, ignores cosmetic changes and treats check failure separately from product failure. What persists, if approved: Context/Gotcha/Workaround/Why, helper links/code and constraint rationale; input/outcome traces need not survive script deletion. Rollback/recovery: no candidate rollback needed before approval; parent's Git/cleanup limits apply after installation.
The content/update relation is indeterminate without actual scripts/outcomes and authored lesson. A changed selector can correct a mistaken assumption, reflect changed requirements, or simply target another page. This source-supported alternative prevents treating every diff as an entailed falsification. The prompt's own cosmetic exclusion and INSTRUMENT FAULT category confirm that changed text does not uniquely identify the blame target. No actual ampliative accepted claim is evidenced.
- design conclusion status: claimed
- operation conclusion status: uninspected
- Immediate return: proposed classified lessons or nothing-new result.
- Later read-back: inapplicable — proposals alone are not retained by this part; approved outputs reach later consumers through the parent.
- Delegated visibility: inapplicable — foreground harvest has no delegated mining step.
- Selection predicate: session prefix/mtime, name-stem series, changed substantive selectors/waits/endpoints/guards, novelty against existing knowledge.
- Invalidation or expiry: duplicate/cosmetic candidates rejected; user may reject before writes; no retained proposal expiry specified.
- Activation or effect: requested proposal generation, no installation authority until parent approval.
- Evidence limits: no actual series, outcomes or lesson instance; diff is not a test result or causal contrast.
Evidence: SRC-1, .claude/commands/lessons.md. Theory account and theory-builder conditions 1–4 are see RT-RTE-harvest-lessons, the containing route: this inference part applies its static criticism guidance but supplies no separately observed formulation, consumption, criticism or iteration. Addressability is afforded by localized LB fields/helper functions; persistence and improved future capacity remain unobserved. learning: uninspected — no improvement/attribution evidence. Reflection is afforded for consumer debug beliefs, with actual two causal directions unobserved. Human approval is outside this inference part but remains inside the complete admission route, so it does not establish an autonomous theory builder. No criticism-fed revision of the shipped harvest method is shown. The complete route's dispositional self-change assessment is not upgraded by this candidate-generation part.
Theory-builder conditions 1–4 for this part: - condition 1 conclusion status: afforded
The requested whole LB/helper proposal can localize a claim; no actual formulation supplied.
- condition 2 conclusion status: claimed
Classification is requested to depend on candidate content; no decision trace supplied.
- condition 3 conclusion status: claimed
The prompt asks for the challenged belief and separates instrument fault; diff alone does not establish that the criticism occurred or was warranted.
- condition 4 conclusion status: claimed
The parent requests installation for later use; this candidate-generation part alone supplies no next-round evidence.
For each consecutive pair of files in a series, answer one question: what did the agent believe in file N that turned out to be wrong in file N+1? ---
.claude/commands/lessons.mdLook for a changed selector, wait condition, endpoint, parameter name, assertion, path, encoding, or a guard that suddenly appeared. Ignore cosmetic churn: renamed variables and reformatting are not lessons. ---
.claude/commands/lessons.md| INSTRUMENT FAULT | a LEARNED_BEHAVIOUR entry, flagged as such | the check was wrong while the thing being checked was fine | ---
.claude/commands/lessons.md
EPI-RTE-itemise-filter
Label: Normalized itemisation comparison Part of: RT-RTE-itemise-code
Endpoints/progression/owner: foreground model is told to run Bash → both source/backup streams pass through grep exclusion and CR deletion → diff -B emits differences or no output → parent keeps edits/deletes backups or restores. This is the comparison part, not the parent's marker generation/parity or disposition. Evaluator: deterministic text filter and diff, if executed. Target/domain: normalized line equality after removing regex-matching lines, carriage returns and blank-only differences. Oracle: backup under the same normalization. Operating mode: bounded labeling check; model invokes/interprets, program compares, human approved scope earlier. The producing command is inspected as embedded doctrine; it is not installed executable enforcement and was not run here.
Concrete deduction from the inspected expression, not target execution: take a Python file with the three lines s = """, # 1. alpha, """. Change only the middle line to # 1. beta. That middle line is string data, not a Python comment, yet both lines match the stated regex and are removed by grep -Ev. The two normalized streams both consist of the unchanged opening and closing string lines; CR deletion and diff -B cannot distinguish them. The requested no-output branch labels this PASS although the value of s changed. Marker syntax therefore does not identify comments in a language-aware domain. Independently, tr -d '\r' removes all CR bytes, not only CRLF endings. These source-level deductions qualify universal source-preservation warrant, without asserting a real corrupted file.
- design conclusion status: claimed
- operation conclusion status: uninspected
- Immediate return: requested diff output or no output, consumed as FAIL/PASS.
- Later read-back: inapplicable — comparison streams are current-operation inputs, not accumulated memory; parent keeps source/sidecar edits.
- Delegated visibility: uninspected — foreground is to verify a worker's edits, but actual worker/result handling is not supplied.
- Selection predicate: each approved itemised source and its pre-edit backup; both use identical filter.
- Invalidation or expiry: backup deletion on completion ends immediate comparison/recovery reference; re-itemisation makes a new backup.
- Activation or effect: intended completion/restoration decision in the parent, not independently observed force.
- Evidence limits: no command run; filter equality licenses only its quotient, not semantic or byte preservation; error-status handling is not prescribed by the output-only branch.
Evidence: SRC-1, .claude/commands/itemise.md. No theory is formulated by this deterministic comparison part. Normalization rearranges/removes comparison representation without deriving a new factual code claim; the semantic inference from no diff to no code change is not warranted across the advertised language domain.
PATTERN="^\s(\/\/|#|/*|<!--|--)\s+([0-9]+(.[0-9]+)(\s|.)|end of\s+[0-9]+)" diff -B <(grep -Ev "$PATTERN" "{filename}" | tr -d '\r') <(grep -Ev "$PATTERN" "{filename}.itemise-backup" | tr -d '\r') ---
.claude/commands/itemise.md
- If
diffproduces no output: PASS, only comment lines (and cosmetic blank lines) were added- If
diffproduces output: FAIL, actual code was changed ---.claude/commands/itemise.md
Claims
Each new claim has a distinct public/design assertion from RT-CLM-progress-protection, whose backup/recovery referent is unchanged. These claims concern inference, helper universality, archive truth, preservation checking and context cost respectively; none supersedes the supplied record.
EPI-CLM-diff-record
Label: Script diff records false belief
Claimed operation: consecutive script differences are a literal record of an agent belief that proved false and can be mined into permanent lessons. Source: SRC-1, .claude/commands/lessons.md, README.md; doctrine/design. The diff itself lacks outcome/blame identification; changed needs and cosmetics are alternatives. Design conclusion status: claimed. Operation conclusion status: uninspected.
The diff between consecutive versions of a throwaway script is a literal record of what the agent believed that turned out to be false. ---
.claude/commands/lessons.md
EPI-CLM-helper-safety
Label: Helper prevents wrong answer
Claimed operation/warrant: a helper can make wrong answers impossible and avoid the failure of remembered prose. Source: SRC-1, .claude/commands/lessons.md; doctrine/design. Two-way testing and user approval support a narrower intended guard, not universal correctness or inevitable future calls. Design conclusion status: claimed. Benefit conclusion status: uninspected.
The governing principle: prefer a helper over prose. A rule that must be remembered fails. A helper function that gets called, and a LEARNED_BEHAVIOUR entry that a future
/startsurfaces, do not. When a lesson can be expressed as code that makes the wrong answer impossible, write the code. A prose note saying "remember to escape the path" decays, asafePath()that escapes it cannot be forgotten. ---.claude/commands/lessons.md
EPI-CLM-archive-truth
Label: Archived lesson remains true
Claimed warrant: an archived learned behaviour is still true; archived active decisions still govern. Source: SRC-1, .claude/commands/end.md; doctrine/design. Normative continuation differs from factual validity. Resolved markers and intact relocation can preserve available content but do not test its premises. Design conclusion status: claimed. Operation conclusion status: uninspected.
An archived learned behaviour is still true. The index line is what stops a future session re-discovering it the hard way. ---
.claude/commands/end.mdArchiving does not revoke a decision.
forever-activeandactive-constraintdecisions govern from the archive exactly as they did from the main file, and the index is how future sessions find them. ---.claude/commands/end.md
EPI-CLM-itemise-preservation
Label: Itemisation preserves existing source
Claimed operation/warrant: labeling adds comments without changing source; Edit structurally prevents loss and the verification check catches any character change. Source: SRC-1, .claude/commands/itemise.md; doctrine/design, including attributed Session 1 operation rather than an acquired trace. No observed run/causal experiment supplied. The insert-only discipline is a real requested restriction; Edit's ability to replace old_string does not enforce inclusion of every old character, and the filter has a semantic false-negative witness. Design conclusion status: claimed. Operation conclusion status: uninspected.
Removing, altering, or rewriting ANY existing character in the file, whether code or comment, is a catastrophic failure. The verification step (Step 5) will catch this, but the Edit-based approach prevents it structurally. ---
.claude/commands/itemise.md
EPI-CLM-context-economy
Label: Small predictable recovery context
Claimed operation/warrant: recovery uses only five-session content at a predictable small token cost independent of project age; sidecar-guided code reads scope to relevant code. Source: SRC-1, README.md; doctrine/design. Variable-sized recent bodies and growing indexes/backlog prevent the stated fixed-cost implication. Sidecar guidance may reduce reads, not prove relevance/completeness or measured savings. Design conclusion status: claimed. Benefit conclusion status: uninspected.
It reads the last five sessions' worth of content and nothing more: archives and plan files stay closed, so recovery costs a predictable, small number of tokens no matter how old the project is. ---
README.mdWhy this exists: a number on its own (e.g.
2.1) is a coordinate without a label. With the sidecar, an agent answering "where is the code that does X?" reads the small sidecar (cheap), picks the matching number, then greps the source for that number's start/end markers and reads only those bytes. Token usage scopes to exactly the relevant code instead of the whole file. ---README.md
Evidenced absences
none declared in this member
Behavioral-authority paths
none declared in this member; the applicable project-file channel is see RT-BAP-project-rules, with per-route narrower consumers/force distinguished in the ledger.