What Is the `auto-memory scope` Boundary and How It Differs from In-Scope Content Files in santifer/career-ops
The auto-memory scope is a persistent store for behavioral steering data (preferences, rules, operational state) that never contains factual claims, while in-scope content files are the authoritative sources for all user-facing output like CVs and cover letters.
The auto-memory scope boundary is a fundamental architectural principle in santifer/career-ops that separates how an AI agent remembers how to behave from where it finds what to say. Understanding this distinction is critical for anyone customizing the system or debugging unexpected outputs.
Why the Boundary Exists
Career-ops serves two distinct needs: consistent personality across sessions and verifiable accuracy in generated content. Without this separation, an agent might hallucinate achievements into a CV or apply outdated tone preferences to critical application materials.
The boundary enforces that:
- Auto-memory influences style and process
- In-scope files provide substance and facts
Auto-Memory Scope: Behavioral Steering Only
The auto-memory scope stores persistent data used exclusively to steer agent behavior. According to the source code in AGENTS.md lines 35-38, this includes:
- Style and tone preferences (cadence, formality level)
- Process rules (workflow preferences, automation triggers)
- Operational state (active relationships, learned outcomes from past interactions)
- External references (contacts, company-specific context)
Critically, auto-memory never holds factual claims about your work history, achievements, or authorship. It lives in:
- Local path:
~/.claude/projects/.../memory/ - Web UI path:
.career-ops-web/memory.md
// Fetching persisted auto-memory (read-only behavioral data)
import fetch from 'node-fetch';
const resp = await fetch('http://localhost:3000/api/memory');
const { memory } = await resp.json();
console.log('Current auto-memory →', memory.trim());
As implemented in web/src/lib/run-prompts.mjs lines 54-55, the prompt builder conditionally injects this memory with explicit labeling: "Durable notes about the user (from their profile)." This demarcation prevents confusion with authoritative content.
In-Scope Content Files: The Single Source of Truth
In-scope content files are the exclusive sources for all user-facing prose generation. The system reads these files on every run and never falls back to auto-memory for factual content.
Per AGENTS.md lines 27-30, these include:
| File | Purpose |
|---|---|
cv.md |
Canonical CV with all position descriptions, metrics, and outcomes |
article-digest.md |
Published writing samples and thought leadership |
config/profile.yml |
Personal profile, targeting preferences, compensation data |
modes/_profile.md |
Career archetypes, narrative framing, negotiation scripts |
modes/_custom.md |
Procedural rules specific to your workflow |
voice-dna.md |
Writing style samples for voice matching |
interview-prep/story-bank.md |
Behavioral interview stories with STAR format |
interview-prep/<company>.md |
Company-specific interview preparation |
// Reading an in-scope content file (authoritative source)
import { readFileSync } from 'fs';
const cv = readFileSync('cv.md', 'utf8');
console.log('CV content length:', cv.length);
How the Boundary Enforces Source-of-Truth
The separation operates through three mechanisms in the santifer/career-ops codebase:
1. Prompt Construction Excludes Auto-Memory for Facts
When a mode (e.g., evaluate, pdf, cover) builds its prompt, it explicitly injects in-scope file contents while excluding auto-memory from factual grounding. This guarantees every claim about your experience originates from a file you control and version.
2. Conditional Memory Injection with Clear Labeling
In run-prompts.mjs, the memory string is only added when non-empty, and even then carries explicit framing that distinguishes it from authoritative sources. The /api/memory endpoint returns raw memory content, but the prompt builder governs how (and whether) it influences generation.
3. Safety Guarantees Against Fabrication
Because auto-memory cannot hold CV or achievement data, the system prevents accidental hallucination. Any generation request lacking supporting content in the in-scope files triggers either rejection or a placeholder prompting you to add the missing information.
Practical: Modifying Behavior vs. Modifying Content
The boundary creates two distinct customization paths:
| Goal | Action | Where It Writes | Effect |
|---|---|---|---|
| Change facts, achievements, or narrative | Edit cv.md, modes/_profile.md, or config/profile.yml |
In-scope files | Immediate impact on all generated output |
| Adjust tone, add rules, or remember preferences | Use the remember command | Auto-memory | Persistent across sessions, never appears in output |
// Adding a behavioral rule to auto-memory via CLI
await fetch('http://localhost:3000/api/assistant', {
method: 'POST',
body: JSON.stringify({
kind: 'remember',
input: 'Prefer remote-first roles; avoid onsite interviews',
}),
});
// Updating the tracker (in-scope operation, never touches auto-memory)
import { execSync } from 'child_process';
execSync('node set-status.mjs 123 Applied --note "Sent application"');
Summary
- Auto-memory scope stores behavioral steering data—preferences, rules, and operational state—in
~/.claude/projects/.../memory/or.career-ops-web/memory.md, and never contains factual claims about your work. - In-scope content files like
cv.md,config/profile.yml, andmodes/_profile.mdare the sole source of truth for all generated CVs, cover letters, and application materials. - The
AGENTS.mdspecification in santifer/career-ops enforces this boundary through explicit prompt construction that excludes auto-memory from factual grounding. - Use the remember command to modify behavior; edit in-scope files to modify content.
Frequently Asked Questions
What happens if I put CV content into auto-memory?
The system will ignore it for factual claims. Even if present, auto-memory is explicitly excluded from the source-of-truth pipeline that generates CVs and cover letters. You must place factual content in cv.md or other in-scope files.
Why does the web UI have a separate memory file at .career-ops-web/memory.md?
This provides web-only persistence for users running career-ops without local file system access. It functions identically to the CLI auto-memory: behavioral steering only, no factual content, governed by the same boundary rules in AGENTS.md.
How do I verify which files are currently in-scope for a generation request?
Check AGENTS.md lines 27-30 for the authoritative list. The prompt builder in each mode explicitly loads these files; no others are consulted for factual content.
Can I disable auto-memory entirely?
Yes—an empty or missing memory file simply results in no behavioral steering data being injected. The prompt builder in web/src/lib/run-prompts.mjs conditionally adds memory only when the string is non-empty, so absence has no functional impact beyond losing preference persistence.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →