Removed the final 5 fast-path intercepts and their scripts. All list/query
commands now route through a single semantic path.
Bash wrapper — removed intercept blocks:
- `workspace list/active/info` (was: _nu_minimal + query-workspace-info.nu)
- `env/allenv` (was: _nu_minimal "env-quick | table")
- `provider/providers list` (was: scripts/query-providers.nu)
- `infra list/info` (was: scripts/query-infra.nu + query-infra-detail.nu)
- `validate config` (was: scripts/validate-config.nu)
Preserved in wrapper:
- workspace `--help` intercept (avoids full load for help)
- infra with no args → `provisioning help infrastructure` (help menu)
Fast-path scripts deleted:
- nulib/scripts/query-providers.nu
- nulib/scripts/query-workspace-info.nu
- nulib/scripts/query-infra.nu
- nulib/scripts/query-infra-detail.nu
- nulib/scripts/validate-config.nu
Remaining scripts/ files (all legitimate, not fast-paths):
- get-help-category.nu (help category parsing)
- prov-bootstrap.nu (bootstrap logic, not a data query)
- prov-cluster-deploy.nu (deploy execution, not a list)
- validate-command.nu (registry validation used by _validate_command)
- README.md
Transitional note:
These commands temporarily route through the main dispatch `*)` default case
which still uses $RUNNER (the 492-line Nu runner). Cold-start for them is
currently slow (~70s in fat-path). Phase 4.3/4.4 will empty root mod.nu and
delete the Nu runner — restoring <1s cold-start for all commands.
Single-route invariant achieved:
- No command has two implementations with different semantics
- Daemon and cache become purely orthogonal concerns (transport + read
optimization), toggleable without changing what the command returns
Refs: ADR-025 Phase 4, workspaces/libre-daoshi/.coder/2026-04-17-server-list-daemon-middleware.info.md
Removed fast-path intercepts and their scripts for taskserv/server/cluster list
commands. These commands now route exclusively to their thin handlers which
invoke the full semantic path (middleware + live provider state).
Bash wrapper — removed intercept blocks:
- `taskserv/task list` (was: scripts/query-taskservs.nu)
- `server/s list/l` (was: scripts/query-servers.nu via lib_minimal)
- `cluster/cl list` (was: scripts/query-clusters.nu via lib_minimal)
Fast-path scripts deleted:
- nulib/scripts/query-taskservs.nu
- nulib/scripts/query-servers.nu
- nulib/scripts/query-clusters.nu
Preserved:
- Daemon routing for server list/ls/l (added by parallel work — still routes
to daemon; daemon internally dispatches to thin handler)
- Thin handlers provisioning-{taskserv,server,cluster}.nu (ADR-025 canonical)
- Their `list/ls/l` cases already exist and call `main list` in the full path
Rationale — why single route matters:
The parallel server-list investigation documented that `server list` fast-path
returned different columns than `server ls` (incomplete data — workspace
detection failures, silent fallbacks). Two implementations = two semantics =
bugs of divergence. Deleting the fast-path forces ONE semantic route; daemon
and cache become orthogonal transport/optimization concerns that can be
toggled without changing what the command returns.
Net effect:
- Same command always returns same data (post-Phase4 all list commands
align; pre-Phase4 only taskserv/server/cluster are aligned)
- `prvng server list` with daemon on/off returns identical data
- Cold-start impact: minor regression (~200-500ms) while Phase 4 completes —
once mod.nu is emptied and thin handlers fully selective, cold-start drops
to <1s for these commands even without daemon
Refs: ADR-025 Phase 4, workspaces/libre-daoshi/.coder/2026-04-17-server-list-daemon-middleware.info.md