Commit Graph

635 Commits

Author SHA1 Message Date
Josh Avant 14bc698141 test(qa): align integrated audit verifiers (#131032) 2026-08-27 10:17:54 -07:00
Josh Avant df3cf10b2d fix: nested worker delegation no longer times out (#130691)
* fix(workers): bind nested session tools to gateway lifecycle

* fix(workers): fence child creation to live turn
2026-08-27 07:36:20 -07:00
Josh Lehman 26939b2708 fix(telegram): show errors when message-only agent runs fail (#129311)
* fix(telegram): visibly settle failed agent runs

* fix(reply): settle pre-output provider failures

* fix(reply): preserve visible partial fallback

* test(telegram): cover provider failure before output

* fix(auto-reply): propagate terminal run failures

* fix(telegram): silence terminal failure fallback
2026-08-27 01:51:23 -07:00
Peter Steinberger b4d6aff098 chore(deps): refresh seven-day-cooled providers and native tooling (#130653)
* chore(deps): refresh cooled provider and native tooling

* build: preserve installed SDK package identity

* test: isolate dependency validation fixtures
2026-08-27 00:57:31 -07:00
Peter Steinberger c578d324ef fix(qa): preserve truthful debug snapshots for large AIMock requests (#130605) 2026-08-26 19:54:39 -07:00
Dallin Romney 32bfb4de9d fix(qa): sync TUI PTY proof metadata (#130314) 2026-08-26 13:54:56 -07:00
Peter Steinberger fc2724d831 fix(release): normalize package tarball modes and prove non-root install (#130335)
npm/pnpm pack copy on-disk file modes into the tarball, and node-tar's
portable mode-fix only strips group/other write bits — it never adds
read bits. A restrictive-umask build host therefore ships owner-only
(0600/0700) tarball entries, which breaks the CLI for non-root users
after `sudo npm install -g` under mode-preserving consumers such as
system tar.

- Normalize every packed entry to 0644/0755 (a+rX, exec bits kept) as
  the last step of packOpenClawPackageForDocker.
- Add a tar -tvf mode gate to check-openclaw-package-tarball that
  rejects any non-world-readable entry.
- Run the docker-package-install npm lane as root and execute the
  installed CLI as a non-root user to prove the fix live.
- Fix the docker-package-install bun proof, broken on main since
  #129552 wired the bun smoke into the shared openclaw-e2e-instance
  library: replace the drift-prone per-file harness copy list with
  directory copies, and add a closure-walking guard test that fails
  on missing harness dependencies.
2026-08-26 13:24:13 -07:00
Peter Steinberger adb3fb2967 fix(qa): enforce complete channel route isolation evidence (#129718)
* fix(qa): enforce complete channel route isolation evidence

* fix(qa): show full route identity in diagnostics
2026-08-26 11:51:28 -07:00
Peter Steinberger d940690787 test(qa): own OpenAI native web search coverage (#130034)
Co-authored-by: Amp <amp@ampcode.com>
2026-08-26 02:42:55 -07:00
Peter Steinberger ea49e77bbc fix(codex): keep progress cards out of chat history (#130022)
* fix(codex): keep progress cards out of chat history

* test(codex): simplify progress card regressions
2026-08-26 02:28:31 -07:00
Peter Steinberger 790a3f5a76 fix(qa): count only visible Telegram streaming finals (#129960) 2026-08-26 01:21:24 -07:00
Peter Steinberger 95bbc0ac05 fix(qa): bind restart triggers to checkpoint waits (#129935)
Amp-Thread-ID: https://ampcode.com/threads/T-01a037b4-f621-7144-bfdf-a68df795dd57

Co-authored-by: Amp <amp@ampcode.com>
2026-08-26 00:09:27 -07:00
Peter Steinberger 6d1c1c9f57 refactor(cron): unify heartbeat automations under cron ownership (#129862)
* refactor(cron): unify heartbeat automations under cron ownership

* test(cron): align heartbeat automation fixtures and snapshots

* test(heartbeat): preserve rebased manual-wake coverage

* test(ui): scope mobile session actions to active chat pane
2026-08-26 00:08:18 -07:00
Peter Steinberger f1eb3f1e28 fix(qa): reject blocked sender replies in allowlist scenarios (#129840) 2026-08-25 23:30:00 -07:00
Ebo61 dfe29eda2d fix: resumed main-session turn after a gateway restart is delivered to the session's last route instead of silently completing (#127342)
* fix(agents): deliver unclaimed restart recoveries to session route (#127339)

Co-authored-by: Peter Steinberger <steipete@gmail.com>

* test(qa): validate restart isolation without stale inventory

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-08-25 16:37:20 -07:00
Vincent Koc 8c9575b972 fix(agents): honor private QA forced runtime selection (#128475)
* fix(agents): honor private QA forced runtime selection

* test(qa): detect forced runtime fallback and egress

* test(qa): satisfy runtime parity lint
2026-08-26 07:14:30 +08:00
Peter Steinberger 9b7c95a0f0 fix(anthropic): keep automated heartbeats on subscription usage (#129513)
* fix(anthropic): keep automated heartbeats on subscription usage

* test(agents): align retired heartbeat template expectations

* fix(anthropic): avoid heavyweight policy bootstrap imports

* chore(config): prune retired template assertion baseline

* test(vitest): cover Codex startup test family

* refactor(anthropic): remove obsolete thinking-profile re-export
2026-08-25 14:11:38 -07:00
Peter Steinberger 13934fef3d fix(qa): scope restart sentinel checks to scenario logs (#129270) 2026-08-25 05:46:51 -07:00
Peter Steinberger 1ba243c88e fix(qa): restore paired-node worker crash recovery proof (#129241) 2026-08-25 03:54:50 -07:00
Peter Steinberger daefcc117f fix(qa): track progress card planning signal (#129143)
Amp-Thread-ID: https://ampcode.com/threads/T-01a037b4-f621-7144-bfdf-a68df795dd57

Co-authored-by: Amp <amp@ampcode.com>
2026-08-25 02:30:56 -07:00
Peter Steinberger 7da9c41f39 fix(qa): repair cloud disappearance proof (#129056) 2026-08-24 23:59:11 -07:00
Josh Avant 2e9c8f8d3f Audit exact-bound owner-native lifecycle receipts (#126082)
* feat(audit): add owner-native lifecycle receipts

* fix(audit): store lifecycle bindings additively

* test(cron): isolate execution binding fixtures

* fix(audit): reject stale lifecycle owners

* fix(acp): gate parent flow binding on retained task

* fix(audit): reject pruned owner cursors
2026-08-24 17:49:25 -07:00
Peter Steinberger 234df15a6d chore: refresh dependencies after seven-day cooldown (#128414)
* build(deps): refresh dependencies after cooldown

Apply dependency, toolchain, action, image, and exact tool updates released by the inclusive 2026-08-16 seven-day cutoff. Adapt owner boundaries for the resulting CUA, logging, Teams, Markdown, native, and test-harness contract changes while retaining versions blocked by upstream compatibility constraints.

* fix(ui): align markdown renderer env typing

* fix(deps): align postcss and mistral peer contracts

* fix(deps): repair refreshed dependency contracts

* fix(deps): retain tslog startup budget

* fix(ci): verify Android tools with SHA-256

* fix(ci): fence Android SDK cache version
2026-08-24 03:01:54 -07:00
Ayaan Zaidi ca6fea301b refactor(plugins)!: remove OpenProse (#128494)
Remove the bundled OpenProse plugin and /prose command now that upstream owns the maintained Agent Skill. Preserve /prose as migration documentation and let Doctor clean stale plugin configuration.

BREAKING CHANGE: The bundled OpenProse plugin and /prose command are removed.

Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-08-24 10:39:46 +05:30
Vincent Koc 19d44d3f38 test(qa): detect pending restart waits by correlation (#128436) 2026-08-23 18:20:08 -07:00
sunlit-deng 5833f53c18 fix(gateway): invalidate stale worker disk-space projections (#123442)
* fix(gateway): invalidate stale worker disk-space projections

* test(qa): prove worker disk-space projection eviction

* test(qa): narrow operator client in proof

* test(gateway): keep retired disk projection fence stable

Co-authored-by: sunlit-deng <yang.jiajun1@xydigit.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-08-23 16:12:14 -07:00
Peter Steinberger 977bbe2667 fix: agents continue after Code Mode tool and JavaScript errors (#128088)
* fix(agents): let code mode recover from ordinary tool failures

* fix(agents): preserve read-only reconciliation after side effects

* test(qa): track renamed code mode outcome owner

* test(agents): prove read-only code mode reconciliation boundary
2026-08-23 14:51:00 -07:00
Dallin Romney 0d727c3a3b fix(qa): exercise a real config restart boundary (#127285) 2026-08-23 14:25:12 -07:00
Dallin Romney 8a3afa8820 fix(qa): model-switch proof accepts served model reroutes (#127281)
* fix(qa): accept response model reroutes

* fix(qa): accept tool continuity response reroutes

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-08-23 14:17:33 -07:00
Vito Cappello 967696b743 fix(agents): restore system-agent delegation in channel turns (#128084)
* fix(agents): isolate probe runtime generation

* test(qa): prove channel system-agent delegation

---------

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>
Co-authored-by: RoboClaw <309084314+roboclaw-bot@users.noreply.github.com>
2026-08-23 01:44:40 -04:00
Peter Steinberger 9c3335a1a4 fix(qa): restore failed-tool recovery scenarios (#126971)
* fix(qa): sync cron failed-tool honesty fixture

* fix(qa): sync channel failed-tool honesty fixture

Amp-Thread-ID: https://ampcode.com/threads/T-01a02218-492f-73b8-8514-ef342917e129

* test(qa): sync OTEL failed-tool assertion

---------

Co-authored-by: Amp <amp@ampcode.com>
Co-authored-by: Dallin Romney <dallinromney@gmail.com>
2026-08-21 02:20:53 -07:00
Peter Steinberger 4ba2c46cc4 fix(qa): own container first-run onboarding journey (#126981)
Co-authored-by: Amp <amp@ampcode.com>
2026-08-20 21:47:44 -07:00
Dallin Romney 927755e6af fix(qa): prove cron scenarios fire naturally (#123127) 2026-08-20 09:43:05 -07:00
Vincent Koc 42a4db5f42 fix(qa): wait for config restart wake (#126368) 2026-08-20 05:00:23 +08:00
Samuel Judson 24a1139188 fix: move raw call transcripts from system to user prompt to protect provenance (#123846)
* Move raw transcript from system to user prompt to protect provenance.

* Type fix.

* fix(voice-call): harden transcript context handling

* fix(voice-call): initialize inbound Twilio control state

* test(voice-call): align runtime coordinator fixture

---------

Co-authored-by: joshavant <830519+joshavant@users.noreply.github.com>
2026-08-19 13:07:59 -07:00
Peter Steinberger ae55a4090c refactor(canvas): make the panel a widget presenter (#126030)
* refactor(canvas): retire legacy host and commands

* refactor(apple): narrow shared Canvas contracts

* refactor(macos): keep Canvas as widget presenter

* refactor(ios): remove Canvas client

* refactor(android): remove Canvas client

* refactor(linux): remove Canvas client

* fix(ci): isolate native locale artifacts

* fix(linux): regenerate companion lockfile

* fix(canvas): refresh native tool display metadata

* test(canvas): align coverage with presenter surface

* test(canvas): remove obsolete asset root seam

* test(canvas): stabilize retirement CI coverage

* refactor(swift): remove orphaned resource wrapper

* test(ios): remove retired canvas layout assertion

* fix(macos): reserve retired canvas command namespace

* refactor(macos): isolate canvas command policy

* fix(canvas): select only eligible macOS panels

* fix(canvas): keep panel selection plugin-owned
2026-08-19 08:21:07 -07:00
Peter Steinberger c695b70a57 test(qa): wait for terminal task metadata (#126256) 2026-08-19 02:00:11 -07:00
Peter Steinberger f92e9367e8 fix(build): rebuild incomplete managed-update cache hits (#125954)
* fix(build): invalidate incomplete cache hits

* test(qa): align empty completion lifecycle
2026-08-18 23:25:04 -07:00
Peter Steinberger e38a06439e refactor: trim locale and QA fixture debt (#126139)
* refactor: trim locale and QA fixture debt

* fix(qa): preserve shared flow portability

* chore(qa): document shared flow branch

* fix(docs): align plugin SDK subpath catalog

* fix(ci): align shared docs and flow contracts
2026-08-18 22:17:19 -07:00
Peter Steinberger dc37ed8f63 fix(agents): record empty subagent completion delivery (#126179)
* fix(agents): preserve delivery after incomplete completion

* test(qa): distinguish failed delivered completions
2026-08-18 21:46:38 -07:00
Peter Steinberger fe816d69ef fix(gateway): route detached announce by instance (#125946)
* test(qa): cover worker generation reload

* test(qa): anchor worker generation fixture

* test(qa): strengthen worker generation proof

* test(qa): stabilize terminal reply smoke waits

* test(qa): widen terminal reply CI budget

* test(qa): drop superseded timeout workaround

* fix(gateway): route detached announce by instance
2026-08-18 17:14:43 -07:00
Dallin Romney f263e75260 test(matrix): expose raw command mention safety (#125685)
* test(matrix): expose raw command mention safety

* refactor(qa): consolidate Matrix preview snapshot

* fix(matrix): project command text through progress

* refactor(matrix): keep QA projection within lint boundary

* style(matrix): apply canonical transport formatting
2026-08-18 08:51:50 -07:00
Josh Avant 916aca13f3 feat: record subagent execution lineage (#122015)
* feat(audit): record subagent execution lineage

* fix(audit): type-check spawn lineage validation

* docs: preserve spawned-run lineage invariants

* fix(audit): preserve lineage for worker spawns

* fix(audit): bind worker lineage to live authority

* fix(audit): keep lineage carrier private

* fix(sessions): preserve ACP participant recording

* fix(audit): keep lineage out of runtime bearer

* fix(audit): keep lineage type private

* test(audit): match current worker claim shape

* test(audit): preserve readonly lineage result

* fix(audit): redeem spawn lineage privately

* fix(audit): preserve lineage redemption on copy

* test(audit): prove nested worker spawn lineage

* fix(audit): restore execution identity CI gates
2026-08-17 21:41:30 -07:00
Peter Steinberger 7170a6231a feat(agents): unify agent status into a durable progress_card (#125125)
* feat(agents): unify agent status into a durable progress_card

Replace the write-only update_plan to-do tool and the fragmented plan
rendering with one durable status artifact per session: progress_card
({plan?, markdown?}, replace-on-write, 8 KiB markdown / 50-step caps).
Cards persist in a lazy-additive session_progress_cards table in the
per-agent DB (no schema-version bump), broadcast progressCard.changed,
and render from the store with exactly one live placement per view
(session rail when visible, else the composer-adjacent bar); transcripts
collapse to one-line receipts, and the sidebar hovercard shows other
sessions' cards inline (markdown + <progress>, DOMPurify allowlist, no
iframes). The three stream-derived plan renderers and their dedup
heuristics are deleted.

Codex runs disable the native plan tool per thread
(tools.update_plan.enabled=false) and receive progress_card via the
dynamic-tool bridge; compaction restore now reinjects the card (steps +
bounded markdown). Card writes still emit the legacy plan stream event so
native apps and channels keep working until their per-platform
migrations. Policy names map update_plan -> progress_card; the shipped
tools.updatePlan=false kill switch is honored.

Net -277 production LOC; -480 test LOC.

* test(agents): regenerate Codex prompt snapshots for update_plan thread-config disable

* chore(protocol): allowlist progressCard.changed for native apps pending card migration

* fix(ci): repair progress card integration checks

* fix(codex): canonicalize native progress cards

* test(gateway): reconcile progress card method order

* test(codex): stabilize native approval fixture
2026-08-17 09:44:04 -07:00
Peter Steinberger 185b1ab726 fix(discord): retain progress drafts after error finals (#125140)
* fix(discord): retain error progress drafts

* test(discord): parse REST probe request URLs

* test(qa): force Discord error-final path

* test(qa): match Discord overload final
2026-08-17 02:22:02 -07:00
Peter Steinberger 1027837d96 fix(msteams): avoid ambiguous delivery replay (#125127) 2026-08-17 00:13:59 -07:00
Peter Steinberger a3578c7790 test(qa): cover Discord progress draft lifecycle (#125089)
* test(qa): cover Discord progress draft lifecycle

* test(qa): allow live Discord draft proof

* ci(qa): select Discord provider mode
2026-08-16 23:17:53 -07:00
Peter Steinberger 2af054fb9a fix(qa): prove repeated gateway restart recovery (#125052) 2026-08-16 22:34:55 -07:00
Josh Avant f7a8638282 feat(audit): explain outbound message delivery (#123709)
* feat(audit): explain outbound message delivery

* fix(audit): record early message policy denials

* refactor(audit): split message delivery readers

* test(outbound): cover delivery audit lifecycle

* fix(audit): preserve message progress across downgrade

* fix(audit): keep progress out of activity protocol

* docs(audit): keep activity outcomes terminal-only

* fix(audit): bound merged delivery paging

* fix(audit): trust decision channel references

* fix(audit): keep retention constant private

* fix(audit): record broadcast target denials

* fix(audit): distinguish broadcast denial receipts

* test(qa): enforce message delivery receipt proof

* fix(audit): integrate C04 with schema v9 owners

* chore(audit): satisfy assertion safety gate

* refactor(agents): split explicit message target guard

* test(audit): materialize pinned reader in shallow CI

* test(qa): poll terminal audit persistence

* fix(delivery): defer audit terminal to recovery

* test(qa): isolate message delivery restart proof

* test(qa): keep gateway restart config canonical

* test(qa): exclude unrelated restart plugins

* test(qa): remove unused restart plugins

* test(qa): disable automatic memory plugin

* test(qa): converge replacement gateway startup

* fix(plugins): stabilize registry fingerprints

* fix(plugins): use public normalization export

* test(plugins): keep fingerprint fixture immutable

* fix(audit): bind delivery receipts to exact executions

* chore(audit): keep terminal binding helper private

* test(reply): cover unbound admission callbacks

* docs(agents): preserve durable delivery ownership
2026-08-16 21:26:27 -07:00
Peter Steinberger 7349177ce3 feat: main-session agent-wide visibility + session.groupScope routing (#124965)
* feat: add main session group routing

* docs: explain main session routing scopes

* fix: align memory session visibility

* test(qa): cover main-scoped group bindings

* fix(sessions): preserve binding-scoped outbound routes

* fix(routing): preserve explicit outbound owners

* fix(sessions): recognize global main visibility

* chore(ci): prune assertion safety baseline
2026-08-16 19:57:18 -07:00