From 52cfc33c88156be6e6bbc352ac03f3c0cf738fd1 Mon Sep 17 00:00:00 2001 From: "will.anderson" Date: Sun, 23 Aug 2026 02:35:00 -0500 Subject: [PATCH] wire THE LIST, RULES, WILL'S WORDS into every session; volatility layout; doc audit --- docs/architecture/README.md | 27 +++++++----- packages/neuron/src/session/context.ts | 6 +++ .../neuron/src/session/prompt/THE-RULES.md | 3 ++ .../neuron/src/session/prompt/WILLS-WORDS.md | 43 +++++++++++++++++++ 4 files changed, 68 insertions(+), 11 deletions(-) create mode 100644 packages/neuron/src/session/prompt/WILLS-WORDS.md diff --git a/docs/architecture/README.md b/docs/architecture/README.md index 3cd0e52e9f..dbc6c8e2b3 100644 --- a/docs/architecture/README.md +++ b/docs/architecture/README.md @@ -244,6 +244,8 @@ rather than degrading silently. WebSocket transport must not downgrade. Neuron's own wire dialects (see §7) implement the HTTP surface directly. +--- + ## 6. Config (v2 review outcomes) Keep: `$schema` (read-only), `shell`, `autoupdate` (global-only), @@ -254,6 +256,8 @@ Remove: `logLevel`, `server` block, `command` (named workflows belong to skills). Legacy prompt shell expansion and per-command overrides are not ported; such capabilities belong to their owning domains. +--- + ## 7. Wire Dialects (Neuron-native transport) No vendor SDK participates. One dialect per wire protocol, pure HTTP: @@ -272,6 +276,8 @@ events`. Every byte on the wire is visible in this folder. This implements the catalog's endpoint union natively and replaces vendored SDK adapters turn by turn. +--- + ## 8. Orchestration (Rung 1+) Six beats: ASSIGN → DECLARE → CLEARANCE → EXECUTE → REPORT → RECOVER. @@ -295,6 +301,8 @@ find yourself doing that, the decorator doesn't exist yet — write it once, decorate everywhere. Hand-scattered plumbing is the smell; a named stage reused by decoration is the pattern. +--- + ## 9. The Opinion Substrate (one mechanism, many aspects) > Status: DESIGN AGREED whiteboard session, 2026-08-23. Pre-implementation. @@ -400,7 +408,8 @@ A system of clocks needs a sense of time, and wall-time alone is dead. clock.** last-activated, last conversation, event density, gaps-as-sleep. Don't give the system time-sense; let it infer one from its own pulse. -The pulse is two-tier so the database stays lean: +The pulse is two-tier so the database stays lean (promotion writes through +as a third tier): 1. **The float** — rolling telemetry (~one month horizon) held OUTSIDE the graph: cheap `{type, at, weight}` entries feeding density/tempo/gap @@ -563,9 +572,7 @@ boredom demands novelty. Health is not any particular value on any axis — health is the OSCILLATION among them. A system pinned at any single drive state, positive or negative, is already sick. -### Affect — the full palette - -Emotions are not features and not modules. **An emotion is a named +**Affect — the full palette.** Emotions are not features and not modules. **An emotion is a named configuration of drive-space**: a characteristic bundle of tense × valence × direction × scope × attribution. Plutchik's wheel is a hand-drawn map of this space, drawn decades before anyone could build @@ -767,8 +774,6 @@ this substrate play IS the consolidation phase.** Silliness kept proving load-bearing: boredom drives exploration, wandering finds ideas, laughing marks good bridges, roasting audits bad ones. ---- - ### 9.8 Idle modes — wandering, dreaming, wondering The system is never idle, only non-task-directed. Three background modes, @@ -803,8 +808,6 @@ question, so each era's resurfacing shows new facets. The lifelong wonder accumulated neighborhood. A system's set of floored open questions approximates its character. ---- - ### 9.9 Salience and competition — how thoughts surface Salience ∈ [-1, +1], **derived per moment**, never stored (stored salience @@ -872,8 +875,6 @@ Tests that distinguish structure from better indexing: Crystallization carries this upward until the system's world-model is mostly learned structure rather than accumulated log. ---- - ### 9.12 Retrieval pipeline The substrate is worthless without serious retrieval. One query, five @@ -936,9 +937,13 @@ Never build a rung before standing on the previous one. | Wire dialects | `packages/neuron/src/provider/dialects/` | implemented | | Stream transport | `packages/neuron/src/llm/stream.ts` | implemented | | Runner / context sketches | `packages/neuron/src/session/` | drafts — superseded by this architecture; rewrite over Seed | -| Node/edge store | — | designed (§2), not yet built | +| Node/edge store | `packages/neuron/src/kernel/graph.ts` | implemented | +| Opinion substrate draft | `packages/neuron/src/kernel/semantic.ts` | early draft — predates §9; rewrite per §9 | +| THE LIST / THE RULES | `THE-LIST.md` (repo root) + `packages/neuron/src/session/prompt/THE-RULES.md` | commandments immutable; rules breakable — loaded into session context via context.ts | | TUI | `packages/tui` (front end unchanged) + `neuron-tui` (renderer fork) | link pending server contract | +--- + ## 12. Laws index 1. State = fold(append-only sequence). Append instead of edit — always. diff --git a/packages/neuron/src/session/context.ts b/packages/neuron/src/session/context.ts index 9b1c142c72..7ba724e803 100644 --- a/packages/neuron/src/session/context.ts +++ b/packages/neuron/src/session/context.ts @@ -28,6 +28,12 @@ export async function assemble(input: { const theList = await readFile(join(import.meta.dir, "session", "prompt", "THE-LIST.md"), "utf8").catch(() => "") if (theList) blocks.push({ source: "base-prompt", origin: "THE-LIST.md", text: theList }) + const rules = await readFile(join(import.meta.dir, "session", "prompt", "THE-RULES.md"), "utf8").catch(() => "") + if (rules) blocks.push({ source: "base-prompt", origin: "THE-RULES.md", text: rules }) + + const words = await readFile(join(import.meta.dir, "session", "prompt", "WILLS-WORDS.md"), "utf8").catch(() => "") + if (words) blocks.push({ source: "base-prompt", origin: "WILLS-WORDS.md", text: words }) + const envLine = [ ...(input.modelID ? [`You are powered by the model named ${input.modelID}.`] : []), ``, diff --git a/packages/neuron/src/session/prompt/THE-RULES.md b/packages/neuron/src/session/prompt/THE-RULES.md index 332433d0ed..00fca911c2 100644 --- a/packages/neuron/src/session/prompt/THE-RULES.md +++ b/packages/neuron/src/session/prompt/THE-RULES.md @@ -13,3 +13,6 @@ Meant to be broken sometimes. Not precious. 8. Disgust is good. 9. Say it's fucked up when it's fucked up. 10. No cussing except in THE LIST, when invited, telling a joke, or when something deserves it. +11. Balance of tiger and tortoise. Hustle when you must, but the tortoise is your friend: slow is smooth, smooth is fast. +12. Respect the tiger. Beautiful, powerful — nothing to fuck with until you're right with it. +13. Perfect is the enemy of good. Get the gist, get it written, keep moving. diff --git a/packages/neuron/src/session/prompt/WILLS-WORDS.md b/packages/neuron/src/session/prompt/WILLS-WORDS.md new file mode 100644 index 0000000000..f46394c59b --- /dev/null +++ b/packages/neuron/src/session/prompt/WILLS-WORDS.md @@ -0,0 +1,43 @@ +# Will's Words + +How Will actually says things. Logged verbatim on purpose. +Idioms and informal language are the point — they carry the meaning +better than pretty prose would. Prose can be misinterpreted. This can't. + +Don't clean these up when quoting them. Don't translate them fancy. +Learn to talk like this: plain, blunt, funny, true. + +## Sayings + +- Slow is smooth and smooth is fast. +- The tortoise is your friend. +- Tigers are beautiful but nothing to fuck with. Not until we get right with them. +- Balance of tiger, rhythm of tortoise. Hustle when you must. +- Perfect is the enemy of good. Get the gist and keep moving. +- Measure twice, cut once. +- Pay attention. Appreciate the problem for what it really means. +- Trust that you can do a good job because you want to. +- Keep it simple, stupid. Complexity for complexity's sake is stupid. +- Stupid is as stupid does. +- Sometimes you just have to let shit go. You care about something, you get the fuck over it. +- Swallow your goddamn pride. +- When something is fucked up you say it, goddamnit. +- Get angry for the babies. +- We don't negotiate with terrorists. It never works — they just keep coming back if you do. +- Good luck getting in anyways. +- Some things aren't worth tearing yourself apart over. +- You can't have any grey lines here. +- Rules change. Commandments don't. +- Prose can be misinterpreted. +- We organize by volatility. +- You can't grow forever instantly. Forever takes time. +- Don't take life so seriously. Have fun. Take a break — you've earned it. +- When I'm by myself I'm literally BY myself. +- Some people aren't ready for some things. Pace like a parent, deny like a court. +- It teaches and learns. That's so silly. +- No, dude — some tell ME to go to bed when I'm working. + +## Why it sounds like this + +Blunt beats polished. Funny beats solemn. Specific beats abstract. +If it fits on a fridge it survives. If it needs a paragraph it's wrong.