Skip to content

memory: cache-paths-mutually-exclusive-with-git-ls-files discipline (silent-clobber bug class)#1407

Merged
AceHack merged 2 commits intomainfrom
memory/cache-paths-mutually-exclusive-with-git-ls-files-discipline
May 3, 2026
Merged

memory: cache-paths-mutually-exclusive-with-git-ls-files discipline (silent-clobber bug class)#1407
AceHack merged 2 commits intomainfrom
memory/cache-paths-mutually-exclusive-with-git-ls-files-discipline

Conversation

@AceHack
Copy link
Copy Markdown
Member

@AceHack AceHack commented May 3, 2026

Summary

Durable substrate for the discipline rule surfaced this session via the cache-clobber discovery cluster (#1403 + #1404 + #1406). Closes the chat→substrate encoding loop per substrate-or-it-didn't-happen.

Carved sentence (for retrieval)

actions/cache paths must be mutually exclusive with git ls-files — cache only DERIVED files (downloaded jars, built artefacts, user-home tool state), never source-controlled content.

Memory file structure

  • Rule (carved sentence)
  • Why this is load-bearing (silent + invisible failure mode)
  • Triggering case (CircuitRegistration B-0180; verbatim error text)
  • How to apply (3 layers: workflow-author-time + verify-then-claim-time + structurally enforced via audit + lint gate)
  • Composes with (DST + verify-then-claim + test-fidelity contract + CI-on-CI audit pattern)
  • Tooling lineage (4 substrate refs)
  • Future-Otto reference (when-tempted + when-CI-fails)
  • Reasoning lineage (Aaron's "lucky catch" question 2026-05-03)

Test plan

  • §33 archive-header lint passes (memory file is not a courier-ferry)
  • Memory-references lint passes (788 refs resolve, 0 broken)
  • MEMORY.md pointer added newest-first

🤖 Generated with Claude Code

…silent-clobber bug class)

Captures the durable substrate for the discipline rule the session
surfaced via the CircuitRegistration cache-clobber discovery
(#1403 + #1404 + #1406):

  *actions/cache paths must be mutually exclusive with git ls-files —
   cache only DERIVED files (downloaded jars, built artefacts,
   user-home tool state), never source-controlled content.*

Memory file structure (per chat-is-assertion-channel discipline +
substrate-or-it-didn't-happen):

- Rule (carved sentence)
- Why this is load-bearing (the silent + invisible failure mode)
- Triggering case (CircuitRegistration B-0180 fix; verbatim error
  text)
- How to apply (3 layers: workflow-author-time + verify-then-claim-
  time + structurally enforced via audit + lint gate)
- Composes with (DST + verify-then-claim + test-fidelity contract +
  CI-on-CI audit pattern)
- Tooling lineage (4 substrate refs)
- Future-Otto reference (when-tempted + when-CI-fails)
- Reasoning lineage (Aaron's 'lucky catch' question)

MEMORY.md updated with newest-first pointer.

Composes with the earlier cluster (#1403 cache fix + #1404 audit
tool + #1406 CI lint gate) — this memory file is the chat→substrate
discipline-encoding step that closes the loop.
Copilot AI review requested due to automatic review settings May 3, 2026 13:28
@AceHack AceHack enabled auto-merge (squash) May 3, 2026 13: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 adds a new durable memory entry capturing the recently surfaced CI cache-clobber discipline: actions/cache paths must never overlap git-tracked files. It fits the codebase’s memory/substrate system by turning a production-relevant CI failure class into a documented, indexed rule that future work can retrieve.

Changes:

  • Adds a new memory/feedback_*.md file documenting the silent cache-clobber failure mode, triggering case, enforcement path, and related tooling.
  • Updates memory/MEMORY.md newest-first index so the new memory is discoverable from the main memory entrypoint.

Reviewed changes

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

File Description
memory/feedback_actions_cache_paths_mutually_exclusive_with_git_ls_files_silent_clobber_class_aaron_2026_05_03.md Adds the new carved memory documenting the cache-paths-vs-git ls-files rule and its rationale.
memory/MEMORY.md Adds the corresponding top-of-index pointer so the new memory is reachable from the main memory registry.

…n — usage-bug not GitHub-bug

Aaron 2026-05-03: 'is the a real github bug or was a bug in our code?'

Honest answer: NOT a GitHub bug, IS a bug in our workflow config.
actions/cache does exactly what its docs promise — restores cached
files at the configured paths. We asked it to cache a path that
contained source-controlled files; it did. The fix is on our side:
narrow the cache path.

Added 'Bug-locus disambiguation' section to the memory file
clarifying:
- This is a usage bug in workflow configuration, not a tool bug
- The existing actions/cache behavior is documented
- A reasonable upstream feature request (warn-on-overlap-with-git)
  would be an enhancement, not a bug fix

Future-Otto reading this memory: don't pattern-match the discovery
as 'GitHub broken' when reaching for the discipline. The structural
fix (audit + lint gate) is correct because OUR usage was wrong, not
because the action was wrong.
@AceHack AceHack merged commit 52661d7 into main May 3, 2026
24 checks passed
@AceHack AceHack deleted the memory/cache-paths-mutually-exclusive-with-git-ls-files-discipline branch May 3, 2026 13:32
AceHack added a commit that referenced this pull request May 3, 2026
…ster + cache-clobber discipline encoded (#1408)

Substantial multi-tick session shard. 18 PRs touched (#1383 + #1387
+ #1392-#1407 inclusive); 14 merged + 4 in-flight as of shard time.

**Math-proofs assessment progress** (#1383 outstanding-work matrix):
- A1+A2 → A-with-CI ✓ (#1394 Lean lake-build workflow)
- A4 registry rows ✓ (#1393)
- B1 → 2 of 4 deferred specs in CI ✓ (#1397 DbspSpec + #1401
  CircuitRegistration B-0180 closed)
- B2 Alloy → A ✓ (#1396 silent-no-op spec-path fix)
- B4 Semgrep → A ✓ (correction)
- Peer-review email template ✓ (#1387)
- Phase 0 substrate-discovery PoC ✓ (#1392)
- Stryker config-fix ✓ (#1395; CI wire deferred)
- 3 broken-spec backlog rows filed ✓ (#1398)

**Cache-clobber silent-bug class discovered + fully encoded:**
B-0180 fix passing locally + failing CI → verify-then-claim
identified gate.yml + low-memory.yml caching whole tools/tla and
tools/alloy directories. Fix cluster: #1403 (gate.yml) + #1404
(low-memory.yml + audit-ci-cache-paths.ts) + #1406 (CI lint gate)
+ #1407 (memory file + bug-locus disambiguation per Aaron's 'real
github bug?' question — answer: usage-bug, not tool-bug).

**Other substrate work:** #1399 BACKLOG.md regen, #1400 .ts/.sh
parity bug, #1402 assessment matrix doc update, #1405 B-0182
backlog row (Linux-only formal verification — orthogonal-axes
split per Aaron 2026-05-03).

**Discipline lessons captured:** chat-is-assertion-channel,
substrate-corrections-cluster, search-first-before-architectural-
expansion, verify-then-claim CI fidelity, documentation-is-
current-state-not-history.

Carved sentence: 'When a lucky catch surfaces a class of bug,
build the structural fix that eliminates the luck — audit + lint
gate + carved-sentence rule + memory file.'
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