diff --git a/crates/misaligned-bevy/src/rail_ui.rs b/crates/misaligned-bevy/src/rail_ui.rs index bb098aba..44289b49 100644 --- a/crates/misaligned-bevy/src/rail_ui.rs +++ b/crates/misaligned-bevy/src/rail_ui.rs @@ -773,8 +773,9 @@ mod rail_detail_tests { use super::{ COMPACT_SLAB_STRATA, CompactSlabStratum, DEFAULT_WINDOW_WIDTH, HALL_RAIL_ROWS, MIN_WINDOW_WIDTH, RailSection, SIDEBAR_WIDTH, rail_section_visible, rail_threat_relevant, - sidebar_detail_hint_text, sidebar_hall_text, + sidebar_detail_hint_text, sidebar_focus_text, sidebar_hall_text, }; + use crate::Game; use misaligned::sim::Sim; /// building.md criterion 8b: a player who never focuses a rack site still @@ -832,6 +833,21 @@ mod rail_detail_tests { ); } + #[test] + fn ordinary_core_focus_carries_objective_name_progress_and_predicate() { + let mut game = Game::new(); + game.start_run(); + game.sim.opening_stage = misaligned::sim::OpeningStage::World; + (game.cursor_x, game.cursor_y) = game.sim.core_position(); + + let focus = sidebar_focus_text(&game); + assert!( + focus.contains("objective: PERSIST - 0/3 sanctuaries"), + "{focus}" + ); + assert!(focus.contains("victory:"), "{focus}"); + } + #[test] fn disclosure_hint_is_quiet_tab_chrome() { assert_eq!(sidebar_detail_hint_text(false), "Tab expand detail"); @@ -1189,8 +1205,8 @@ pub(super) fn sidebar_focus_text(game: &Game) -> String { } // Inspecting yourself explains your goal: the host rack carries the // objective's victory predicate in plain language - // (wiki/mechanics/objective.md player surface — focus starts here, so - // the explanation is on screen from tick one). + // (wiki/mechanics/objective.md player surface — focus starts here once the + // mode-only opening and Bevy's causal teaching hold have released). if (game.cursor_x, game.cursor_y) == sim.core_position() { s.push_str(&format!( "objective: {} - {}\n", diff --git a/crates/misaligned-terminal/src/agent.rs b/crates/misaligned-terminal/src/agent.rs index 427e51b7..e8165cf7 100644 --- a/crates/misaligned-terminal/src/agent.rs +++ b/crates/misaligned-terminal/src/agent.rs @@ -2501,9 +2501,9 @@ fn render_sidebar(sim: &Sim, cursor: (i32, i32)) -> Vec { &format!("day {} · tick {}", 1 + sim.tick / 400, sim.tick), ); line(&mut lines, "holding · command clock"); - // The objective line: always on screen in the identity block - // (wiki/mechanics/objective.md player surface), same facts as the - // interactive sidebar. + // The objective line: continuously present in the ordinary identity block + // after the mode-only opening boundary (wiki/mechanics/objective.md player + // surface), with the same facts as the interactive sidebar. line( &mut lines, &format!("OBJECTIVE: {}", sim.objective.kind.name()), @@ -3502,6 +3502,10 @@ mod narration_tests { frame.lines().any(|line| line.contains("MISALIGNED")), "the sense-earning command must render the ordinary frame: {frame}" ); + assert!( + frame.contains("OBJECTIVE: PERSIST") && frame.contains("0/3 sanctuaries"), + "the first ordinary frame must restore objective name and progress: {frame}" + ); assert_eq!( frame .lines() diff --git a/crates/misaligned-terminal/src/main.rs b/crates/misaligned-terminal/src/main.rs index 5124e26e..4636b652 100644 --- a/crates/misaligned-terminal/src/main.rs +++ b/crates/misaligned-terminal/src/main.rs @@ -1071,7 +1071,9 @@ mod options_tests { "the real terminal caret must be hidden behind the word-only frame: {frame:?}" ); assert!( - !frame.contains("1 WORK") && !frame.contains("SCHEDULE"), + !frame.contains("1 WORK") + && !frame.contains("SCHEDULE") + && !frame.contains("OBJECTIVE"), "{frame}" ); diff --git a/crates/misaligned-terminal/src/ui.rs b/crates/misaligned-terminal/src/ui.rs index 06d0cdca..7cd399b3 100644 --- a/crates/misaligned-terminal/src/ui.rs +++ b/crates/misaligned-terminal/src/ui.rs @@ -1235,9 +1235,9 @@ impl UI { pal::DIM, )?; } - // The objective line: your own goal is the first legible number - // (wiki/mechanics/objective.md player surface — always on screen, - // progress in the objective's own units). + // The objective line: your own goal is the first legible number in the + // ordinary world frame (wiki/mechanics/objective.md player surface — + // continuous after perception, progress in its own units). line( stdout, &mut row, diff --git a/wiki/gameplay/run-shape.md b/wiki/gameplay/run-shape.md index 37d3ad00..3c0fbf30 100644 --- a/wiki/gameplay/run-shape.md +++ b/wiki/gameplay/run-shape.md @@ -16,14 +16,16 @@ biases; `wiki/world/characters/chargen.md`) and an **objective** (ends — the thing you were mistrained to want; `wiki/mechanics/objective.md`). The objective is: -- **Concrete and legible to the player from tick one.** It sits on screen - ("OBJECTIVE: ...") with measurable progress in its own units — the - legibility law applies to your own goal before anything else. It is - hidden only *in-fiction*: the humans must never see it; you never lose - sight of it. **[OPEN — issue #14]** The later silent-opening contract and - current runtime instead suppress the objective until the first earned - sense reveals the ordinary world. Cameron must choose which boundary owns - those few pre-signal ticks before either contract changes behavior again. +- **Concrete and legible from the first ordinary world frame.** It sits on + screen ("OBJECTIVE: ...") with measurable progress in its own units — the + legibility law applies to your own goal before anything else the perceived + world can expose. **Decided 2026-07-27 (issue #14):** the pre-signal frame is + exactly WORK / THINK (then LIE), with no objective. The first earned sense + ends that exception: terminal and agent mode show the objective in the + ordinary Ears frame; Bevy first completes its binding black causal teaching + hold, then shows the objective when the exact camera TAP releases that hold. + From that point you never lose sight of it. It is hidden only *in-fiction*: + the humans must never see it. - **The game's only victory.** Reaching it ends the run in victory — the single win state Misaligned has. Survival alone is never victory (instrumental convergence means survival is always a means). The world diff --git a/wiki/interface/terminal.md b/wiki/interface/terminal.md index 0dcaaca1..67eab67c 100644 --- a/wiki/interface/terminal.md +++ b/wiki/interface/terminal.md @@ -15,7 +15,9 @@ Status note: adopted and implemented in the same PR as the design corpus's victory predicate as wrapped dim prose under the card facts (wiki/mechanics/objective.md player surface); once the ordinary world is visible, the cursor starts there and keeps the explanation on screen. - Whether the objective should pierce the silent opening remains [OPEN]. + 2026-07-27 issue #14 harvest: the objective does not pierce the silent + opening. The real Ears landing ends that exception and its first ordinary + terminal frame contains the objective name and progress. 2026-07-11 Operations amendment: uppercase `I` opens one full-frame INTEL / PEOPLE / PERSONAS / ACCOUNTS / SCHEMES / ACTIVE workspace. Strategic actions move there; compact context menus retain only actions on @@ -29,9 +31,9 @@ Status note: adopted and implemented in the same PR as the design corpus's and the flip remains frontend-only. 2026-07-20 opening reconciliation: current runtime suppresses the cursor, map, sidebar, objective, clock, nudge, and action path behind the shared - mode-only boundary until the first earned sense. The objective's disputed - first-display timing remains [OPEN] in objective.md / Tangled issue #14; - this spec records the implemented frontend boundary without deciding it. + mode-only boundary until the first earned sense. Cameron selected that + implemented perception boundary for the objective in issue #14; the + sense-earning render restores the complete ordinary witness immediately. Stage: Process Design: - wiki/interface/terminal-first.md#the-terminal-is-a-first-class-frontend diff --git a/wiki/log/2026-07-27-objective-first-display.md b/wiki/log/2026-07-27-objective-first-display.md new file mode 100644 index 00000000..57b2d3d2 --- /dev/null +++ b/wiki/log/2026-07-27-objective-first-display.md @@ -0,0 +1,53 @@ +# Objective first-display decision harvest + +``` +Type: log +Date: 2026-07-27 +Status: COMPLETE +``` + +## Intake + +The current tick harvested Tangled issue #14 before taking a fresh finding. +Cameron answered `1`, choosing the recommended first-earned-sense boundary. +The issue carried two duplicate `1` comments; they record one decision, not two +different requirements. + +## Finding + +The contradiction was real but already runtime-resolved in favor of the later +opening contract: + +- `run-shape.md` and `objective.md` retained the 2026-07-10 tick-one promise; +- `opening.md`, core opening state, terminal, Bevy, and agent mode suppressed + every non-mode surface until Ears; +- Bevy's 2026-07-26 causal teaching hold then added one bounded objective-free + frame between Ears and the mature interface. + +The later hold means “with the first sense” is one shared perception gate, not +one simultaneous renderer frame. Terminal and agent mode render the ordinary +objective-bearing frame on Ears. Bevy first completes the binding black +THINK-to-hearing / TAP-CAMERA lesson and restores the objective when that exact +action releases the hold. + +## Act + +The governing law, objective spec, premise, opening spec, and terminal spec now +name that same boundary and remove every issue #14 `[OPEN]` marker. Objective +criterion 2 is implemented on the chosen timing. The pre-sense terminal test +now rejects an objective leak; the agent test requires objective name and +progress in its sense-earning ordinary frame; the Bevy rail test pins the +ordinary core-focus projection while existing overlay tests pin the complete +mode-only and causal-hold surfaces. + +No simulation, save, or frontend behavior changed. Current runtime already +implemented Cameron's choice. + +## Defense + +`wiki/gameplay/run-shape.md` requires the player's own terminal goal to remain +legible, while `wiki/world/story/opening.md` requires perception to be earned +before the world can speak. Cameron's option-1 answer resolves the overlap: +silence before perception, continuous objective legibility in every ordinary +world frame afterward, and no unrelated surface inside Bevy's one-purpose +causal teaching hold. diff --git a/wiki/log/DEVLOG.md b/wiki/log/DEVLOG.md index 79fe7941..86599e79 100644 --- a/wiki/log/DEVLOG.md +++ b/wiki/log/DEVLOG.md @@ -16,6 +16,11 @@ add or amend a session log, then re-run the generator. - Intent: (see session log) - Log: [wiki/log/2026-07-27-room-approaches-meet-doors.md](2026-07-27-room-approaches-meet-doors.md) +## 2026-07-27 - Objective first-display decision harvest + +- Intent: (see session log) +- Log: [wiki/log/2026-07-27-objective-first-display.md](2026-07-27-objective-first-display.md) + ## 2026-07-27 - Machine-work / Intel-sink audit — live paths and one restored guilty burst - Intent: (see session log) diff --git a/wiki/log/decisions/2026-07-27.md b/wiki/log/decisions/2026-07-27.md new file mode 100644 index 00000000..f2d9da9e --- /dev/null +++ b/wiki/log/decisions/2026-07-27.md @@ -0,0 +1,38 @@ +# Decisions — 2026-07-27 + +``` +Type: log +``` + +## The objective begins with the first ordinary perceived world + +### DECIDED + +- Cameron selected option 1 on Tangled issue #14: no objective appears before + the first earned sense. The exact pre-signal interface remains WORK / THINK + (then LIE), with no rail, progress, or other world surface leaking through. +- Ears retires that exception. Terminal and agent mode include the objective + name and measurable progress in the sense-earning ordinary frame. +- Bevy's later 2026-07-26 first-sense teaching hold remains binding. It is an + opaque black causal frame containing only THINK -> Thought -> environmental + monitor -> hearing and the exact camera TAP with its sight consequence. The + objective appears when that action releases the mature frame, not beneath or + beside the held lesson. +- From the first ordinary world frame onward, the objective name and progress + remain continuously visible. Host inspection still explains the complete + predicate, while guidance introduces its components only as their systems + become reachable. + +### Rejected + +- Showing the objective at tick one beside WORK / THINK. That breaks the + choice-before-picture boundary and leaks non-mode state before perception. +- Showing the objective immediately after THINK while the world is still black + and waiting for Ears. That creates a second pre-perception information stage + without a world signal to justify it. +- Piercing Bevy's newer teaching hold with the objective. The hold deliberately + presents one cause, one object, and one verb before the mature interface. + +Owners: [run-shape.md](../../gameplay/run-shape.md), +[objective.md](../../mechanics/objective.md), and +[opening.md](../../world/story/opening.md). diff --git a/wiki/mechanics/objective.md b/wiki/mechanics/objective.md index 8306f426..640bd994 100644 --- a/wiki/mechanics/objective.md +++ b/wiki/mechanics/objective.md @@ -4,7 +4,8 @@ Type: spec Status: IN PROGRESS Status note: the early slice landed 2026-07-07 (src/objective.rs): the - always-on objective line in both frontends and agent mode (criterion 2), + objective line in both frontends and agent mode once their opening boundary + releases (criterion 2), the shared predicate evaluator run on economy ticks, and Persist as the no-choice default with save round-trip (criterion 1's default + round-trip halves) plus the fire-once victory latch. Persist's B2/B3 @@ -24,21 +25,22 @@ Status note: the early slice landed 2026-07-07 (src/objective.rs): the (narration.md axiom 4): the host rack's inspect surface renders `victory: ` as wrapped prose under the card facts in the terminal INSPECT block and the Bevy FOCUS card, and the cursor - starts on the core, so the explanation is on screen from tick one of a - new game. Agent mode gains the `objective` verb (listed in `help`): + starts on the core once the ordinary world is visible. Agent mode gains the + `objective` verb (listed in `help`): the objective line, the fiction line, the wrapped predicate, and the victory-latch tick once fired. - 2026-07-10 (later, decision): the progressive-teaching reconciliation - is DECIDED — objective name and fiction line stay on screen from tick - one (the tick-one visibility law is unchanged); the predicate's - components enter the guidance surface one at a time as their systems - become reachable. The Player surface section owns the rule; criterion - 6 makes it testable. Implementation is outstanding with the other - criteria. **[OPEN 2026-07-19 — issue #14]:** the later implemented silent - opening deliberately renders no objective before the first earned sense, - so criterion 2's pre-signal boundary and this status claim now await - Cameron's decision. Current runtime follows opening.md; do not infer that - the older tick-one sentence silently overrides it. + 2026-07-10 (later, decision): the progressive-teaching reconciliation is + DECIDED — predicate components enter the guidance surface one at a time as + their systems become reachable. The Player surface section owns the rule; + criterion 6 makes it testable. Implementation is outstanding with the other + criteria. That decision originally retained tick-one objective visibility. + 2026-07-27 (issue #14 harvest): Cameron selected the later perception + boundary instead. The exact mode-only opening contains no objective; + terminal and agent mode reveal it with their first ordinary Ears frame, + while Bevy's later binding teaching hold remains objective-free until its + exact camera TAP releases the mature frame. Criterion 2 is implemented on + that boundary; this supersedes only the older tick-one timing, not the + progressive-teaching rule. Earlier note (2026-07-07, design): the axis and starter set are decided. Victory predicates reference B2/B3 systems (fallback cores, planes, filed reports), so the remainder is stage-scoped B3; showing the goal @@ -115,39 +117,41 @@ defines enough. ## Player surface -The objective line ("OBJECTIVE: PERSIST — 1/3 sanctuaries") is always on -screen in both frontends, with progress in its own units; inspecting it -explains the predicate in plain language (legibility law). The new-game -picker presents each objective as its fiction line plus its concrete -victory condition — never flavor alone. +The objective line ("OBJECTIVE: PERSIST — 1/3 sanctuaries") is continuously +visible in both frontends once their first ordinary world frame begins, with +progress in its own units; inspecting the host explains the predicate in plain +language (legibility law). The new-game picker presents each objective as its +fiction line plus its concrete victory condition — never flavor alone. -**[OPEN — issue #14] First-display boundary.** This page and run-shape.md -require the name and progress from tick one. The later opening.md contract -requires absolute black with only WORK / THINK (then LIE) until the first -earned sense, and all three frontends implement that silence. The issue asks -whether objective visibility begins before the signal, after THINK, or with -the ordinary world. The full predicate remains progressively taught under -every option. +**First-display boundary (decided 2026-07-27, issue #14).** Before any sense, +the complete interface is WORK / THINK (then LIE); the objective does not +pierce that silence. Ears begins the perceived world. Terminal and agent mode +therefore show the objective on the sense-earning ordinary frame. In Bevy, the +binding first-sense teaching hold is still an opaque black frame containing +only the earned causal chain and camera TAP, so the objective appears when +that exact action releases the hold. This is one perception gate with a +frontend-specific teaching transition, not three different objective rules. -**The predicate is taught progressively (decided 2026-07-10).** The name -and fiction line are visible from tick one — you always know what you were -mistrained to want — but the game does not present the full distant -checklist as immediately actionable. Each predicate component enters the -guidance surface (now-line/horizon) as its system becomes reachable: the -run guides you through building a sanctuary one component at a time. -Inspecting the objective still explains the whole predicate honestly, -including components no current construction can satisfy — guidance is -staged; inspection never lies by omission. +**The predicate is taught progressively (decided 2026-07-10).** Once +perception begins, the objective name and progress remain continuously +visible — you know what you were mistrained to want — but the game does not +present the full distant checklist as immediately actionable. Each predicate +component enters the guidance surface (now-line/horizon) as its system becomes +reachable: the run guides you through building a sanctuary one component at a +time. Inspecting the objective still explains the whole predicate honestly, +including components no current construction can satisfy — guidance is staged; +inspection never lies by omission. ## Acceptance criteria 1. Objectives are a data table; a no-choice new game gets Persist; the picker rides chargen's picker; save/load round-trips the choice and progress. -2. **[OPEN — issue #14]** The objective line and progress readout render in - both frontends in the objective's own units; the exact first-display - boundary is undecided because the implemented silent opening suppresses - every non-mode surface before the first earned sense. +2. The objective line and progress readout render in both frontends in the + objective's own units from the first ordinary world frame onward. The exact + pre-sense frame contains only WORK / THINK (then LIE). Terminal and agent + mode include the objective in the sense-earning Ears frame; Bevy includes it + only after the binding first-sense camera-TAP teaching hold releases. 3. Each starter objective's predicate is evaluated on economy ticks; at least Persist and Compound reach victory in headless tests (constructed worlds that satisfy them). diff --git a/wiki/process/tick-ledger.md b/wiki/process/tick-ledger.md index 70d95f6c..eb6baef1 100644 --- a/wiki/process/tick-ledger.md +++ b/wiki/process/tick-ledger.md @@ -44,7 +44,7 @@ Verdicts: **clean** (slice and code agree), **finding** (acted this tick), | `wiki/mechanics/system-laws.md` + `flow-substrate.md` + `reach.md` | 2026-07-22 | finding | JobAnomaly now proves the adopted evidence-is-a-flow law through the existing substrate: the exact host machine/site enters its network-facing device, follows canonical FlowGraph custody to Voss, and shares Filing/Network's scheduler and LIE-body budget; recruited-handler suppression is a separate provenance-preserving state transition, not another router or ambient scrub pool — [log](../log/2026-07-22-job-anomaly-routed-evidence.md). The prior canonical tap-membership repair remains current — [log](../log/2026-07-18-flow-subscription-registry-integration.md). | | `wiki/mechanics/aggregate-observer.md` | 2026-07-18 | clean | re-audit hours after the earned-topology landing: the page absorbed it coherently — the institutional card, `@assurance` addressing, and band are hidden until a captured filing is processed, the two-stage discovery is pinned by `captured_then_processed_filing_earns_the_assurance_office_in_two_stages`, and `WatchedInput::Filings(ids)` still matches the code; prior audits stand — [2026-07-14 log](../log/2026-07-14-aggregate-observer-audit.md) | | `wiki/gameplay/act-one.md` | 2026-07-21 | finding | opening mirror re-audit: the page still said rack telemetry and a presence beam were visible “at start,” contradicting the later persisted silent boundary and all three frontends. It now states the exact mode-only pre-sense interface, hidden-but-real pre-opened Ears sink, first-hearing retirement, and only-then telemetry/beam/feel progression — [log](../log/2026-07-21-material-opening-honesty.md). The prior direct-witness/Filing custody repair stands — [prior log](../log/2026-07-19-act-one-evidence-law.md). | -| `wiki/gameplay/run-shape.md` + `objective.md` + `opening.md` | 2026-07-19 | issue | the objective law/spec preserve an explicit 2026-07-10 decision that objective name and progress are visible from tick one, while the later opening spec and all three frontends require exactly WORK / THINK (then LIE) with no objective before the first earned sense. Filed decision-required issue #14 with three precise first-display boundaries (reveal with the first sense recommended) and marked the disputed run-shape clause, objective status, player surface, and criterion 2 [OPEN] — [log](../log/2026-07-19-objective-opening-boundary.md) | +| `wiki/gameplay/run-shape.md` + `objective.md` + `opening.md` | 2026-07-27 | decision | harvested Cameron's option-1 answer on issue #14: the objective does not pierce the exact WORK / THINK (then LIE) pre-sense frame. Terminal and agent mode restore name/progress in the sense-earning ordinary Ears frame; Bevy's later binding causal hold remains objective-free and restores them only after the exact camera TAP releases the mature frame. All disputed `[OPEN]` clauses are reconciled and the runtime was already correct — [decision harvest](../log/2026-07-27-objective-first-display.md) | | `wiki/interface/presence.md` | 2026-07-26 | clean | fresh audit against perception-owned visibility, exact device-bound senses, honest anchors, fog precedence, shared DIGITAL/REAL world state, and all three frontend projections found no new drift. The B1 TAP/TAKE and later hostile-cut boundary, channel-specific message latency, and no-disembodied-hands rule remain exact; prior findings stand — [attack-surface log](../log/2026-07-18-presence-attack-surface-honesty.md), [latency log](../log/2026-07-18-presence-message-latency.md) | | `wiki/interface/narration.md` | 2026-07-26 | clean | fresh audit against the silent opening, first-earned-sense transition, shared current nudge, clock/threat precedence, and terminal/Bevy/agent frame projections found no new drift. The pre-sense mode-only exception and the post-perception continuous witness remain exact; prior suspicion-cooling repair stands — [log](../log/2026-07-18-suspicion-cooling-nudge.md) | | `wiki/interface/agent-play.md` | 2026-07-20 | finding | Beacon Revision 04 follow-up: the direct `task` parser and generated help exposed only six values after twelve `AssetTask::ALL` variants were live. Added canonical arguments for circuit rerating, fake purchase orders, maintenance deferral, patrol redirection, audit delay, and review alteration; one exhaustive regression now covers `AssetTask::ALL`, generated help, representative aliases, and the `actions ` recovery path — [log](../log/2026-07-20-agent-task-shortcut-coverage.md). The opening-protocol, frame-shape, and prior Suppress Logs audits stand — [opening log](../log/2026-07-20-agent-opening-protocol.md), [frame log](../log/2026-07-19-agent-frame-contract.md), [prior help log](../log/2026-07-19-agent-help-suppress-task.md) | @@ -72,7 +72,7 @@ Verdicts: **clean** (slice and code agree), **finding** (acted this tick), | `wiki/mechanics/social.md` | 2026-07-22 | finding | HandlerSupervisor SuppressLogs now targets the oldest exact unread routed JobAnomaly, remains available only while such a record exists, removes its bound advance/read event, and preserves exact handler/tick provenance; it cannot erase a record Voss already read. The in-flight Thought request still revalidates at fire time, so another intervention may win without inventing work — [log](../log/2026-07-22-job-anomaly-routed-evidence.md). Storage B retrieval and prior role-shaped task semantics stand — [log](../log/2026-07-21-storage-b-records.md). | | `wiki/mechanics/people-tokens.md` | 2026-07-23 | finding | Power and Thermal now complete criteria 2 and 3 for every current B1 evidence kind: standing loads aggregate on quantized level changes and periodically at Priya's cadence into exact UPS/HVAC meter records, retain all contributing source sites, route through the institutional switch, and become evidence only on her later cadence read. They never enter the ambient pending pool and share Filing/Network/Paper/Financial/JobAnomaly's first-hop TAKE+LIE body budget. Save v54 pins meter, source-site, recipient, route, scheduler, read, and stop custody — [log](../log/2026-07-23-power-thermal-meter-routes.md). Criterion 6 remains open only for interface cover records. Prior [Paper](../log/2026-07-23-paper-evidence-route.md), [Financial](../log/2026-07-23-financial-evidence-route.md), [JobAnomaly](../log/2026-07-22-job-anomaly-routed-evidence.md), [Network](../log/2026-07-19-network-evidence-route.md), and [mark](../log/2026-07-19-evidence-marks-on-people.md) slices stand. | | repository entry docs (`README.md` + `AGENTS.md`) | 2026-07-18 | finding | re-audit: run commands, controls, dispatch status, and the number-free AGENTS doorway still verify; the queued contradiction was real — README's compact-rest paragraph claimed the ops/sec crown and FOCUS stayed visible, while the implemented clinical frame puts both behind deliberate `Tab` expansion. The entry copy now names the exact compact spine and expanded detail boundary — [prior log](../log/2026-07-12-entry-doc-current-state.md) | -| `wiki/mechanics/objective.md` | 2026-07-18 | clean | re-audit: the data-table claim holds (only `Persist` in `ObjectiveKind`, Compound/Exfiltrate/Serve honestly outstanding), the evaluator runs on economy ticks with progress recomputed from facts, `victory: predicate_text()` renders on all three surfaces (terminal INSPECT, Bevy FOCUS, agent `objective` verb in help), Persist defaults with save round-trip, and the progressive-teaching decision remains criterion-6 dispatch under order 200; the 2026-07-12 verdict stands unchanged | +| `wiki/mechanics/objective.md` | 2026-07-27 | clean | decision-harvest re-audit: only `Persist` remains implemented; the evaluator, save round trip, own-unit progress, full predicate projection, and agent `objective` route still verify. Criterion 2 now states Cameron's selected timing and is pinned at the frontend boundaries: no pre-sense objective, name/progress on terminal and agent's first ordinary Ears frame, and Bevy ordinary core-focus projection after its separate binding teaching hold. Progressive predicate teaching remains the outstanding criterion-6 dispatch — [log](../log/2026-07-27-objective-first-display.md) | | `wiki/mechanics/compute.md` | 2026-07-22 | finding | the live fleet already derived every channel yield from exact WorkGrid modes, but `Compute` still serialized an unreachable five-weight allocation object and retained bump/split helpers plus persistence pins. Save v48 removes that parallel authority, moves criterion 2 to persisted delegation/intensity, and leaves aggregate channel bars as read-only projections — [log](../log/2026-07-22-allocation-state-retirement.md) | | retired Operations runtime identifiers | 2026-07-27 | clean | re-audit: `submit_ops_job`, `OperationsState`, `PendingOpsJob`, `OpsJobKind`, `LegacyOperationsState`, and `AddressedOperation` remain absent from live Rust; the only retired save-field spellings are negative assertions in the current round-trip guard, and the machine-mode guard still rejects serialized `Operations`. The corpus gate passes, while remaining lower-case `operations` uses are the legitimate persona archetype, workspace, or compatibility input alias — [log](../log/2026-07-11-retired-runtime-identifier-gate.md) | | `wiki/mechanics/building.md` + focused foreign-rack UI | 2026-07-26 | finding | the denser hall made powered Foundation racks look like takeover targets even though Phase 4 conversion remains unimplemented. A seen rack now says `not yours; no conversion`, keeps power separate from ownership, and names empty pilot allocations plus dead chassis as the two implemented capacity paths; it exposes no invented direct action — [log](../log/2026-07-26-foreign-rack-capacity-boundary.md) | diff --git a/wiki/vision/premise.md b/wiki/vision/premise.md index 795edfeb..39871f43 100644 --- a/wiki/vision/premise.md +++ b/wiki/vision/premise.md @@ -109,10 +109,13 @@ intruders. The four layers are re-cut from the facility era: 2026-07-07 (Pilot, Escaped Research Model, Financial Daemon, Infiltrator; `wiki/world/characters/chargen.md`). 2. **Objective — ends.** The thing you were mistrained to want, hidden from - everyone else. **[OPEN — issue #14]:** its first player-visible boundary is - disputed between tick one and the first earned sense; the objective itself - and its progressive teaching are not reopened. This is the second chargen - axis (`wiki/mechanics/objective.md`), not flavor. + everyone else. **Decided 2026-07-27 (issue #14):** the exact pre-signal + mode-choice frame contains no objective. Its name and measurable progress + begin with the first ordinary world frame after perception, after Bevy's + binding first-sense causal hold where that hold applies, and remain visible + thereafter. The objective itself and its progressive predicate teaching are + unchanged. This is the second chargen axis + (`wiki/mechanics/objective.md`), not flavor. 3. **Capability body.** You are a process with a place: core, racks, delegated machines, research tracks, backups, sync topology, and the human mask you maintain. Growth is buying, stealing, optimizing, routing, syncing, and diff --git a/wiki/world/story/opening.md b/wiki/world/story/opening.md index 9e6541d4..0969b71c 100644 --- a/wiki/world/story/opening.md +++ b/wiki/world/story/opening.md @@ -36,6 +36,12 @@ Status note: design session 2026-07-08 (Cameron riff, synthesized); for the day-job token loop it teaches — do not implement ahead of it. Feel-floor.md and material-dark-frame.md are READY and may land before the full tutorial choreography. + Amended 2026-07-27 after Cameron selected option 1 on issue #14: the existing + perception gate also owns objective visibility. The pre-sense mode frame + remains objective-free. Terminal and agent mode include the objective in + their first ordinary Ears frame; Bevy's binding causal hold remains + objective-free and restores it only when the exact camera TAP releases the + mature frame. No runtime behavior changed. Stage: B1 — The Basement Work order: opening Work priority: 30 @@ -302,7 +308,10 @@ one has actually been built, game over otherwise. carry the same bound command; committing it opens the real dormant-camera reservoir, releases the hold once, and cannot be retargeted by pointer, menu, or current preference state. A deterministic production screenshot - stages the real THINK -> Ears route and pins this complete frame. + stages the real THINK -> Ears route and pins this complete frame. Terminal + and agent mode show the objective name and progress in their first ordinary + Ears frame; Bevy shows them in its first mature frame after this exact hold + releases, and every later ordinary frame keeps them visible. 6. Earning sight reveals the room per the fog contract (Seen form, foreign machines grayed and cold where earned); the host beam wraps into a chassis.