Manual verification — LAT Blocker/High residuals

Unit tests cover the code paths. Use this after merge/deploy to confirm production behavior. Skip paid video probes unless you need end-to-end proof of stock substitution.

Unit (pre-merge)

cd .worktrees/fix-lat-blocker-high-residuals
npx vitest run \
  tests/unit/next-actions.test.ts \
  tests/unit/fallback-chain.test.ts \
  tests/unit/list-loras-liveness.test.ts \
  tests/unit/stock-fallback-honesty.test.ts \
  tests/unit/deliverable-first.test.ts

Expect all green before opening the PR.

F1 · LAT-45a — Claude Desktop

Manual · Desktop app

  1. Open get-started → Desktop tab. Identity must be livepeer-agent.
  2. Confirm curl -s https://agent.livepeer.org/api/mcp | head (or MCP initialize) still advertises that identity.
  3. Paste the documented mcp-remote JSON; quit Desktop fully; reopen; 🔌 shows tools > 0.
  4. If tools stay 0: run npx -y mcp-remote https://agent.livepeer.org/api/mcp once, accept install, restart. File Desktop error text if Cursor works with the same key.

F2 · LAT-43 — Stock substitute honesty

Paid · optional

  1. Animate with a slow model and no model_override, or force a path that triggers stock fallback (see existing LAT-43 fixtures).
  2. get_create_media text starts with STOCK SUBSTITUTE.
  3. First next_action label contains Redo with AI; args include on_i2v_timeout: "wait".
  4. Structured content may include human_summary matching that line.

Cheap check without billing: unit test stock-fallback-honesty.test.ts + confirm whats-new is live.

F3 · LAT-24 — list_loras liveness

MCP · needs a dead weights URL in mirror

  1. If you have a LoRA whose weights_url 404s: list_loras({ status: "ready" }) must omit it.
  2. list_loras({ status: "any" }) may show it with status: "unavailable" / weights UNAVAILABLE.
  3. Network blip: fail-open keeps ready (unit-covered as unverified).

F4 · LAT-25 — LoRA load fail stops chain

Unit primary · paid optional

  1. Unit: isRecoverableFailure("Failed to load LoRA weights…") === false.
  2. Optional prod: create_media / apply_lora with a dead weights URL → job fails; sibling must not return a silent flux “success”.

F5 · LAT-53 — Video prompt scaffold

Agent behavior

  1. In Cursor/Desktop with Livepeer MCP: “write me a better i2v prompt for a woman in a charcoal coat at dusk”.
  2. Reply must include framing, camera motion, subject action, duration, continuity — not a vague paragraph.
  3. Confirm starter.md §2b and cinematography scaffold are on the deployed host.

F6 · LAT-54 — Export next_action soundtrack off

MCP

  1. generate_project (or finish a multi-scene video job) and inspect next_actions.
  2. Export / stitch action: tool: "director_export", args.soundtrack === "off".
  3. Taking it must not auto-generate a music bed; pass soundtrack: "auto" only when you want one.

F7 · LAT-49 — What's new

  1. After deploy: https://agent.livepeer.org/whats-new.html returns 200.
  2. get-started footer links to What’s new.

Production smoke (post-deploy)

# pages
curl -sI https://agent.livepeer.org/whats-new.html | head -1
curl -sI https://agent.livepeer.org/get-started.html | head -1
curl -sI https://agent.livepeer.org/LAT-BLOCKER-HIGH-MANUAL-VERIFY.html | head -1

# export affordance (use MCP or CLI against a multi-scene video project)
# expect soundtrack:"off" on the export next_action

# LoRA non-recoverable (local unit already gates merge)
npx vitest run tests/unit/fallback-chain.test.ts -t "LoRA"

Do not claim F2/F4 “prod verified” from docs alone — only from a real job or the unit suite + page smoke above.

What's new · Get started