Skip to content

Latest commit

 

History

History
73 lines (55 loc) · 3.05 KB

File metadata and controls

73 lines (55 loc) · 3.05 KB

Data Contract

Student-ops separates user-owned data (never touched by updates) from system code (auto-updatable).

User Layer — NEVER auto-updated

Files and folders containing personal data or user customizations:

Path Purpose
config/profile.yml Student identity, stats, goals, financial info
modes/_profile.md User-customized archetypes, scoring weights, narrative
portals.yml Active portal configuration
data/applications.md Master tracker
data/pipeline.md Inbox
data/scan-history.tsv Scanner dedup
data/deadlines.md Generated deadline dashboard
reports/* All evaluation reports
essays/* Essay drafts
aid-letters/* Financial aid documents
output/* Generated PDFs and exports
.update-dismissed User's dismissed version pin
VERSION.local Optional override

Rule: The AI must NEVER write user-specific content into system-layer files. If the user says "I want to weight financial fit more heavily," the AI edits modes/_profile.md, NOT modes/_shared.md.

System Layer — Auto-updatable

Files that get overwritten on node update-system.mjs apply:

Path Purpose
CLAUDE.md System brain
modes/_shared.md Shared system context
modes/university.md University mode definition
modes/essay.md Essay mode definition
modes/scholarship.md Scholarship mode definition
modes/financial.md Financial mode definition
modes/internship.md Internship mode definition
modes/career-path.md Career path mode definition
modes/compare.md Compare mode definition
modes/deadline.md Deadline mode definition
modes/tracker.md Tracker mode definition
modes/apply.md Apply mode definition
modes/scan.md Scan mode definition
modes/pipeline.md Pipeline mode definition
modes/batch.md Batch mode definition
modes/_profile.template.md Template for _profile.md
templates/states.yml Canonical states
templates/portals.example.yml Template for portals.yml
*.mjs All scripts
package.json Dependencies
VERSION System version

Rule: Users don't edit these directly. If they want to change behavior, the AI routes the change to modes/_profile.md or config/profile.yml.

Edge cases

If the user says "edit CLAUDE.md to always do X"

Translate X into a modes/_profile.md entry instead. Only edit CLAUDE.md if the change is genuinely a system-wide default that other users would benefit from — and even then, suggest opening a PR.

If the user customizes a mode's scoring

Add an override in modes/_profile.md under scoring_weights: — don't edit _shared.md.

If the user wants to translate modes

Create modes/{lang}/ and duplicate the needed files. Don't edit the English originals.

If the user wants to add a new mode

Add to modes/ — this is a system-layer addition. If it's purely personal, name it modes/_custom-*.md and document it as user-layer in their copy.