Commit Graph

1236 Commits

Author SHA1 Message Date
Dallin Romney
9310586b09 fix(qa-lab): unify runner control plane (#112838) 2026-07-27 14:05:14 +08:00
Dallin Romney
b699a93c87 fix(qa): stop live config waits from timing out (#114112)
* fix(ci): start QA script scenarios in parallel

* fix(qa): stop false live config waits
2026-07-27 12:18:20 +08:00
Dallin Romney
c1c231ced9 fix(qa): reject runtime tool intent without result evidence (#113502)
* fix(qa): require runtime tool result evidence

* fix(qa): preserve meaningful tool coverage gates

* refactor(qa): colocate runtime parity projection

* fix(qa): keep passing tool totals evidence-backed
2026-07-27 11:00:59 +08:00
Jesse Merhi
d7627d6f4c refactor(prompt): use plain inbound context labels and drop system-tag sanitizer (#112000)
* refactor(prompt): plain inbound context labels with a provenance marker

Replaces trust-worded inbound context labels ("(untrusted metadata)",
"(untrusted, for context)") with plain labels plus a fixed provenance
marker suffix appended to every OpenClaw-injected context header.

Detection keys on the marker, not label text, so strippers stay correct
across UI, TUI, replay, /trace segmentation, memory recall, and the Swift
chat preprocessor. Drops sanitizeInboundSystemTags in favor of the marker
boundary plus trusted system-prompt narration.

Renames the untrusted-named plugin SDK context identifiers to
channel-provenance names, keeping deprecated aliases registered for
removal after 2026-09-08.

Adds `openclaw doctor --fix` migrations that rewrite legacy inbound
labels in stored SQLite transcripts and purge legacy envelope-
contaminated LanceDB recall rows.

* fix(ci): resolve gate failures for plain inbound context labels

- doctor sqlite readers: open read-only connections via openNodeSqliteDatabase
  so the Kysely connection-boundary guardrail holds; unexport the now-internal
  transcript snapshot type (Knip unused-export gate).
- compat registry: split the record table into registry-records.ts and
  plugin-sdk-subpath-records.ts. The new compat record pushed registry.ts past
  the 700-line oxlint cap; suppressions are disallowed, so follow the existing
  sibling record-module pattern. Public exports and PluginCompatCode literals
  unchanged.
- acp-runtime test: assert current finalization behavior (newline normalization
  only). The bracket de-fang and System: rewrite it expected were removed with
  sanitizeInboundSystemTags; forged system lines are neutralized at the
  system-event queue, the single chokepoint feeding the System:-per-line render.
- regenerate docs_map and the plugin SDK API baseline manifest.

* fix(prompt): harden inbound context label migration and drop in-band sanitizer

Review follow-ups on the plain-label + provenance-marker change:

- Remove src/security/system-tags.ts. Rewriting inbound text to neutralize
  look-alike `System:`/`[System]` markers corrupted legitimate user text and is
  not a real injection boundary; role separation plus external-content wrapping
  is. Explicit product decision, recorded at the system-event queue.
- Narrow the LanceDB legacy-row purge so it cannot delete benign memories. It
  now requires a complete known legacy sentinel line, a legacy label followed by
  a fenced JSON body, or the complete legacy external-content header. The prior
  predicates matched ordinary prose such as `Notes (untrusted metadata):`, and
  deletion is irreversible.
- Make explicit-empty canonical ChannelStructuredContext win over the deprecated
  alias via a present/absent result instead of collapsing `[]` to undefined.
- Keep `\r?` in the active-memory doctor rule. It is the only rule spanning the
  header's line break, migrated assistant rows skip newline normalization, and
  without it the marked-header replace wins and the body strips to empty. Added
  a CRLF regression test.
- Fix stale comments that described removed behavior, and cover the Swift
  prose-block strip path.

Claude-Session: https://claude.ai/code/session_01WNzsPddQmxy9Y7jKD4wAxH
2026-07-27 11:27:53 +10:00
Peter Steinberger
19a98c873c refactor(auth): finish SQLite-only auth profile cutover (#114033)
* refactor(auth): finish SQLite-only profile cutover

* test(auth): isolate SQLite shadow fixtures

* test(auth): satisfy OAuth refresh lint

* test(auth): infer legacy sidecar fixtures

* fix(auth): fail closed on unreadable stores

* fix(auth): recheck migration readiness on lookup

* fix(auth): preserve compatibility owner checks

* fix(auth): align SQLite cutover proof

* style(qa): format SQLite auth helpers

* fix(auth): recover interrupted SQLite migrations

* fix(auth): bind materialized SQLite refs

* style(auth): clarify receipt hash value

* fix(auth): preserve state-only OAuth routing

* fix(auth): snapshot receipted migration sources

* fix(auth): fail closed across recovery races

* fix(auth): close legacy recovery gaps

* fix(auth): serialize SQLite refresh recovery
2026-07-26 07:27:54 -04:00
Peter Steinberger
fe847911c0 test(qa): wait for durable fanout completion (#114080) 2026-07-26 05:26:33 -04:00
Peter Steinberger
8684e7ce03 fix: restore beta runtime release gates (#114064)
* test(qa): fix release runtime recovery gates

* test(qa): typecheck restart execution assertions
2026-07-26 03:58:41 -04:00
Dallin Romney
59cb9233f8 fix(qa): bound Slack observer teardown (#113605) 2026-07-26 14:06:51 +08:00
Peter Steinberger
c66f0d340b refactor(qa-lab): split suite execution (#113974)
* refactor(qa-lab): split suite execution

* refactor(qa-lab): tighten suite module contracts

* refactor(qa-lab): keep suite environment private
2026-07-25 20:43:51 -07:00
Peter Steinberger
16badb18e5 fix(qa): prevent live transport cleanup races (#113874) 2026-07-25 15:59:09 -07:00
Peter Steinberger
3cae636689 fix(qa): serialize racing channel driver lifecycle transitions (#113855) 2026-07-25 14:01:42 -07:00
Peter Steinberger
d8f099ebed fix(qa): honor fail-fast across unified suite runners (#113843) 2026-07-25 13:26:51 -07:00
PollyBot13
ad7f927e40 fix: show provider 503 failures in group and channel chats (#113656)
* fix(auto-reply): surface provider HTTP 503 failures

* fix(auto-reply): preserve safe 503 retry

* test(qa): validate all 503 channel replies

---------

Co-authored-by: Altay <altay@hey.com>
2026-07-25 22:59:29 +03:00
Peter Steinberger
8376daad6c fix(qa): record live channel evidence from actual driver (#113710)
Co-authored-by: Peter Steinberger <steipete@golden-gate.local>
2026-07-25 07:25:29 -07:00
Peter Steinberger
47601cf5b4 fix(qa): count skipped scenarios in suite summaries (#113696)
Co-authored-by: Peter Steinberger <steipete@golden-gate.local>
2026-07-25 06:43:30 -07:00
Peter Steinberger
7f70fb3521 test(qa): restore session turn ordering coverage (#113653)
Co-authored-by: Peter Steinberger <steipete@golden-gate.local>
2026-07-25 05:39:03 -07:00
Peter Steinberger
c8e6adc929 fix(qa): run documented channel message flows on supported drivers (#113642)
Co-authored-by: Peter Steinberger <steipete@golden-gate.local>
2026-07-25 05:09:13 -07:00
Peter Steinberger
3890a5efb6 fix(qa): restore current scenario source and documentation references (#113639)
Co-authored-by: Peter Steinberger <steipete@golden-gate.local>
2026-07-25 05:04:05 -07:00
Peter Steinberger
b82d8e56b6 fix(qa): require persisted results in runtime parity (#113499)
* fix(qa): bind runtime parity to fixture session

* fix(qa): narrow session store reader input

* test(qa): isolate runtime session selection regression

* fix(ci): restore env surface ratchet
2026-07-24 21:52:53 -07:00
Vincent Koc
c780bfbf0d fix(qa): retain runtime tool evidence after agent completion (#113484)
Wait for durable transcript evidence before runtime parity capture and scope capture to the fixture-owned sessions.

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-25 12:03:49 +08:00
Peter Steinberger
d6971f46ca fix: make filesystem publication crash-durable (#113453)
* fix(fs): centralize directory durability

* chore: keep release notes in PR body

* test(sqlite): canonicalize read-only race paths

* test(fs): clean durability fixtures

* chore(lint): prune sqlite snapshot baseline

* fix(backup): reject unsupported commit sync

* fix(fs): enforce strict durability outcomes

* refactor(tls): flatten preserved-output failures

* fix(reef): require durable journal commits

* fix(fs): route durability through policy boundaries

* fix(reef): preserve Windows journal compatibility

* fix(fs): bind publication to canonical directories

* fix(ci): align durability boundary fixtures
2026-07-24 20:58:17 -07:00
Vincent Koc
d4a90c7bbb fix(qa): capture multi-session runtime tools (#113461) 2026-07-25 10:17:17 +08:00
Vincent Koc
4e51e7adda fix(qa): capture trajectory-only runtime tools (#113452) 2026-07-25 08:44:45 +08:00
joshavant
877ae06c10 fix(qa): allow gateway graceful shutdown 2026-07-24 19:05:03 -05:00
Peter Steinberger
1e93465a2a refactor(sqlite): enforce one database connection boundary (#113418)
* refactor(sqlite): centralize database opens

* test(sqlite): mock connection owner boundary
2026-07-24 15:15:17 -07:00
Vincent Koc
4e83914748 fix(qa): track sessions_spawn parity coverage gap 2026-07-25 06:06:25 +08:00
Vincent Koc
c0c12da9f2 fix(qa): separate provider plans from runtime calls (#113399)
* fix(qa): separate provider plans from runtime calls

* fix(claws): keep profile limit outside env ratchet

* refactor(qa): remove obsolete capture comparators

* chore(release): leave notes to release workflow
2026-07-24 20:55:54 +00:00
Peter Steinberger
7d5fb6f242 test(release): align extension prerelease contracts (#113381) 2026-07-25 02:30:35 +08:00
Dallin Romney
9d2d5d111c test(qa): align Matrix scenario coverage (#112837) 2026-07-24 15:05:42 +08:00
Vincent Koc
772e320a8d refactor(qa): remove duplicate report renderer (#113258) 2026-07-24 15:02:44 +08:00
joshavant
8287e21445 fix(cron): enforce caps across CLI backends 2026-07-24 01:24:03 -05:00
Peter Steinberger
3b7b2a2a1f chore: update dependencies and migrate major contracts (#112963)
* build(deps): complete latest dependency migrations

* fix(deps): satisfy updated dependency types

* fix(deps): hold incompatible build tooling

* fix(deps): preserve portable tooling contracts

* build(deps): allow reviewed fresh transitive releases

* fix(deps): repair major upgrade validation

* build(deps): regenerate current dependency graph

* fix(logging): keep tslog adapter type private

* fix(agents): narrow grep subprocess handle

* fix(codex): prefer pinned managed binary

* fix(codex): fence managed native provenance

* build(deps): align codex ACP with managed harness

* fix(slack): use socket-mode Undici runtime

* fix(slack): detect cross-runtime responses

* fix(slack): bridge package-owned fetch types

* fix(deps): retain tslog v4 JSON contract

* build(plugin-sdk): refresh logging API manifest
2026-07-23 21:21:01 -07:00
Peter Steinberger
bb657eec93 refactor(config): retire redundant settings (#113174)
* refactor(config): retire redundant settings

* style: apply current formatter

* chore: update plugin sdk baseline

* fix: keep Codex tool caps context-aware

* chore: remove stale imports

* test: align WhatsApp QA debounce config

* fix(config): clean up retired config checks

* fix(ci): align config cleanup checks
2026-07-23 17:45:02 -07:00
Peter Steinberger
acd92f6a3d chore(deps): refresh repository dependencies (#112453)
* build(deps): update QA broker dependency

* build(deps): refresh repository dependencies

* build(deps): reconcile rebased shrinkwraps

* test(plugins): remove stale loader test state

* test(deps): stabilize updated dependency coverage

* fix(swift): use caller-isolated TaskLocal overload

* build(deps): regenerate rebased shrinkwraps

* test(msteams): preserve DNS validation in fetch helper

* fix(deps): avoid vulnerable optional image stack

* test(deps): validate generated LRU override

* refactor(ui): extract chat resizable divider

* test(ui): update divider ownership path

* fix(matrix): retain restart-compatible SDK

* style(cron): format update test
2026-07-23 16:17:13 +00: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
f583114774 test(qa-lab): consolidate mock OpenAI server fixtures (#112872) 2026-07-23 01:04:22 -04:00
Dallin Romney
4602e57d14 fix(qa): stop retrying unavailable credentials per partition (#112840) 2026-07-23 11:32:33 +09:00
Dallin Romney
19d17bc3c4 refactor(qa): canonicalize runtime-pair lanes (#112603) 2026-07-23 10:06:12 +09:00
Dallin Romney
eccf02f04a fix(qa): apply Matrix thread override in flow setup (#112815) 2026-07-23 09:47:27 +09:00
Jesse Merhi
4a2a600809 feat(channels): add channel-owned setup contracts (#112176)
* feat(channels): add channel-owned setup contracts

* test(channels): align legacy setup fixtures

* chore(channels): regenerate config and SDK baselines after rebase

* fix(update): run fresh doctor after current-process core changes

* fix(channels): align add pre-scan with execution precedence

* style(cli): format channels-cli test additions

* fix(channels): restore option-before-positional channel resolution via metadata arity scan

* fix(channels): keep help flags out of metadata arity escalation

* test(update): mock fresh post-update doctor in current-process suites

* style: format review fixes and correct entrypoint mock type

* fix(channels): register only modern contract options for dual-publishing plugins

* test(update): align downgrade suites with fresh-doctor child invocation

* docs(channels): record empty-contract and input-forwarding invariants

* fix(line): keep the shipped --token switch as a channel access token alias

* fix(signal): stop treating exact cross-family loopback endpoints as bind-aligned

* chore(config): regenerate docs config baselines after second rebase

* style: format rebased channels add tests

* fix(channels): enforce field-key and flag-name agreement in setup contracts

* fix(signal): detect container endpoints for bare --http-url setup

* fix(signal): ignore unconfigured accounts in transport collision checks

* fix(channels): validate negated setup flags in contract and normalizer

* fix(signal): preserve existing transport kind when setup detection is unreachable

* style(signal): use direct boolean check in collision guard

* style(signal): type test config literals

* docs(update): record two-read design of fresh-doctor validation gate

* fix(channels): satisfy post-rebase architecture gates

* docs: refresh channel setup map

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-22 19:57:42 -04:00
joshavant
c004cac6df fix(cron): finalize settled announce turns 2026-07-22 06:04:27 -05:00
joshavant
8636bb6981 fix(agents): continue settled empty post-tool turns 2026-07-22 06:04:27 -05:00
Peter Steinberger
88875ab7d9 refactor(channels): remove retired ack cleanup branches (#112635) 2026-07-22 03:54:28 -07:00
Peter Steinberger
0b080b9c2e feat(apps): native session-list observer digests on iOS, Android, and macOS (#112597)
* feat(apps): native session-list observer digests on iOS, Android, and macOS

* fix(apps): satisfy swift, periphery, and lint gates for native digests
2026-07-22 01:53:29 -07:00
Peter Steinberger
6f29fc88e9 refactor(sessions): migrate pure readers to read-only session accessors (#112568)
* refactor(sessions): migrate pure readers to read-only session accessors

* test(sessions): teach mocks and declarations the read-only accessors

* test(sessions): align remaining harnesses with read-only accessors
2026-07-22 01:16:35 -07:00
Dallin Romney
eab05ddffb fix(qa): preserve partial maturity evidence (#112569) 2026-07-22 16:54:36 +09:00
Peter Steinberger
f0de4cfe75 test(qa-lab): split scenario catalog tests to restore max-lines headroom 2026-07-22 00:47:06 -07:00
Josh Avant
3acc168c4f fix(cron): persist explicit scheduled tool authority (#112483)
* fix(cron): persist explicit scheduled tool authority

* test(cron): cover explicit scheduled authority

* fix(cron): preserve legacy authority on routine edits

* test(cron): add explicit authority e2e matrix

* test(cron): harden explicit authority live proof
2026-07-22 02:28:49 -05:00
Dallin Romney
132d91e427 refactor(qa): make taxonomy coverage ids unique (#110280) 2026-07-22 16:28:44 +09:00
Dallin Romney
3946bcc20c fix(qa): run isolated Matrix evidence partitions in parallel (#112465)
* fix(qa): parallelize isolated Matrix evidence partitions

* refactor(qa): plan adapter instance concurrency

* fix(qa): let Docker assign Matrix harness ports

* refactor(qa): use instance isolation for Matrix concurrency

* test(ci): expect maturity concurrency six

* refactor(qa): remove Matrix harness manifest
2026-07-22 14:45:52 +09:00