CB5T × Society of Mind: organic personality via stream valuation #59
Replies: 14 comments 2 replies
-
|
Implementation tracking issue: #60 |
Beta Was this translation helpful? Give feedback.
-
Deep dive: discourse across embodiment, perception, language tiers, and K-line valenceThis expands the thread with a concrete picture of how agencies work together for idle / pose / gesture / emote / prosody / gaze / eye contact; how webcam + mic user nonverbal cues enter; how Conversation fits; which new Minsky-style language agencies we need for LLM connectors (instant → micro → large); how streams are shared; and how K-lines + stream valence act like ANN biases. Tracking issue: #60. Does this all make sense? Yes — with one discipline: nothing becomes a hub. Instant reactions are local specialists firing on the same facts; the large model is a slow language peer, not the brain. 1. Layers of the society (who talks to whom)Think in four bands. Streams cross bands; control does not centralize. Behavior (idle loops, eye contact, “looking upset,” “umm that’s interesting”) is the residue of discourse across these bands—not a single planner choosing a clip. 2. Embodiment discourse: idle, pose, gesture, emote, prosody, gazeWhat already exists (Polymer today)
What we should add (embodiment)
How they switch loops together (example timeline)
Key rule: Animation still only applies snippets. Idle/Pose/Gesture/Emote/Prosodic/Gaze request; they compete via priority + valence + accept/reject (later), not via a director. 3. Webcam + mic: gauging user nonverbal cuesWe need perceptor agencies that own sensors (same Polymer rule: effector/sensor local to the responsible agency).
These facts fan out to:
Mic content (words) and mic manner (prosody) must stay separable—Minsky would not smash them into one “listening” agency. 4. Where Conversation sits (and what it must not become)Conversation = turn ledger + speak/cancel orchestration peer, not the mind. It should:
It should not:
Minsky would split language into more agencies (below). Conversation remains the thin “who has the floor / what is queued to TTS” clerk. 5. Language agencies for LLM connectors (Minsky would invent these)Talking is a society. The large model is one slow specialist among several.
Tiered reaction protocol (interrupt or salient user act)Band 0 — Instant (local, no network)
Band 1 — MicroLLM Band 2 — MacroLLM This is how we avoid “frozen face waiting on the big model,” and how personality shows in which instant/micro strategies win (high-A soft yield vs high-N sharp affect vs high-C “let me finish” BridgeSnippet). 6. Shared streams library (who publishes / who subscribes)Not a shared mutable blackboard of control—named stream message types with optional valence. Sketch:
Library idea: one schema module (CLJS + JSON Schema) for message envelopes: Valence is not personality by itself; it is the feature vector planners multiply by CB5T/K-line gains (ANN-bias analogy below). 7. K-lines on streams + valence ≈ ANN biasesCB5T / Persona = long-term gain vector (slow weights). Local planner scoring (conceptual): So:
K-line agency (Memory) does not call Animation. It emits Persistence: packs can be authored + learned later; v1 is authored packs keyed by situation detectors (Appraisal + TopicTone + user identity facts). 8. Worked example: user interrupts with something rude
No central “react to insult” script—discourse under valence + gains. 9. Implementation order (fits #60)
10. Open questions for this discussion
Bottom line: Yes—this coheres. Minsky supplies the split (perception, critics, language society, embodiment society, K-lines). CB5T + message valence supply the bias field. Instant → micro → macro language peers are how LLM connectors stay in the society instead of above it. Conversation stays the turn/speak clerk; it does not wait in silence for the large model while the rest of the society freezes. |
Beta Was this translation helpful? Give feedback.
-
Character-profile persistence: agency society config (edges, credit, K-lines, biases)Follow-up from the LoomLarge/Polymer chat: we should persist the society graph + valuation knobs on the character profile (Firestore Today:
Why this belongs on the profileSame agency graph + different packs → different temperament only works if packs are loadable character data. The Python profile PATCH path ( Proposed three layers (not one blob)
Until a real value function exists, credit is declarative numbers Polymer can ignore or log. Schema assumes planners will multiply them later. Default = current hardcoded graph with credit Sketch schema (profile subtree)Suggested key under the flattened profile body: {
"agencySociety": {
"version": 1,
"agencies": {
"blink": { "enabled": true, "bias": {}, "configure": {} },
"prosodic": { "enabled": true, "bias": {}, "configure": {} }
},
"edges": [
{
"id": "tts.lipSync.command",
"from": "tts",
"type": "lipSync.command",
"to": "lipSync",
"enabled": true,
"credit": 1.0,
"structural": true
},
{
"id": "blink.signal.blink-fast",
"from": "blink",
"type": "signal",
"match": { "signal": "blink-fast" },
"to": "prosodic",
"enabled": true,
"credit": 0.8,
"structural": true
}
],
"kLines": [
{
"id": "speaking",
"description": "Speech-active society",
"activateEdges": ["tts.lipSync.command", "tts.prosodic.*", "conversation.tts.requestSpeak"],
"gainOverlay": { "extraversion": 0.1 }
}
],
"personaPackId": null,
"cb5t": { "E": 0.5, "N": 0.5, "C": 0.5, "A": 0.5, "O": 0.5 }
}
}Notes:
Seed graph (current Polymer adjacency)Structural edges to seed on first migrate / missing subtree:
Hair → host runtime remains a side lane until #60’s hair-routing decision. Delivery suggestion (orthogonal to worker #62)
Worker offload (#62) stays unrelated: valuation/config is data; compute placement is performance. Open questions (need answers before implementing)
Once these are answered we can lock the Pydantic/TS schema and add a checklist slice on #60 for “profile SoT + Polymer consume.” |
Beta Was this translation helpful? Give feedback.
-
Decisions so far (from authoring chat) + SoM alignment notesPartial answers to the open questions in the previous comment. Q4–Q7 still open (reply cut off at “4”). Q1 — Topology editable? → Yes, with required/structural option
Schema implication: every edge (and maybe some agencies) carries Q2 — Value functions? → Local per agency; character VF ≈ Σ agency VFsDecision: each agency owns a local value function. Character-level VF is something akin to the sum of agency-level VFs. SoM alignment — mostly yes, with one discipline: Minsky’s society has no single commander VF that puppets specialists. Local competence + local criteria is the point. So:
Practical refinement (still “akin to sigma”):
Recommendation for v1 schema: store per-agency Q3 — Activation / biases / K-lines? → ANN-like stream biases + K-lines as VF memoriesDecision sketched:
SoM alignment — yes, this is close to Minsky’s K-line idea:
Naming clarity for the schema (avoid overloading “bias”):
v1 can persist activation as a runtime field (not necessarily in Firestore), and persist synapses/credit + K-line memory records + CB5T on the profile. Still need (Q4–Q7)
Once those land we can lock the Pydantic/TS shape and tick the profile-SoT checklist on #60. |
Beta Was this translation helpful? Give feedback.
-
Q4 recommendation — credit and agency priors (separate knobs)Author is open to suggestions: both edge credit and agency-level tendencies (e.g. gesture “shyness”) should be able to matter. Proposal: do not collapse them into one “bias” field. Keep two (later three) composable factors that feed the receiver’s local value function. Suggested factors
v1 formula (per contribution into a local VF): where Local VF then aggregates contributions (and local costs) however that agency defines — still local, not optimized against character Σ. Why separate credit vs agency prior
What I’d defer (not v1)
Schema sketch (agency + edge){
"agencies": {
"gesture": {
"required": false,
"enabled": true,
"priors": {
"shyness": 0.6,
"amplitude": 0.5,
"density": 0.4
},
"configure": { }
}
},
"edges": [
{
"id": "conversation.cue→gesture",
"from": "conversation",
"type": "gesture.hint",
"to": "gesture",
"required": false,
"enabled": true,
"credit": 0.75
}
]
}Naming: prefer Default stance
If this matches intent, remaining open items are only Q5–Q7 (v1 scope, hot-reload, profile key name). |
Beta Was this translation helpful? Give feedback.
-
Locked decisions Q1–Q7 (full synthesis)Authoring answers + recommendations, collected in one place. Q1 — Topology editable?Yes, with required cores. Edges and priors generally editable per character. Mark Q2 — Value functions?Local VF per agency. Character-level VF ≈ Σ (preferably normalized/weighted) of local VFs — as a readout / K-line learning signal, not a commander agencies optimize against. Q3 — Activation / biases / K-lines?
Q4 — Credit vs agency prior?Both, separate knobs.
Q5 — What “reading the graph” meant (clarified)The confusing question was not “does the DB store the graph?” — it was:
Author intent: instantiate each agency with its params every time the character is created (and maybe cache in localStorage). That makes sense — with a split:
So: yes, instantiate agencies with params each time. That covers the nodes. For the edges, Polymer still has to “read the graph” once at create to decide which streams are subscribed and with what credit — not a continuous DB poll. localStorage: fine as a cache of the last fetched profile for snappy remounts/offline, but Firestore via Python remains SoT. Otherwise authoring on one machine won’t show up on another, and PATCH won’t be authoritative. Pattern: fetch profile → optional write-through to localStorage → v1 scope implication:
Q6 — Runtime: load/instantiate vs hot-reload?Agree with instantiate-time application (and yes, that’s best for v1).
Hot-reloading live edge tables and in-flight schedulers is a footgun (half-applied K-lines, TTS mid-utterance). Revisit only if authoring UX demands instant preview without remount. Q7 — Profile key name?Recommendation:
Use top-level profile field Compact schema reminderSeed from current Next implementation slice (when greenlit)
Tracking: #60 (profile SoT checklist). Workers (#62) stay orthogonal. |
Beta Was this translation helpful? Give feedback.
-
How we take this and use it (runtime path + delivery plan)Decisions Q1–Q7 are locked. This is the operational plan: where the data lives, how a character boot uses it, and the PR order to build it. Runtime path (end state)Remount to apply profile edits (no live hot-rewire in v1). What “using it” means at each layer
Delivery slices (PR order)Slice A — Contract + seed (Polymer)
Slice B — Profile SoT (LoomLarge backend)
Slice C — Host pass-through (LoomLarge frontend)
Slice D — Polymer applies overlays (first real use)
Slice E — Persona / CB5T pack expand (issue #60 P1)
Slice F — Local VF stubs + character rollup + K-line memory (#60 P2)
Slice G — Authoring UI (LoomLarge)
Workers (#62) stay unrelated (compute placement only). Immediate next stepStart Slice A + B in parallel (schema/seed in Polymer, validation in LoomLarge backend). Slice C/D follow so the field is stored and then actually consumed. Greenlight = open PRs for A/B against #60. |
Beta Was this translation helpful? Give feedback.
-
Concrete issue breakdown filedSmall chunks under epic #60: Foundation: #63 → #64 → #65 → #66 (multi-instance) → #67 → #68 Later: #81 VF stubs · #82 K-lines · #83 CB5T · #84 audio LoomLarge: persist · pass-through · authoring UI (filed on LoomLarge) |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
Cross-repo issue triage complete (aligned to this plan)Polymer
LoomLarge
Loom3
Unrelated LoomLarge product UI (import wizard, auth, thumbnails, etc.) left open — out of scope for agencySociety. |
Beta Was this translation helpful? Give feedback.
-
Full-repo triage complete (issues + PRs)Six subagents reviewed every open item:
MethodFor each item: KEEP / REWORK / COMBINE / CLOSE / OUT_OF_SCOPE_KEEP (PRs: KEEP_MERGE / CLOSE_PR / SUPERSEDE), against agencySociety ownership (Polymer agencies · LoomLarge host · Loom3/Embody bindings). Applied this passLoomLarge issues: closed obsolete Latticework/XState/TalkingHeads leftovers; combined pose/emoji/lip-sync duplicates into survivors (#363, #552, #715–718, #308, #100, …); reworked host tickets onto Polymer/agencySociety wording. LoomLarge PRs: closed #708, #700, #694, #379, #330, #329; superseded/closed #736→#740, #702→#727, #636→#739; #590 marked rework-off-Latticework; #740 is canonical Latticework removal. Loom3: closed wrong-repo #34; combined README accuracy into docs epic #31; closed PR #143 (lip-sync planner → Polymer); RuntimeCore/viseme issues annotated with Embody-vs-Polymer boundary. Polymer: surviving queues unchanged (parity #54–58, foundation #63–68, priors #69–80, VF/CB5T #81–84, JALI #9–14, #62, #60). PRs: merge #85, #52, #50; #37 tooling out-of-scope. Left open on purposeImport wizard, auth, thumbnails, annotations chrome, marketing site, asset/CDN/CI — OUT_OF_SCOPE_KEEP (valid product work, not agencySociety). Merge priority now
|
Beta Was this translation helpful? Give feedback.
-
PR backlog pass — closed abandoned, merged clean, #85 rebasedMerged (CLEAN + green CI)Closed abandoned (stale drafts / orphan stacks)LoomLarge: #184, #194, #230, #231, #326, #332, #339, #349, #352, #374, #446, #555, #618, #634, #642, #647, #651, #676, #677, #679, #683–#685 Surviving open PRs (counts: Polymer 3 · LoomLarge 8 · Loom3 5)
Recommended next merges
|
Beta Was this translation helpful? Give feedback.
-
|
Salvage map for the Jul 20 backlog triage (closed work + reuse guidance, including the lace #702/#727 correction): #87 |
Beta Was this translation helpful? Give feedback.
-
CB5T × SoM: tying DeYoung’s three layers onto the agencies we are buildingThis expands the opening post + deep dive + locked Tracking: #60 · CB5T packs: #83 · K-lines: #82 · VF stubs: #81 1. Two thinkers, three runtime layers (not three brains)
Minsky supplies the split (perception / critics / language society / embodiment society / K-lines). 2. Traits = parameters of agencies (SoM mechanisms)In CB5T, Extraversion etc. are not “a personality module.” They are gains on mechanisms that already exist. In Polymer those mechanisms are the agencies.
Aspects (recommended authoring depth for #83 — Big Five alone is coarse):
Metatraits (optional derived overlays, need not be stored v1):
Hard fence (unchanged): the expander is a pure data→data function at create / K-line activate. It never schedules Embody, owns TTS, or picks the concrete nod line. Persona / pack opens the menu; individual agencies pick the moment (as in the OP). 3. Characteristic adaptations = society memory + policies (not traits)DeYoung: characteristic adaptations are updateable memory contents — goals, interpretations, strategies — defined for particular circumstances.
So:
This keeps Continuity-of-self without a central memory dictator: Memory / K-line activate emits overlays; peers keep local competence. 4. Cybernetic cycle = each agency’s SoM loop (ties the deep-dive bands)DeYoung’s five stages map onto the agency shape in
The deep-dive diagram’s middle band (Appraisal / Memory / Persona / Drive) is not a hub brain. Read it as critics + overlays:
Instant / Micro / Macro language peers remain parallel specialists on the same facts — MacroLLM never freezes the embodiment society. Composition with the locked formula (Q4) and the OP’s valence picture: Valence is the feature vector on the message; CB5T/K-lines are gains; credit/priors are synapses / nodal temperament. Same ANN-shaped bias field the OP already named — now aligned to the persisted schema. 5. Worked path (rude interrupt) with all three layers labeledSame scenario as the deep dive, annotated:
Personality proof remains the OP’s harness: same graph, two packs, same fixtures → different traces. 6. What this clarifies for #83 (and what it must not become)Do (#83 pack loader):
Don’t:
7. Suggested doc / ticket follow-through
Bottom line: SoM agencies are DeYoung’s cybernetic mechanisms; CB5T traits are their shared temperament parameters; K-lines/policies/banks are characteristic adaptations; streams + local GOAP/scheduler/VF are the cycle running in parallel across peers. The schema we locked ( |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Why mix Minsky and DeYoung?
Yes — this pairing is a strong fit for AI avatars with recognizable personality.
They solve different layers of the same problem:
Neither alone is enough for product quality:
Together: keep Polymer’s Society-of-Mind body (local planner/scheduler/streams/effectors). Load CB5T as a valuation pack — how peers score each other’s streams. Recognizable temperament falls out of who wins negotiations, plus phenotype (animation/TTS libraries), without a PersonalityAgency that puppets the face.
Product quality bet: same agency graph, different param packs → different habitual social presence users can recognize — not scripted “extravert nod clips.”
How CB5T intersects the agency society (simulate personality)
CB5T does not sit beside the graph as a costume layer. It is the bias field on discourse:
Trait → agency effects (sketch)
Persona: priors and menus — not the director
A thin Persona (or derivative) may bias which cue banks and prompt spices are available or favored — phrase continua, emote/gesture slices, TopicTone priors for Micro/Macro. It should not always pick the concrete cue, and must not be the main author of the moment.
Hard Persona fences (“never hostile AffectFlash”) are rare constraints — not beat direction. If Persona routinely picks the prompt line and the animation, the society collapses back into one brain.
How to prove simulation
Core bet (discourse, not a hub)
Example (already roughly true in Polymer):
Conversation→TTS→ speech timing facts →Prosodic(head nods / brow) →Animation→ EmbodyNobody is “in charge of looking engaged.” Engagement is the residue of that discourse. Personality later = same discourse, different CB5T valuations.
Prosodic is a peer (speech-gesture specialist), not a hub. Same for Conversation: turn/TTS orchestration peer, not the brain.
Critics, K-lines, language agencies (short)
threat↑,stuck,too rude). They retune; they don’t schedule Embody.CB5T biases which of those win how often. Message valence is the feature vector; CB5T/K-lines are gains (ANN-bias analogy).
What not to invent
Discussion prompts
character.cljsroutes?Implementation tracking: #60
Deep dive comment (embodiment, perception, language tiers, streams): see thread below.
Beta Was this translation helpful? Give feedback.
All reactions