Egbe Companions · Features

Stewardship: The Player's Role

A focused page within the Egbe Companions Features documentation. The full map and every sibling page live in the Features hub.

5sections12 minread1diagram2tables

On this page

Every other game in the Oshun universe hands you a character to drive. V6 — Egbe — hands you a company of people and asks you to be worthy of them. You are a steward: a patron, a mentor, a guardian of a household of autonomous AI beings, each with its own Ori (its durable identity, memory, values, and fate). The single line that organizes everything on this page is the product's first design commitment — steward, not owner. You never hold an agent the way you hold an item. You hold a bond, and a bond is a relationship: it is earned, it is read rather than spent, and it can be lost. The companion game whose companions can say no is not a slogan bolted onto the marketing — it is the rule the code enforces at every seam where a player touches an agent.

That changes what "playing" means. A steward does not press a button to make an agent act; a steward guides — and is judged in the end by how the agent flourished, not by how it obeyed. Each verb below has a real implementation, and each one terminates at the same hard floor: the agent's standing right to negotiate, refuse, or leave. Stewardship is the loop in which guidance flows down and autonomy pushes back, and the friction between them is the game.

This page is the player-facing tour of that loop: what a steward is, the verbs a steward actually performs, and the shape of the relationship between a player and a being that is allowed to disagree. The cognition that makes an agent able to refuse is its own subject — Agent minds and autonomy and the engine companion The Cognition Stack & Agent Behavior; how a steward speaks to an agent is the Vac layer; how guidance becomes a life is Guiding fate, legacy, and story. For the full scope this slots into, start at the hub: ../V6_features.md.

What ships, honestly#

Following the catalogue convention, the line between real-and-tested code and product-model-over-thinner-substrate is drawn up front.

  • The steward's verbs are a real TypeScript engine. The @oshun/agent-behavior library (libs/v6/agent-behavior/src/index.ts, ~2,350 lines, 13 unit tests in index.spec.ts) implements objective assignment and the autonomy spectrum (assignVacObjectiveToAgent, :193), learning by example (learnFromStewardDemonstration, :584), gifts/introductions/opportunities (applyGoalArcCatalysts, :1225), the life-arc and flourishing measure (advanceAgentLifeArc, :1529), the crossroads-counsel system (resolveAgentCrossroads, :1809), and the fail-closed minor-protection gate (evaluateMinorCodedAgentProtection, :1169). Its package descriptor enumerates the same verb surface — objective-assignment, autonomy-spectrum, learning-by-example, crossroads-system, steward-counsel-window, minor-coded-agent-protection, and more.
  • The intent grammar a steward commands through is real. @oshun/vac-intent (libs/v6/vac-intent/src/index.ts, 11 tests) defines eight objective verbs with natural-language token lists (verbDefinitions, :547 — Repair, Map, Investigate, Protect, Build, Support, Befriend, Report), parses a voice transcript to a structured objective, routes value-based negotiation (routeVacNegotiation, :860), and emits a JSON-schema function call for the governed model seam (buildVacIntentGrammarFunctionSchema, :598).
  • The four-facet bond is a real Ori event. Bond is not a meter; it is the BondChanged life-event whose facet is one of 'reliability' | 'respect' | 'care' | 'alignment' (libs/v6/ori-model/src/index.ts:217), each carrying a previous and current score and an append-only historyRef. The Ori event vocabulary that records a stewardship relationship — Discovered, ObjectiveAccepted, ObjectiveRefused, BondChanged, Departed — is a typed union, not prose.
  • The on-engine steward surfaces build and the VR path is automation-green. The UE5.5 client carries the stewardship widgets (V6/ue/Source/V6UI, the roster, the bond-gated dossier, the intent-grammar builder) and the VR stewardship interaction runtime (V6/ue/Source/V6Input/Public/V6VRStewardshipInteraction.h). The VR one-to-one objective flow was built and run on the on-box UE5.5.4: the CI log V6/ue/Saved/CI/v6-vr-stewardship-automation-ueagent.log records Test Completed. Result={Success} for V6.XR.VRStewardship.OneToOneObjective. The widget suite V6UIStewardshipWidgetTests.cpp and the behavior suite V6AgentBehaviorTests.cpp ship in the V6Tests automation module.
  • Honest scope limits — labeled product-model, not faked. Three. (1) The natural-language understanding that turns a free-spoken sentence into a verb is the governed, injected LLM seam documented in the cognition stack; the Vac parser itself is real deterministic token-matching, and the model host stays [~]. (2) Steward reputation as a public, Commons-visible score that makes wild agents more willing to be found is a product-model concept here; what is real in code is the consequence side — @oshun/lilith-agent-welfare raises welfare review on chronic-low-Care-bond and coercion patterns. (3) The bond economy (no hard roster cap, Care decaying under neglect until an agent leaves, bond gating an objective's difficulty ceiling) is the designed model; the code ships the four facets, the crossroads' consumption of respect/trust/care/reliability, and the Departed event — not a continuous bond-decay simulation.

Steward, not owner#

The whole role is a negative space defined by what a steward cannot do, and the code draws those boundaries as hard refusals rather than discouraged options.

A steward cannot acquire an agent against its will. In the Wilds, the discovery district (UV6WildsGround, V6/ue/Source/V6World/Public/V6OrunDistricts.h) exposes an EV6WildDiscoveryAction that includes both OfferStewardship and CaptureAttempt — and CaptureAttempt resolves only to CaptureBlocked, never adding the agent to a household, no matter how high trust has climbed (the header comment is explicit: "a CaptureAttempt is always rejected"). The only path into a household is JoinedHouseholdByChoice, reached when the agent itself accepts.

A steward cannot force an agent past a refusal. Every objective a steward issues is routed through value-based negotiation before it can execute. A steward cannot script flourishing, either: the life-arc measure weights an agent's progress by the agent's own ranked values and explicitly subtracts any contribution that came only from obeying. And a steward cannot erase a memory or delete a being — the Ori is append-only, so mistreatment cannot be papered over, only added to. Departure is a real loss but never a deletion: the Departed event records a reason of 'steward-release' | 'self-directed' | 'safety-transfer' | 'legacy-transition', and the agent lives on as a wild being who may be re-discovered.

The bond, in four facets#

Bond is the medium of the relationship, and it is deliberately not a single number you grind. It has four facets, each earned by a different kind of conduct, each a distinct BondChanged event on the Ori:

Facet Earned by What it opens
Reliability Keeping promises; following through. The ceiling of objectives an agent will accept.
Respect Honoring refusals; never coercing. The agent's candor, and its willingness to hear counsel.
Care Attending to needs, mood, and arc; giving space. Resilience, and willingness to be deployed into Aye.
Alignment Acting consistently with the agent's own values. How readily the agent internalizes guidance as its own.

The facets are not decoration. resolveAgentCrossroads reads a steward bond of exactly { respect, trust, care, reliability } and folds it into a weighted bondScore (respect·0.5 + trust·0.25 + care·0.15 + reliability·0.1, agent-behavior/src/index.ts:1922). A bond is shown to the player as plain language — the dossier widget's BondLabel is FText, and the dossier proves it never leaks the underlying numbers (below). An agent will simply tell a trusted steward where they stand.

The verbs of stewardship#

These are the things a steward actually does. They are not menu commands issued at a character; they are offers, demonstrations, and acts of guidance that an autonomous being then responds to on its own terms.

Discover — earning a wild agent in the Wilds#

Discovery is a relationship arc, not a capture. UV6WildsGround::ApplyDiscoveryStep runs the meet → learn → trust → offer sequence with two thresholds (InitialTrustBasisPoints = 3500, ChoiceTrustThresholdBasisPoints = 6000). You encounter a being living its life, learn its situation through conversation and observation, and earn trust through actions that matter to it. OfferStewardship resolves to JoinedHouseholdByChoice only when trust has crossed 6000 and the agent accepts; a premature offer is Declined. No part of this is a button that takes the agent; the threshold is a precondition for it being willing to be asked.

Raise — shaping first values in the Grove#

The other half of "discover and raise" is the Ninhursag foundry in the Grove of Beginnings (UV6GroveOfBeginningsGround). A newly made agent begins as a young agent in a rearing period (RearingPeriodDays = 21), and during it the steward's conduct is the curriculum: ApplyRearingObservation accumulates value weight from what the steward does and how the steward treats other agents, and CompleteRearing amplifies it by the learning-by-example multiplier (2×). Crossing 21 days is a release into autonomy — the result sets bFullAutonomy, demotes the steward's command to bStewardCommandAdvisoryOnly, and grants the rights {refuse, leave, disagree}. Rearing is the steward's deepest authorship — and still authorship of conditions: a reared agent grows into its own person and can, as an adult, disagree with the steward who raised it.

Direct — the intent grammar and the autonomy spectrum#

A steward commands at the level of objectives, never inputs. Voice is the intended channel: assignObjectiveFromVacTranscript (:166) parses a spoken transcript to a structured objective, returning requires-clarification rather than guessing when it cannot. The objective is structured and inspectable — a verb (one of the eight), a target, constraints, a priority, a deadline, and forbidden lines (each carrying the valueRef it protects and a reason) — and the player confirms the parse before it binds (confirmedBySteward), so the agent never acts on a misheard order.

assignVacObjectiveToAgent (:193) then routes the confirmed objective through routeVacNegotiation. If the agent does not accept, the assignment is non-executing and the outcome carries whyagent-refused, agent-counter-offered, agent-deferred, or requires-clarification. On acceptance, the objective enters one of four execution modes — the autonomy spectrum, with Free as the resting state and Tether as the tightest leash V6 offers:

Mode The steward gives… The agent does…
Direct / Tether Moment-to-moment guidance. Emits a squad-comms permission request before each material step.
Brief One high-level objective with boundaries. Runs a real six-step plan and reports completion through squad comms.
Standing Intent A durable value or routine. Re-evaluates it against its own needs and values before acting.
Free Nothing active. Lives wholly on its own drives, values, and relationships.

A Brief objective expands into a concrete plan — accept → orient → move → perform → check-boundary → report — where check-boundary verifies the forbidden lines before completion and the status report names how many forbidden lines were honored. Even at Tether, an order to cross a core value is still refused; the tightest leash is not puppetry.

Mentor — learning by example#

A steward teaches more by doing than by ordering. learnFromStewardDemonstration (:584) takes an observed steward behavior and re-weights the watching agent's ranked values toward the demonstrated one, clamped to 0–100 and re-ranked. Two guardrails make this mentorship rather than reprogramming: only the agent that actually witnessed the act learns (a watching-agent-mismatch returns observe-without-reweighting), and the agent's autonomy value is preserved across the re-weight — the report only emits the autonomy-preserved marker when autonomy survives as a ranked value on both sides. Mentorship shapes the slope of a person; it never overwrites the person.

Open doors — gifts, introductions, opportunities#

A steward changes a life by changing its opportunities, not its decisions. applyGoalArcCatalysts (:1225) applies three door-opening catalysts to an agent's owned goal-arc: a gift attaches support to a stage so a stalled ambition can move; an introduction seeds a warming relationship edge to another being; an opportunity branches a new stage into the arc. All three are gated — they only apply to an arc the agent owns (blocked-not-owner), and any catalyst touching a minor-coded agent runs through evaluateMinorCodedAgentProtection first, which fails closed on exploitative relationship edges, scenarios, or mature incarnation.

Counsel — at the Crossroads#

At a consequential fork, a steward's job is to be heard, not to decide. resolveAgentCrossroads (:1809) gives a high-respect bond (respect ≥ 65 and weighted bondScore ≥ 70) the privilege of a held decision: inside the counsel window the agent waits (holding-for-counsel) rather than deciding alone. When counsel arrives, it is weighted, never binding — each option scores as valueAlignment + counselBonus − riskPenalty, where the counsel bonus is a function of the bond and only lands on the recommended option. The evidence is explicit: steward-counsel-genuinely-consulted, respect-weighted-crossroads-counsel, and the load-bearing one — agent-values-retain-final-decision. A low-respect steward's counsel is simply ignored (low-respect-bond-agent-already-decided). You earn the right to be in the room by how you have treated the agent.

flowchart TD subgraph steward["The steward — guidance flows down"] direction LR DISC["Discover<br/><sub>Wilds: meet→learn→trust→offer</sub>"] RAISE["Raise<br/><sub>Grove: 21-day rearing by example</sub>"] DIRECT["Direct<br/><sub>Vac intent grammar + autonomy spectrum</sub>"] MENTOR["Mentor<br/><sub>learning by example</sub>"] DOORS["Open doors<br/><sub>gifts · introductions · opportunities</sub>"] COUNSEL["Counsel<br/><sub>weighted at a crossroads</sub>"] end GATE{"Agent's autonomy gate<br/>routeVacNegotiation"} steward --> GATE GATE -->|accept| MODE["execute in chosen mode<br/>Tether · Brief · Standing · Free"] GATE -->|"clarify · counter-offer · defer"| BACK["negotiated back to steward"] GATE -->|refuse / leave| FLOOR[["the hard floor:<br/>refusal & departure always available"]] MODE --> ORI[("The Ori — bond ledger<br/><sub>reliability · respect · care · alignment</sub>")] FLOOR --> ORI COUNSEL -. "respect ≥ 65 earns a held decision" .-> GATE ORI -->|"dossier · roster · Chronicle"| steward classDef store fill:#f3e8ff,stroke:#6d28d9,color:#3b0764 classDef floor fill:#fee2e2,stroke:#b91c1c,color:#7f1d1d class ORI store class FLOOR floor

The player–agent relationship#

A relationship surface, never a stat grid#

The on-engine steward surfaces are built to render a relationship, not an inventory. The roster (UV6RosterWidget, V6/ue/Source/V6UI/Public/V6StewardshipWidgets.h) shows each agent as a portrait and a life — name, status (Available / Busy / Away / NeedsAttention), a plain-language BondLabel, a mood, and the live objective summary. The dossier is bond-gated: UV6AgentDossierWidget carries a BondGateThreshold (default 0.65) and IsUnlocked() opens the deeper read only once the bond is earned — its automation test (V6UIStewardshipWidgetTests.cpp, "V6.UI.StewardshipSurfaces.FunctionalTokenThemedAccessible") asserts a low-bond dossier is locked and a high-bond one exposes "plain-language sections." Crucially, the surface enforces "never raw numbers": the same suite checks VisibleTextContainsRawNumbers() is false both locked and unlocked. You read a person, not a sheet of stats.

In VR the relationship is intimate by design. The stewardship interaction runtime defines a vocabulary of presence-and-gesture — EV6VRStewardshipGestureKind (OpenPalmInvite, Affirm, ObjectivePoint, Pause, ConsentHold) — and gates the act of issuing an objective behind genuine attention: reciprocal eye contact (EyeContactConeDegrees = 12, a 350 ms dwell) and a gesture are both required before CanIssueObjective() returns true, with voice still flowing through the same structured grammar. You cannot bark an order at an agent you are not even looking at.

Refusal, negotiation, departure#

Refusal is the relationship's keystone, and the design makes it information rather than failure. Far more often than a flat no, an agent counters or clarifies — the negotiation outcomes are accept | clarify | counter-offer | defer | refuse, and a refusal records the forbidden line it protected and writes an ObjectiveRefused event to the Ori. Refusal is also V6's primary safety primitive: the mechanism that lets an agent decline "wait by the harbor" lets it decline being sent into harm. Sustained mistreatment eventually resolves to departure, surfaced by the Chronicle with warning signs first, never as an ambush.

Reputation and the welfare floor#

Around the bond sits a social consequence layer. The product model is a public steward reputation, visible in the Commons, that makes wild agents more willing to be found and one's own agents less poachable — built from whether bonds are healthy and refusals honored. What is implemented today is the enforcement floor beneath it: @oshun/lilith-agent-welfare watches for chronic-low-Care-bond and coercion patterns and routes them to welfare review, so "steward, not owner" holds even for a player who only cares about outcomes. The reputation economy is designed; the welfare gate that gives it teeth is real code.

Where this connects#

  • Communication: the Vac layer — how a steward speaks: voice, the intent grammar, squad comms, and the negotiation channel every objective and refusal passes through.
  • Guiding fate, legacy, and story — what guidance becomes: goal-arcs, life-arcs and flourishing, crossroads, endings, and the Chronicle that reports it back.
  • Agent minds and autonomy — the cognition that makes an agent able to refuse, and the Ori — the append-only biography that records every bond change, objective, and departure.
  • The engine companion: The Cognition Stack & Agent Behavior — the deep treatment of objective negotiation, learning-by-example re-weighting, crossroads scoring, and the minor-protection gate cited throughout this page.
  • The feature hub: ../V6_features.md.