{
  "summary": "Current-source-supported mixed supervision uses an isolated canonical executable seat: start old broker there, replace that seat through brain-only update, and cycle only its supervised brain. No separate coordinator executable CLI/env override was found. Exact 0.67.1/0.69.0 source confirmation is blocked: no git-object execution/read device is available, and both origin/mirror raw pinned-source URLs returned 404. Existing n1_pairing is not a sole-supervised-coordinator fixture.",
  "files": [
    {
      "path": "crates/spt-daemon/src/brainproc.rs:1187-1323",
      "description": "Production executable selection, inherited environment, stable daemon brain argv, and captured canonical executable path."
    },
    {
      "path": "crates/spt/src/cli.rs:1041-1111",
      "description": "daemon run accepts detached flag, not coordinator path; brain accepts defaulted generation/start-reason."
    },
    {
      "path": "crates/spt/tests/n1_pairing.rs:14-40,89-146",
      "description": "Existing cross-binary fixture uses pinned D1 broker plus separately launched new brain; keeps old supervised brain."
    },
    {
      "path": "crates/spt-daemon/src/applyhost.rs:123-245,250-349",
      "description": "Verified brain-only update, executable displacement, pending rollback record, broker restart request."
    },
    {
      "path": "crates/spt-daemon/src/frame.rs:8-31,95-113",
      "description": "Additive IPC envelope and role/version-floor handshake."
    },
    {
      "path": "crates/spt-net/src/net/registry.rs:158-227",
      "description": "Backward-compatible hosting/controller gossip defaults."
    },
    {
      "path": ".github/workflows/release.yml:1-16,33-49,201-216",
      "description": "Private release channel and exact platform binary/checksum asset naming."
    }
  ],
  "architecture": "Broker owns continuity-bearing PTYs, accepted connections, network endpoint, seed control and supervision; coordinator is its restartable child. Both initially execute the same path; a running broker retains old mapped bytes while the captured executable pathname receives the new coordinator bytes. Local rendezvous derives from SPT_HOME; registry wire compatibility is distinct from local hosting classification semantics.",
  "report": "Scope/evidence boundary\n- Read-only source/fixture inspection only: no commands, binaries, builds, tests, probes, edits or worktrees. All file/range citations below are current working-tree evidence, NOT tagged-object evidence.\n- Required arms remain distinct: all-0.69.0 at 16df0e41be04ca4614a792f7e70e4d1bdec60b24 versus broker-0.67.1 at 04e32c8c95cf09ddc2a44a51cd0233b0d13bdc64 with coordinator/caller-0.69.0. Neither was executed.\n\nActionable mechanism, conditional on pinned-source confirmation\n1. Allocate a private executable seat E and private absolute SPT_HOME H; initially E contains verified 0.67.1 bytes. Start E daemon run, not daemon start (foreground run is the broker; start may invoke service management). cli.rs:1041-1059.\n2. Keep broker running. Apply the exact signed 0.69.0 candidate through E's brain-only update path, without --finish. The supported code connects to broker before touching E, renames E aside, lands verified bytes at E, records AppliedPending with rollback path, then requests a brain restart. applyhost.rs:250-349. Crucial: production apply targets the INVOKING executable's current_exe path (296-299); invoking update from an unrelated new-binary directory will swap the wrong seat.\n3. Supervisor retains the original canonical pathname and spawns its next child there, passing daemon brain --generation N --start-reason update and inheriting H. Broker process remains mapped to old bytes. brainproc.rs:1194-1232,1261-1323. Use exact 0.69.0 caller bytes explicitly thereafter.\n4. If constructing a harness-controlled byte swap instead of real update, the same path-selection mechanism supports the conceptual sequence E-old start → displace E/land E-new → restart brain. This is an INFERENCE from production mechanics, not a claimed supported arbitrary coordinator-path override or a tested recipe. Prefer genuine update where signed metadata is available. Do not manufacture rollback records to select arbitrary coordinator paths.\n\nWhy existing n1 fixture is insufficient\n- n1_pairing.rs:14-40 pins D1 0c95435, not 0.67.1, and expressly tests socket verbs rather than supervision custody. At 95-146 it starts old daemon run, leaves its old coordinator alive, then manually starts current daemon brain generation 99 on the same H.\n- For this diagnostic that creates two coordinator loop owners and potentially competing ready breadcrumbs; it cannot represent one 0.69.0 supervised coordinator. n1_compat.rs:9-29 proves only current-binary argv parsing. SPT_N1_OLD_BROKER is a test input, not a production broker/coordinator selector.\n\nCompatibility prerequisites/risks\n- Shared H must derive identical seed/broker socket names in both versions. Current endpoint.rs:1-38 hashes spt_home with DefaultHasher. Ensure the same path spelling/representation; verify pinned implementations rather than assuming compiler-level hash stability.\n- Preserve daemon spelling and defaulted generation/start-reason: cli.rs:1089-1110; brainproc.rs:1261-1288. Unknown start-reason falls back to Cold (brainproc.rs:103-137).\n- IPC handshake accepts expected role and peer protocol >= compatibility floor; current constants are both 1. Envelopes use string kinds and opaque JSON, allowing unknown kinds to decode. frame.rs:8-31,95-140. This does NOT ensure every new operation exists in the older broker.\n- Optional coordinator-image announce consumes KIND_ERROR and degrades nonfatally; a manual generation-99 child is not equivalent to the supervisor's generation. brain.rs:1732-1760; brainproc.rs:62-86,216-247.\n- Normal update requires exact platform artifact, valid release keys/signature/policy, compatible resource ABI and BrainOnly classification; signed metadata/cache must stage the desired release, not whatever latest resolves to. applyhost.rs:123-245; update.rs:49-70,110-123. Rollback/quarantine/readiness can change which bytes actually run. Do not infer coordinator version from path or readiness alone; executable hash is captured once per brain (brainproc.rs:513-535).\n- Isolated H is not sufficient network isolation. Fixture sets SPT_TEST_EPHEMERAL_ADVISORY_PORTS=1 (n1_pairing.rs:105-110; docshost.rs:73). Current config supports peer_pump=false for hermetic setups, defaults true, and full_auto_update defaults false (config.rs:143-160). Confirm these controls at old tag; don't reuse live identity/subnet files. Registry observations requiring network should use isolated topology owned by Main rather than blindly disabling the tested path.\n- Known narrower version boundary: current cli.rs:8378-8383 explicitly warns when installed >=0.68.0 meets resident broker <0.68.0 that node-prefixed docs URLs/serve controls are unavailable. Do not mistake that known web-route skew for bind/listen/PTy compatibility or field causality.\n\nRelevant bind/listen and registry wire mechanisms\n- Current startup.rs:1-14 describes seed/listen and post-spawn api bind. Its CURRENT HostingAuthority/resolve_controllable discussion at 159-220 separates listener custody from topology and includes living-life rules. Because this may include newer edits, it is not evidence of either requested release's behavior.\n- Current registryhost.rs:633-664 derives harness_only from state == live_agent && controllable != Some(true), and separately derives controller_node; 683-712 authors those datums into registry instances.\n- Wire uses NDJSON, unknown-field tolerance, skip-undecodable-line behavior and epoch merge; replicate.rs:10-26,82-102,131-147. Registry Instance fields default bound=true, controller_node=None, harness_only=false, controlled=false when absent (registry.rs:158-227). Thus decoding compatibility and semantic classification are independent. Missing harness_only does not intrinsically decode as true. No claim here connects the field incident to version skew or proves these fields existed in both requested tags.\n\nAssets and exact inaccessible prerequisite\n- No explicit owned 0.67.1 executable path emerged from the targeted fixture/workflow searches; SPT_N1_OLD_BROKER is only an external path placeholder.\n- Release workflow declares channel BigscreenVR/spt-bs-releases and Windows asset spt-x86_64-windows.exe; SHA256SUMS accompanies platform assets (.github/workflows/release.yml:1-16,33-49,201-216). Expected retrieval coordinates are that private repository's v0.67.1 and v0.69.0 releases, asset spt-x86_64-windows.exe (plus SHA256SUMS; normal apply additionally needs the signed update metadata and trusted release keys). This identifies expected naming, not confirmed asset availability or hash identity.\n- Missing prerequisite for exact-pair source approval: readable content at both named git objects for brainproc.rs, cli.rs daemon/API definitions, frame.rs, startup.rs, registryhost.rs and registry.rs; plus available verified old/new release bytes. Exposed tools have no git-object reader/process capability. Reads attempted https://raw.githubusercontent.com/BigscreenVR/spt-bs-core/04e32c8c95cf09ddc2a44a51cd0233b0d13bdc64/crates/spt-daemon/src/brainproc.rs and https://raw.githubusercontent.com/SaberMage/spt-core/04e32c8c95cf09ddc2a44a51cd0233b0d13bdc64/crates/spt/src/api/startup.rs both returned HTTP 404. Therefore 'relevant behavior exists in BOTH versions' remains unestablished, not false."
}