Merged
Conversation
… index injection - setup.ts: scaffold .walnut/ not .alive/ for new users - index.ts: walnut_create puts _capsules/ inside _core/ not walnut root - index.ts: walnut_capture success message includes _core/ prefix - session-new.sh: read world index from .walnut/_index.yaml not .alive/ Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ect cache path - log-guardian: match both squirrel: and walnut-mcp: signature formats - rules-guardian: cache path updated from alivecomputer to stackwalnuts Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Cache path: stackwalnuts/walnut/1.0.0 - Marketplace path: stackwalnuts/plugins/walnut - Gracefully skip missing directories instead of erroring Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…tackwalnuts - Issue template: discussions URL → stackwalnuts/walnut - Feature request: alive:save → walnut:save - Funding: alivecomputer.com → walnut.world - PR template: ALIVE session → walnut session Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ted to walnut - CLAUDE.md: # ALIVE → # Walnut - setup.md: "installed alive" → "installed Walnut" - extend skill: contributor@alivecomputer → contributor@stackwalnuts (3 places) - history skill: alivecomputer.com → walnut.world in demo output - Hermes skill: "Load ALIVE walnut" → "Load walnut" in description Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…amework name Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…onfig templates - git mv templates/alive → templates/world - squirrels.md: template path reference updated - setup.md: 3 template path references updated - world/key.md: example repo URL → stackwalnuts/walnut Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- PLUGIN_DIR: plugins/alive → plugins/walnut - Label: ALIVE → Walnut - Template dirs: alive → world (matches directory rename) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The cherry-pick captured the reference updates but not the directory rename. This commit completes the rename: templates/alive/ → templates/world/. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…-target - Replace broken macOS sed with python3 shlex for path extraction - Rename files to "(Marked for Deletion)" instead of hard deny - Process ALL targets, not just first match - Distinct messages for renamed vs not-found targets - Opens Finder at target directory for manual review Ported from will/statusline-and-stash-fixes (commits 2211200, 6df7bc8, e65a7e9) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…, self-save fix - Add context % re-injection at 20/40/60/80% thresholds - 40% and below: condensed refresh (core behaviours only) - 60%+: full refresh with world key and index - Add active squirrel stash cross-pollination (saves:0 gate) - Fix self-save false alert: check both full UUID and 8-char prefix - Highest-first threshold firing (80→60→40→20) with mark-all-below Ported from will/statusline-and-stash-fixes (commits 2211200, d3cf116) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
… path - Creates settings.json with statusLine if missing - Self-heals existing settings.json: checks if statusLine.command matches expected absolute path, corrects if not - Covers: fresh install, missing statusLine key, stale relative path Ported from will/statusline-and-stash-fixes (commits 2211200, 6df7bc8, b9c27d8) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ne self-heal - Resume: add statusline settings.json self-heal (absolute path, same as session-new) - Resume + Compact: gate stash extraction on saves: 0 — entries with saves > 0 have already routed their stash, so those items are historical records, not unfinished work. Prevents false "previous session had stash" messages. Ported from will/statusline-and-stash-fixes (commits 6df7bc8, b9c27d8) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…s:0 recovery - Instinct #10: Load on First Walnut Mention — auto-load when walnut mentioned by name, cross-reference if already loaded - Instinct #11: Trust the Context Window — never suggest ending session based on token anxiety, compaction is not a crisis (made model-agnostic: removed "1M tokens" claim from original) - Save guard: removed "context is compacting" as a save trigger - Unsigned entry recovery: requires saves: 0 — entries with saves > 0 have already routed their stash Ported from will/skill-routing-improvements (164402c) and will/statusline-and-stash-fixes (d75f88c, b9c27d8) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…reate updates key.md - World skill: read <WORLD_INDEX> from session context first (zero file reads), fall back to .walnut/_index.yaml, then generate-index.py, then manual scan - World skill: lightweight fresh checks via single Bash commands - World skill: index freshness simplified — auto-regeneration by post-write hook - Post-write hook: detect _core/now.md writes, regenerate index in background with 5-min debounce - Create skill: Step 10 — update .walnut/key.md Connections when scaffolding Ported from will/world-skill-index-and-post-save-hook (9aaf2dc, 5b2397c) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- load skill: broaden description to match natural walnut mentions - history skill: add "revive" to description for heavy revive routing - CLAUDE.md: add /walnut:capsule to skill list (Thirteen Skills) - CLAUDE.md: fix read sequence numbering (7→9 → 7→8) - hooks.json: description count 13→14 Ported from will/skill-routing-improvements (164402c) and 6df7bc8 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Post-write hook: use GNU/BSD stat sniff (matching context-watch pattern) instead of macOS-only stat -f%m. Prevents debounce failure on Linux. - Setup.md: "No ALIVE folders" → "No .walnut/ folder" to match runtime. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
benslockedin
pushed a commit
that referenced
this pull request
Mar 27, 2026
Brand: alive → Walnut. Org: alivecomputer → stackwalnuts. Plugin name: walnut. Namespace: walnut:*. System folder: .alive/ → .walnut/ Skill renames (descriptive names): - load → load-context, capture → capture-context - find → search-world, create → create-walnut - tidy → system-cleanup, tune → settings - history → session-history, mine → mine-for-context - map → my-context-graph, capsule → capsule-manager - extend → build-extensions New skills: - session-context-rebuild — agent swarm to rebuild context from multiple sessions - migrate-alive-to-v1 — auto-migration from alive to walnut All skills carry full lineage in descriptions (prev. names). Auto-migration in session-new hook: .alive/ → .walnut/ on first run. Merged Will's port-unmerged-fixes (PR #25). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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
Ports functional fixes from 3 old branches that referenced dead
plugins/alive/paths. Rebasing wasn't viable (86-file monorepo restructure = too many conflicts), so these are fresh commits re-applying the functional changes toplugins/walnut/paths.Depends on: PR #23 (rename sweep) — merge that first, then rebase this on top.
Source branches
will/skill-routing-improvements— skill description + CLAUDE.md routing fixeswill/world-skill-index-and-post-save-hook— world skill reads injected index, post-write hook auto-regenerates indexwill/statusline-and-stash-fixes— statusline absolute path, stash saves:0 gate, archive enforcer rewrite, context-watch thresholdsWhat changed (9 commits, 14 files)
Commit 1: Archive Enforcer (CRITICAL)
File:
walnut-archive-enforcer.sh\band\ssilently fail on BSD sed)&&,;,|)Commit 2: Context Watch (CRITICAL)
File:
walnut-context-watch.sh.walnut/.context_pct(written by statusline on every render).walnut/key.md+.walnut/_index.yaml)ended: null,saves: 0(genuinely unsaved)now.mdsquirrel fieldCommit 3: Session New — Statusline Injection (HIGH)
File:
walnut-session-new.shstatusLineinto.claude/settings.jsonwith absolute pathCommit 4: Session Resume + Compact — Stash Gate (HIGH)
Files:
walnut-session-resume.sh,walnut-session-compact.shsaves: 0gate on stash extraction — entries withsaves > 0have already routed their stashCommit 5: Statusline (HIGH)
File:
walnut-statusline.shd.get('cost') or {}instead ofd.get('cost', {})— handles JSONnull.walnut/.context_pctfor context-watch threshold injectionCommit 6: Squirrels Rule (HIGH)
File:
rules/squirrels.mdwalnut:loadwhen a walnut is mentioned by name (not just explicit "load X")saves: 0to match the hook implementationsCommit 7: World Skill + Post-Write Hook + Create Skill (HIGH + MEDIUM)
Files:
world/SKILL.md,walnut-post-write.sh,create/SKILL.md<WORLD_INDEX>from session context first (zero file reads) — fallback chain: injected index →.walnut/_index.yaml→generate-index.py→ manual scan_core/now.mdwrites (only written by save), regenerates world index in background with 5-minute debounce.walnut/key.mdConnections when creating a new walnutCommit 8: Skill Descriptions + CLAUDE.md (MEDIUM + LOW)
Files:
load/SKILL.md,history/SKILL.md,CLAUDE.md,hooks.json/walnut:capsuleto skill list (Twelve → Thirteen Skills), fixed numbering (9 → 8)Commit 9: Review fixes (LOW)
Files:
walnut-post-write.sh,world/setup.mdstatguard (GNU/BSD sniff) matching context-watch pattern — prevents debounce failure on Linux.walnut/folder exists" to match runtime behaviourReview approach
The capsule at
04_Ventures/alive-os/_core/_capsules/branch-port-review/companion.mdhas full review instructions, but the quick version:Verification
plugins/alivepath references1M tokenmodel-specific claims in rules/skillsKnown gap (pre-existing, not introduced by this PR)
walnut-session-resume.shdoesn't inject the world key or<WORLD_INDEX>— session-new does. This means the world skill's "read injected index first" strategy falls through to file reads on resumed sessions. Not blocking for this PR but worth addressing separately.Test plan
./deploy.shrmon a World file — should rename to "(Marked for Deletion)" and open Finder<WORLD_INDEX>from context (no file reads on first call)🐿️ Generated with Claude Code