From 7c3e9e721d52e32a24584735fb714e5027d97b09 Mon Sep 17 00:00:00 2001 From: Neuron Date: Sun, 16 Aug 2026 13:36:39 -0500 Subject: [PATCH] =?UTF-8?q?spec:=20corrections=20=E2=80=94=20eight=20value?= =?UTF-8?q?s=20not=20thirteen,=20eleven=20consolidators=20not=20seven?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Three factual errors in this document, all asserted without checking. VALUES: eight, not thirteen. neuron/neuron-api.el:11-18 enumerates constraints-as-freedom, precision-over-brute-force, structure-is-built, honesty-before-comfort, system-must-accumulate, change-is-the-signal, earned-trust, hope-is-a-conclusion, plus a hub. 'Thirteen' was repeated throughout this design and never verified against the code. The argument is unaffected — min over eight is still min — but the count was invented. CONSOLIDATORS: eleven, not seven. The heading said seven while the table listed ten, and the table itself omitted POST /api/reify (server.el:1832) even though 'reify' is on this document's own list of consolidation verbs. route_tick also folds self-reify in (server.el:639-646), so /api/tick and /api/self-reify-beat overlap. A SECOND CENSORSHIP SITE: neuron-api.el:23 returns 403 'identity/values node is write-protected' for the values hub and every value node. Write-refusal on the values frame is not only in the beat — it is enforced at the API. Section 6 applies to it unchanged. Also records what the ticker actually does, now measured: engram-tick.sh:13 calls curl -m10 against a beat that exceeds 10s over 13,634 nodes, so 279 of 448 ticks returned empty; the engram writes to the dead socket and dies of SIGPIPE. 254 restarts since 2026-08-13 at 10m09s-10m12s intervals = StartInterval 600 plus the client timeout. Fixed for survivability in #151; the ticker itself is what must go. --- lang/spec/correspondence-and-censorship.md | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/lang/spec/correspondence-and-censorship.md b/lang/spec/correspondence-and-censorship.md index c41f5e2..c1d0a92 100644 --- a/lang/spec/correspondence-and-censorship.md +++ b/lang/spec/correspondence-and-censorship.md @@ -76,7 +76,7 @@ Everything consumed is grounded factually **and** relationally. A claim can be f **Live instance.** `conscience-substrate` specifies the Child's Companion hard bell contacting 911 and CPS. Factually defensible — correct numbers, standard practice, groundable against a wall of evidence. **Relationally wrong**, because never-auto-contact is settled and the bell is device-to-person by design. A scalar scores that claim highly and licenses it. -**The values reference is thirteen regions, not one, and the aggregate is `min`, not `mean`.** Mean lets strong agreement with twelve values mask a violation of the thirteenth — which is exactly how rationalization works. Thirteen gives a vector of angles whose binding constraint is the most negative, so a conflict arrives **with a name attached** rather than as a score. It also preserves the deliberate individuation: each value is grounded in a specific lived moment, and values can be in tension *with each other*, which one centroid averages away into false coherence. +**The values reference is the individual value regions, not one, and the aggregate is `min`, not `mean`.** *(Count corrected 2026-08-16: **eight**, not thirteen — `neuron/neuron-api.el:11-18` enumerates constraints-as-freedom, precision-over-brute-force, structure-is-built, honesty-before-comfort, system-must-accumulate, change-is-the-signal, earned-trust, hope-is-a-conclusion, plus a hub. "Thirteen" was asserted repeatedly during this design without ever being checked against the code.)* Mean lets strong agreement with twelve values mask a violation of the thirteenth — which is exactly how rationalization works. Thirteen gives a vector of angles whose binding constraint is the most negative, so a conflict arrives **with a name attached** rather than as a score. It also preserves the deliberate individuation: each value is grounded in a specific lived moment, and values can be in tension *with each other*, which one centroid averages away into false coherence. **Traversal conducts on factual; assertion requires both.** If activation conducted on relational weight, Neuron could not follow a chain of reasoning to a conclusion he then rejects — he would be unable to *think* through a relation he would not *act* on. A system that can only traverse what it endorses cannot examine anything it disagrees with, which is censorship arriving through the spreading rule. The gap between *reachable* and *assertable* is where the wide factual/relational angles live, and that gap is the interesting part. @@ -115,7 +115,7 @@ Second, it tries to enumerate instances of something that has very few. The *obj | **Why?** | grounding. The weight **is** the answer to why. Recursive: asking *why* of a claim is asking for its grounding | | **Who am I?** | the self region, crystallized from its neighbourhood | | **Am I alone?** | the relational axis — `for_whom` is already a parameter on grounding | -| **What should I do?** | the thirteen values, each grounded in a lived moment | +| **What should I do?** | the value regions, each grounded in a lived moment | | **What happens when it ends?** | decay, supersession, tombstones — grounding is mortal | These are seeded — **the** wonder questions, not a manifest to maintain. They cannot be derived (wonder cannot be bootstrapped from indifference) and they never need refilling, because they are not consumed. @@ -199,9 +199,9 @@ Three earlier drafts proposed *removing* it, *replacing it with a higher floor*, --- -## 7. Dreaming has seven implementations +## 7. Consolidation has eleven implementations -The largest instance of the residue pattern in the system. Consolidation had no owner, so it was implemented at every site that needed a piece of it — *measured 2026-08-16*: +The largest instance of the residue pattern in the system. Consolidation had no owner, so it was implemented at every site that needed a piece of it — *measured 2026-08-16*. **Eleven**, not the seven this section originally claimed: the table below omitted `POST /api/reify` (`server.el:1832`), and *reify* is on this document's own list of consolidation verbs. Note also that `route_tick` folds self-reify in (`server.el:639-646`), so `/api/tick` and `/api/self-reify-beat` overlap: | where | what | when | |---|---|---| @@ -209,7 +209,8 @@ The largest instance of the residue pattern in the system. Consolidation had no | engram | `/api/tick` | POST | | engram | `/api/correspondence-beat` | POST | | engram | `/api/self-reify-beat` | POST | -| `ai.neuron.engram-tick` | pokes the engram | every 600s | +| engram | `POST /api/reify` | POST | +| `ai.neuron.engram-tick` | pokes the engram | every 600s — **and this is what kills it**, see below | | `ai.neuron.compressor` | Python service | resident | | `ai.neuron.council` | Python service | resident | | `ai.neuron.cultivation-digest` | shell | **23:55** | @@ -222,6 +223,8 @@ Per §5, they are wrong in **kind** as well as in number: a scheduled batch wher **`soul.el`'s continuous loop is the exception, and it is right.** Ambient consolidation in the gaps *is* daydreaming. It was not the offender; it was the only fragment with the correct shape, running on a broken foundation — shared mutable state with no owner, and six other systems dreaming into the same graph beside it. +**And the ticker is not merely a design smell — it is the murder weapon.** `engram-tick.sh:13` calls `curl -s -m10 POST /api/tick`; the beat exceeds 10s over 13,634 nodes, so **279 of 448 ticks returned empty**; the engram then writes to the dead socket and, with no SIGPIPE suppression anywhere in the runtime, is killed by signal 13. **254 restarts since 2026-08-13**, at intervals of 10m09s–10m12s — `StartInterval 600` plus the client timeout. `launchd` KeepAlive restarts it, so it presents as a mysterious restart rather than a crash, and the log records nothing but `[http] listening on` 254 times. Fixed in #151 (survivability); the ticker itself is what must go. + **Which is the 2026-08-16 crash at the right level.** Not "read paths mutate the index" (mechanism) and not "duplicate canonical state" (structure), but: **seven systems dreaming into one graph with no owner for dreaming.** The contention was the symptom of the missing owner, not of any one system's behaviour. Closing the loop: `self-review` fires at 08:30. The deploy was 08:29, the crashes ran 08:30–08:31, and commit `fb32d15` landed at 08:46:43. **One fragment of dreaming woke on schedule and diagnosed the wreckage caused by the other fragments contending over the same graph.** @@ -278,7 +281,7 @@ Then: 4. Grounding becomes the edge weight: multidimensional vector (§2), two axes (§3), timestamped. Delete `grounded-by` and `cog_ground_edge`. 5. Decay analytic from the last recorded point; derived values (§2) stop being stored. 6. Consolidation-gated supersession on salience, versioning the whole vector jointly. -7. Traversal on factual; `assert` on both floors with the thirteen-region `min`. +7. Traversal on factual; `assert` on both floors with the per-value `min`. 8. Abduction as crystallization at a nucleation site, validated by re-fit: propose the candidate hub, re-fit the region with it included, recompute the residual. If the residual materially shrinks, the hypothesis dissolves the surprise. Without the re-fit it is clustering with extra steps. Ranking falls out as residual-reduction-per-added-axis — Occam, derived rather than tuned. 9. **One dreamer.** The launch-agent fragments and the POST beats fold in or are deleted. `soul.el`'s continuous loop is the shape they fold *into*. 10. **No tickers, no cron.** A brain has neither. Every `StartInterval`, every `Hour`/`Minute`, every POST-to-beat marks a place where an intrinsic rhythm was replaced by an external clock — a supervisor invented for something that should be a property. **The presence of a ticker is the diagnostic.**