Conversation
…ry/global/ + clarify skills/private/ semantic (Event 71)
Closes the privatization audit started this session. After Events 65/66
privatized 14 docs/*.md files for operational state + positioning
narrative, the only remaining operator-lived content surface was
core/memory/global/{operator_profile, cognitive_profile, workflow_policy,
agent_feedback}.md — the maintainer's actual filled-in profile data
(cognitive axes, noise signatures, expertise scores, agent-learned
behavioral rules). Privatizing these with the same symlink mechanism +
clarifying the canonical-vs-example pattern in AGENTS.md governance.
Plus: clarify the skills/private/ naming. Pre-flight grep found three
tracked files that document skills/private/ as a sync-exemption boundary
(skills there are tracked publicly but NOT propagated by `episteme sync`),
not as an operator-private content path. Renaming → skills/personal/ would
have broken that contract; instead this commit clarifies the semantic
in-place: `skills/private/` stays, but AGENTS.md / docs/CUSTOMIZATION.md
/ docs/SKILLS_AND_PERSONAS.md now explicitly state it's a sync-exemption
boundary, distinct from operator-private content (which uses the
~/episteme-private/ symlink pattern).
What this commit does:
1. Privatize 4 operator-profile canonicals via Events-65/66 mechanism:
- cp core/memory/global/{operator,cognitive,workflow,agent}*.md
→ ~/episteme-private/core/memory/global/<name>.md (preserved
byte-identical via diff -q)
- git rm 4 canonical files
- Create relative symlinks at canonical paths pointing to
../../../../episteme-private/core/memory/global/<name>.md
- Symlinks resolve transparently for `episteme sync` + ~/.claude/
CLAUDE.md @-imports → operator's session reads real profiles
unchanged
- .gitignore extended with 4 entries under a new Event 71 section
2. Public state for these paths: NO TRACKED FILE. Forks rely on
`episteme init` to seed canonical paths from
core/memory/global/examples/*.example.md (the kernel's pre-existing
example/canonical split). Fork users get clean, generic, identity-
neutral starting templates — better onboarding than copying the
operator's identity-specific real profile.
3. AGENTS.md doc-classification policy gains a new subsection
"Canonical-vs-example pattern (operator profiles in
core/memory/global/)" documenting:
- The privatize-via-symlink pattern matches docs/*.md privatization
- examples/<name>.example.md ships public as the fork-onboarding
starting template
- Operator's lived state is at ~/episteme-private/...; symlinks
resolve transparently
- Why the operator's REAL profile is NOT shipped publicly as an
"example" (operator-specific identity vs sanitized template)
- Special case: agent_feedback.md has no .example.md template
because agent-learned rules are purely operator-lived; forks
initialize empty and accumulate their own.
4. skills/private/ semantic clarification (Option B per operator
authorization):
- AGENTS.md L130: clarify that "private" means local-only sync
exemption, not operator-private content
- docs/CUSTOMIZATION.md L31: same clarification with cross-ref
to AGENTS.md doc-classification policy
- docs/SKILLS_AND_PERSONAS.md L17: same clarification
Operator's session experience: UNCHANGED. Symlinks at canonical paths
resolve to private staging; `episteme sync` + ~/.claude/CLAUDE.md
@-imports continue reading operator's real profiles transparently.
The Event 68 audit-drift re-elicit (asymmetry_posture evidence_refs)
remains intact at the private location.
Fork user experience: BETTER. Fresh clones see no canonical files at
the privatized paths. `episteme init` seeds from examples/ — generic,
identity-neutral, structurally-realistic templates that forks can
edit to make their own. No risk of accidentally importing the
maintainer's cognitive identity by copying canonical content.
Files touched (8):
.gitignore — append 4 entries
AGENTS.md — Safe-to-edit list note (L130)
+ new Canonical-vs-example
subsection in classification
policy
docs/CUSTOMIZATION.md — skills/private semantic note
docs/SKILLS_AND_PERSONAS.md — skills/private semantic note
core/memory/global/operator_profile.md — DELETED (now symlink,
gitignored)
core/memory/global/cognitive_profile.md — DELETED (now symlink,
gitignored)
core/memory/global/workflow_policy.md — DELETED (now symlink,
gitignored)
core/memory/global/agent_feedback.md — DELETED (now symlink,
gitignored)
Soak invariants: ZERO kernel/* / core/hooks/* / core/blueprints/* /
src/episteme/* / tests/* / templates/* / labs/* touches. License
unchanged. Plugin manifests unchanged.
Stacks on origin/master @ f4a02a0. Single commit. PR #30 to follow.
Deferred discoveries (not blocking):
- scripts/restore-private-symlinks.sh (now covers 4+10+4=18
privatized symlinks). Operator-driven post-soak.
- Verify `episteme init` actually seeds canonical paths from
examples/*.example.md (assumed by this Event; verify post-merge).
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Closes the privatization audit started this session. After Events 65/66 privatized 14
docs/*.mdfiles for operational state + positioning narrative, the only remaining operator-lived content surface wascore/memory/global/{operator_profile, cognitive_profile, workflow_policy, agent_feedback}.md— the maintainer's actual filled-in profile data (cognitive axes, noise signatures, expertise scores, agent-learned behavioral rules). Privatizing these with the same symlink mechanism + clarifying the canonical-vs-example pattern inAGENTS.mdgovernance.Plus: clarify the
skills/private/naming. Pre-flight grep found three tracked files that documentskills/private/as a sync-exemption boundary (skills there are tracked publicly but NOT propagated byepisteme sync), not as an operator-private content path. Renaming →skills/personal/would have broken that contract; instead this commit clarifies the semantic in-place (Option B per operator authorization).Pre-flight discipline note
Operator initially called the
skills/private/rename "just a naming quirk" and authorized →skills/personal/. Pre-flightgit grepsurfaced 3 tracked cross-refs documentingskills/private/as a load-bearing sync-exemption boundary. Surfaced finding to operator → revised authorization to Option B (clarify-in-place, don't rename). The kernel's loss-averse posture working as designed; theasymmetry_postureaudit is now firing in both directions across recent Events.What this commit does
1. Privatize 4 operator-profile canonicals (Events-65/66 mechanism)
core/memory/global/operator_profile.mdcp→~/episteme-private/...,git rm, symlinkcore/memory/global/cognitive_profile.mdcore/memory/global/workflow_policy.mdcore/memory/global/agent_feedback.mdSymlinks resolve transparently — verified via
head -1on each path returns the expected real-profile heading (# Operator Profile,# Cognitive Profile, etc.).2.
.gitignore— 4 new entriesUnder a new "Privatized operator-profile canonicals (Event 71)" section. Symlinks at canonical paths float untracked; public commit captures pure deletion.
3.
AGENTS.md— Doc classification policy extensionNew subsection "Canonical-vs-example pattern (operator profiles in
core/memory/global/)" under the existing classification policy. Documents:docs/*.mdprivatizationexamples/<name>.example.mdships PUBLIC as the fork-onboarding starting template~/episteme-private/; symlinks resolve transparentlyagent_feedback.mdhas no.example.mdtemplate (purely operator-lived; forks initialize empty + accumulate)4.
skills/private/semantic clarification (Option B)Three files updated to clarify that
skills/private/is a sync-exemption boundary (skills tracked publicly but not propagated byepisteme sync), distinct from operator-private content (which uses the~/episteme-private/symlink pattern):AGENTS.mdL130 (Safe-to-edit-freely list)docs/CUSTOMIZATION.mdL31docs/SKILLS_AND_PERSONAS.mdL17skills/private/skill-lab-autoresearch/directory NOT renamed. The "private" name is load-bearing.Operator session experience: UNCHANGED
Symlinks at canonical paths resolve to private staging.
episteme sync+~/.claude/CLAUDE.md@-imports continue reading the operator's real profiles transparently. The Event 68 audit-drift re-elicit (asymmetry_postureevidence_refs) remains intact at the private location.Fork user experience: BETTER
Fresh clones see no canonical files at the privatized paths.
episteme initseeds fromexamples/— generic, identity-neutral, structurally-realistic templates. No risk of accidentally importing the maintainer's cognitive identity by copying canonical content.Files in scope (8)
Soak invariants
ZERO
kernel/*/core/hooks/*/core/blueprints/*/src/episteme/*/tests/*/templates/*/labs/*touches. License unchanged. Plugin manifests unchanged. Kernel pre-commit chain (reviewer + test-runner agents) validated.Held to Day-7+ (still pending)
git filter-repodecision (baseline NEGATIVE — likely unnecessary)Deferred discoveries (logged for v1.0.1, not blocking)
scripts/restore-private-symlinks.sh— now covers 4 + 10 + 4 = 18 privatized symlinks. Operator-driven post-soak. Increasing utility with each Event that adds symlinks.Verify
episteme initseeds canonical paths fromexamples/*.example.md— this Event ASSUMES init does this; if not, fork onboarding for these 4 paths breaks until the CLI is patched. Verify post-merge by runningepisteme initin a fresh project (or readsrc/episteme/cli.py_init_memorydirectly). If missing, log as v1.0.1 CLI fix CP candidate.agent_feedbacktemplate gap — noexamples/agent_feedback.example.mdexists. Acceptable per the Canonical-vs-example subsection rationale (agent-learned rules are operator-lived; forks initialize empty). If forks find this confusing, add a stub template in v1.0.1.Test plan
git diff master..HEAD --name-onlymatches exactly 8 files (no kernel/hot-path)head -1 core/memory/global/operator_profile.mdreturns# Operator Profile(symlink resolves to operator's real profile)git status --ignoredshows the 4 canonical paths under "ignored"cat .gitignore | grep -A 5 'Event 71'shows the 4 new entries with the explanatory comment blockskills/private/skill-lab-autoresearch/SKILL.mdstill exists (not renamed)episteme init→ check ifcore/memory/global/{operator,cognitive,workflow,agent}*.mdget seeded from examples/ (deferred discovery chore(master): release episteme 1.1.0-rc1 #2)