Repository navigation
Take down deleted learnings, and sync each turn - #674
Conversation
🌱 graft blast radius3 areas changed → 6 areas can be affected. 65 dependent symbols, depth 2. flowchart TB
A0(("Skill State Management<br/>36 symbols"))
A1(("Initialization<br/>9 symbols"))
A2(("Claude Integration<br/>8 symbols"))
A3(("Trace Logging<br/>7 symbols"))
A4(("Cloud Pairing<br/>3 symbols"))
AX(("1 smaller area<br/>2 symbols"))
classDef reached fill:#D9EDF3,stroke:#3AA7C9,stroke-width:1.5px,color:#0E313C;
class A0,A1,A2,A3,A4 reached;
classDef tail fill:#EEF2F3,stroke:#9AA4A9,stroke-width:1px,color:#3A4247;
class AX tail;
Who knows this code — 2 people across 9 areas
Ownership is git history over each area's own files, weighted towards recent work (120-day half-life). Merge commits and bots are dropped, and you are dropped from your own PR. A name with no All 65 dependent symbols, grouped by areaSkill State Management — 36 symbols in 13 files
Initialization — 9 symbols in 7 files
Claude Integration — 8 symbols in 7 files
Trace Logging — 7 symbols in 5 files
…5 further symbols not listed. Test signal per changed area — 2 ✓ · 1 ⚠Reached = a node under a test path has a resolved edge into the changed symbol. It undercounts anything called indirectly — through a CLI, a spawned process or a dynamic import — so read a low ratio as “look here”, never as a coverage gate.
65 test suites also reference this code85 symbols, kept out of the diagram and the table so they cannot crowd out the areas a reviewer has to look at.
Open the interactive graph → — click an area to see its dependent symbols at file:line. |
Rebuilt on main, which now uploads only learnings committed at HEAD and already keeps secret-looking ones local. What was still missing: - A learning or skill HEAD had at the last sync on the same branch, and no longer has (deleted, or now left out for a secret), is sent as removed, so it comes down from the web. Switching branches never takes anything down. The count left out for a secret goes up as held. - The Stop hook starts a background sync, so a learning committed mid-session, and the turn's skill runs and searches, reach the team at the end of the turn, not at the next session. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
86ae818 to
4269193
Compare
On Windows, opening a lock file another process is deleting fails with EPERM or EBUSY (delete pending), not EEXIST. withLock threw on it, which failed the concurrent skills.json test on Windows CI two runs in three, and can drop a real user's skill update. Treat it as a held lock. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Rebuilt on current main. Main now uploads only learnings committed at HEAD and already keeps learnings that look like they hold a secret on the laptop, so this PR is just the two pieces that were still missing.
What changes
removed. That covers a deleted file, and one now kept back because it looks like it holds a secret. Switching branches never takes anything down.held, so the server can show it.The server already accepts
removedandheld.Also: a Windows lock fix. On Windows, opening a lock file that another process is still deleting fails with EPERM or EBUSY instead of EEXIST, and
withLocktreated that as an error. That broke the "real processes writing skills.json" test on Windows CI in 2 of 3 runs, and it can drop a real user's skill update. It's now treated as a lock someone else holds (Windows only), with a unit test intest/lock-held.test.ts.Tested
test/trail-cloud.test.ts:kept), then deleted it, committed and synced again (statusremoved).🤖 Generated with Claude Code