2.0 KiB
2.0 KiB
Location-independent workspace discovery
Decided 2026-08-09. The safety runner located the CMS and orchestrator through
hard-coded $HOME/src/blockninja paths and compared repositories as raw
absolute strings. The shared workspace can also be mounted at paths such as
/srv/agent-work/blockninja. Even when both paths address the same files, the
string mismatch caused an explicit orchestrator scan to be classified as CMS;
the CMS protobuf namespace filter then removed every orchestrator RPC.
Decision
- Discover the consolidated workspace by walking upward from the current directory, executable directory, and compiled source location.
- Recognize a workspace only when the independent
cms,orchestrator, andcheck-safetyGo modules are present. - Retain
$HOME/src/blockninjaonly as the final compatibility fallback for an installed binary launched outside the workspace. - Compare existing paths with filesystem identity and resolved symlinks before falling back to cleaned absolute strings.
- Cover non-home workspaces and aliased paths with regression tests.
- Reconcile the registry assertion, golden snapshots, and check catalog with the already-shipped 34th schema-purity check so the runner's own suite is a reliable validation gate again.
- Remove the obsolete core-SDK version helper left behind when check 2c moved to the published plugin SDK, restoring strict unused-code linting.
Consequences
check-safety ../orchestratorselects theorchestrator.*RPC namespace from any consolidated workspace location.- Default CMS scans and
--orchestratorresolve siblings from the active checkout instead of silently crossing into another checkout. - Symlink, bind-mount, and alternate mount-path aliases are treated as the same repository when the operating system reports the same underlying directory.
Keywords: check-safety, workspace discovery, /srv/agent-work, $HOME/src/blockninja, orchestrator, CMS, RPC namespace, samePath, symlink, bind mount