@miller-tech/uap 2.21.3 → 2.36.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -10
- package/config/model-profiles/qwen38-coder390.json +46 -0
- package/config/model-profiles/qwen38.json +3 -2
- package/config/model-registry.json +110 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/benchmarks/paired/types.d.ts +2 -2
- package/dist/bin/cli.js +315 -20
- package/dist/bin/cli.js.map +1 -1
- package/dist/cli/attention.d.ts +6 -0
- package/dist/cli/attention.d.ts.map +1 -0
- package/dist/cli/attention.js +115 -0
- package/dist/cli/attention.js.map +1 -0
- package/dist/cli/bench-report.d.ts +82 -0
- package/dist/cli/bench-report.d.ts.map +1 -0
- package/dist/cli/bench-report.js +237 -0
- package/dist/cli/bench-report.js.map +1 -0
- package/dist/cli/clients.d.ts +6 -0
- package/dist/cli/clients.d.ts.map +1 -0
- package/dist/cli/clients.js +142 -0
- package/dist/cli/clients.js.map +1 -0
- package/dist/cli/dashboard-grants.d.ts +26 -0
- package/dist/cli/dashboard-grants.d.ts.map +1 -0
- package/dist/cli/dashboard-grants.js +69 -0
- package/dist/cli/dashboard-grants.js.map +1 -0
- package/dist/cli/dashboard-pace.d.ts +31 -0
- package/dist/cli/dashboard-pace.d.ts.map +1 -0
- package/dist/cli/dashboard-pace.js +42 -0
- package/dist/cli/dashboard-pace.js.map +1 -0
- package/dist/cli/dashboard-session.d.ts +25 -0
- package/dist/cli/dashboard-session.d.ts.map +1 -0
- package/dist/cli/dashboard-session.js +814 -0
- package/dist/cli/dashboard-session.js.map +1 -0
- package/dist/cli/dashboard-types.d.ts +18 -0
- package/dist/cli/dashboard-types.d.ts.map +1 -0
- package/dist/cli/dashboard-types.js +9 -0
- package/dist/cli/dashboard-types.js.map +1 -0
- package/dist/cli/dashboard.d.ts +2 -18
- package/dist/cli/dashboard.d.ts.map +1 -1
- package/dist/cli/dashboard.js +43 -793
- package/dist/cli/dashboard.js.map +1 -1
- package/dist/cli/deliver.d.ts +35 -0
- package/dist/cli/deliver.d.ts.map +1 -1
- package/dist/cli/deliver.js +93 -9
- package/dist/cli/deliver.js.map +1 -1
- package/dist/cli/diff.d.ts +85 -0
- package/dist/cli/diff.d.ts.map +1 -0
- package/dist/cli/diff.js +293 -0
- package/dist/cli/diff.js.map +1 -0
- package/dist/cli/eta.d.ts +35 -0
- package/dist/cli/eta.d.ts.map +1 -0
- package/dist/cli/eta.js +101 -0
- package/dist/cli/eta.js.map +1 -0
- package/dist/cli/handsfree.d.ts +7 -0
- package/dist/cli/handsfree.d.ts.map +1 -1
- package/dist/cli/handsfree.js +27 -0
- package/dist/cli/handsfree.js.map +1 -1
- package/dist/cli/hooks.d.ts.map +1 -1
- package/dist/cli/hooks.js +126 -5
- package/dist/cli/hooks.js.map +1 -1
- package/dist/cli/loops.d.ts +24 -5
- package/dist/cli/loops.d.ts.map +1 -1
- package/dist/cli/loops.js +92 -12
- package/dist/cli/loops.js.map +1 -1
- package/dist/cli/models.d.ts +62 -0
- package/dist/cli/models.d.ts.map +1 -0
- package/dist/cli/models.js +567 -0
- package/dist/cli/models.js.map +1 -0
- package/dist/cli/plan.d.ts +9 -0
- package/dist/cli/plan.d.ts.map +1 -1
- package/dist/cli/plan.js +57 -4
- package/dist/cli/plan.js.map +1 -1
- package/dist/cli/proxy-relay.d.ts +55 -0
- package/dist/cli/proxy-relay.d.ts.map +1 -0
- package/dist/cli/proxy-relay.js +116 -0
- package/dist/cli/proxy-relay.js.map +1 -0
- package/dist/cli/proxy.d.ts +4 -0
- package/dist/cli/proxy.d.ts.map +1 -1
- package/dist/cli/proxy.js +26 -1
- package/dist/cli/proxy.js.map +1 -1
- package/dist/cli/sandbox.d.ts +101 -4
- package/dist/cli/sandbox.d.ts.map +1 -1
- package/dist/cli/sandbox.js +393 -44
- package/dist/cli/sandbox.js.map +1 -1
- package/dist/cli/self.d.ts +13 -0
- package/dist/cli/self.d.ts.map +1 -0
- package/dist/cli/self.js +94 -0
- package/dist/cli/self.js.map +1 -0
- package/dist/cli/systemd-services.d.ts +2 -8
- package/dist/cli/systemd-services.d.ts.map +1 -1
- package/dist/cli/systemd-services.js +5 -20
- package/dist/cli/systemd-services.js.map +1 -1
- package/dist/cli/task.js +1 -1
- package/dist/cli/task.js.map +1 -1
- package/dist/cli/wizard-config.d.ts.map +1 -1
- package/dist/cli/wizard-config.js +31 -2
- package/dist/cli/wizard-config.js.map +1 -1
- package/dist/config/settings-registry.d.ts +1 -1
- package/dist/config/settings-registry.d.ts.map +1 -1
- package/dist/config/settings-registry.js +108 -0
- package/dist/config/settings-registry.js.map +1 -1
- package/dist/coordination/capability-router.js +2 -2
- package/dist/coordination/capability-router.js.map +1 -1
- package/dist/coordination/database.d.ts +13 -0
- package/dist/coordination/database.d.ts.map +1 -1
- package/dist/coordination/database.js +63 -7
- package/dist/coordination/database.js.map +1 -1
- package/dist/coordination/eta-inject.d.ts +32 -0
- package/dist/coordination/eta-inject.d.ts.map +1 -0
- package/dist/coordination/eta-inject.js +64 -0
- package/dist/coordination/eta-inject.js.map +1 -0
- package/dist/coordination/reactor.d.ts.map +1 -1
- package/dist/coordination/reactor.js +14 -0
- package/dist/coordination/reactor.js.map +1 -1
- package/dist/coordination/service.d.ts +18 -8
- package/dist/coordination/service.d.ts.map +1 -1
- package/dist/coordination/service.js +38 -28
- package/dist/coordination/service.js.map +1 -1
- package/dist/dashboard/client-registry.d.ts +163 -0
- package/dist/dashboard/client-registry.d.ts.map +1 -0
- package/dist/dashboard/client-registry.js +549 -0
- package/dist/dashboard/client-registry.js.map +1 -0
- package/dist/dashboard/controls.d.ts.map +1 -1
- package/dist/dashboard/controls.js +33 -4
- package/dist/dashboard/controls.js.map +1 -1
- package/dist/dashboard/data-seeder.d.ts +10 -7
- package/dist/dashboard/data-seeder.d.ts.map +1 -1
- package/dist/dashboard/data-seeder.js +31 -75
- package/dist/dashboard/data-seeder.js.map +1 -1
- package/dist/dashboard/data-service.d.ts +9 -0
- package/dist/dashboard/data-service.d.ts.map +1 -1
- package/dist/dashboard/data-service.js +32 -3
- package/dist/dashboard/data-service.js.map +1 -1
- package/dist/dashboard/placement-routes.d.ts +119 -0
- package/dist/dashboard/placement-routes.d.ts.map +1 -0
- package/dist/dashboard/placement-routes.js +331 -0
- package/dist/dashboard/placement-routes.js.map +1 -0
- package/dist/dashboard/server.d.ts.map +1 -1
- package/dist/dashboard/server.js +408 -2
- package/dist/dashboard/server.js.map +1 -1
- package/dist/delivery/attention.d.ts +130 -0
- package/dist/delivery/attention.d.ts.map +1 -0
- package/dist/delivery/attention.js +341 -0
- package/dist/delivery/attention.js.map +1 -0
- package/dist/delivery/decompose.d.ts +18 -0
- package/dist/delivery/decompose.d.ts.map +1 -1
- package/dist/delivery/decompose.js +22 -1
- package/dist/delivery/decompose.js.map +1 -1
- package/dist/delivery/eta-estimate.d.ts +111 -0
- package/dist/delivery/eta-estimate.d.ts.map +1 -0
- package/dist/delivery/eta-estimate.js +171 -0
- package/dist/delivery/eta-estimate.js.map +1 -0
- package/dist/delivery/eta.d.ts +23 -0
- package/dist/delivery/eta.d.ts.map +1 -0
- package/dist/delivery/eta.js +59 -0
- package/dist/delivery/eta.js.map +1 -0
- package/dist/delivery/orchestrated-mission.d.ts +10 -0
- package/dist/delivery/orchestrated-mission.d.ts.map +1 -1
- package/dist/delivery/orchestrated-mission.js +15 -1
- package/dist/delivery/orchestrated-mission.js.map +1 -1
- package/dist/delivery/plan-check.d.ts +7 -1
- package/dist/delivery/plan-check.d.ts.map +1 -1
- package/dist/delivery/plan-check.js +23 -2
- package/dist/delivery/plan-check.js.map +1 -1
- package/dist/delivery/run-state.d.ts +1 -1
- package/dist/delivery/run-state.d.ts.map +1 -1
- package/dist/delivery/run-state.js +8 -1
- package/dist/delivery/run-state.js.map +1 -1
- package/dist/delivery/task-orchestrator.d.ts +8 -3
- package/dist/delivery/task-orchestrator.d.ts.map +1 -1
- package/dist/delivery/task-orchestrator.js +75 -43
- package/dist/delivery/task-orchestrator.js.map +1 -1
- package/dist/delivery/task-sync.d.ts +21 -0
- package/dist/delivery/task-sync.d.ts.map +1 -1
- package/dist/delivery/task-sync.js +44 -8
- package/dist/delivery/task-sync.js.map +1 -1
- package/dist/delivery/task-workspace.d.ts +3 -3
- package/dist/delivery/task-workspace.js +3 -3
- package/dist/generators/self-card.d.ts +65 -0
- package/dist/generators/self-card.d.ts.map +1 -0
- package/dist/generators/self-card.js +256 -0
- package/dist/generators/self-card.js.map +1 -0
- package/dist/inference/probe.js +1 -1
- package/dist/inference/probe.js.map +1 -1
- package/dist/memory/prepopulate.d.ts.map +1 -1
- package/dist/memory/prepopulate.js +2 -0
- package/dist/memory/prepopulate.js.map +1 -1
- package/dist/models/analytics.d.ts +32 -0
- package/dist/models/analytics.d.ts.map +1 -1
- package/dist/models/analytics.js +68 -5
- package/dist/models/analytics.js.map +1 -1
- package/dist/models/plan-readability.d.ts +55 -0
- package/dist/models/plan-readability.d.ts.map +1 -0
- package/dist/models/plan-readability.js +339 -0
- package/dist/models/plan-readability.js.map +1 -0
- package/dist/placement/admission.d.ts +59 -0
- package/dist/placement/admission.d.ts.map +1 -0
- package/dist/placement/admission.js +197 -0
- package/dist/placement/admission.js.map +1 -0
- package/dist/placement/auto.d.ts +44 -0
- package/dist/placement/auto.d.ts.map +1 -0
- package/dist/placement/auto.js +212 -0
- package/dist/placement/auto.js.map +1 -0
- package/dist/placement/enforce.d.ts +128 -0
- package/dist/placement/enforce.d.ts.map +1 -0
- package/dist/placement/enforce.js +655 -0
- package/dist/placement/enforce.js.map +1 -0
- package/dist/placement/idle.d.ts +50 -0
- package/dist/placement/idle.d.ts.map +1 -0
- package/dist/placement/idle.js +213 -0
- package/dist/placement/idle.js.map +1 -0
- package/dist/placement/ledger.d.ts +323 -0
- package/dist/placement/ledger.d.ts.map +1 -0
- package/dist/placement/ledger.js +263 -0
- package/dist/placement/ledger.js.map +1 -0
- package/dist/placement/preview.d.ts +51 -0
- package/dist/placement/preview.d.ts.map +1 -0
- package/dist/placement/preview.js +61 -0
- package/dist/placement/preview.js.map +1 -0
- package/dist/placement/probes.d.ts +47 -0
- package/dist/placement/probes.d.ts.map +1 -0
- package/dist/placement/probes.js +207 -0
- package/dist/placement/probes.js.map +1 -0
- package/dist/placement/proxy-env.d.ts +21 -0
- package/dist/placement/proxy-env.d.ts.map +1 -0
- package/dist/placement/proxy-env.js +42 -0
- package/dist/placement/proxy-env.js.map +1 -0
- package/dist/placement/registry.d.ts +1038 -0
- package/dist/placement/registry.d.ts.map +1 -0
- package/dist/placement/registry.js +274 -0
- package/dist/placement/registry.js.map +1 -0
- package/dist/policies/liveness.d.ts +6 -8
- package/dist/policies/liveness.d.ts.map +1 -1
- package/dist/policies/liveness.js +6 -25
- package/dist/policies/liveness.js.map +1 -1
- package/dist/policies/sandbox-anchor.d.ts +91 -0
- package/dist/policies/sandbox-anchor.d.ts.map +1 -0
- package/dist/policies/sandbox-anchor.js +187 -0
- package/dist/policies/sandbox-anchor.js.map +1 -0
- package/dist/policies/sandbox-grants.d.ts +131 -0
- package/dist/policies/sandbox-grants.d.ts.map +1 -0
- package/dist/policies/sandbox-grants.js +562 -0
- package/dist/policies/sandbox-grants.js.map +1 -0
- package/dist/state/manifest.d.ts +4 -2
- package/dist/state/manifest.d.ts.map +1 -1
- package/dist/state/manifest.js +32 -16
- package/dist/state/manifest.js.map +1 -1
- package/dist/utils/checkout-root.d.ts +2 -0
- package/dist/utils/checkout-root.d.ts.map +1 -0
- package/dist/utils/checkout-root.js +43 -0
- package/dist/utils/checkout-root.js.map +1 -0
- package/dist/utils/resolve-uap-bin.d.ts +5 -0
- package/dist/utils/resolve-uap-bin.d.ts.map +1 -0
- package/dist/utils/resolve-uap-bin.js +33 -0
- package/dist/utils/resolve-uap-bin.js.map +1 -0
- package/dist/utils/terminal-safe.d.ts +12 -0
- package/dist/utils/terminal-safe.d.ts.map +1 -0
- package/dist/utils/terminal-safe.js +53 -0
- package/dist/utils/terminal-safe.js.map +1 -0
- package/docs/ATTRIBUTION.md +1 -0
- package/docs/DASHBOARD_UPLIFT_SPEC.md +8 -8
- package/docs/INDEX.md +6 -5
- package/docs/architecture/OVERVIEW.md +15 -3
- package/docs/architecture/PROTOCOL.md +7 -1
- package/docs/architecture/adr/0006-operator-directed-model-placement.md +86 -0
- package/docs/architecture/adr/0007-auto-displacement-allowlist-as-standing-consent.md +79 -0
- package/docs/architecture/adr/0008-fleet-clients-link-out.md +92 -0
- package/docs/architecture/adr/0009-completion-triggered-dispatch-and-per-leaf-model-dials.md +71 -0
- package/docs/architecture/adr/0010-attention-queue-and-afk-auto-decider.md +159 -0
- package/docs/architecture/adr/0011-sandbox-grants-and-network-egress-boundary.md +219 -0
- package/docs/architecture/adr/0012-operator-legibility-surfaces.md +175 -0
- package/docs/getting-started/INSTALLATION.md +1 -1
- package/docs/guides/AUTOMATIC_FEATURES.md +8 -0
- package/docs/guides/LOCAL_MODELS.md +1 -1
- package/docs/guides/PROXY.md +2 -1
- package/docs/guides/SANDBOX.md +91 -4
- package/docs/integrations/MCP_ROUTER.md +1 -1
- package/docs/plans/model-performance-proof-options.md +176 -0
- package/docs/reference/API.md +1 -1
- package/docs/reference/CLI.md +169 -4
- package/docs/reference/COMPARISON.md +1 -1
- package/docs/reference/CONFIGURATION.md +12 -3
- package/docs/reference/CONFIGURATION_REFERENCE.md +269 -14
- package/docs/reference/DATABASE_SCHEMA.md +1 -1
- package/docs/reference/FEATURES.md +15 -3
- package/docs/reference/PATTERNS.md +1 -1
- package/docs/reference/PLATFORMS.md +14 -1
- package/docs/specs/operator-model-placement.md +1314 -0
- package/docs/specs/operator-model-placement.review.md +339 -0
- package/package.json +2 -2
- package/scripts/maintenance/publish-npm.sh +23 -11
- package/scripts/version-bump.sh +6 -51
- package/src/policies/enforcers/__pycache__/_common.cpython-311.pyc +0 -0
- package/src/policies/enforcers/__pycache__/expert_review_required.cpython-311.pyc +0 -0
- package/src/policies/enforcers/__pycache__/quality_metrics_gate.cpython-311.pyc +0 -0
- package/src/policies/schemas/policies/mandatory-testing-deployment.md +2 -5
- package/templates/hooks/__pycache__/deliver_autoroute.cpython-311.pyc +0 -0
- package/templates/hooks/session-start.sh +44 -0
- package/tools/agents/UAP/cli.py +14 -3
- package/tools/agents/UAP/paths.py +50 -0
- package/tools/agents/scripts/__pycache__/toolcall_path_normalizer.cpython-311.pyc +0 -0
- package/tools/agents/scripts/anthropic_proxy.py +1420 -100
- package/tools/agents/scripts/toolcall_path_normalizer.py +46 -1
- package/tools/agents/tests/test_anthropic_proxy_streaming.py +29 -6
- package/tools/agents/tests/test_doubling_break.py +64 -5
- package/tools/agents/tests/test_error_loop_break.py +10 -4
- package/tools/agents/tests/test_error_loop_ignores_correctives.py +13 -2
- package/tools/agents/tests/test_lockstep_escalation.py +280 -9
- package/tools/agents/tests/test_path_containment.py +94 -0
- package/tools/agents/tests/test_proxy_unix_socket.py +162 -0
- package/tools/agents/tests/test_signature_quality.py +400 -0
- package/tools/agents/tests/test_uap_compliance.py +11 -1
- package/web/dash/core.js +1 -0
- package/web/dash/tab-clients.js +196 -0
- package/web/dash/tab-models.js +387 -8
- package/web/dash/tab-policies.js +87 -4
- package/web/dash/tabs.js +77 -73
- package/web/dashboard.html +6 -0
- package/src/policies/enforcers/__pycache__/_common.cpython-312.pyc +0 -0
- package/src/policies/enforcers/__pycache__/expert_review_required.cpython-312.pyc +0 -0
- package/src/policies/enforcers/__pycache__/quality_metrics_gate.cpython-312.pyc +0 -0
- package/templates/hooks/__pycache__/deliver_autoroute.cpython-312.pyc +0 -0
- package/tools/agents/scripts/__pycache__/toolcall_path_normalizer.cpython-312.pyc +0 -0
- package/web/dash/tab-agents.js +0 -21
- package/web/dash/tab-deliver.js +0 -12
- package/web/dash/tab-memory.js +0 -12
- package/web/dash/tab-orchestration.js +0 -21
- package/web/dash/tab-overview.js +0 -21
- package/web/dash/tab-tasks.js +0 -21
package/docs/reference/CLI.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# UAP CLI Reference
|
|
2
2
|
|
|
3
3
|
> Complete command reference for the Universal Agent Protocol command-line interface (`uap`).
|
|
4
|
-
> Version
|
|
4
|
+
> Version v2.31.0.
|
|
5
5
|
|
|
6
6
|
> **🏭 Where this fits:** Every station — this is the control panel for the whole
|
|
7
7
|
> line. **What it delivers:** one binary that drives each stage of your
|
|
@@ -43,6 +43,8 @@ runs, keeping `--help` fast.
|
|
|
43
43
|
| [`deliver`](#deliver) | Convergence loop: iterate a model against gates until delivery |
|
|
44
44
|
| [`harness`](#harness) | HALO harness optimization over execution traces |
|
|
45
45
|
| [`bench`](#bench) | Controlled paired (UAP-on vs UAP-off) benchmark with CIs |
|
|
46
|
+
| [`eta`](#eta) | Measured pace: the EWMA ETA from this project's own recorded attempts |
|
|
47
|
+
| [`diff`](#diff) | Local diff view: uncommitted + untracked + unpushed at a glance |
|
|
46
48
|
| [`self-harness`](#self-harness) | Self-improving harness: mine failures → propose → validate → commit |
|
|
47
49
|
| [`tune`](#tune) | LLM self-tuning: raise a small model toward Opus by tuning UAP flags |
|
|
48
50
|
| [`verify`](#verify) | Runtime verification gate: prove changed code actually runs |
|
|
@@ -72,7 +74,9 @@ runs, keeping `--help` fast.
|
|
|
72
74
|
| [`schema-diff`](#schema-diff) | Detect breaking schema changes between branches |
|
|
73
75
|
| [`policy`](#policy) | UAP policy management |
|
|
74
76
|
| [`quality`](#quality) | Quality-metrics gate: complexity, coverage, CRAP, mutation, duplication, any-types |
|
|
75
|
-
| `plan` | Validate + record plan validation (validate-plan-on-change gate): `uap plan validate [file]`
|
|
77
|
+
| `plan` | Validate + record plan validation (validate-plan-on-change gate): `uap plan validate [file]` runs the deterministic readability scan + model review, then stamps |
|
|
78
|
+
| `self` | Self-knowledge card: build the version-pinned digest of UAP's own command/feature surface (`uap self card`), and answer "how do I X" offline (`uap self query "<question>"`) |
|
|
79
|
+
| `attention` | Operator attention queue: decisions waiting on you (`list`), answer them (`decide`), and the AFK auto-decider that adopts recorded safe defaults (`sweep`) |
|
|
76
80
|
| `principles` | Engineering principles: show them, and answer the backward-compatibility stance (`status \| ask \| compat \| maturity \| show`) |
|
|
77
81
|
| `fidelity` | Inspect or set the maximum-fidelity verification mode (raised gates + always-on visual/vision review) |
|
|
78
82
|
| `interaction` | Interaction gate: derive probes from the requirements and play the artifact through them |
|
|
@@ -82,6 +86,7 @@ runs, keeping `--help` fast.
|
|
|
82
86
|
| `self-harness mine-prod` | Mine weaknesses from production traces (HALO + proxy log) and enqueue proposals for gated validation (never applies) |
|
|
83
87
|
| `self-harness pending` | List queued proposals awaiting validation + gate (from mine-prod) |
|
|
84
88
|
| `bench paired` | Run the paired A/B over a real-gate suite; reports accuracy + efficiency deltas with CIs |
|
|
89
|
+
| `bench report` | Read the newest paired run (deltas with CI/verdict/discrimination); `--compare` for run-to-run drift |
|
|
85
90
|
| `self-harness prune` | Ablation-prune: drop stale / no-longer-paying-off transfer + pending entries |
|
|
86
91
|
| `self-harness run` | Autonomous loop: mine → propose → validate (real paired bench per Mod) → decide → (with `--apply`) commit + versioned snapshot |
|
|
87
92
|
| `self-harness transfer` | List the cross-model transfer store (accepted/rejected Mods keyed by failure signature) |
|
|
@@ -489,16 +494,72 @@ with confidence intervals, a McNemar gate-value 2×2, and a cost–accuracy Pare
|
|
|
489
494
|
| Subcommand | Key flags | Purpose |
|
|
490
495
|
|------------|-----------|---------|
|
|
491
496
|
| `paired` | `--suite`, `--adapter <mock\|opencode\|claude\|mini\|raw\|deliver>`, `--model`, `--epochs`, `--concurrency`, `--ablation`, `--lazy`, `--seed`, `--iterations`, `--rope-margin`, `--out`, `--json` | Run the UAP-on vs UAP-off A/B; writes `records.jsonl` + Markdown/JSON reports |
|
|
497
|
+
| `report` | `--dir`, `--compare`, `--full`, `--json` | Read the newest paired report (or `--dir`); `--compare` shows run-to-run delta drift. Deltas always carry their CI, verdict, and discrimination status |
|
|
492
498
|
|
|
493
499
|
```bash
|
|
494
500
|
uap bench paired --adapter opencode --model qwen36-a3b --epochs 5
|
|
495
501
|
uap bench paired --ablation # leave-one-out per UAP component
|
|
502
|
+
uap bench report # what did the latest run measure
|
|
503
|
+
uap bench report --compare # did the delta hold since the last run
|
|
496
504
|
```
|
|
497
505
|
|
|
498
506
|
See [Paired Harness](../benchmarks/PAIRED_HARNESS.md) for the methodology.
|
|
499
507
|
|
|
500
508
|
---
|
|
501
509
|
|
|
510
|
+
## `eta`
|
|
511
|
+
|
|
512
|
+
Measured pace: the EWMA ETA for a (model, taskType,
|
|
513
|
+
complexity) key, built **only** from this project's own recorded attempts
|
|
514
|
+
(the ETA sample stream in the model-analytics store). Recent attempts weigh
|
|
515
|
+
more (half-life in samples, default 10); the sample count, the spread, and
|
|
516
|
+
the failure rate always travel with the number — a pace without provenance
|
|
517
|
+
is exactly the confident guess this replaces. Fewer than 3 successful
|
|
518
|
+
attempts is **not an estimate**: the command says so instead of guessing.
|
|
519
|
+
3–5 samples is `thin` (shown with the caveat); 6+ is `solid`. `--all` lists
|
|
520
|
+
every key with history and **names the keys that are still too thin**
|
|
521
|
+
instead of silently omitting them.
|
|
522
|
+
|
|
523
|
+
| Flag | Purpose |
|
|
524
|
+
|------|---------|
|
|
525
|
+
| `--model <id>` | Model id (default: the active/executor model) |
|
|
526
|
+
| `--taskType <t>` / `--complexity <c>` | Sample key (default `orchestrated`/`medium`) |
|
|
527
|
+
| `--all` | Every key with history: estimates + too-thin keys by name (capped at the 50 most-active keys, truncation named); `--json` with `--all` emits `{keys, estimates, truncated}` |
|
|
528
|
+
| `--limit <n>` / `--half-life <n>` | Sample window (default 50) / EWMA half-life in samples (default 10) — garbage input is refused loudly, never folded |
|
|
529
|
+
| `--db <path>` | Pin the analytics DB path (odd layouts; the default is the project store) |
|
|
530
|
+
| `--json` | Machine-readable: `{key, estimate}` for one key, `{keys, estimates, truncated}` for `--all` |
|
|
531
|
+
|
|
532
|
+
```bash
|
|
533
|
+
uap eta # the active model's pace for orchestrated/medium
|
|
534
|
+
uap eta --all # every key; too-thin keys named, not hidden
|
|
535
|
+
```
|
|
536
|
+
|
|
537
|
+
---
|
|
538
|
+
|
|
539
|
+
## `diff`
|
|
540
|
+
|
|
541
|
+
Local diff view: what the agent changed around here, in one
|
|
542
|
+
honest render — uncommitted rows (staged + unstaged vs HEAD) with per-file
|
|
543
|
+
+N/-N and git status glyphs, untracked paths, honest totals, and unpushed
|
|
544
|
+
commits vs the base with ahead/behind and aggregate deltas. Binary files
|
|
545
|
+
render `±` (unknown), never `0`. Safe-git only: execFileSync argument
|
|
546
|
+
arrays, a 5s timeout, and the stateful caches (fsmonitor, untrackedCache)
|
|
547
|
+
defeated. Outside a repository it prints an explicit `git:` error line —
|
|
548
|
+
never a stack trace, never silence.
|
|
549
|
+
|
|
550
|
+
| Flag | Purpose |
|
|
551
|
+
|------|---------|
|
|
552
|
+
| `--base <ref>` | Base ref for the unpushed view (default `master`) |
|
|
553
|
+
| `--max <n>` | Per-section file cap (default 40) |
|
|
554
|
+
| `--json` | The raw facts as JSON |
|
|
555
|
+
|
|
556
|
+
```bash
|
|
557
|
+
uap diff # the working-tree + unpushed picture
|
|
558
|
+
uap diff --base origin/master # against a different base
|
|
559
|
+
```
|
|
560
|
+
|
|
561
|
+
---
|
|
562
|
+
|
|
502
563
|
## `self-harness`
|
|
503
564
|
|
|
504
565
|
Self-improving harness: mine model-specific failures from traces, propose a
|
|
@@ -640,6 +701,9 @@ Ports/hosts: `UAP_DASH_PORT` (3847), `UAP_DASH_HOST` (localhost),
|
|
|
640
701
|
| `--client <id>` | Client/session id (defaults to the session env or parent pid) |
|
|
641
702
|
| `--client-pid <n>` | Long-lived agent pid for liveness (hooks pass `$PPID`) |
|
|
642
703
|
| `--port <n>` | Proxy port (default 4000 / `$PROXY_PORT`) |
|
|
704
|
+
| `--socket <path>` | `connect`: proxy AF_UNIX socket (default `$UAP_PROXY_SOCKET`) |
|
|
705
|
+
| `--ready-file <path>` | `connect`: touch this file (with the bound port) once listening |
|
|
706
|
+
| `--allow-anyone` | `connect`: REQUIRED consent — see the warning below |
|
|
643
707
|
| `--if-enabled` | No-op unless `.uap.json` `proxy.autostart` is true (hook-safe) |
|
|
644
708
|
| `--no-dashboard` | Don't start the ride-along dashboard on this `ensure`/`start` |
|
|
645
709
|
| `--quiet` / `--json` | Suppress output (hooks) / machine-readable status |
|
|
@@ -648,8 +712,23 @@ Ports/hosts: `UAP_DASH_PORT` (3847), `UAP_DASH_HOST` (localhost),
|
|
|
648
712
|
uap proxy status --json # includes a `dashboard` block (port, url, healthy, owner)
|
|
649
713
|
uap proxy restart # e.g. after changing PROXY_* in .uap/proxy.env
|
|
650
714
|
uap proxy dashboard off # opt out of the ride-along dashboard
|
|
715
|
+
uap proxy connect --socket ~/.uap/proxy.sock --port 4000 --allow-anyone
|
|
651
716
|
```
|
|
652
717
|
|
|
718
|
+
`connect` is the companion to the proxy's optional AF_UNIX surface
|
|
719
|
+
(`PROXY_SOCKET`, served 0600): a small relay that accepts on a local TCP port
|
|
720
|
+
and pipes every byte to the socket, for clients that cannot speak AF_UNIX. It
|
|
721
|
+
is fail-closed (an upstream failure destroys the client connection instead of
|
|
722
|
+
hanging it) and touches a `--ready-file` once listening, so wrappers can wait
|
|
723
|
+
out the boot race.
|
|
724
|
+
|
|
725
|
+
**Why `--allow-anyone` is required:** the 0600 socket exists so only the
|
|
726
|
+
owning USER can reach the model path; the relay re-serves it on loopback
|
|
727
|
+
TCP, and while it runs EVERY local user can reach the model path through
|
|
728
|
+
it — the gate, inverted. The command refuses to start without the explicit
|
|
729
|
+
flag, says so on stderr while it runs, and should be stopped when the work
|
|
730
|
+
is done.
|
|
731
|
+
|
|
653
732
|
The proxy binds `127.0.0.1` by default; see the proxy `PROXY_*` settings in the
|
|
654
733
|
[Configuration Reference](CONFIGURATION_REFERENCE.md) and [Local Models](../guides/LOCAL_MODELS.md).
|
|
655
734
|
|
|
@@ -707,10 +786,37 @@ current dir + scratch are writable, so writes outside fail at the kernel — the
|
|
|
707
786
|
boundary `--dangerously-skip-permissions` cannot bypass.
|
|
708
787
|
|
|
709
788
|
```bash
|
|
710
|
-
uap sandbox -- <command> [args...]
|
|
789
|
+
uap sandbox [--session <id>] [--net shared|off] -- <command> [args...]
|
|
790
|
+
```
|
|
791
|
+
|
|
792
|
+
The `--` separator before the command is REQUIRED: without it, the sandbox's
|
|
793
|
+
own flags (`--session`, `--net`, `--ttl`, `--reason`, `--json`) are parsed as
|
|
794
|
+
sandbox options rather than passed through to the session command. The grant
|
|
795
|
+
verbs are only intercepted when there is no `--` — `uap sandbox -- revoke …`
|
|
796
|
+
runs a binary named `revoke`, not the ledger verb.
|
|
797
|
+
|
|
798
|
+
Bridge P4 authorities on top of the floor:
|
|
799
|
+
|
|
800
|
+
- `--net off` — the kernel egress boundary: own network namespace with nothing
|
|
801
|
+
up (no TCP, no DNS, not even loopback). For untrusted code, evals, and
|
|
802
|
+
data-only work; a harness that needs the model fails loudly by design.
|
|
803
|
+
- per-session writable holes from the consent ledger (reason REQUIRED, TTL
|
|
804
|
+
default 8h / cap 7d, audit-logged):
|
|
805
|
+
|
|
806
|
+
```bash
|
|
807
|
+
uap sandbox grant <path...> --session <id> --reason "..." [--ttl <secs>]
|
|
808
|
+
uap sandbox grants [--session <id>] [--json]
|
|
809
|
+
uap sandbox revoke <grantId>
|
|
711
810
|
```
|
|
712
811
|
|
|
713
|
-
|
|
812
|
+
The grants listing states the ledger's tamper-evidence verdict (ADR 0011):
|
|
813
|
+
a ledger that fails its out-of-checkout anchor check is stamped INTEGRITY
|
|
814
|
+
MISMATCH — rows are still listed but marked unverified, new grants are
|
|
815
|
+
refused, and a sandbox session opens ZERO grant-derived holes. With
|
|
816
|
+
`--json` the alarm rides stderr so the data stays pure.
|
|
817
|
+
|
|
818
|
+
See [Sandbox](../guides/SANDBOX.md) and
|
|
819
|
+
[ADR 0011](../architecture/adr/0011-sandbox-grants-and-network-egress-boundary.md).
|
|
714
820
|
|
|
715
821
|
---
|
|
716
822
|
|
|
@@ -1115,6 +1221,62 @@ a deliberate act — do it only with reviewer sign-off.
|
|
|
1115
1221
|
|
|
1116
1222
|
---
|
|
1117
1223
|
|
|
1224
|
+
## `self`
|
|
1225
|
+
|
|
1226
|
+
The self-knowledge card (S2): a small, version-pinned digest of UAP's own
|
|
1227
|
+
command surface and feature catalog, generated offline from the docs that ship
|
|
1228
|
+
inside the installed package (`docs/reference/CLI.md` +
|
|
1229
|
+
`docs/reference/FEATURES.md`). An agent that must search online to learn its
|
|
1230
|
+
own features wastes turns and self-describes from stale sources; the card is
|
|
1231
|
+
the fix. Cached in the project's `.uap/self-card.md` and regenerated
|
|
1232
|
+
automatically when the installed version or the source docs change
|
|
1233
|
+
(fingerprint-pinned). The session-start hook keeps it fresh and surfaces a
|
|
1234
|
+
pointer block.
|
|
1235
|
+
|
|
1236
|
+
| Subcommand | Key flags | Purpose |
|
|
1237
|
+
|------------|-----------|---------|
|
|
1238
|
+
| `card` | `--refresh`, `--json` | Ensure/build the card; `--refresh` forces a rebuild even when the pin matches |
|
|
1239
|
+
| `query <question>` | `--limit <n>`, `--json` | Ranked offline search over the card (commands + features, alias-aware) |
|
|
1240
|
+
|
|
1241
|
+
```bash
|
|
1242
|
+
uap self card # ensure the card is fresh and print the pointer block
|
|
1243
|
+
uap self card --refresh --json # force a rebuild, machine-readable stats
|
|
1244
|
+
uap self query "how do I run a controlled benchmark"
|
|
1245
|
+
```
|
|
1246
|
+
|
|
1247
|
+
---
|
|
1248
|
+
|
|
1249
|
+
## `attention`
|
|
1250
|
+
|
|
1251
|
+
The operator attention queue: the ask-instead-of-stop rail. When a
|
|
1252
|
+
decision is genuinely yours — a placement parked and waiting for a swap
|
|
1253
|
+
approval, a grant request, a blocking question — the agent records it here
|
|
1254
|
+
with its context and a SAFE DEFAULT, and keeps working. The session-start hook
|
|
1255
|
+
shows what is waiting (plus what was auto-decided while you were away); `sweep`
|
|
1256
|
+
is the AFK auto-decider: anything whose grace window elapsed without an answer
|
|
1257
|
+
adopts its recorded safe default (logged, never silent), and anything without
|
|
1258
|
+
one ESCALATES instead of silently expiring. The decider only records its own
|
|
1259
|
+
adoption — the underlying system keeps its own lifecycle. One queue per
|
|
1260
|
+
checkout: the MAIN checkout's `.uap/attention.json` (the dashboard, the CLI,
|
|
1261
|
+
and session hooks in any worktree share it; `UAP_ATTENTION_QUEUE` pins it
|
|
1262
|
+
elsewhere). Fail-open, atomic, re-sanitized on load; `UAP_ATTENTION_OFF=1`
|
|
1263
|
+
silences the rail end-to-end.
|
|
1264
|
+
|
|
1265
|
+
| Subcommand | Key flags | Purpose |
|
|
1266
|
+
|------------|-----------|---------|
|
|
1267
|
+
| `list` | `--status <s>`, `--json` | What is waiting — OPEN items by default (pending + acknowledged + escalated); `--status` filters to one status (pending, acknowledged, decided, auto-decided, escalated; unknown values error) |
|
|
1268
|
+
| `ack <id>` | | Mark seen — the grace clock keeps running (seen ≠ answered) |
|
|
1269
|
+
| `decide <id> <decision>` | | Answer the ask (yours beats the decider) |
|
|
1270
|
+
| `sweep` | `--json` | Adopt recorded safe defaults for grace-elapsed items; escalate the rest |
|
|
1271
|
+
|
|
1272
|
+
```bash
|
|
1273
|
+
uap attention list # what is waiting on you
|
|
1274
|
+
uap attention decide att-9f2a1b "apply option 2"
|
|
1275
|
+
uap attention sweep # AFK decider: adopt safe defaults, escalate the rest
|
|
1276
|
+
```
|
|
1277
|
+
|
|
1278
|
+
---
|
|
1279
|
+
|
|
1118
1280
|
## `uap-omp`
|
|
1119
1281
|
|
|
1120
1282
|
UAP integration commands for oh-my-pi (omp) users. Thin wrappers over the
|
|
@@ -1140,3 +1302,6 @@ installed omp scripts and SQLite memory store.
|
|
|
1140
1302
|
| `UAP_ESCALATE_MODEL` | `deliver` | Stronger model preset for escalation |
|
|
1141
1303
|
| `UAP_HALO_TRACE_PATH` | `harness` | Default HALO trace JSONL path |
|
|
1142
1304
|
| `UAP_EMBEDDING_ENDPOINT` | memory/embeddings | Embedding service endpoint |
|
|
1305
|
+
| `UAP_PLAN_READABILITY` | `plan` | `0` disables the deterministic readability scan in `uap plan validate` |
|
|
1306
|
+
| `UAP_PLAN_READABILITY_STRICT` | `plan` | `1` makes error-severity readability findings block the validation stamp |
|
|
1307
|
+
| `UAP_ETA_OFF` | `deliver` | `1` disables per-attempt wall-clock telemetry to the model-analytics store |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# UAP vs Other Agent Harnesses and Tooling
|
|
2
2
|
|
|
3
|
-
> Applies to UAP
|
|
3
|
+
> Applies to UAP v2.29.0. Competitor profiles reflect public sources as of
|
|
4
4
|
> September 2026; vendor-reported numbers are flagged as such, and claims we
|
|
5
5
|
> could not verify are marked or omitted. UAP's own claims in this document
|
|
6
6
|
> were verified against the code.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Configuration Reference
|
|
2
2
|
|
|
3
|
-
> Universal Agent Protocol (UAP)
|
|
3
|
+
> Universal Agent Protocol (UAP) v2.30.0
|
|
4
4
|
|
|
5
5
|
> **🏭 Where this fits:** Cross-cutting — the settings that tune every station.
|
|
6
6
|
> **What it delivers:** the dials that decide how your [delivery pipeline](../guides/DELIVERY_PIPELINE.md)
|
|
@@ -28,7 +28,7 @@ source. Only options that exist in code are documented here.
|
|
|
28
28
|
### `.uap.json` schema (`src/types/config.ts`)
|
|
29
29
|
|
|
30
30
|
Top level: `version`, `project`, `memory`, `worktree`, `costOptimization`,
|
|
31
|
-
`timeOptimization`, plus droids/commands/template sections.
|
|
31
|
+
`timeOptimization`, `attention`, plus droids/commands/template sections.
|
|
32
32
|
|
|
33
33
|
```jsonc
|
|
34
34
|
{
|
|
@@ -104,7 +104,7 @@ Top level: `version`, `project`, `memory`, `worktree`, `costOptimization`,
|
|
|
104
104
|
|---|---|---|
|
|
105
105
|
| `deliver.orchestrate` | Blackboard orchestration for decomposed missions (`"on"`/`"off"`) | `"on"` (preflight seeds it) |
|
|
106
106
|
| `deliver.epics` | Epic controller outer loop (`"on"`/`"off"`) | `"on"` (preflight seeds it) |
|
|
107
|
-
| `deliver.parallelTasks` | Worktree-isolated parallel dispatch: independent READY orchestrator tasks run concurrently, each convergence loop + its gates in a detached git worktree seeded with the mission's current state; deltas merge back serially, and a merge conflict fails the task into the minimal-repair retry. Clamped to 1–8. **Parallel is the default** — an unset key resolves to 4
|
|
107
|
+
| `deliver.parallelTasks` | Worktree-isolated parallel dispatch: independent READY orchestrator tasks run concurrently, each convergence loop + its gates in a detached git worktree seeded with the mission's current state; deltas merge back serially, and a merge conflict fails the task into the minimal-repair retry. Completion-triggered scheduling: a finished task's slot refills the moment it settles (no wave barrier — a fast sibling never idles behind a slow one), and a task whose dependencies all succeeded starts as soon as its slowest sibling-dependency settles. Settlement stays strictly sequential (one task at a time); which task settles next is timing-dependent. Clamped to 1–8. **Parallel is the default** — an unset key resolves to 4. Parallelism is conditional on worktree isolation: outside a git repo (or with an unborn HEAD) the run stays sequential and logs why. Set `1` (or `UAP_DELIVER_PARALLEL_TASKS=1`) to force sequential execution. | `4` (parallel, worktree-isolated) |
|
|
108
108
|
| `deliver.adversarialGate` | Adversarial red-team gate before a converged run is accepted (`false`/`0`/`"off"` disables; a positive integer retunes the round budget, cap 4). Overridden by `UAP_DELIVER_ADVERSARIAL_GATE`. | on (≤2 rounds) |
|
|
109
109
|
| `deliver.criteriaLint` | Plan-time lint of planner/split-emitted acceptance criteria; behavioral criteria gain an executable-evidence clause. Overridden by `UAP_DELIVER_CRITERIA_LINT`. | on |
|
|
110
110
|
| `deliver.evidenceGate` | Anti-vacuous delivery gate + over-claim metric stream (`.uap/delivery-evidence.jsonl`). Overridden by `UAP_DELIVER_EVIDENCE_GATE`. | on |
|
|
@@ -114,6 +114,9 @@ Top level: `version`, `project`, `memory`, `worktree`, `costOptimization`,
|
|
|
114
114
|
| `UAP_SNAPSHOT_DIR` | Base dir for `--keep-best` snapshots (absolute path) | `~/.cache/uap/snapshots` |
|
|
115
115
|
| `UAP_SNAPSHOT_MAX_MB` | Skip the `--keep-best` snapshot (rollback disabled) when the tree exceeds this size | `4096` |
|
|
116
116
|
| `UAP_DASH_REFRESH_MS` | Dashboard live snapshot push/poll interval in ms (`--refresh` flag wins; min 250) | `2000` |
|
|
117
|
+
| `UAP_ATTENTION_GRACE_SECS` | Runtime override for `attention.graceSecs` (the AFK decider's grace window). Positive integer seconds, cap 86400; set-but-invalid (including a cleared/empty value) fails safe to the config value. | unset (config wins) |
|
|
118
|
+
| `UAP_ATTENTION_OFF` | `1` is the kill switch for the attention rail: nothing new is enqueued from surfaces (e.g. a parked placement), nothing is auto-decided, `uap attention list` shows nothing, and the session-start hint prints nothing. The queue file itself is left alone. | unset |
|
|
119
|
+
| `UAP_ATTENTION_QUEUE` | Pins the attention queue to an explicit FILE (default: the MAIN checkout's `.uap/attention.json`, so the dashboard, the CLI, and session hooks in any worktree share ONE queue). Tests and odd layouts only. | unset |
|
|
117
120
|
| `HERMES_HOME` | Hermes home dir | `~/.hermes` |
|
|
118
121
|
| `FACTORY_PROJECT_DIR` | Project dir in Factory hook commands | — |
|
|
119
122
|
| `FORGE_UAP_PROJECT` | Project dir in ForgeCode hook scripts | `.` |
|
|
@@ -122,6 +125,12 @@ Top level: `version`, `project`, `memory`, `worktree`, `costOptimization`,
|
|
|
122
125
|
| `HOME` | `~/.uap/omp`, droids dir resolution | — |
|
|
123
126
|
| `APPDATA` / `USERPROFILE` | Windows MCP config path expansion | — |
|
|
124
127
|
|
|
128
|
+
### `.uap.json` `attention` section (top level)
|
|
129
|
+
|
|
130
|
+
| Key | What it does | Default |
|
|
131
|
+
|---|---|---|
|
|
132
|
+
| `attention.graceSecs` | Operator attention queue: how long a pending ask waits for your answer before the AFK auto-decider may act (`uap attention sweep`, also swept at session start and on a 60s timer by the dashboard server). A grace-elapsed item with a recorded safe default ADOPTS it (logged, never silent); an item without one ESCALATES instead of silently expiring. The decider records its adoption only — the underlying system keeps its own lifecycle. Positive integer seconds, cap 86400 (24h); `0` adopts immediately. NOTE: an asking surface may pin an item's deadline to the ask's own expiry (a placement park's deadline is the pending entry's TTL) — the grace window is the fallback for asks without one. Overridden by `UAP_ATTENTION_GRACE_SECS`. The queue file is the MAIN checkout's `.uap/attention.json` (not per-worktree), overridable via `UAP_ATTENTION_QUEUE`. | `300` (5 min) |
|
|
133
|
+
|
|
125
134
|
Per-model API key env var names are configurable via the model config field
|
|
126
135
|
`apiKeyEnvVar` (`src/types/config.ts`), resolved indirectly in
|
|
127
136
|
`src/models/openai-compat-client.ts`.
|
|
@@ -29,6 +29,7 @@ uap config wizard # interactive expert configurator (also: uap set
|
|
|
29
29
|
- [Engineering principles](#principles) — How code should be written, and the backward-compatibility stance.
|
|
30
30
|
- [Worktree workflow](#worktree) — Branch-per-feature isolation and auto-cleanup.
|
|
31
31
|
- [Inference proxy tuning](#proxy) — Guardrails and context limits for a local model behind the proxy.
|
|
32
|
+
- [Sandbox & session authority](#sandbox) — Kernel-enforced agent boundaries: the bubblewrap floor, per-session grants, and the network egress boundary.
|
|
32
33
|
- [Dashboard](#dashboard) — The live analytics server and its mutation token.
|
|
33
34
|
- [Token & time optimization](#optimization) — Context budgets, caching, batching, and parallelism.
|
|
34
35
|
- [General](#general) — Project metadata and CLI behavior.
|
|
@@ -133,6 +134,18 @@ When set to 1 for a single command, exempts that one sanctioned manual edit from
|
|
|
133
134
|
|
|
134
135
|
**Recommendation:** Use inline (`UAP_DELIVER_BYPASS=1 <cmd>`) for a one-off edit; never export it.
|
|
135
136
|
|
|
137
|
+
### `delivery.protectIac`
|
|
138
|
+
|
|
139
|
+
| | |
|
|
140
|
+
|---|---|
|
|
141
|
+
| **Where** | `.uap.json` |
|
|
142
|
+
| **Type** | boolean |
|
|
143
|
+
| **Default** | `false` |
|
|
144
|
+
|
|
145
|
+
Refuse model writes to deploy/IaC files (Dockerfile, docker-compose, *.tf, *.tfvars, pulumi, serverless) during `uap deliver`. Permissive by default (false) so the model can edit IaC freely; set true to block IaC writes and snapshot/restore them against run_bash tampering. The `--protect-iac` CLI flag overrides this per-run.
|
|
146
|
+
|
|
147
|
+
**Recommendation:** Leave false (permissive) for most projects — IaC edits are legitimate deliverable work. Set true only when the deploy topology is a fixed trust anchor the mission must not alter.
|
|
148
|
+
|
|
136
149
|
## Verification gates
|
|
137
150
|
|
|
138
151
|
<a id="verification"></a>Proving generated code actually builds and runs before "done".
|
|
@@ -257,6 +270,102 @@ Model id sent to the vision endpoint for aesthetic review (e.g. qwen3.8-27b).
|
|
|
257
270
|
|
|
258
271
|
**Recommendation:** Set by `uap setup` to your local vision model. Required for blocking vision review under `max` fidelity.
|
|
259
272
|
|
|
273
|
+
### `plan.readability.enabled`
|
|
274
|
+
|
|
275
|
+
| | |
|
|
276
|
+
|---|---|
|
|
277
|
+
| **Where** | `.uap.json` |
|
|
278
|
+
| **Type** | boolean |
|
|
279
|
+
| **Default** | `true` |
|
|
280
|
+
|
|
281
|
+
The plan-comprehension scan in `uap plan validate` (B1): deterministic readability rules over the plan artifact — executive summary first, detail progressing downward, section word budgets, jargon density, diagram required at a task-count threshold. Findings are advisory hints the judge-model review adjudicates.
|
|
282
|
+
|
|
283
|
+
**Recommendation:** Leave on: the scan is local, instant, and advisory by default.
|
|
284
|
+
|
|
285
|
+
### `plan.readability.strict`
|
|
286
|
+
|
|
287
|
+
| | |
|
|
288
|
+
|---|---|
|
|
289
|
+
| **Where** | `.uap.json` |
|
|
290
|
+
| **Type** | boolean |
|
|
291
|
+
| **Default** | `false` |
|
|
292
|
+
|
|
293
|
+
Give the readability scan deterministic teeth: error-severity findings (no opening summary, detail before the high level, missing diagram) fail `uap plan validate` outright instead of being adjudicated hints. `--force` / `UAP_PLAN_REVIEW_FORCE=1` remains the escape hatch.
|
|
294
|
+
|
|
295
|
+
**Recommendation:** Enable once your plan templates reliably pass — it enforces plans a human can skim. Keep off while calibrating.
|
|
296
|
+
|
|
297
|
+
### `plan.readability.minSummaryWords`
|
|
298
|
+
|
|
299
|
+
| | |
|
|
300
|
+
|---|---|
|
|
301
|
+
| **Where** | `.uap.json` |
|
|
302
|
+
| **Type** | number |
|
|
303
|
+
| **Default** | `20` |
|
|
304
|
+
|
|
305
|
+
Minimum prose words between the plan title and the first section — the executive-summary gate.
|
|
306
|
+
|
|
307
|
+
**Recommendation:** 20 words is a two-sentence what-and-why. Lower for terse internal plans; 0 effectively disables the rule.
|
|
308
|
+
|
|
309
|
+
### `plan.readability.maxWordsPerSection`
|
|
310
|
+
|
|
311
|
+
| | |
|
|
312
|
+
|---|---|
|
|
313
|
+
| **Where** | `.uap.json` |
|
|
314
|
+
| **Type** | number |
|
|
315
|
+
| **Default** | `300` |
|
|
316
|
+
|
|
317
|
+
Soft word budget per section before a readability warning fires.
|
|
318
|
+
|
|
319
|
+
**Recommendation:** 300 keeps a section to one point. 0 disables the budget check.
|
|
320
|
+
|
|
321
|
+
### `plan.readability.jargonDensityThreshold`
|
|
322
|
+
|
|
323
|
+
| | |
|
|
324
|
+
|---|---|
|
|
325
|
+
| **Where** | `.uap.json` |
|
|
326
|
+
| **Type** | number |
|
|
327
|
+
| **Default** | `0.35` |
|
|
328
|
+
|
|
329
|
+
Jargon tokens per prose word above which the plan earns a readability warning (camelCase/snake_case/acronyms in prose).
|
|
330
|
+
|
|
331
|
+
**Recommendation:** 0.35 tolerates normal technical writing while catching identifier soup. Raise for deeply technical audiences.
|
|
332
|
+
|
|
333
|
+
### `plan.readability.requireDiagramAtTasks`
|
|
334
|
+
|
|
335
|
+
| | |
|
|
336
|
+
|---|---|
|
|
337
|
+
| **Where** | `.uap.json` |
|
|
338
|
+
| **Type** | number |
|
|
339
|
+
| **Default** | `5` |
|
|
340
|
+
|
|
341
|
+
Task items (checklist + ordered steps) at which a data-flow diagram (mermaid or image) is required in the plan.
|
|
342
|
+
|
|
343
|
+
**Recommendation:** 5 keeps small plans diagram-free while forcing one once the moving parts multiply. 0 disables the rule.
|
|
344
|
+
|
|
345
|
+
### `UAP_PLAN_READABILITY`
|
|
346
|
+
|
|
347
|
+
| | |
|
|
348
|
+
|---|---|
|
|
349
|
+
| **Where** | shell env |
|
|
350
|
+
| **Type** | boolean |
|
|
351
|
+
| **Default** | `true` |
|
|
352
|
+
|
|
353
|
+
Runtime kill switch for the plan readability scan: `0` skips it entirely in `uap plan validate`.
|
|
354
|
+
|
|
355
|
+
**Recommendation:** Leave unset. Use inline `UAP_PLAN_READABILITY=0 uap plan validate` only when diagnosing a scan misfire.
|
|
356
|
+
|
|
357
|
+
### `UAP_PLAN_READABILITY_STRICT`
|
|
358
|
+
|
|
359
|
+
| | |
|
|
360
|
+
|---|---|
|
|
361
|
+
| **Where** | shell env |
|
|
362
|
+
| **Type** | boolean |
|
|
363
|
+
| **Default** | `false` |
|
|
364
|
+
|
|
365
|
+
Runtime strict override for the plan readability scan: `1` makes error-severity findings block the validation stamp (same as `plan.readability.strict`).
|
|
366
|
+
|
|
367
|
+
**Recommendation:** Use inline for CI enforcement without changing the project config; never export globally — a hard gate in every shell surprises interactive agents.
|
|
368
|
+
|
|
260
369
|
## Model routing
|
|
261
370
|
|
|
262
371
|
<a id="routing"></a>Which model handles planning, execution, and review.
|
|
@@ -571,6 +680,54 @@ Batches git/deploy actions across agents to avoid conflicting concurrent pushes.
|
|
|
571
680
|
|
|
572
681
|
<a id="orchestration"></a>Long-task autonomy: decompose, resume, and loop-to-100%.
|
|
573
682
|
|
|
683
|
+
### `attention.graceSecs`
|
|
684
|
+
|
|
685
|
+
| | |
|
|
686
|
+
|---|---|
|
|
687
|
+
| **Where** | `.uap.json` |
|
|
688
|
+
| **Type** | number |
|
|
689
|
+
| **Default** | `300` |
|
|
690
|
+
|
|
691
|
+
Grace window before the AFK auto-decider may adopt an attention item's recorded safe default (`uap attention sweep`, also swept at session start). Items without a safe default escalate instead.
|
|
692
|
+
|
|
693
|
+
**Recommendation:** 300s (five minutes) is long enough for a present operator to intercede and short enough that an unattended run never stalls on an ask. Raise for high-stakes decisions, 0 adopts immediately.
|
|
694
|
+
|
|
695
|
+
### `UAP_ATTENTION_GRACE_SECS`
|
|
696
|
+
|
|
697
|
+
| | |
|
|
698
|
+
|---|---|
|
|
699
|
+
| **Where** | shell env |
|
|
700
|
+
| **Type** | number |
|
|
701
|
+
| **Default** | `300` |
|
|
702
|
+
|
|
703
|
+
Runtime override for the attention grace window; caps at 86,400 (24h).
|
|
704
|
+
|
|
705
|
+
**Recommendation:** Use inline for a one-off long mission; set the project config key instead for a standing value.
|
|
706
|
+
|
|
707
|
+
### `UAP_ATTENTION_OFF`
|
|
708
|
+
|
|
709
|
+
| | |
|
|
710
|
+
|---|---|
|
|
711
|
+
| **Where** | shell env |
|
|
712
|
+
| **Type** | boolean |
|
|
713
|
+
| **Default** | `false` |
|
|
714
|
+
|
|
715
|
+
Kill switch for the attention rail: `1` disables enqueue, sweep, AND list end-to-end (the queue file stays; nothing new is asked, nothing is auto-decided, no hint prints).
|
|
716
|
+
|
|
717
|
+
**Recommendation:** Leave unset. Use inline when the queue is misbehaving; the rail is fail-open everywhere so a broken store never blocks work.
|
|
718
|
+
|
|
719
|
+
### `UAP_ATTENTION_QUEUE`
|
|
720
|
+
|
|
721
|
+
| | |
|
|
722
|
+
|---|---|
|
|
723
|
+
| **Where** | shell env |
|
|
724
|
+
| **Type** | string |
|
|
725
|
+
| **Default** | `` |
|
|
726
|
+
|
|
727
|
+
Pins the attention queue to an explicit FILE. Default: the MAIN checkout's `.uap/attention.json`, so the dashboard, the CLI, and session hooks in any worktree share ONE queue.
|
|
728
|
+
|
|
729
|
+
**Recommendation:** Tests and non-standard layouts only; unset means the default shared-per-checkout root.
|
|
730
|
+
|
|
574
731
|
### `handsfree.enabled`
|
|
575
732
|
|
|
576
733
|
| | |
|
|
@@ -795,20 +952,6 @@ When the model self-reports "stuck" but keeps repeating the same failing tool, r
|
|
|
795
952
|
|
|
796
953
|
**Recommendation:** Keep on for local models; harmless for cloud models (rarely triggers).
|
|
797
954
|
|
|
798
|
-
### `PROXY_LOCKSTEP_BREAK`
|
|
799
|
-
|
|
800
|
-
| | |
|
|
801
|
-
|---|---|
|
|
802
|
-
| **Where** | `.uap/proxy.env` |
|
|
803
|
-
| **Type** | boolean (+ `PROXY_LOCKSTEP_PIVOT_AT` / `PROXY_LOCKSTEP_HARD_AT` numbers) |
|
|
804
|
-
| **Default** | `true` (pivot at streak 2, hard stop at streak 4) |
|
|
805
|
-
|
|
806
|
-
When the *identical* tool call fails with the *identical* error, escalates decisively: pivot directive → final warning → hard-fail the session with a 400, recording each tier to the loop-incident ledger (`UAP_LOOP_INCIDENTS`, default `~/.config/uap/loop-incidents.jsonl`). Both directives are always given before the stop, so the stop lands at `max(HARD_AT, PIVOT_AT + 2)` — never earlier. `uap loops` lists the ledger and prints a ready `uap ideate`/`uap deliver` handoff for the broken loop. A fresh human user turn re-arms the guard.
|
|
807
|
-
|
|
808
|
-
**Dependency:** the streaks lockstep reads are fed by the ERROR-LOOP and DOUBLING-DOWN trackers — `PROXY_ERROR_LOOP=off` or `PROXY_DOUBLING_BREAK=off` silently disarms lockstep too. `PIVOT_AT=0` disables the guard; `HARD_AT=0` disables only the hard stop.
|
|
809
|
-
|
|
810
|
-
**Recommendation:** Keep on — this is the guard that ends deterministic-failure loops in minutes instead of tens of wasted full-context turns.
|
|
811
|
-
|
|
812
955
|
### `PROXY_RECON_CONVERGENCE_THRESHOLD`
|
|
813
956
|
|
|
814
957
|
| | |
|
|
@@ -857,6 +1000,118 @@ Proxy side of real-time adaptation: whether the serving proxy honors a fresh ada
|
|
|
857
1000
|
|
|
858
1001
|
**Recommendation:** Leave on. Set `false` only to make the proxy ignore adaptation signals even when the reactor emits them.
|
|
859
1002
|
|
|
1003
|
+
## Sandbox & session authority
|
|
1004
|
+
|
|
1005
|
+
<a id="sandbox"></a>Kernel-enforced agent boundaries: the bubblewrap floor, per-session grants, and the network egress boundary.
|
|
1006
|
+
|
|
1007
|
+
### `PROXY_SOCKET`
|
|
1008
|
+
|
|
1009
|
+
| | |
|
|
1010
|
+
|---|---|
|
|
1011
|
+
| **Where** | `.uap/proxy.env` |
|
|
1012
|
+
| **Type** | string |
|
|
1013
|
+
| **Default** | `` |
|
|
1014
|
+
|
|
1015
|
+
AF_UNIX socket the inference proxy serves IN ADDITION to its TCP port — a permission-gated (0600) model-path choke point for sandboxed and multi-user setups (unset = off).
|
|
1016
|
+
|
|
1017
|
+
**Recommendation:** Set in .uap/proxy.env to the checkout's `.uap/proxy.sock` on shared boxes; leave unset for single-user loopback setups.
|
|
1018
|
+
|
|
1019
|
+
### `UAP_PROXY_SOCKET`
|
|
1020
|
+
|
|
1021
|
+
| | |
|
|
1022
|
+
|---|---|
|
|
1023
|
+
| **Where** | shell env |
|
|
1024
|
+
| **Type** | string |
|
|
1025
|
+
| **Default** | `` |
|
|
1026
|
+
|
|
1027
|
+
Where `uap proxy connect` looks for the proxy socket when re-serving it on local TCP (default: the checkout's `.uap/proxy.sock`).
|
|
1028
|
+
|
|
1029
|
+
**Recommendation:** Leave unset (the default covers the standard layout); set only when the proxy socket lives elsewhere.
|
|
1030
|
+
|
|
1031
|
+
### `UAP_SANDBOX_NET`
|
|
1032
|
+
|
|
1033
|
+
| | |
|
|
1034
|
+
|---|---|
|
|
1035
|
+
| **Where** | shell env |
|
|
1036
|
+
| **Type** | enum (shared \| off) |
|
|
1037
|
+
| **Default** | `shared` |
|
|
1038
|
+
|
|
1039
|
+
Default network mode for `uap sandbox`: shared (normal network) or off (own network namespace with nothing up — the kernel egress boundary; model access impossible by design). Strictly `shared` or `off`: any other value fails loud (exit 2), never a silent downgrade to shared.
|
|
1040
|
+
|
|
1041
|
+
**Recommendation:** Leave shared; use `--net off` per-run for untrusted code, evals, and data-only work.
|
|
1042
|
+
|
|
1043
|
+
### `UAP_SANDBOX_GRANTS`
|
|
1044
|
+
|
|
1045
|
+
| | |
|
|
1046
|
+
|---|---|
|
|
1047
|
+
| **Where** | shell env |
|
|
1048
|
+
| **Type** | string |
|
|
1049
|
+
| **Default** | `` |
|
|
1050
|
+
|
|
1051
|
+
Pins the per-session sandbox grant ledger to an explicit FILE. Default: the MAIN checkout's `.uap/sandbox-grants.json`, so every surface shares ONE consent ledger.
|
|
1052
|
+
|
|
1053
|
+
**Recommendation:** Tests and non-standard layouts only; unset means the default shared-per-checkout ledger.
|
|
1054
|
+
|
|
1055
|
+
### `UAP_SANDBOX_GRANTS_OFF`
|
|
1056
|
+
|
|
1057
|
+
| | |
|
|
1058
|
+
|---|---|
|
|
1059
|
+
| **Where** | shell env |
|
|
1060
|
+
| **Type** | boolean |
|
|
1061
|
+
| **Default** | `false` |
|
|
1062
|
+
|
|
1063
|
+
Kill switch for the grant ledger: `1` resolves zero grants (no extra writable holes). The sandbox itself and its kernel boundary are unaffected.
|
|
1064
|
+
|
|
1065
|
+
**Recommendation:** Leave unset. Inline use only, when the ledger is misbehaving — the safe direction is always least authority.
|
|
1066
|
+
|
|
1067
|
+
### `UAP_SANDBOX_WORKDIR`
|
|
1068
|
+
|
|
1069
|
+
| | |
|
|
1070
|
+
|---|---|
|
|
1071
|
+
| **Where** | shell env |
|
|
1072
|
+
| **Type** | string |
|
|
1073
|
+
| **Default** | `` |
|
|
1074
|
+
|
|
1075
|
+
Workdir `uap sandbox` makes writable (default: cwd). Refused when over-broad ($HOME, /, /home).
|
|
1076
|
+
|
|
1077
|
+
**Recommendation:** Leave unset in hooks (cwd is right); set when the sandboxed command must run from elsewhere.
|
|
1078
|
+
|
|
1079
|
+
### `UAP_SANDBOX_ALLOW`
|
|
1080
|
+
|
|
1081
|
+
| | |
|
|
1082
|
+
|---|---|
|
|
1083
|
+
| **Where** | shell env |
|
|
1084
|
+
| **Type** | string |
|
|
1085
|
+
| **Default** | `` |
|
|
1086
|
+
|
|
1087
|
+
Extra writable paths, colon-separated — UNRECORDED authority, honored for compatibility. Every use is named in the audit trail and the launch banner, and entries get the same plan-time realpath re-check recorded grants get: an entry resolving to `/`, `/home`, or `$HOME` is refused loudly, and a symlink entry binds its resolved target, not the link.
|
|
1088
|
+
|
|
1089
|
+
**Recommendation:** Prefer `uap sandbox grant <path> --session <id> --reason "..."` (recorded, TTL-bounded, revocable); use this only in throwaway scripts.
|
|
1090
|
+
|
|
1091
|
+
### `UAP_SANDBOX_AUDIT`
|
|
1092
|
+
|
|
1093
|
+
| | |
|
|
1094
|
+
|---|---|
|
|
1095
|
+
| **Where** | shell env |
|
|
1096
|
+
| **Type** | string |
|
|
1097
|
+
| **Default** | `` |
|
|
1098
|
+
|
|
1099
|
+
Pins the sandbox audit trail (JSONL, one line per grant/revoke/sandbox-run) to an explicit FILE. Default: `.uap/sandbox-audit.jsonl` at the main checkout root.
|
|
1100
|
+
|
|
1101
|
+
**Recommendation:** Leave unset; ship the default trail to your audit tooling.
|
|
1102
|
+
|
|
1103
|
+
### `UAP_SANDBOX_ANCHOR_DIR`
|
|
1104
|
+
|
|
1105
|
+
| | |
|
|
1106
|
+
|---|---|
|
|
1107
|
+
| **Where** | shell env |
|
|
1108
|
+
| **Type** | string |
|
|
1109
|
+
| **Default** | `` |
|
|
1110
|
+
|
|
1111
|
+
Pins the DIRECTORY holding the consent-ledger trust anchors (one 0600 JSON per checkout, the tamper-evidence hash of the sanitized ledger). Default: `$XDG_STATE_HOME/uap/sandbox-anchors` (or `~/.local/state/uap/sandbox-anchors`) — OUTSIDE the checkout's write reach by design.
|
|
1112
|
+
|
|
1113
|
+
**Recommendation:** Tests and non-standard layouts only; leave unset so the anchor stays outside the tree it vouches for.
|
|
1114
|
+
|
|
860
1115
|
## Dashboard
|
|
861
1116
|
|
|
862
1117
|
<a id="dashboard"></a>The live analytics server and its mutation token.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Database Schema Reference
|
|
2
2
|
|
|
3
|
-
> Universal Agent Protocol (UAP)
|
|
3
|
+
> Universal Agent Protocol (UAP) v2.30.0
|
|
4
4
|
|
|
5
5
|
> **🏭 Where this fits:** Cross-cutting — the shop's records and shift log.
|
|
6
6
|
> **What it delivers:** the durable memory of your [delivery pipeline](../guides/DELIVERY_PIPELINE.md)
|