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
|
||
|---|---|---|
| .. | ||
| get-help-category.nu | ||
| prov-bootstrap.nu | ||
| prov-cluster-deploy.nu | ||
| query-infra-detail.nu | ||
| query-infra.nu | ||
| query-providers.nu | ||
| query-workspace-info.nu | ||
| README.md | ||
| validate-command.nu | ||
| validate-config.nu | ||
Core Provisioning Scripts
Reusable Nushell scripts for querying system state, validation, and metadata extraction.
Purpose
These scripts provide a clean interface for:
- Querying system resources (providers, servers, clusters, etc.)
- Validating system state (commands, configuration)
- Extracting metadata (help categories, schema info)
Usage Contexts
- Bash wrapper (
provisioning/core/cli/provisioning) - CLI commands (via dispatcher and command handlers)
- Direct invocation (for debugging, testing, CI/CD)
- Other scripts (as utilities)
Scripts
Query Scripts (Read-only resource listing)
| Script | Purpose | Usage |
|---|---|---|
query-providers.nu |
List all available providers | nu query-providers.nu |
query-taskservs.nu |
List all available taskservs | nu query-taskservs.nu |
query-servers.nu |
List servers in active workspace | nu query-servers.nu [infra_filter] |
query-clusters.nu |
List clusters in active workspace | nu query-clusters.nu |
query-infra.nu |
List infrastructures in active workspace | nu query-infra.nu |
Output: Table format (columns: name, type, status, etc.)
Validation Scripts
| Script | Purpose | Usage |
|---|---|---|
validate-command.nu |
Validate if command exists in registry | nu validate-command.nu <command_name> |
validate-config.nu |
Validate configuration structure | nu validate-config.nu |
Output:
validate-command.nu:FOUND|true/falseorNOT_FOUNDvalidate-config.nu: Validation errors or success message
Metadata Scripts
| Script | Purpose | Usage |
|---|---|---|
get-help-category.nu |
Get help category for command | nu get-help-category.nu <schema_file> <command> |
Output: Help category string or empty
Design Principles
- ✅ Single responsibility: Each script does ONE thing
- ✅ Reusable: Can be called from any context
- ✅ Testable: Can run standalone with
nu --ide-check - ✅ Self-contained: Minimal dependencies (lib_minimal.nu when needed)
- ✅ Structured output: Consistent format for bash consumption
Naming Convention
query-*.nu: Read-only resource listingvalidate-*.nu: System state validationget-*.nu: Metadata extraction
Guidelines
- Use
do { } | completepattern for error handling - All scripts should be executable (
chmod +x) - Use
#!/usr/bin/env nushebang - Source
lib_minimal.nuwhen workspace functions needed - Return structured output (table, string, or status code)
- No side effects (read-only operations)
Testing
# Syntax validation
nu --ide-check 50 query-providers.nu
# Functional testing
nu query-providers.nu
nu validate-command.nu platform
nu get-help-category.nu "$PROVISIONING/core/nulib/commands-registry.ncl" guides
Migration from init-wrapper
These scripts were previously in provisioning/core/cli/init-wrapper/ with different names:
provider-list.nu→query-providers.nutaskserv-list.nu→query-taskservs.nuserver-list.nu→query-servers.nucluster-list.nu→query-clusters.nuinfra-list.nu→query-infra.nuvalidate-command.nu→ (same name)validate-config.nu→ (same name)get-help-category.nu→ (same name)
The new location (core/nulib/scripts/) reflects their general-purpose nature beyond just bash wrapper initialization.