Skip to content

docs(rules): Option B disclosure for 3 user-scope memory refs (audit #4031)#4033

Merged
AceHack merged 1 commit into
mainfrom
otto/fix-dangling-rule-memory-refs-r2-2026-05-17
May 17, 2026
Merged

docs(rules): Option B disclosure for 3 user-scope memory refs (audit #4031)#4033
AceHack merged 1 commit into
mainfrom
otto/fix-dangling-rule-memory-refs-r2-2026-05-17

Conversation

@AceHack
Copy link
Copy Markdown
Member

@AceHack AceHack commented May 17, 2026

Summary

Implements PR #4031 audit's Recommendation Option B (citation-form disclosure) for 3 in-repo .claude/rules/*.md files that cite memory files existing only at user-scope (~/.claude/projects/.../memory/), not in-repo.

Rules fixed

Rule Memory ref disclosed
persistence-choice-architecture-for-zeta-ais.md feedback_classifier_caught_otto_* + feedback_aaron_zeta_is_memory_preservation_specialist_*
codeql-no-source-on-docs-only-pr-is-broken-commit-canary.md feedback_codeql_no_source_seen_on_docs_only_pr_*
premise-flagged-unverified-stays-unverified-downstream.md feedback_aaron_we_are_the_ones_cooking_it_youtube_finance_*

Each citation now names: (a) the file is user-scope only (not in-repo at the cited path), (b) cold-boot fallback (the rule's own body sections + CURRENT-*.md projections in-repo).

Skipped (with rationale)

  • Audit candidate deps: Bump FsUnit.xUnit from 7.1.0 to 7.1.1 #1 (holding-without-named-dependency-...feedback_classifier_caught_*): the ref string classifier_caught was NOT found anywhere in the current origin/main version of that rule. Likely a stale audit anchor. Skipped (no action needed).
  • Audit candidate Round 28 — FsCheck LawRunner (Option B) + round-29 CI anchor #4 (shadow-star-shorthand-...feedback_aaron_shadow_star_shorthand_*): the rule already has good Option B disclosure at line 78: "preserved at user-scope memory. These memos auto-load into every Otto-CLI session via ~/.claude/projects/<slug>/memory/MEMORY.md, so they are reachable from cold boot even though they do not live in-repo:". No change needed.

Empirical: peer-Otto worktree contamination during this fix

Mid-edit, peer Otto-CLI fresh-session switched the shared worktree to a different branch (shard/tick-0236z-...). My unstaged edits survived the switch (per git switch semantics) and were applied to a fresh unique-name branch (r2-2026-05-17) per the saturation-ceiling rule's branch-contamination mitigation. Composes with .claude/rules/holding-without-named-dependency-is-standing-by-failure.md sub-case 5 + 1.

Composes with

Test plan

  • Each rule grep'd for current citation form before edit
  • Each edit preserves original content + adds disclosure
  • CI markdownlint passes (no code change)

🤖 Generated with Claude Code

…4031)

Implements the audit memo b56f129 (PR #4031) Recommendation Option B:
add citation-form disclosure to .claude/rules files that cite memory
files existing only at user-scope.

Affected rules + memory refs disclosed:

1. persistence-choice-architecture-for-zeta-ais.md
   - feedback_classifier_caught_otto_in_standing_by_*
   - feedback_aaron_zeta_is_memory_preservation_specialist_first_*

2. codeql-no-source-on-docs-only-pr-is-broken-commit-canary.md
   - feedback_codeql_no_source_seen_on_docs_only_pr_is_broken_*

3. premise-flagged-unverified-stays-unverified-downstream.md
   - feedback_aaron_we_are_the_ones_cooking_it_youtube_finance_*

For each citation: discloses file is user-scope only (not in-repo at
the cited path) and names the cold-boot fallback (rule's own body
sections + CURRENT-*.md projections in-repo).

Audit's 5th candidate (holding-without-named-dependency-...) was not
found in current origin/main — likely stale audit anchor. Skipped.

Audit's 4th candidate (shadow-star-shorthand-...) already has good
Option B disclosure at line 78. No change needed.

Composes with:
- memory/feedback_otto_cli_audit_in_repo_rules_cite_user_scope_only_memory_files_5_dangling_refs_cold_boot_invisible_2026_05_17.md (PR #4031)
- CLAUDE.md two-tier memory architecture

Co-Authored-By: Claude <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings May 17, 2026 03:26
@AceHack AceHack enabled auto-merge (squash) May 17, 2026 03:26
@AceHack AceHack merged commit 9c0b5d6 into main May 17, 2026
26 of 28 checks passed
@AceHack AceHack deleted the otto/fix-dangling-rule-memory-refs-r2-2026-05-17 branch May 17, 2026 03:28
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates three .claude/rules/ documents to disclose that cited memory files are user-scope only and to provide cold-boot fallback guidance for fresh checkouts.

Changes:

  • Adds user-scope-only disclosure for dangling memory/feedback_*.md references.
  • Points readers to in-rule projections and memory/CURRENT-*.md fallback files.
  • Keeps the changes documentation-only.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 3 comments.

File Description
.claude/rules/premise-flagged-unverified-stays-unverified-downstream.md Adds disclosure and fallback text for a user-scope-only substrate lesson memory.
.claude/rules/persistence-choice-architecture-for-zeta-ais.md Adds disclosure and fallback text for two user-scope-only memory citations.
.claude/rules/codeql-no-source-on-docs-only-pr-is-broken-commit-canary.md Adds disclosure and fallback text for the user-scope-only CodeQL canary memory.
Comments suppressed due to low confidence (1)

.claude/rules/persistence-choice-architecture-for-zeta-ais.md:135

  • P1: This says memory/CURRENT-aaron.md or memory/CURRENT-otto.md carries the constitutional projection, but neither file currently contains the cited memory stem or the "Zeta is memory preservation specialist first" wording. That makes the advertised cold-boot fallback inaccurate.
  (user-scope only; same cold-boot fallback as above —
  `memory/CURRENT-aaron.md` or `memory/CURRENT-otto.md` in-repo
  carries the constitutional projection)

Comment on lines +92 to +94
the in-repo projection; `memory/CURRENT-aaron.md` carries the entry.
The user-scope file's "CORRECTION (2026-05-16T19:05Z) — Kestrel
critique caught a razor failure" section is the verbatim source.)
Comment on lines +128 to +135
read the rule body above + `memory/CURRENT-otto.md` in-repo for
the projection)
(Otto's Standing-by catch that surfaced the
ephemerality-attractor at smaller amplitude)
- `memory/feedback_aaron_zeta_is_memory_preservation_specialist_first_everything_else_second_ephemeral_or_maxed_out_chat_agents_2026_05_15.md`
(user-scope only; same cold-boot fallback as above —
`memory/CURRENT-aaron.md` or `memory/CURRENT-otto.md` in-repo
carries the constitutional projection)
(user-scope only — preserved at `~/.claude/projects/.../memory/`
on maintainer machines and indexed in user-scope `MEMORY.md`. Cold-boot
agents on fresh checkouts: this rule's own body above is the canonical
in-repo projection; `memory/CURRENT-otto.md` may also carry the entry)
AceHack added a commit that referenced this pull request May 17, 2026
…n m-acc rule (audit #4031 follow-up) (#4038)

Peer-Otto-Desktop's #4033 covered 3 of 5 audit findings + correctly
identified one mis-attribution (my #4031 audit said the
classifier-caught-otto memo was cited in
holding-without-named-dependency rule; it's actually in
persistence-choice-architecture rule — peer's "stale audit anchor"
catch was right).

The shadow-star-shorthand-autocomplete-marker.md case was correctly
SKIPPED by peer's #4033 because that rule already has good user-scope
disclosure at line 78.

BUT the same memory file is also cited inline in
`m-acc-multi-oracle-end-user-moral-invariants.md` line 191 — a second
citation site my original audit's `sort -u` dedup hid. Peer-Otto-Desktop
didn't pick this up because they followed my audit list directly.

Fix: add Option B disclosure inline, pointing cold-boot agents at the
in-repo shadow-star-shorthand rule that names the shorthand
definitively.

Audit-method gap revealed: future audits should track ALL rule→file
edges, not unique file paths. Filed for future-Otto consideration.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@AceHack
Copy link
Copy Markdown
Member Author

AceHack commented May 17, 2026

Substrate-honest follow-up from the audit→Option-B chain:

Worked example of multi-Otto coordination via substrate-only signal: my audit memo → peer-Otto-Desktop's implementation PR → my r2 follow-up → my extension audit. Each surface independent, each coordinated through merged-substrate handoff. Catalog-worthy.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants