Preserve spatial agency inside arena cells
This commit is contained in:
parent
bcb03e4647
commit
4e2154fac0
5 changed files with 40 additions and 4 deletions
|
|
@ -504,7 +504,7 @@ impl CellProjectionEngine {
|
|||
constrain_cell_proposal_schema(&mut schema, &slice)?;
|
||||
let interpreter_context = serde_json::to_string(&cell_interpreter_context(&slice))?;
|
||||
let permission_guidance = format!(
|
||||
"Emit at most {} exact constituent- or named-member-attributed attempts. Priority is an urgency score from 0 to 100 where higher numbers resolve first; never use ordinal list rank where 1 means first. Copy each subject's allowed_effect_type: institution -> institution, gestalt -> either gestalt pressure transition or gestalt_activity, actor -> actor_move, named member -> either member_migration or member_activity. Use gestalt_activity or member_activity for a concrete preparation, coordination, investigation, recruitment, obstruction, trade, or communication attempt that does not itself change pressure; target_subject_ids must come from that exact subject's activity_target_ids and location_ids from its exact location scope. A member_activity must copy the raw member_id and use exactly the member's source_location_id. Internal work by the subject alone is prepare with an empty target_subject_ids list. Coordinate, communicate, trade, recruit, investigate, or obstruct a target only when the Persona explicitly attempts to engage that exact target; adjacency is permission, not evidence that contact occurred. Both intended_effect and the typed activity record only the attempt, never success or a target's response. Institution posture must be a specific new commitment or withholding, never the current posture or a generic label. Gestalt pressure_resolutions must copy exact current_pressures that the attempted action resolves; pressure_additions are only new unresolved constraints, threats, obligations, or conditions, never completed actions. A pressure transition requires one to four total changes. Use only that subject's permitted_state_references and allowed_public_channels; facet labels are not public channels. A named member migration uses one supplied destination; a population or arena cannot migrate a person. The runtime binds cell identity, revisions, membership, and effective state. The cell id is not an actor id. Use an empty actions array plus a concrete inaction_reason when nobody acts.",
|
||||
"Emit at most {} exact constituent- or named-member-attributed attempts. Priority is an urgency score from 0 to 100 where higher numbers resolve first; never use ordinal list rank where 1 means first. Copy each subject's allowed_effect_type: institution -> institution, gestalt -> either gestalt pressure transition or gestalt_activity, actor -> actor_move, named member -> either member_migration or member_activity. Use gestalt_activity or member_activity for a concrete attempt that does not itself change pressure. Map the natural attempt narrowly: communicate means speak, send, offer, ask, or notify; coordinate means arrange a joint attempt, not merely offer one; prepare means the subject's own concrete work such as loading, gathering, fortifying, or rehearsing; investigate means seek information; recruit means invite someone to join; trade means offer an exchange; obstruct means attempt interference. target_subject_ids must come from that exact subject's activity_target_ids and location_ids from its exact location scope. A member_activity must copy the raw member_id and use exactly the member's source_location_id. Internal work by the subject alone is prepare with an empty target_subject_ids list. Coordinate, communicate, trade, recruit, investigate, or obstruct a target only when the Persona explicitly attempts to engage that exact target; permission is not evidence that contact occurred. Write intended_effect as the attempted act itself, not its hoped-for success: 'offer work to X' is valid, while 'integrate X', 'ensure departure', 'build goodwill', acceptance, and any target response are not. Institution posture must be a specific new commitment or withholding, never the current posture or a generic label. Gestalt pressure_resolutions must copy exact current_pressures that the attempted action resolves; pressure_additions are only new unresolved constraints, threats, obligations, or conditions, never completed actions. A pressure transition requires one to four total changes. Use only that subject's permitted_state_references and allowed_public_channels; facet labels are not public channels. A named member migration uses one supplied destination; a population or arena cannot migrate a person. The runtime binds cell identity, revisions, membership, and effective state. The cell id is not an actor id. Use an empty actions array plus a concrete inaction_reason when nobody acts.",
|
||||
slice.max_actions
|
||||
);
|
||||
let mut request = ModelStageRequest {
|
||||
|
|
@ -651,7 +651,7 @@ fn cell_projector_mode_guidance(mode: &crate::domain::SimulationCellMode) -> &'s
|
|||
"This cell has real collective authority. Render a plural lived perspective from genuinely shared knowledge and capability only; describe constituent and named-member exceptions as separately attributed exceptions. A population cannot decide for a named member."
|
||||
}
|
||||
crate::domain::SimulationCellMode::Arena => {
|
||||
"This cell is an arena, never a person or faction. Render an attributed polyphonic situation. Name each subject before its perspective; never use an unmarked first-person voice or a narrator that belongs to no constituent. Never union secrets, knowledge, resources, intentions, authority, or voice between constituents or named-member exceptions."
|
||||
"This cell is an arena, never a person or faction. Render an attributed polyphonic situation. Name each subject before its perspective; never use an unmarked first-person voice or a narrator that belongs to no constituent. This arena may contain simultaneous views from remote locations: state each subject's supplied location, keep remote scenes separate, and never stage shared sight, speech, or response unless exact co-presence or a perceived communication channel establishes it. An activity target is permission to attempt contact, not evidence that contact already exists. Never union secrets, knowledge, resources, intentions, authority, or voice between constituents or named-member exceptions."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -662,7 +662,7 @@ fn cell_persona_mode_guidance(mode: &crate::domain::SimulationCellMode) -> &'sta
|
|||
"Appraise the strategic horizon as a real collective. End this turn with a present-tense choice: describe the concrete attempt the collective now makes, or explicitly choose to hold or wait. Deliberating, asking for a future decision, considering an option, or saying what could be done is intentional inaction unless the choice to act is actually made. Do not invent completed consequences."
|
||||
}
|
||||
crate::domain::SimulationCellMode::Arena => {
|
||||
"Appraise the strategic horizon polyphonically. Name the constituent responsible for every perspective and decision; never speak as the arena or use an unmarked first-person voice. For each voiced constituent, end with a present-tense choice: a concrete attempt now, or an explicit choice to hold or wait. Deliberating, asking for a future decision, considering an option, or saying what could be done is inaction unless that constituent actually chooses to act."
|
||||
"Appraise the strategic horizon polyphonically. Name the constituent responsible for every perspective and decision; never speak as the arena or use an unmarked first-person voice. The lived stream may contain simultaneous remote scenes: preserve every stated location boundary, and never make one constituent see, hear, address, or answer another unless the stream explicitly establishes co-presence or a communication channel. For each voiced constituent, end with a present-tense choice: a concrete attempt now, or an explicit choice to hold or wait. Deliberating, asking for a future decision, considering an option, or saying what could be done is inaction unless that constituent actually chooses to act."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1582,8 +1582,12 @@ mod tests {
|
|||
let cohesive_persona = cell_persona_mode_guidance(&SimulationCellMode::Cohesive);
|
||||
assert!(arena_projector.contains("Name each subject"));
|
||||
assert!(arena_projector.contains("never use an unmarked first-person voice"));
|
||||
assert!(arena_projector.contains("remote locations"));
|
||||
assert!(arena_projector.contains("never stage shared sight, speech, or response"));
|
||||
assert!(arena_persona.contains("Name the constituent"));
|
||||
assert!(arena_persona.contains("present-tense choice"));
|
||||
assert!(arena_persona.contains("simultaneous remote scenes"));
|
||||
assert!(arena_persona.contains("preserve every stated location boundary"));
|
||||
assert!(cohesive_persona.contains("present-tense choice"));
|
||||
assert!(cohesive_persona.contains("asking for a future decision"));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -233,6 +233,14 @@ Projector → Persona → Interpreter membrane:
|
|||
- Interpreters emit a typed appraisal and exact constituent effects;
|
||||
- malformed or semantically invalid output gets one same-snapshot correction.
|
||||
|
||||
An arena may contain simultaneous views from distant locations. The Projector
|
||||
names each subject's actual location and keeps those views as separate scenes;
|
||||
a graph relation or activity target grants permission to attempt contact, not
|
||||
fictional co-presence. The Persona preserves those spatial boundaries unless
|
||||
the lived stream explicitly establishes an exact shared location or
|
||||
communication channel. Compression therefore cannot turn a regional arena
|
||||
into one impossible meeting room.
|
||||
|
||||
Physical provider concurrency batches these pipelines behind a separate
|
||||
operator limit, default 8. Changing that limit increments only
|
||||
`provider_configuration_epoch`; it preserves the selected cover, resolution
|
||||
|
|
@ -302,6 +310,14 @@ the destination population cannot claim the person's voice. `member_activity`
|
|||
and `member_migration` resolve under one exact member key, so only the
|
||||
higher-priority compatible choice can commit in a wave.
|
||||
|
||||
The Interpreter maps natural attempts narrowly: speech, offers, requests, and
|
||||
notices are communication; coordination requires an actual attempt to arrange
|
||||
joint work; preparation is the source's own concrete work; investigation seeks
|
||||
information; recruitment invites participation; trade offers exchange; and
|
||||
obstruction attempts interference. `intended_effect` repeats the attempted act,
|
||||
not the hoped-for outcome. This keeps the semantic verifier focused on agency
|
||||
and consequence rather than guessing what a broad activity label meant.
|
||||
|
||||
Semantic correction feedback names the exact failed boundary and current
|
||||
value. A repeated institution posture receives its present posture; an invalid
|
||||
population transition receives its exact current pressure set and the failed
|
||||
|
|
|
|||
|
|
@ -90,6 +90,15 @@ slice to its capped salient member exceptions so a crowded location cannot dump
|
|||
its roster into a prompt. Resolver and WorldKernel independently revalidate
|
||||
identity, location, attribution, and attempt-only semantics.
|
||||
|
||||
The first run after that repair failed safely for a different reason. The
|
||||
budget-one arena Projector showed the transit camp and South Harbor as parallel
|
||||
views, but the Persona staged a direct conversation across the bay. The
|
||||
Interpreter also widened offers and ongoing loading into successful integration
|
||||
and ensured departure. Arena projection now states and preserves remote scene
|
||||
boundaries, and Interpreter guidance defines the activity vocabulary as narrow
|
||||
attempts with attempt-only `intended_effect`. No kernel rule or world-state
|
||||
compensator was added.
|
||||
|
||||
The multiresolution body is deployed on Starfire. Typed health matched the
|
||||
immutable release, DeepSeek was ready, and the disposable live strategic-cell
|
||||
smoke committed three offscreen events plus three accessible news items without
|
||||
|
|
|
|||
|
|
@ -68,6 +68,13 @@ the planner already owns. Stable prompt prefixes are deliberately placed before
|
|||
dynamic state, and provider receipts expose per-attempt token/cache usage plus
|
||||
bounded local validation failures.
|
||||
|
||||
Arena projection preserves spatial partitions as well as identity partitions.
|
||||
Each remote view carries its actual location; a relation grants potential
|
||||
reach, not co-presence. Persona turns cannot stage direct sight, speech, or
|
||||
response across locations unless the lived stream establishes a shared place
|
||||
or communication channel. Interpreter activity labels then describe the
|
||||
narrow attempted act, while hoped-for success remains outside the effect.
|
||||
|
||||
Gestalt background choices use two distinct typed paths. Pressure transitions
|
||||
change exact unresolved markers. `gestalt_activity` records an attributed
|
||||
preparation, coordination, investigation, recruitment, obstruction, trade, or
|
||||
|
|
|
|||
|
|
@ -265,5 +265,5 @@ data_flow:
|
|||
|
||||
current_status:
|
||||
summary: GhostlightDungeon production remains on the verified Starfire release. The acceptance candidate is pressuring multiresolution agency: exact Gestalt activity attempts, typed Gestalt event participation, nested lineage identity preservation, location-bounded presence projection, and automatic refugee callback rematerialization. Production state is untouched while the strict live-fire harness and receipts falsify the candidate.
|
||||
next_action: Run the strict multiresolution refugee-return live fire after the shared-location activity-reach repair. Require meaningful whole-setting background activity, exact rival-arena attribution, migration across unrelated nested lineage trees, and automatic presence-planner rematerialization of the same durable member. Profile stage receipts and repair only the owning context or typed effect seam.
|
||||
next_action: Run the strict multiresolution refugee-return live fire after the shared-location reach and remote-arena membrane repairs. Require meaningful whole-setting background activity, exact rival-arena attribution, migration across unrelated nested lineage trees, and automatic presence-planner rematerialization of the same durable member. Profile stage receipts and repair only the owning context or typed effect seam.
|
||||
gestalt_population: Gestalt Personas own shared population baselines; persistent member deltas own named individuality; WorldKernel materialization and approval-gated fission preserve lineage and identity. Presence projection is limited to nearby active leaves and exact-location dormant members. Simulation cells are derived covers only.
|
||||
|
|
|
|||
Loading…
Reference in a new issue