Commit Graph

270 Commits

Author SHA1 Message Date
Vincent Koc 5b1b1e0632 test(qa): cover CLI distribution workflows (#118948) 2026-08-04 05:09:39 +08:00
Vincent Koc 1cb030f1a9 test(gateway): cover client transport defaults (#118798) 2026-08-04 04:58:05 +08:00
Vincent Koc 7a97997b61 test(gateway): add node control-plane QA coverage (#118784)
* test(gateway): promote remote host command proof

* test(gateway): cover node control plane

* test(gateway): narrow connected operator client

* test(gateway): use public QA harness
2026-08-04 04:38:02 +08:00
Vincent Koc 317320a95e test(gateway): add HTTP API QA coverage (#118809) 2026-08-04 04:00:54 +08:00
Vincent Koc 3c858f7a92 test(qa): cover OpenClaw exec process lifecycle (#118819) 2026-08-04 03:50:05 +08:00
Vincent Koc f1a87bf364 test(gateway): cover loopback and LAN access (#118824) 2026-08-03 19:39:51 +00:00
Vincent Koc 7741cbdaa7 test(gateway): cover published protocol artifacts (#118799)
* test(gateway): cover published protocol artifacts

* test(gateway): isolate Swift artifact proof

* test(gateway): compile Swift models portably

* test(gateway): align protocol metadata fixture

* test(gateway): install packed protocol as consumer
2026-08-04 03:26:29 +08:00
Vincent Koc cce2d632c9 test(gateway): cover event and protocol authorization (#118810)
* test(gateway): cover event and protocol authorization

* test(gateway): match websocket close contract
2026-08-04 03:24:18 +08:00
Vincent Koc 592dbf74d7 test(qa): add session transcript primary coverage (#118820)
* test(qa): prove session transcript CLI management

* test(qa): register SQLite transcript durability proof
2026-08-04 02:41:09 +08:00
Peter Steinberger ecc49b5a87 refactor(tts): absorb speech core package (#118513)
* refactor(tts): absorb speech core package

* fix(tts): preserve runtime SDK exports

* refactor(tts): remove private package exports

* test(tts): align canonical runtime mocks

* test(tts): complete canonical settings mocks

* chore(plugin-sdk): regenerate API baseline for #118513
2026-08-03 02:25:48 -07:00
Peter Steinberger 9b8e50b9f6 refactor(scripts): consolidate redundant tooling paths (#118259) 2026-08-02 16:20:09 -07:00
Peter Steinberger 7866ecae4b fix(release): keep npm 12 pack checks working (#118209)
* fix(release): accept npm 12 pack json

* fix(release): share npm pack normalizer in plugin workflow
2026-08-02 14:57:49 -07:00
Peter Steinberger 7c70571683 chore(lint): clear 172 lint:all baseline violations in five batches (#118098)
* chore(lint): clean Android-Linux app assets batch

* chore(lint): clean setup-launcher-plugin batch

* chore(lint): clean changelog-updater batch

* chore(lint): clean QA-runtime-helper batch

* chore(lint): clean script-tests batch

* fix(mxc): await sandbox spawn before bridge selection

* fix(test): make fake plutil metacharacter escaping survive the template hop
2026-08-02 14:08:09 -07:00
Vincent Koc 001666791c fix(qa): narrow realtime Talk smoke captures 2026-08-02 04:16:16 +08:00
Vincent Koc 3faf984b7a test(qa): preserve realtime smoke failure precedence 2026-08-02 03:00:00 +08:00
Vincent Koc cd7804c105 test(qa): expose realtime Talk live smoke evidence 2026-08-02 02:50:23 +08:00
Peter Steinberger 385f1dee16 docs: generate docs map at publish time (#117398)
* docs: generate docs map at publish time

* fix: canonicalize Docker pack entry path

* fix: preserve package lifecycle ownership
2026-08-01 07:01:43 -07:00
Dallin Romney 40e1ce6dc3 fix(qa): satisfy update lane execution contracts (#117388) 2026-08-01 21:28:14 +08:00
Dallin Romney f5989ea1f6 fix(qa): start Telegram plugin in bot-token runtime (#117389) 2026-08-01 20:57:46 +08:00
Dallin Romney c81bb3958c fix(qa): lease credentials for Telegram startup proof (#116842)
* fix(qa): lease Telegram startup credentials

* refactor(qa): trim credential lease surface
2026-08-01 17:13:27 +08:00
Dallin Romney bcff3a0de3 fix(qa): bind Codex auth fixture to runtime version (#116859)
* fix(qa): update Codex auth fixture protocol version

* test(qa): bind Codex auth fixture to runtime version

* test(qa): load Codex fixture version through public surface
2026-08-01 13:36:31 +08:00
Dallin Romney 8b1a9ccaa4 fix(voice-call): preserve tool invocation context (#116856)
* fix(voice-call): preserve tool invocation context

* fix(voice-call): trust requester tool context

* style(voice-call): format invocation context test
2026-08-01 13:23:24 +08:00
Dallin Romney f9d2f0dc86 fix(qa): restore WebChat auto-TTS proof (#116810) 2026-08-01 12:28:43 +08:00
Vincent Koc b45ca07ec9 fix(ci): keep full release validation aligned with runtime state (#116653)
Align Telegram artifact reuse and packaged Docker validation with current GitHub Actions and runtime state contracts. Refresh affected regression fixtures and isolate test state.
2026-07-31 23:03:02 +08:00
Dallin Romney 96ea0fbf56 improve(qa): align Telegram coverage with startup behavior (#113527)
* test(telegram): align coverage with startup behavior

* fix(qa): register Slack MPIM coverage
2026-07-29 12:59:42 +08:00
Ho Lim 50f0e8d8ab fix(diagnostics): exclude active steering from session backlog (#114780)
* fix(diagnostics): exclude active steering from session backlog

Signed-off-by: Ho Lim <subhoya@gmail.com>

* fix(diagnostics): cover reply-run steering backlog

Signed-off-by: Ho Lim <subhoya@gmail.com>

* test(qa): prove active steering drains diagnostics

Signed-off-by: Ho Lim <subhoya@gmail.com>

* test(diagnostics): format reply-run steering coverage

Signed-off-by: Ho Lim <subhoya@gmail.com>

* fix(diagnostics): keep backlog policy internal

Signed-off-by: Ho Lim <subhoya@gmail.com>

* test(qa): isolate Talk diagnostics client

Signed-off-by: Ho Lim <subhoya@gmail.com>

* test(qa): close Talk client before diagnostics

* test(qa): reuse Gateway diagnostic RPC client

* test(qa): retry Talk steering admission

---------

Signed-off-by: Ho Lim <subhoya@gmail.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-27 20:01:22 -04:00
Peter Steinberger d5a3740707 fix(package): prevent installs from deleting required runtime modules (#113821)
* fix(package): preserve imported runtime chunks after install

* fix(package): isolate public build from private QA

* test(package): prove installed postinstall dependency graph
2026-07-25 14:05:41 -07:00
Vitor Cepeda Lopes 2296e898e1 fix(release): stop Windows package descendants after timeout (#111956)
* fix(release): terminate Windows package command trees

* fix(release): type package runner test output

* fix(release): scope package runner normalization to Windows

* test(release): run package timeout proof on Windows CI

---------

Co-authored-by: TheAngryPit <16145902+TheAngryPit@users.noreply.github.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-25 02:20:27 -07:00
Peter Steinberger 82d1a03f25 refactor(agents): move implicit-main fallback into load-time roster injection (#112678)
* refactor(agents): require explicit roster defaults

* feat(onboard): create named first roster agent

* refactor(agents): remove runtime main fallbacks

* style(agents): apply roster refactor formatting

* refactor(agents): finish roster-only runtime sweep

* fix(doctor): migrate legacy main session sqlite

* fix(doctor): harden roster session migrations

* fix(onboard): commit first agent atomically

* fix(config): support empty-roster analysis

* fix(agents): preserve legacy main state during creation

* fix(setup): materialize baseline agent roster

* fix(agents): harden legacy default transfer recovery

* fix(agents): simplify roster-only legacy compatibility

* fix(agents): preserve staged first-agent entries

* fix(config): migrate persisted implicit-main rosters

* fix(config): preserve staged empty rosters

* fix(agents): finalize roster-only upgrade paths

* fix(sessions): close legacy main migration outcomes

* fix(config): migrate legacy roster markers at load

* fix(sessions): preserve roster upgrade history

* refactor(sessions): restore lean legacy main compatibility

* fix(setup): prepare first-agent credentials before publish

* fix(config): stabilize roster snapshot migration

* refactor(sessions): shrink legacy main compatibility

* fix(agents): restore roster compatibility fidelity

* fix(sessions): preserve divergent legacy history

* refactor(agents): narrow roster-only scope

* fix(config): isolate roster migration

* test(agents): align roster-only fixtures

* fix(agents): keep main agent undeletable

* fix(agents): harden roster migration invariants

* fix(agents): close setup and audit scope gaps

* fix(cron): scope session reaper throttles by agent

* fix(agents): preserve scoped owner precedence

* fix(config): preserve authored config ownership

* fix(setup): keep default workspace and roster in sync

* fix(setup): preserve default entry workspace on bare runs

* fix(agents): adapt roster rebase to keyed entries

* fix(agents): honor both roster representations

* fix(agents): route roster reads through shared helpers

* fix(config): preserve canonical roster writes

* fix(cron): resolve dynamic default for session reaper

* fix(agents): close dynamic default migration gaps

* fix(agents): align scoped session ownership

* fix(sessions): preserve legacy main directory casing

* fix(agents): align cron and legacy auth ownership

* fix(setup): provision the committed default workspace

* fix(cron): align scoped ownership and reaping

* fix(cron): treat blank agent ids as absent

* fix(cron): retain configured session-store owners

* fix(agents): repair roster-aware CI boundaries

* fix(cron): preserve scoped ownership resolution

* fix(agents): preserve rosterless maintenance paths

* fix(agents): propagate roster ownership through runtime boundaries

* fix(agents): preserve roster ownership across runtime paths

* fix(agents): harden roster diagnostics and legacy routing

* fix(agents): remove redundant diagnostic import

* test(agents): type CLI policy fixture explicitly

* fix(config): preserve canonical roster mutation identity

* fix(doctor): read canonical agent rosters consistently

* fix(config): resolve compound roster unsets safely

* fix(config): finalize main-session reconciliation

* fix(doctor): read canonical session state safely

* fix(sessions): preserve current visibility alias

* fix(config): track roster include provenance

* test(config): type roster provenance cases

* fix(config): refine roster include ownership

* fix(agents): preserve staged roster invariants

* test(config): align fixtures with explicit roster ownership

* test(node-host): preserve optional plan typing

* fix(config): preserve authored roster projections

* test(config): keep raw roster fixtures explicit

* test(config): normalize rosters at runtime fixtures

* fix(config): protect authored roster ownership

* fix(agents): require explicit session ownership

* fix(agents): enforce scoped roster ownership

* fix(sessions): merge fixed-store agent partitions

* fix(agents): harden roster ownership boundaries

* fix(config): reject ambiguous roster projections

* fix(sessions): preserve persisted store ownership

* fix(sessions): keep collision diagnostics additive

* fix(security): scan malformed roster workspaces

* test(config): align snapshot fixtures after rebase

* test(agents): use explicit roster fixtures

* fix(config): harden roster diagnostic boundaries

* fix(sessions): isolate fixed-store agent databases

* test(agents): type malformed default markers

* refactor(sessions): extract store collision resolution

* test(system-agent): split oversized setup coverage

* style(system-agent): format split setup suite

* fix(sessions): preserve promoted store ownership

* fix(sessions): derive scoped owner before target

* fix(sessions): preserve explicit sqlite ownership

* fix(agents): restore roster compatibility across CI

* fix(agents): enforce roster-owned runtime boundaries

* fix(agents): satisfy default lookup lint

* test(sessions): split known-owner coverage

* fix(state): satisfy path identity lint

* fix(agents): preserve malformed roster safety boundaries

* fix(agents): restore roster compatibility at runtime boundaries

* fix(config): satisfy roster boundary type checks

* fix(agents): preserve roster ownership across runtime probes

Setup inference probes now execute as the configured roster owner. Malformed agent-prefixed session rows are intentionally omitted by the fail-closed visibility contract rather than normalized by tests.

* fix(agents): satisfy session list owner lint

* fix(agents): preserve roster-owned runtime boundaries

Restore shared logical rows for exact SQLite session locators while keeping their physical database owner separate. The ownership regression test now constructs an explicit sole-owner database directly instead of relying on first-touch capture, matching the intentional shared-store contract.

* fix(sessions): preserve multiply owned exact stores

* fix(sessions): restore runtime owner boundaries

Keep incognito sentinels agent-owned, fold default-agent approvals into the global snapshot, and preserve the configless legacy-main CLI policy fallback. Also repair the existing CLI watchdog test lifecycle so the compact shard observes its timeout without an unawaited assertion or async timer stall; product behavior is unchanged by that test-only fix.

* test(ci): align owner-scoped fixtures

These assertions are unchanged. The fixtures now declare the intended non-default runner, expose the session-key constant imported by production status code, and select the main approvals bucket explicitly on Windows.

* fix(agents): close final roster ownership gaps
2026-07-24 22:38:09 -07:00
Peter Steinberger 5bea268128 feat(anthropic): complete Claude Opus 5 rollout (#113392)
* feat(models): add Claude Opus 5 support

* test(models): align Opus 5 setup fixtures

* test(models): update ambient Opus 5 detection

* fix(models): reconcile Opus 5 support with main
2026-07-24 14:55:36 -07:00
Peter Steinberger 525a7f4c96 ci(release): restore full validation after config migrations (#112740)
* fix(browser): preserve scoped CDP authority policy

* test(release): migrate canonical config fixtures

* ci(release): repair acceptance harness drift

* ci(release): extend Anthropic setup budget

* test(release): align remaining CI contracts

* test(release): align Docker and QA contract tests

* docs(release): preserve validation evidence inputs

* test(plugins): align unprepared metadata reads

* ci(release): separate QA live suite filters

* test(release): bind cron MCP cleanup device
2026-07-23 08:46:55 -04:00
Peter Steinberger 4e9ae9fbff feat(cron): system-owned heartbeat monitor jobs replace the dedicated interval scheduler (#112585)
* feat(cron): system-owned heartbeat monitor jobs replace the interval scheduler

- new internal cron payload kind {kind:"heartbeat"}: execution pokes
  requestHeartbeat({source:"interval"}); reported in the protocol job
  schema, not accepted from client create/patch
- gateway converges one declaration-keyed monitor job per heartbeat-enabled
  agent (schedule every+deterministic phase anchor) at startup and on
  config reload; removes monitors for unconfigured agents
- heartbeat runner loses its interval setTimeout machinery; nextDueMs
  stays as the cooldown gate, event wakes unchanged

* test(cron): heartbeat monitor regressions; docs for cron-owned cadence

- converge/prune/failure-containment tests for heartbeat monitor jobs
- heartbeat payload run fires an interval wake, no system event
- scheduler tests converted from timer self-fire to wake-queue pokes;
  timer-mechanics-only tests deleted with the timer
- persisted-shape accepts the heartbeat payload kind
- docs: heartbeat cadence ownership + system payload kind

* fix(cron): heartbeat monitor review round 1

- targeted cron-monitor interval ticks use the full per-agent path so
  due-commitment sessions still deliver
- cron-disabled gateways keep a local fallback interval timer (shipped
  cron.enabled=false contract; removed when heartbeat config folds into
  cron in #110950)
- heartbeat job reconciliations serialize with latest-wins epochs and a
  bounded 30s retry after a failed convergence pass

* fix(cron): chain clamped fallback heartbeat timers past the setTimeout cap

* fix(cron): heartbeat monitor review round 3

- targeted monitor redirect skips wakes carrying heartbeat overrides and
  surfaces the per-agent terminal skip reason instead of not-due
- cron-disabled fallback timer re-arms with a 1s floor after each firing
  so a dropped wake cannot end the chain
- heartbeat payloads are system-owned at the service boundary: add requires
  the gateway opt-in, patches to the kind are rejected

* fix(cron): heartbeat monitor review round 4 — full ownership enforcement

- prune only jobs proven to be monitors (prefix AND heartbeat payload)
- existing monitors reject every update patch; declarative upserts on the
  monitor key require the gateway opt-in even with a different payload

* fix(cron): complete heartbeat monitor ownership boundary

- converge scopes declarative matching to real monitors so a colliding
  user job with the same key is never adopted or overwritten
- monitor removal requires the gateway systemOwned opt-in; ad-hoc
  API/CLI deletion is rejected, reconciliation cleanup still prunes

* docs(cron): record intentional enrollment-snapshot semantics for monitor ticks

* fix(cron): repair heartbeat monitor CI gates
2026-07-22 14:03:29 -07:00
Dallin Romney 132d91e427 refactor(qa): make taxonomy coverage ids unique (#110280) 2026-07-22 16:28:44 +09:00
Peter Steinberger edecdbd05e refactor(config): config-surface reduction tranche 3 — product consolidations (review request) (#111527)
* refactor(config): consolidate media model lists

* refactor(config): unify memory configuration

* refactor(config): consolidate TTS ownership

* refactor(config): move typing policy to agents

* refactor(config): retire product-level config surfaces

* refactor(config): share scoped tool policy type

* chore(config): refresh generated baselines

* fix(config): honor agent typing overrides

* fix(config): migrate sibling config consumers

* refactor(infra): keep base64url decoder private

* fix(config): strip invalid legacy TTS values

* chore(config): refresh rebased baseline hash

* fix(doctor): route legacy messages.tts.realtime voice to talk during tts move

* refactor(config): polish final layout names

* refactor(config): freeze retired tuning defaults

* feat(config): add fast mode default symmetry

* refactor(config): key agent entries by id

* docs(config): update final layout reference

* test(config): cover final layout migrations

* chore(config): refresh final layout baselines

* fix(config): align final layout runtime readers

* fix(config): align remaining readers

* fix(config): stabilize final layout migrations

* fix(config): finalize config projection proof

* fix(config): address final layout review

* docs(release): preserve historical config names

* fix(config): complete keyed agent migration

* fix(config): close final migration gaps

* fix(config): finish full-branch review

* fix(config): complete runtime secret detection

* fix(config): close final review findings

* fix(config): finish canonical docs and heartbeat migration

* fix(config): integrate latest main after rebase

* refactor(env): isolate test-only controls

* refactor(env): isolate build and development controls

* refactor(env): collapse process identity indirection

* refactor(env): remove duplicate config and temp aliases

* docs(env): define the operator-facing allowlist

* ci(env): ratchet production variable count

* fix(env): remove stale provider helper import

* fix(env): make ratchet sorting explicit

* test(env): keep test seam in dead-code audit

* test(env): cover ratchet growth and boundary; document surface budgets

* docs(config): document tier-eval consolidations

* docs(config): clarify speech preference ownership

* test(memory): align retired tuning fixtures

* refactor(memory): freeze engine heuristics

* refactor(config): apply tier-eval tranche

* refactor(tts): move persona shaping to providers

* refactor(compaction): move prompt policy to providers

* test(config): align hookified prompt fixtures

* chore(deadcode): classify test-only exports

* chore(github): remove unused spawn helper

* chore(deadcode): classify queue diagnostics

* chore(deadcode): remove unused lane snapshot export

* chore(plugin-sdk): ratchet consolidated surface

* fix(config): integrate latest main after rebase
2026-07-21 20:28:43 -07:00
Peter Steinberger ca3a1873a6 fix(test): make broad shard execution deterministic (#111416)
* fix(test): harden broad shard execution

* test: allow broad-profile contention

* style(telegram): remove redundant chat id cast

* style(test): preserve setup test spacing
2026-07-19 08:39:16 -07:00
Peter Steinberger 9d97e10efe refactor: move non-session runtime journals to SQLite (#109427)
* refactor: migrate runtime JSONL state to SQLite

* chore: refresh SQLite migration validation

* fix: preserve safe audit migration order

* fix: sanitize retired audit archives safely

* fix: satisfy SQLite storage architecture gates

* fix: serialize plugin doctor state migrations

* fix: bound memory event SQLite projections

* fix: rotate memory event projections safely

* fix: preserve imported event retention age

* fix: harden memory event export projection

* fix: canonicalize memory event migrations

* fix: harden legacy journal migrations

* fix: report unsafe legacy journal paths

* fix: preserve journal ownership during migration

* fix: keep legacy file imports doctor-only

* fix: align SQLite audit CI coverage

* refactor: keep state helpers module-private

* fix: harden legacy state migration recovery

* fix: reconcile SQLite state audit migration

* test: use neutral audit redaction fixtures

* fix: close SQLite migration recovery gaps

* refactor: split audit migration recovery helpers

* test: prove completed audit pads stay out of backups

* fix: preserve audit record ordinals across blank lines

* fix: align SQLite audit CI contracts

* build: package SQLite audit E2E entries

* fix: preserve audit ordinals in backup snapshots
2026-07-18 11:42:14 +01:00
Peter Steinberger c9b61ac1bc test(qa): wait for MCP agent completion 2026-07-18 08:23:34 +01:00
Dallin Romney a9dc393f7e test(qa): prove Codex auth product migration (#109291) 2026-07-17 16:10:23 -07:00
Dallin Romney 71a02e16af test(qa): prove gateway package self-upgrade (#109399) 2026-07-17 12:26:35 -07:00
Peter Steinberger 7e705ed7c4 fix(release): resolve package tools from source checkout 2026-07-17 19:49:20 +01:00
Peter Steinberger 8a8706cb5d test(mcp): exercise subscribed gateway events 2026-07-17 18:00:24 +01:00
Peter Steinberger 7128f6ddbb test(mcp): tolerate delayed assistant channel events (#110076) 2026-07-17 17:22:45 +01:00
Dallin Romney b5eb8977dc test(qa): prove Codex cold install product path (#109267) 2026-07-16 13:10:41 -07:00
Peter Steinberger a7d5386896 improve: speed up ring-zero QA smoke (#108694)
* ci: speed up ring-zero QA smoke

* ci: scope QA sticky cache to Docker lane

* ci: keep QA dependency setup on actions cache

* test: restore modern Docker QA proof
2026-07-16 01:12:40 -07:00
Peter Steinberger fecd11fdc9 perf(test): unref process watchdogs (#108643) 2026-07-16 00:39:08 -07:00
Peter Steinberger bae9752c5a refactor(deadcode): enforce repository hard zero (#108641) 2026-07-15 22:40:00 -07:00
Peter Steinberger c8c2b206e8 improve: speed up targeted regression suites (#108609)
* test: speed up targeted regression suites

* test: preserve subprocess startup headroom

* test: keep secops-owned auth coverage unchanged
2026-07-15 21:29:48 -07:00
Peter Steinberger ff8a015981 test: tighten additional async polling (#108450) 2026-07-15 13:14:35 -07:00
Peter Steinberger 9497450511 refactor: eliminate dead-export baseline (#108376)
Burn the grandfathered unused-export baseline to zero and enforce a hard-zero Knip gate.
2026-07-15 17:05:07 +01:00
Peter Steinberger 69e9254e0e fix(ci): regen rename-affected generated surfaces and fix e2e entrypoint
native i18n inventory + per-locale artifacts resynced for the OpenClaw
strings; Kotlin gateway protocol enum regenerated instead of hand-edited;
deadcode baseline re-sorted; lint suppression allowlist entries moved to
sorted position; setup TTY check drops redundant boolean compares;
ring-zero first-run e2e calls the real 'openclaw setup' subcommand.

Refs #107237
2026-07-14 11:03:02 -07:00