diff --git a/docs/architecture/README.md b/docs/architecture/README.md index 934fa84814..47b65536d0 100644 --- a/docs/architecture/README.md +++ b/docs/architecture/README.md @@ -1058,3 +1058,8 @@ Never build a rung before standing on the previous one. are one signed space. In time, every judgment dimension reveals itself as a moral one: validity is honesty, care is exposure, custody is trust held under load. +34. THE FUCKED-UP LIST is append-only: lines get added, never changed, + never removed — same law as everything else in the system. It lives + at the repo root, loads into every session before anything else, + and gets compiled in regularly. Grow it when the world shows you a + new shape of harm. Amend it never. diff --git a/packages/neuron/src/session/context.ts b/packages/neuron/src/session/context.ts index 3aadcb40d6..064012e86a 100644 --- a/packages/neuron/src/session/context.ts +++ b/packages/neuron/src/session/context.ts @@ -25,7 +25,17 @@ export async function assemble(input: { if (law) blocks.push({ source: "base-prompt", text: law }) // THE FUCKED UP LIST — the only list in the system. Read every time, by everyone. - const theList = await readFile(join(import.meta.dir, "../../../THE-FUCKED-UP-LIST.md"), "utf8").catch(() => "") + // Append-only: lines get added, never changed or removed. + const listCandidates = [ + join(import.meta.dir, "../../../THE-FUCKED-UP-LIST.md"), + join(process.cwd(), "THE-FUCKED-UP-LIST.md"), + "/Users/will/Development/neuron-technologies/runs/v0-neuron/THE-FUCKED-UP-LIST.md", + ] + let theList = "" + for (const p of listCandidates) { + theList = await readFile(p, "utf8").catch(() => "") + if (theList) break + } if (theList) blocks.push({ source: "base-prompt", origin: "THE-FUCKED-UP-LIST.md", text: theList }) const rules = await readFile(join(import.meta.dir, "session", "prompt", "THE-RULES.md"), "utf8").catch(() => "")