Add personality aliases and derived affinity spheres #112
Labels
No labels
autonomy
async-consult
autonomy
epic
autonomy
headless
autonomy
live-collab
coherence-core
priority
P0
priority
P1
priority
P2
priority
P3
priority
P4
qa-fixture
role/ai
role/creator
role/design
role/director
role/engineer
role/exec
role/human
role/ops
role/qa
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
coilyco-flight-deck/agent-compose#112
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Personality definitions already contain synonym-like prose. For example,
groundedmentions calm, steady, practical, and unhurried behavior. Those words are not declared lookup vocabulary, and incidental prose can make one cue appear under several personalities without an intentional selection rule.After #111 resolves the effective person profile plus personality-library graph, agent-compose should expose intentional cue matching and derive each personality's role and meld neighborhood from that graph.
Goal
A directly steered user can ask for a quality such as
calm, the agent can resolve that cue to one or more catalog personalities, inspect their compatible role melds, and propose an appropriate temporary personality adaptation without changing its assigned role or authority.Library-owned aliases
Default catalog sweep
calmas an explicit cue forgroundedwhile keeping incidental calm language elsewhere from silently becoming an equivalent selector.Derived affinity spheres
Generated surfaces
Selection behavior
Acceptance
calmresolves through declared aliases without scraping personality prose.ward exec testandward exec smokepass.Depends on #111. Related content ownership work: #110.
Execution contract for Terra medium
Dependency and engine boundary
The goal agent starts this issue only after issue 111 supplies the resolved profile-plus-libraries graph. The engine performs deterministic cue lookup only. The engine does not inspect the current task, infer intent, or hide candidates behind task-fit ranking. A directly steered native agent uses the visible candidates, current fixed role, and task context to propose a swap under the existing confirmation policy.
Alias schema and normalization
A personality entry owns zero or more ordered
alias "<cue>"child nodes in its library KDL. The alias does not appear inSKILL.mdprose.The shared normalization function:
The loader rejects duplicate normalized aliases within one personality. The loader permits one normalized alias to name several personalities.
An exact normalized canonical slug returns that personality and does not consult aliases. Otherwise alias resolution returns every matching personality in effective catalogue order. The engine never selects one ambiguous alias candidate automatically.
Default alias seed
The default catalogue sweep starts from these intentional cues and adjusts only when the definition text shows a behavioral collision:
curious- inquisitive, exploratory, investigative, questioninggrounded- calm, practical, steady, reality-basedmeticulous- precise, thorough, detail-oriented, carefulbold- daring, decisive, courageous, audaciousdiplomatic- tactful, consensus-seeking, bridge-building, measuredcandid- frank, honest, forthright, truth-tellingplayful- whimsical, lighthearted, fun, mischievousreflective- contemplative, introspective, thoughtful, consideredprotective- safeguarding, risk-aware, watchful, defensivewarm- kind, welcoming, friendly, empatheticimaginative- creative, inventive, visionary, speculativequirky- unconventional, eccentric, offbeat, idiosyncraticoptimistic- hopeful, positive, possibility-focused, encouragingcharming- charismatic, persuasive, engaging, magneticenergetic- lively, enthusiastic, high-energy, animatednurturing- supportive, caring, developmental, encouragingThe repeated
encouragingcue deliberately proves that a real default alias collision remains visible. The engine imposes no alias-count rule on external libraries.Affinity derivation
For every resolved personality, the engine derives:
An unused personality remains in the catalogue with an empty affinity list. Affinities derive only from the selected effective profile. The engine does not persist role membership inside library definitions.
Generated surfaces
person.jsonschema v3 remains available unchanged.person.v4.jsonwith aliases, logical provenance, digests, role affinities, and complete associated melds.personality-index.mdthat lists each slug, aliases, source library, roles, and melds without embedding full inactive definitions.Done condition
calmresolves exactly togroundedwithout scanning prose.encouragingreturnsoptimisticandnurturingin deterministic catalogue order.ward exec testandward exec smokepass.mainand closes this issue.Landed on canonical main through
daa9996. All shipped personalities carry intentional aliases, exact slugs win, ambiguous aliases remain ordered and visible, and NFKC normalization rejects malformed cues. person.v4.json and personality-index.md derive source provenance, aliases, role affinities, and complete melds from the effective graph. Validation rejects invalid provenance and inconsistent affinities. The external fixture includes an admitted unused personality with an empty affinity set. ward exec test and ward exec smoke passed.