From 53e5246896f45bb9922bfaa4bbf6546ba09b248d Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Mon, 13 Jul 2026 17:08:29 +0100 Subject: [PATCH] Separate Rider discovery from readiness --- .../src/bin/epiphany-rider-bridge-smoke.rs | 4 ++-- .../src/bin/epiphany-rider-bridge.rs | 10 +++++----- ...onceptual-substitution-audit-2026-07-12.md | 7 +++++++ notes/fresh-workspace-handoff.md | 4 ++++ state/ledgers.msgpack | Bin 481332 -> 481568 bytes state/map.yaml | 2 +- 6 files changed, 19 insertions(+), 8 deletions(-) diff --git a/epiphany-core/src/bin/epiphany-rider-bridge-smoke.rs b/epiphany-core/src/bin/epiphany-rider-bridge-smoke.rs index 0bc0b2c6..5e662fd1 100644 --- a/epiphany-core/src/bin/epiphany-rider-bridge-smoke.rs +++ b/epiphany-core/src/bin/epiphany-rider-bridge-smoke.rs @@ -29,8 +29,8 @@ fn run_smoke() -> Result { let status = run_bridge(&root, &workspace, &artifact_root, &fake_rider, &["status"])?; require( - status["status"] == "ready", - "fake Rider path should make status ready", + status["status"] == "discovered", + "fake Rider path should be reported as discovered", )?; require( status["riderPath"] == fake_rider.to_string_lossy().as_ref(), diff --git a/epiphany-core/src/bin/epiphany-rider-bridge.rs b/epiphany-core/src/bin/epiphany-rider-bridge.rs index 4a7ea282..a0e84155 100644 --- a/epiphany-core/src/bin/epiphany-rider-bridge.rs +++ b/epiphany-core/src/bin/epiphany-rider-bridge.rs @@ -311,7 +311,7 @@ fn discover_solution(project_root: &Path) -> Result { top_level.sort(); if !top_level.is_empty() { return Ok(json!({ - "status": "ready", + "status": "found", "path": top_level[0], "candidates": top_level.iter().take(8).collect::>(), })); @@ -319,7 +319,7 @@ fn discover_solution(project_root: &Path) -> Result { let mut candidates = Vec::new(); collect_solutions(&root, &root, &mut candidates)?; Ok(json!({ - "status": if candidates.is_empty() { "missingSolution" } else { "ready" }, + "status": if candidates.is_empty() { "missingSolution" } else { "found" }, "path": candidates.first(), "candidates": candidates.iter().take(8).collect::>(), })) @@ -384,7 +384,7 @@ fn vcs_summary(project_root: &Path) -> serde_json::Value { } } json!({ - "status": if branch.is_some() { "ready" } else { "notGit" }, + "status": if branch.is_some() { "gitDetected" } else { "notGit" }, "branch": branch, "dirty": status.as_deref().is_some_and(|value| !value.is_empty()), "changedFiles": changed_files, @@ -438,12 +438,12 @@ fn status_rider(options: &RiderOptions) -> Result { let solution = discover_solution(&project_root)?; let first_rider = installations.first(); let status = if first_rider.is_some() { - "ready" + "discovered" } else { "missingRider" }; let note = if first_rider.is_some() { - "Rider executable is available for explicit source navigation and context capture." + "A Rider executable candidate was discovered for explicit source navigation and context capture." } else { "No Rider executable was found. Install Rider or set EPIPHANY_RIDER_PATH." }; diff --git a/notes/conceptual-substitution-audit-2026-07-12.md b/notes/conceptual-substitution-audit-2026-07-12.md index be14e1b3..2b77df20 100644 --- a/notes/conceptual-substitution-audit-2026-07-12.md +++ b/notes/conceptual-substitution-audit-2026-07-12.md @@ -1480,3 +1480,10 @@ only for a matching completed receipt, `attention` for an inconsistent pair, when neither exists. The operator snapshot readback likewise reports `loaded`, not `ready`, when a snapshot is merely present. Cache lookup owns retrieval; the joined lifecycle evidence owns lifecycle status. + +## Tool discovery is not operational readiness + +The Rider bridge called a discovered executable path, solution file, and Git +branch `ready` without executing or validating any of them. These projections +now report `discovered`, `found`, and `gitDetected`. Discovery owns topology; +only an actual launch receipt may later claim operability. diff --git a/notes/fresh-workspace-handoff.md b/notes/fresh-workspace-handoff.md index aae93f3b..0c540727 100644 --- a/notes/fresh-workspace-handoff.md +++ b/notes/fresh-workspace-handoff.md @@ -564,3 +564,7 @@ an older latest completion. Its statuses are lifecycle facts (`missing`, Negative unit coverage proves intent presence is only requested and mismatched receipt identity cannot close it. Both native smokes, 259 library tests, focused binary tests, and the all-bin check pass. + +Rider bridge topology no longer claims readiness from path existence. Rider is +`discovered`, solutions are `found`, and repository topology is `gitDetected`; +the native bridge smoke passes with the renamed evidence states. diff --git a/state/ledgers.msgpack b/state/ledgers.msgpack index e449def03dd8134438a8c12b37579c5e576c5229..f42d388c8806743d37d49dca4ef29f94622218c9 100644 GIT binary patch delta 254 zcmdn8L3Y6=*$tA6TozVF7E#9-*u(#BR%R?@WNdGq%G5rUi4llFG&2yh05K~Nvu&Ts z#6CZC`u$H#9MkWFv2!v5HBUC2EhWA;C^IFsNFk{xGbKG$AtkdoIlnBmsB-$dPD`{GPX5OWon