@miller-tech/uap 1.32.0 → 1.34.0

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 CHANGED
@@ -91,7 +91,7 @@ uap setup -p all
91
91
  | Browser | 1 module | Stealth web automation via CloakBrowser (Playwright drop-in) |
92
92
  | MCP Router | 11 modules | 2-tool meta-router + expert-consultation registry (98% token savings) |
93
93
  | Models | 10 modules | Multi-model routing, planning, execution, validation, 13 model profiles |
94
- | Delivery Harness | 12 modules | `uap deliver`: convergence loop, best-of-N explorer, critic, practice recall, escalation, ideation seeds, HALO tracing, coordination + deploy queueing |
94
+ | Delivery Harness | 14 modules | `uap deliver`: convergence loop, best-of-N explorer, critic, practice recall, escalation, ideation seeds, HALO tracing, coordination + deploy queueing |
95
95
  | Patterns | 23 patterns | Battle-tested workflows from Terminal-Bench 2.0 |
96
96
  | Droids | 30 experts | Full SDLC expert stack: strategy, design, build, review, release, ops ([reference](docs/reference/EXPERT_DROIDS.md)) |
97
97
  | Expert Orchestrator | 1 module | Adaptive droid-chain selection across plan→design→implement→review→release |
@@ -373,9 +373,10 @@ the model's say-so.
373
373
  8. **Coordination** (`--coordinate`) — registers the run with the multi-agent coordination layer (`uap agent`): announces work on the project, warns about overlapping agents, heartbeats every turn, completes/deregisters on exit.
374
374
  9. **Deploy batching** (`--deploy`) — on success, queues a commit of the applied files into the deploy batcher; execute with `uap deploy flush`.
375
375
  10. **`--optimize`** — one switch for every convergence aid: 4 candidates/turn + critic + practices + escalation + ideation + HALO + coordination (deploy stays explicit).
376
- 11. **Dynamic optimization (default)** — every instruction is classified for complexity (simple / moderate / complex); non-trivial requests automatically get the aids that improve outcomes (moderate exploration ×3 + critic + practices + HALO + coordination; complex the full `--optimize` stack). Any explicit aid flag, `--no-auto`, or `UAP_DELIVER_AUTO=0` disables auto mode. Deploy queueing is never auto-enabled.
376
+ 11. **Test protection (default)** — pre-existing test/spec files are snapshotted at loop start (case-folded, symlink-alias-aware) and the applier refuses model writes to them, with steering feedback and a prompt warning; test-runner/compiler configs (`vitest.config.*`, `tsconfig*.json`, `jest.config.*`, `pytest.ini`, …) are blocked too, closing gate-rigging by indirection. Protection extends to the spec's **transitive oracle material** — helpers/fixtures/mocks the tests import (by convention or data extension), quoted fixture paths, reserved missing goldens, and recursive helper chains (the unit under test stays writable). A **runtime integrity guard** hashes every protected file and re-verifies after each gate run: tampering from test code executing during the gates is restored and the gate result discarded. New test files remain allowed. Opt out with `--no-protect-tests`.
377
+ 12. **Dynamic optimization (default)** — every instruction is classified for complexity (simple / moderate / complex); non-trivial requests automatically get the aids that improve outcomes (moderate → exploration ×3 + critic + practices + HALO + coordination; complex → the full `--optimize` stack). Any explicit aid flag, `--no-auto`, or `UAP_DELIVER_AUTO=0` disables auto mode. Deploy queueing is never auto-enabled.
377
378
 
378
- ### Components (12 modules)
379
+ ### Components (14 modules)
379
380
 
380
381
  | Component | File | Purpose |
381
382
  | ----------------- | ------------------------------------- | ----------------------------------------------------------------- |
@@ -391,6 +392,8 @@ the model's say-so.
391
392
  | HALO Tracer | `src/delivery/halo-trace.ts` | Run/turn spans for `uap harness analyze` |
392
393
  | Run Coordinator | `src/delivery/run-coordinator.ts` | `uap agent` registration/heartbeat + `uap deploy` commit queueing |
393
394
  | Auto-Optimizer | `src/delivery/auto-optimizer.ts` | Complexity-classified dynamic activation of convergence aids |
395
+ | Spec Imports | `src/delivery/spec-imports.ts` | Transitive oracle-material discovery for spec protection |
396
+ | Integrity Guard | `src/delivery/integrity.ts` | Hash-verify + restore protected files after every gate run |
394
397
 
395
398
  The model is reached through an OpenAI-compatible client
396
399
  (`src/models/openai-compat-client.ts`) — the local inference gateway,
@@ -439,12 +442,15 @@ uap deliver "..." --ideate --candidates 4 --deploy
439
442
  | `--deploy` | On success, queue a commit into the deploy batcher (`uap deploy`) |
440
443
  | `--optimize` | Enable every convergence aid (deploy excluded) |
441
444
  | `--no-auto` | Disable dynamic optimization (auto-classified aids are the default) |
445
+ | `--no-protect-tests` | Allow modifying pre-existing test files (protected by default) |
442
446
  | `--endpoint <url>` | Override the model endpoint (OpenAI-compatible `/v1`) |
443
447
  | `--dry-run` / `--json` | Show the plan only / emit machine-readable result |
444
448
 
445
449
  Model output is never executed — only written as files and checked by the
446
450
  gates. The applier refuses writes to executed config (`package.json`,
447
- lockfiles), `.git`/hooks/CI paths, and symlinks that escape the project root.
451
+ lockfiles), `.git`/hooks/CI paths, symlinks that escape the project root,
452
+ and pre-existing test/spec files (gate integrity — the spec defines "done",
453
+ so the model must satisfy it, not rewrite it).
448
454
 
449
455
  ---
450
456