Peter Steinberger
7235943790
fix(release): align survivor session metadata assertion ( #123068 )
...
* fix(release): align survivor session metadata assertion
* test(release): cover SQLite survivor metadata
2026-08-13 01:41:53 -07:00
Vincent Koc
fd353ee5d7
fix(parallels): recover migration-refused gateway startup
2026-08-13 13:14:22 +08:00
Vincent Koc
1e7a76f49c
fix(e2e): declare agents-delete fixture owners ( #123000 )
2026-08-13 13:07:55 +08:00
Peter Steinberger
9bf9bcebc4
refactor(gateway): remove suspension mock replay ( #122977 )
...
* test(gateway): remove suspension mock replay
* test(agents): stabilize headless timeout assertion
2026-08-12 21:24:50 -07:00
Vincent Koc
3eef8ebfd5
fix(parallels): preserve plugin inventory during updates ( #122912 )
...
* fix(parallels): preserve plugin inventory during updates
* fix(parallels): preserve dev update plugin inventory
2026-08-13 10:26:02 +08:00
Vincent Koc
d00e4ee324
fix(e2e): verify suspend control over WebSocket ( #122888 )
2026-08-13 09:56:26 +08:00
Peter Steinberger
7595d6f432
test(tooling): remove helper replays ( #122790 )
...
* test(tooling): remove helper replays
* refactor(tooling): inline fixture json serialization
2026-08-12 13:31:23 -07:00
Vincent Koc
2e1199363c
fix(ci): seed plugin update ownership metadata ( #122752 )
2026-08-13 02:39:32 +08:00
Vincent Koc
5af8935b53
fix(ci): start gateway for agent delete Docker smoke ( #122714 )
2026-08-13 01:12:54 +08:00
Peter Steinberger
c23d66e3b5
refactor: consolidate coercion ownership ( #122692 )
...
* refactor: consolidate coercion ownership
* test: align shard check with weighted planning
* chore: refresh plugin SDK API baseline
2026-08-12 09:25:28 -07:00
Vincent Koc
44335ac7ce
fix(e2e): strip private ai fixture dev dependencies ( #122678 )
2026-08-13 00:03:48 +08:00
Vincent Koc
282e6a47ae
test(telegram): support fixed-delay Mantis proof ( #122642 )
...
Punchcard-Session: amber-harbor-timber-mb
2026-08-12 23:20:34 +08:00
Peter Steinberger
5a643e3543
fix(plugins): keep packed entries consistent through package lifecycle ( #121174 )
...
* fix(plugins): own packed entry lifecycles by package
Persist package ownership per runtime child, route lifecycle actions through one closed resolver, reconcile removed child policy during updates, and retain rollback generations until durable config/index commit.
* fix(plugins): break uninstall policy import cycle
* test(plugins): model package ownership in lifecycle fixtures
2026-08-12 00:49:29 -07:00
Peter Steinberger
b080dd1e76
refactor: consolidate coercion contracts ( #122458 )
...
* refactor: consolidate coercion contracts
Centralize exact string, record, numeric, date, Boolean, argument, and structured-error coercions while preserving call-site semantics.
Migrate canonical-name collisions and deprecated internal SDK bypasses, deleting 55 net production/tooling lines. Expand declaration ownership enforcement to 101 allowed helpers and add a narrow export-completeness audit.
* fix: preserve standalone script coercions
Keep copied Control UI tooling self-contained and retain the trusted release harness module-relative source seam when the harness runs against an old target cwd.
2026-08-11 23:26:37 -07:00
Peter Steinberger
964c8c84c1
refactor: consolidate coercion ownership ( #122299 )
...
* refactor: consolidate coercion ownership
Centralize four canonical coercion helpers, migrate exact core and plugin duplicates through narrow Plugin SDK facades, and enforce declaration and plugin-normalization ownership boundaries.
The sweep adds eight focused SDK exports while deleting more production and tooling code than it adds. User-visible behavior is unchanged except for safer equivalent object and UI parsing at existing boundaries.
* fix: guard integer option ownership
Register resolveIntegerOption with the canonical function owner and extend the declaration-guard fixture so future local duplicates fail validation.
* fix: keep integer helpers on numeric facade
Remove the unshipped duplicate string-coerce exports and route every affected plugin consumer through the existing number-runtime contract.
* fix: point numeric coercion to number runtime
Make boundary and declaration diagnostics recommend the canonical numeric facade, with failing-before coverage for both guidance paths.
2026-08-11 17:14:53 -07:00
Sliverp
84c7d45f15
refactor(qqbot): install plugin from Tencent package ( #107295 )
...
* refactor(qqbot): remove bundled extension source
Mechanical deletion half of the #107295 squashed rebase; the catalog
repoint and host integration land in the follow-up commit.
Co-authored-by: sliverp <870080352@qq.com >
* refactor(qqbot): install plugin from Tencent package
Squashed rebase of #107295 onto current main. Repoints the official
external channel catalog at @tencent-connect/openclaw-qqbot@2.0.1 and
adapts onboarding, doctor migrations, secrets, build guards, and tests.
Documents the known limitation that the external package does not
support structured SecretRef clientSecret values; operators move those
to QQBOT_CLIENT_SECRET or clientSecretFile before upgrading.
Co-authored-by: sliverp <870080352@qq.com >
* fix(doctor): reuse shared hasOwnKey record helper
The rebased QQBot migration carried its own hasOwnKey export, colliding
with the one main now ships in legacy-config-record-shared.ts.
Co-authored-by: sliverp <870080352@qq.com >
* fix(plugins): carry catalog integrity through the update bridge
The externalized-bundled-plugin bridge dropped the official catalog's
expectedIntegrity pin, so bundled-user updates installed the external
npm package without integrity verification. The bridge now carries the
pin for the catalog's exact npm spec and both bridge install calls pass
it through; update-channel spec overrides intentionally skip the pin
since it only covers the pinned version.
Co-authored-by: sliverp <870080352@qq.com >
* chore(plugin-sdk): refresh per-entrypoint API baselines
The QQBot compat export and bundled-type removal shift 26 entrypoint
closure hashes in the new split baseline layout.
Co-authored-by: sliverp <870080352@qq.com >
* refactor(qqbot): drop helper reintroduced during rebase
Main's coercion consolidation added this file after the deletion
commit's base; its only consumers were the removed qqbot sources.
Co-authored-by: sliverp <870080352@qq.com >
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-08-11 15:10:27 -07:00
Peter Steinberger
8c567306ba
fix(openai): remove duplicate GPT-5.6 picker entry ( #122178 )
...
* fix(openai): remove duplicate GPT-5.6 picker entry
* test(gateway): split OpenAI model picker coverage
* test(openai): align canonical model fixtures
* chore(plugin-sdk): refresh agent harness API baseline
2026-08-11 12:29:36 -07:00
Vincent Koc
1fb715853c
fix(qa): resolve Docker harness script entrypoints ( #121548 )
...
Punchcard-Session: amber-workshop-workshop-36
2026-08-12 01:23:20 +08:00
Peter Steinberger
cad77fb39c
refactor: consolidate remaining coercion helpers ( #122020 )
2026-08-11 10:22:01 -07:00
wangmiao0668000666
c719cbbfe9
fix(e2e): preserve Unicode in Telegram proof tails ( #109940 )
...
Punchcard-Session: ember-brook-workshop-qc
Co-authored-by: wangmiao0668000666 <290215524+wangmiao0668000666@users.noreply.github.com >
2026-08-11 18:09:29 +08:00
Peter Steinberger
fa03d9b913
refactor: consolidate coercion helpers ( #121366 )
...
* refactor: consolidate coercion helpers
* fix: remove duplicate coercion imports
* fix: preserve serialized coercion guard
* chore: ratchet coercion helper carve-outs
* fix(test): keep gauntlet subprocess startup lean
* fix: preserve imported session timestamp semantics
* fix: preserve catalog timestamp string semantics
* chore: align plugin SDK surface ratchet
* fix: preserve trajectory and SDK string contracts
* fix(test): preserve QA record assertion semantics
* fix: complete standalone record guard rename
* refactor(cron): use canonical string coercion
* fix(acpx): preserve Pi timestamp parsing
* test(channels): adapt custody test harnesses
* test(telegram): classify media harness as test support
* test(acpx): split timestamp contract coverage
* test(channels): support generated custody contracts
* chore: ban the full coercion helper name set
Extends the declaration guard to all eleven consolidated helper names and
renames the cron schedule-identity readNumber wrapper to readScheduleInteger
so the banned generic name cannot regrow.
* fix(scripts): repair release-validation guard drift and lint cause
Restores the renamed isJsonRecord guard in assertTrustedWorkflowHarness after
main added isRecord call sites in parallel, and attaches the caught YAML error
as the thrown error cause (preserve-caught-error was red on main).
* fix: preserve Claude timestamp string semantics
* fix: preserve persisted timestamp string semantics
* fix: preserve date-first timestamp contracts
* fix(openai): harden delegation failure formatting
* chore: close coercion helper guard gaps
* test(openai): model non-error delegation rejection
* chore: refresh plugin SDK API contract
* fix(tasks): use canonical string field reader
* fix(ai): use canonical provider error field coercion
* fix(browser): migrate native bootstrap coercion
* docs(plugin-sdk): clarify text record export compatibility
* fix(gateway): normalize approval execution identity
* test(outbound): isolate message action poll harness
2026-08-11 00:02:18 -07:00
Vincent Koc
c3e3f276f2
fix(release): preserve frozen candidate identity
2026-08-11 10:48:08 +08:00
Patrick Erichsen
abb856ece4
fix(release): restore frozen beta validation ( #121791 )
...
Punchcard-Session: coral-summit-brook-8j
2026-08-10 18:45:42 -07:00
Vincent Koc
7e03fe3ba0
Merge commit '546bb29055b3e204b981dc27d4375c4d7679c7dd' into HEAD
...
* commit '546bb29055b3e204b981dc27d4375c4d7679c7dd':
fix(release): support frozen validation tooling
2026-08-11 07:34:47 +08:00
Vincent Koc
546bb29055
fix(release): support frozen validation tooling
2026-08-11 07:20:44 +08:00
Peter Steinberger
18e5b0e3e3
test(web): trim duplicate provider test surfaces ( #121727 )
2026-08-10 15:44:54 -07:00
Peter Steinberger
810c3510ee
fix: reject invalid memory parents and trim test facades ( #121696 )
...
* test(scripts): trim dead testing facades
* test(memory): align non-directory path contract
* test(discord): drop stale progress callback ids
* fix: repair current main validation failures
* fix(gateway): remove redundant setup admission generic
* test(gateway): await setup admission settlement
2026-08-10 12:58:30 -07:00
Dallin Romney
0296785c5f
fix(ci): validate frozen extended-stable candidates ( #120986 )
...
* fix(ci): support frozen extended-stable validation
* fix(ci): avoid map spread in release config projection
* refactor(ci): use suite config mutation for frozen candidates
* fix(ci): keep frozen candidate config private
* refactor(qa): expose config mutation
* fix(qa): preserve config mutation in runtime pairs
2026-08-10 17:40:46 +08:00
Ayaan Zaidi
4b0151682e
refactor(commitments): remove inferred follow-up subsystem
...
Remove hidden follow-up extraction, heartbeat delivery, CLI, docs, and supporting tests/tooling. Existing commitment records remain inert pending separately approved cleanup.
Co-authored-by: Ayaan Zaidi <hi@obviy.us >
2026-08-10 13:48:32 +05:30
Peter Steinberger
23d1eca455
refactor(sessions): enforce transcript writer fence in sqlite sync ops ( #121316 )
...
Fold the writer-claim fence into the four sync write ops at their
definition sites, collapse the logical-layer fence wrappers to plain
re-exports, delete the session-accessor.sqlite middle barrel (the only
unfenced escape hatch), and retarget its 26 importers to the focused
defining modules. replaceSessionEntrySync intentionally stays unfenced:
its two production callers own their freshness guards and its return
carries no rebound signal. Net -106 production LOC, behavior-neutral.
Part 1 of the session-accessor dual-layer collapse.
2026-08-09 23:16:57 -07:00
Peter Steinberger
88fc335323
fix(ci): support frozen script entrypoints ( #121208 )
...
* fix(ci): support frozen script entrypoints
* fix(ci): route frozen plugin tests through package script
* fix(release): support compiled candidate test helpers
* fix(release): support compiled upgrade helpers
* fix(release): mount trusted upgrade runtime
* fix(release): preserve trusted tsx resolution
2026-08-10 10:31:21 +08:00
Vincent Koc
af73dbcc83
fix(release): prefer SQLite upgrade survivor state ( #120983 )
2026-08-10 01:08:15 +08:00
Peter Steinberger
0fe49c5731
fix(plugins): prevent uninstalled npm plugins from coming back ( #113902 )
...
* fix(plugins): preserve retained uninstall files
* test(plugins): track retention temp dirs
* fix(plugins): retain rollback marker snapshots
2026-08-09 08:12:05 -07:00
Peter Steinberger
c70aee247e
refactor(scripts): migrate JavaScript tools to TypeScript ( #121005 )
...
* refactor(scripts): migrate JavaScript tools to TypeScript
* fix(ci): keep changed-scope preflight zero-install
* fix(ci): preserve zero-install script owners
* fix(ci): complete script migration follow-through
* fix(release): keep stable closeout zero-install
* fix(scripts): preserve standalone execution boundaries
* fix(scripts): repair standalone loader boundaries
* fix(scripts): normalize gateway observation ids
* fix(scripts): keep Docker packager standalone
* test(scripts): preserve rebase cleanup helpers
* test(sessions): use tracked temp directory
2026-08-09 07:21:35 -07:00
Vincent Koc
9f2c2bd4c0
fix(release): keep upgrade survivor sessions fresh ( #120778 )
2026-08-09 08:05:36 +08:00
Vincent Koc
115e5a6f25
fix(release): isolate prepublish plugin startup probe ( #120749 )
2026-08-09 07:15:46 +08:00
Dallin Romney
33ea7ffa54
fix(ci): isolate package Telegram QA harness ( #120193 )
...
* fix(qa): isolate package Telegram harness
Keep private QA source, dependencies, taxonomy, and SDK dist in the trusted harness while the installed candidate owns its CLI, Gateway runtime, and persisted mock auth. Preserve the documented package RTT canary after taxonomy selection.
Co-authored-by: Dallin Romney <dallinromney@gmail.com >
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
* fix(qa): export private QA harness SDK entries
Canonicalize the QA-only plugin SDK entries shared by the private build and package Telegram harness manifest so qa-runtime and qa-lab resolve from trusted dist.
* fix(qa): expose private runtime to package harness
* fix(qa): surface Telegram observer conflicts
* fix(qa): accept separate preview and final messages
* test(qa): exercise Telegram poll delay contract
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-08-08 15:11:03 -07:00
Vincent Koc
ad664ad859
fix(release): match ClawHub security fixture contract ( #120725 )
2026-08-09 06:10:19 +08:00
Vincent Koc
b729806758
fix(release): preserve ClawHub fixture across restart ( #120709 )
2026-08-09 05:26:16 +08:00
Vincent Koc
e455cafa13
fix(release): run ClawHub prepublish fixture from isolated cwd ( #120692 )
2026-08-09 04:36:14 +08:00
Vincent Koc
33a5f37937
fix(release): repair survivor fixture assertion quoting ( #120680 )
2026-08-09 03:53:51 +08:00
Vincent Koc
b40f846757
fix(release): keep survivor plugin repair hermetic ( #120677 )
2026-08-09 03:34:42 +08:00
Peter Steinberger
0487b6812c
fix(qa): honor Crabbox SSH fallback ports ( #120539 )
2026-08-08 12:01:30 -07:00
Vincent Koc
e81d7e62e8
fix(release): scope upgrade plugin credentials ( #120666 )
2026-08-09 03:00:36 +08:00
Vincent Koc
49161dee60
fix(release): unblock deferred Telegram beta validation ( #120630 )
...
* fix(release): allow deferring package Telegram validation
* fix(qa): mount taxonomy in package Telegram harness
* fix(release): restrict Telegram deferral to beta
2026-08-09 01:03:02 +08:00
Peter Steinberger
7ecdef6e2e
fix: prefer Crabbox inspect SSH host ( #120611 )
2026-08-08 08:30:07 -07:00
Peter Steinberger
d9080cfff8
fix(agents): transfer requester wake ownership across yield and deflake survivor registry setup ( #120538 )
2026-08-08 01:42:33 -07:00
Peter Steinberger
733512b612
fix(e2e): expose beta companions in survivor registries and unbind ReDoS timing from shell startup ( #120479 )
2026-08-07 22:12:00 -07:00
Peter Steinberger
fb0812c857
fix(qa): prevent false update-restart package failures ( #120300 )
...
* test(qa): expose update restart process exits
* test(qa): supervise update restart gateway
* test(qa): isolate supervised gateway environment
* test(qa): diagnose restart plugin convergence
* test(qa): mount trusted upgrade harness
* test(qa): include upgrade runtime companions
* test(qa): remove temporary restart diagnostics
* test(qa): enforce systemd restart budget
* test(qa): honor systemd stop timeout
* test(qa): tighten package fixture ownership
* test(qa): preserve unrelated lane shapes
* test(qa): complete service fixture boundaries
2026-08-07 14:46:59 -07:00
Peter Steinberger
2fa9a29c77
test(plugins): add Agent Plugins gateway e2e with model-driven MCP tool call ( #120303 )
...
* test(plugins): add Agent Plugins gateway e2e with model-driven MCP tool call
* fix(test): wire Agent Plugins gateway E2E and assert activation
2026-08-07 11:47:07 -07:00