Skip to content

Production promotion — prod-20260907-110404

Latest

Choose a tag to compare

@github-actions github-actions released this 07 Sep 11:04
783300e

What's Changed

  • ci(frontend): give the visual gate two product screens and make its tick say what it compared (#2318) by @AntonioSaaranen in #2378
  • docs(pr-template): make the Issue Link keyword bare so filling it in place actually closes (#2382) by @d-hinders in #2386
  • docs: state that the emitted closing keyword is bare, not code-spanned (#2385) by @d-hinders in #2388
  • fix(accounts): make the card's set-active / set-default controls reachable and 44px on touch (#2241) by @AntonioSaaranen in #2380
  • docs: fix two stale sentences in the docs system (#2375, #2389) by @AntonioSaaranen in #2390
  • test(qa-agent): pin the erc7710 scenarios' authorize body so dropping paymentRequired fails a unit test (#2384) by @AntonioSaaranen in #2391
  • fix(mcp-server): close the strict-input list — twelve more hosted tools refuse undeclared arguments, three stay permissive by decision (#2349) by @AntonioSaaranen in #2394
  • docs: state the bare-emit rule in branch-and-release-flow.md, quoting its canonical home (#2387) by @AntonioSaaranen in #2396
  • test(demo-merchant): pin that a version mismatch is refused with a perfect extensions echo (#2397) by @d-hinders in #2401
  • docs(demo-merchant): document the advertised haven-demo extensions and the enforced x402 v2 echo (#2383) by @AntonioSaaranen in #2399
  • fix(ci): put the hosted MCP tool surface on the money-path perimeter (#2300) by @AntonioSaaranen in #2398
  • test(backend): pin GET /dashboard/overview and POST /agents to the spec, and fix the phantom PATCH emitter (#2392) by @AntonioSaaranen in #2402
  • docs(signer): name the hosted tool that actually sets the x402 expected context, not the deleted alias (#2395) by @AntonioSaaranen in #2406
  • fix(openapi): name the dashboard allowance shape and close the PUT /agents open envelope (#2400) by @d-hinders in #2405
  • test(demo-merchant): pin the remaining extensions-echo branches the README claims (#2403) by @AntonioSaaranen in #2407
  • ci(qa-freshness): let the promotion gate see deployment_status runs — select the green run by SHA and job, not by branch label (#2404) by @AntonioSaaranen in #2409
  • Retire legacy Safe agent surfaces by @d-hinders in #2331
  • test(frontend): pin WalletButton's collapsed connected-EOA state on the live rail, not the retired one (#2284) by @AntonioSaaranen in #2410
  • test(backend): make a warm resetDb() honest under contention — scope the cycle fallback, bound and name lock waits (#2354) by @AntonioSaaranen in #2417
  • ci(qa): fire the post-deploy money-flow QA from GitHub deployment_status instead of a dispatch nothing sends (Refs #2273, #2268, #2271) by @AntonioSaaranen in #2412
  • fix(sdk): name the declared to field for haven_pay in the shipped skill (Fixes #2393) by @PhilipEriksson in #2419
  • fix(backend): activate a budget delegation without retiring it — sweep the slot before the flip, excluding the new row by id (Refs #2411) by @AntonioSaaranen in #2430
  • fix(frontend): reword passkey.ts thrown Error to product term "secure passkey" (#2332) by @PhilipEriksson in #2377
  • fix(frontend): surface the account-unlink refusal instead of failing silently (Closes #2414) by @d-hinders in #2434
  • fix(frontend): align account removal copy (Closes #2432) by @d-hinders in #2435
  • refactor(backend): delete the legacy connect-approval half and the last AllowanceModule readers (Closes #2259) by @d-hinders in #2437
  • refactor(frontend): extract inline danger alert (Closes #2433) by @d-hinders in #2436
  • test(frontend): pin the human-decimal allowance_amount shape on /agents across both harnesses (#2298) by @AntonioSaaranen in #2429
  • test(frontend): name the machine when a modal suite times out under load, and pin the timeout posture (#2319) by @AntonioSaaranen in #2431
  • docs(qa): replace the predicted "no branch label" premise with the measurement (Refs #2427) by @AntonioSaaranen in #2439
  • fix(backend): name the reason a budget build is refused, not just "revoked" (#2416) by @AntonioSaaranen in #2441
  • test(backend): expectMatchesSpec round trip for AllowanceSummary (#2328) by @PhilipEriksson in #2438
  • fix(backend): move the delegate-address derivation off the locked activation path (#2415) by @AntonioSaaranen in #2442
  • refactor(db): drop the inert Safe-rail schema and repoint execution_rail's default (#2263) by @d-hinders in #2440
  • fix(agents): drop the last-activity stamp below the card header under sm so the MCP chip is legible at 390 (#2325) by @AntonioSaaranen in #2446
  • docs(signer): correct the false "makes no network calls" claim in six places (Refs #2242) by @AntonioSaaranen in #2447
  • fix(frontend): give machine-payment rows user-facing titles (#2357) by @AntonioSaaranen in #2450
  • fix(accounts): drop the card's unlabelled set-as-default star (Closes #2374) by @AntonioSaaranen in #2451
  • fix(qa-agent): poll the fresh-agent getCode to a deadline and stop blaming the deploy (Closes #2445) by @AntonioSaaranen in #2452
  • fix(qa-agent): stop x402-delegation-3009 declaring PASS on an undelivered payment (Refs #2444) by @AntonioSaaranen in #2456
  • fix(design-system): retitle the showcase's machine-payment sample rows (Closes #2448) by @AntonioSaaranen in #2454
  • docs: retire the last live doc text saying a Haven payment queues (#2265) by @d-hinders in #2453
  • fix(openapi): make allowanceHumanAmount discriminate the two allowance_amount wire shapes (#2408) by @AntonioSaaranen in #2458
  • fix(frontend): drop advanced-surface term 'delegate' from the sweep movement label (Fixes #2356) by @PhilipEriksson in #2428
  • refactor: stop rendering legacy Safe accounts, then delete every account_type branch (Closes #2413) by @d-hinders in #2460
  • refactor(core): remove allowance module registry (Closes #2260) by @d-hinders in #2461
  • docs: tag untagged @haven_ai/* install commands @Alpha (Fixes #2310 docs half) by @PhilipEriksson in #2462
  • chore(safe-retirement): sweep retired-rail copy and dead code (#2266) by @d-hinders in #2470
  • chore(frontend): remove retired investor briefing (Closes #2468) by @d-hinders in #2471
  • fix(frontend): offer chain tokens for a first budget grant, never render an empty budget card by @d-hinders in #2476
  • Fix manual credential approval transition by @d-hinders in #2475
  • feat(backend): make the connector handout channel-aware (HAVEN_CONNECTOR_CHANNEL) for the dev dashboard by @AntonioSaaranen in #2467
  • test(ci)+docs: pin the ci aggregator gate on ci_config_checks; inventory it as the sixteenth required context (Refs #2321) by @PhilipEriksson in #2474
  • test(frontend): delete zero-caller optDownToLegacyRail helper, decide legacySafe cascade (Fixes #2459) by @PhilipEriksson in #2465
  • Closes #2457: report reverse docs coupling claims by @d-hinders in #2478
  • ci(publish): publish 0.0.0-dev snapshots under the dev dist-tag on pushes to dev by @AntonioSaaranen in #2463
  • Fix capture provenance for dirty worktrees by @d-hinders in #2481
  • docs: chain-integrity now fails on duplicated last-verified entries + size ceiling (#2477) by @PhilipEriksson in #2480
  • refactor(backend): rename ChainRail to ChainClientImpl, delete four dead x402-authorization exports (#2469) by @PhilipEriksson in #2479
  • fix(backend): setup prompt tells an agent to append --json and relay the approval first (Closes #2483) by @d-hinders in #2487
  • ci(agents): make the reviewer's disposable copy checkable by execution (Closes #2455) by @AntonioSaaranen in #2488
  • docs(chain): compact mcp-runtime-compatibility.md's last-verified chain under the 64 KiB ceiling (Closes #2477) by @AntonioSaaranen in #2491
  • feat(sdk,connect,signer,mcp-server): derive every connect@ re-run hint from one build-time channel constant (Closes #2423) by @AntonioSaaranen in #2492
  • feat(connect): local runtime-spec override (HAVEN_SIGNER_SPEC / HAVEN_SDK_SPEC / HAVEN_MCP_SPEC) for unpublished signer/SDK/MCP builds (Closes #2424) by @AntonioSaaranen in #2495
  • fix(mcp-server): haven_complete_mcp_tool refuses an undeclared payment_required (#2353) by @PhilipEriksson in #2493
  • fix(connect): skip the approval wait on non-TTY prose runs; carry budget + wallet label in the approve-budget CTA (Closes #2484) by @PhilipEriksson in #2494
  • docs(operations): package dev-channel runbook + operator steps; point release/branch-flow/dev-environment docs at it (Closes #2425) by @AntonioSaaranen in #2497
  • Connect: make the server-side credential path findable and friendly (#2482) by @PhilipEriksson in #2498
  • docs: finish the connector-channel @Alpha audit (the sites #2422 left) (#2466) by @AntonioSaaranen in #2503
  • fix(backend): setup prompt asks for the budget approval once per mode, never unconditionally (Closes #2486) by @AntonioSaaranen in #2502
  • docs(quality-scan): add the seven wave dimensions as measurement blocks (Closes #2501) by @AntonioSaaranen in #2506
  • docs(ship-next): build so the reviewer finds less — mutation by execution, sourced numbers, one stop rule, checked squash, and a named-set CI wait (Closes #2500) by @AntonioSaaranen in #2509
  • docs(agents): haven-doc-reviewer derives scope from the diff's claims, re-runs figures, binds its verdict to a SHA (Closes #2499) by @AntonioSaaranen in #2505
  • fix(qa): split the merchant settlement-gas signal into warn and fail bands (#2490) by @PhilipEriksson in #2510
  • docs: land the 2026-09-03 issue retrospective and its classification data by @AntonioSaaranen in #2513
  • docs-quality: catch a chain entry that survives by reference but not by text by @AntonioSaaranen in #2514
  • ship-next: a title saying "still" names a boundary, not an instance by @AntonioSaaranen in #2517
  • docs(operations): record the 2026-09-04 dev-channel rollout as history, not as ticked boxes by @d-hinders in #2518
  • docs(connect,signer): make the connector command examples channel-neutral by @AntonioSaaranen in #2541
  • docs: land the 2026-09-04 agent-first cold-test report as the epic baseline (Closes #2544) by @d-hinders in #2545
  • docs(operations): complete the dev-channel rollout record — step 8, the #2515 close, and the end-to-end run by @d-hinders in #2547
  • agent-first: point the agent-readable artifacts at hosts that exist, and guard it by @AntonioSaaranen in #2549
  • fix(mcp-server): add next_tool_server_role so a --name install can resolve its own signer by @d-hinders in #2555
  • ci: give Frontend checks room for the npm ci long tail (Closes #2556) by @d-hinders in #2558
  • feat(frontend): advertise the agent-readable artifacts and mark the auth wall (Closes #2521) by @d-hinders in #2554
  • docs(skills): name agent-facing source strings in the ship-next claim-sweep surfaces by @PhilipEriksson in #2559
  • fix(backend): restrict health diagnostics (refs #2542) by @d-hinders in #2546
  • docs(operations): compact the mcp-runtime-compatibility last-verified chain by @d-hinders in #2563
  • fix(sdk,mcp-server): make AgentNextStep describe what the hosted MCP actually emits, and bind the emission to it by @d-hinders in #2565
  • feat(connect): resolve an existing-agent wiring collision at setup, before registration (Closes #2551) by @d-hinders in #2567
  • fix(docs-quality): measure the chain ceiling in bytes, warn before it, and compact the two docs it names (Closes #2562) by @d-hinders in #2569
  • feat(frontend,backend): hand-off links that land the human on the exact step (Closes #2522) by @AntonioSaaranen in #2560
  • feat(sdk,frontend,backend): publish the agent onboarding runbook at /for-agents.md (Closes #2523) by @d-hinders in #2571
  • feat(cli): a machine contract — --json on every command, documented exit codes, haven guide (Closes #2525) by @d-hinders in #2572
  • feat(frontend): tell an agent what to do on signup, login and the passkey step (Closes #2524) by @d-hinders in #2573
  • feat(backend,connect): the approval link reaches the agent, and a setup records how it was run (Closes #2528) by @d-hinders in #2574
  • feat(frontend): serve the product docs as Markdown at stable paths (Closes #2532) by @AntonioSaaranen in #2566
  • feat(backend): make the API discoverable from a bare URL (Closes #2530) by @AntonioSaaranen in #2568
  • feat(backend,frontend): measure the agent-driven funnel from via and run_mode (Closes #2529) by @d-hinders in #2575
  • feat(frontend,backend): machine-readable capability manifest at /.well-known/haven.json (Closes #2531) by @AntonioSaaranen in #2570
  • docs(readme,frontend): one agent-facing README entry, and one vocabulary (Closes #2533) by @d-hinders in #2577
  • docs(copy): extend the connector-command vocabulary to the rest of its class (Closes #2576) by @d-hinders in #2579
  • ci(publish): move the latest dist-tag onto each prod release (Refs #2536) by @d-hinders in #2581
  • feat: browser-approved CLI login (device-code flow) with an owner_cli allow-list — Closes #2526 by @AntonioSaaranen in #2578
  • fix(npm): point the five published packages' homepage at the public repository (Closes #2548) by @PhilipEriksson in #2582
  • fix(backend,qa): make the Base Sepolia RPC default visible and the observer node configurable (refs #2511) by @PhilipEriksson in #2553
  • feat(release): refuse a bump that does not move the version forward (Closes #2580) by @d-hinders in #2584
  • feat: haven agents connect — the connect flow without the dashboard modal — Closes #2527 by @AntonioSaaranen in #2583
  • feat: the dashboard offers to revoke the agents a setup superseded — Closes #2561 by @AntonioSaaranen in #2585
  • docs: the connect/CLI code reuse was measured and declined — Closes #2540 by @AntonioSaaranen in #2587
  • feat(cli,frontend): funding as a machine-readable step — owner-scoped funding instructions endpoint and haven wallets funding (Closes #2534) by @PhilipEriksson in #2589
  • feat(2537): an onboarding section in the shipped haven-pay skill by @AntonioSaaranen in #2588
  • feat(2538): the cold-agent onboarding scenario, on the cadence by @AntonioSaaranen in #2592
  • fix(2590): the CLI help omitted agents connect and misdescribed login by @AntonioSaaranen in #2593
  • fix(2591): the runbook named a chain it cannot know, and never named the API base by @AntonioSaaranen in #2595
  • feat(frontend,sdk): a copyable onboarding prompt for the whole setup — Closes #2535 by @d-hinders in #2598
  • fix(2596): no served artifact asserts a chain the deployment can contradict by @AntonioSaaranen in #2597
  • feat(2366): the hosted haven_quote_x402 can quote a body-bearing paywall by @AntonioSaaranen in #2600
  • docs(2601): give the review root an end of life by @AntonioSaaranen in #2602
  • fix(2511): the QA observer knob was unreachable from CI by @AntonioSaaranen in #2605
  • fix(2594): the precondition refusal names the caller's own use by @AntonioSaaranen in #2603
  • docs(2538): the arming state is invisible from this repo — say so by @AntonioSaaranen in #2606
  • docs(2536): the CLI README described a companion to a dashboard the agent cannot use by @AntonioSaaranen in #2607
  • feat(2366): the idempotency-key spelling window on @haven_ai/mcp by @AntonioSaaranen in #2608
  • docs(2366): record the owner decision that the quote/payment_required divergence stands by @AntonioSaaranen in #2609
  • docs: the one-session retrospective (2026-09-06) by @AntonioSaaranen in #2610
  • fix(ci): the #1777 deadlock notice names the re-run remedy that costs nothing — Closes #2599 by @PhilipEriksson in #2604
  • feat(cli,backend): haven budget grant|revoke as construct-and-hand-off (Closes #2539) by @PhilipEriksson in #2611
  • fix(backend): serialize the delegation build slot so one slot holds one pending offer by @AntonioSaaranen in #2614
  • release: 0.1.35-alpha.0 by @d-hinders in #2624
  • fix(frontend): manifest chain facts, funding path, attribution; 402 signup link parity (#2619) by @PhilipEriksson in #2626
  • feat(cli): budget show --hashes, so the kill switch has a discoverable argument by @AntonioSaaranen in #2627
  • chore: sync main back into dev (0.1.34-alpha.0 promotion merge) by @d-hinders in #2629
  • fix(ci): request QA jobs with GET by @d-hinders in #2644
  • Promote dev → main: 0.1.35-alpha.0 by @d-hinders in #2634

Full Changelog: prod-20260901-191951...prod-20260907-110404