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