Commit graph

11190 commits

Author SHA1 Message Date
Peter Steinberger
cca8c88e78
ci: pin the OpenClaw Bun fork 13311 prerelease (#163905) 2026-10-02 18:21:48 -07:00
Peter Steinberger
3c397d0021
refactor(sessions): move async durable transcript reads off the Gateway thread (#163605)
* refactor(sessions): move async durable transcript reads off the Gateway thread

Reuse the existing history hydration stream with captured physical store identity, read fences, typed errors, and cold-restoration custody. Keep incognito and the released synchronous SDK reader with their native owners.

* fix(tooling): include transcript budget error in PR wrapper

* fix(sessions): preserve transcript read scope across worker boundaries

* test(sessions): await shared-store preview settlement

* test(sessions): await archive-phase writer settlement

* test(sessions): avoid draining resources inside handle-loss callbacks

* test(sessions): synchronize native fixture writes and cache probes
2026-10-02 18:18:59 -07:00
Peter Steinberger
7f0410c2e6
feat(plugin-sdk): join service and account scheduling at retirement (#162669)
* feat(plugin-sdk): bind scheduled work to service lifetimes

* test(voice-call): bind fast-context fixture scheduling

* fix(plugin-sdk): complete rebased service type consumers
2026-10-03 00:46:23 +00:00
Peter Steinberger
408fc041b6
refactor(ci): deslop browser test ownership inventory (#163894)
## What Problem This Solves

The browser-test ownership inventory repeats each page's route and stylesheet wiring across hundreds of records, making the same relationship easy to update inconsistently.

## User Impact

No user-visible change. CI test selection, diagnostic reasons, jobs, and gates stay unchanged. No protocol or public SDK surface changes.

## Why This Change Was Made

Use one small `pageWatch` constructor for 425 regular records, deriving their route roots and stylesheet watches from the existing page-style owner. Keep the 32 exceptional records explicit. Preserve record order, sorted owner roots, stylesheet order, duplicate entries, and the smoke cohort.

This removes 2,426 net production/tooling lines (+1,527 / -3,953) from one file, without moving code or changing tests.

## Evidence

- Compared both complete exported inventories with the base: all 457 owner records and 5 smoke-test entries are deeply equal.
- Verified the complete Linux Testbox source tree matches the reviewed candidate tree before validation.
- `node scripts/run-vitest.mjs test/scripts/ci-ui-e2e-selection.test.ts`: 35 passed; 95.36 seconds including the wrapper.
- Both `scripts/check-madge-import-cycles.ts` and `scripts/check-import-cycles.ts`: 0 cycles.
- `node scripts/check-changed.mjs --base 07be237e65 -- scripts/lib/ci-ui-e2e-owner-inventory.mts`: passed on Linux Testbox, including formatting, script types, lint, ratchets, and all three dead-export scans.
- Independent Codex autoreview: scoped-clean, no actionable P0/P1 findings.

Remote setup required recovery from a source-freeze/index change and an AWS sync stall. A local fallback timed out under heavy host load; the unchanged suite passed on Testbox. No timeouts or assertions were changed. An initial changed-file gate used the Testbox's newer main as its comparison base; rerunning against the candidate's actual base passed.
2026-10-03 00:34:13 +00:00
Vincent Koc
9b67f5df42
fix(ci): keep shell values free of terminal colors (#163879) 2026-10-03 07:13:01 +07:00
Peter Steinberger
8b34405bba
refactor(gateway): move placement result settlement into workers (#163819)
* refactor(gateway): move placement result settlement into workers

Await workspace-result claims, acceptance, recovery handoff, draining,
cancellation, and settlement through the existing placement dispatcher.
Prepare revocable result facts with the placement read owner and publish
acknowledged postimages before observers. Preserve exact physical-store
and claim custody, atomic acceptance/journal cleanup, and conservative
handling of unknown outcomes without filesystem rollback or write replay.

Migrate runtime callers and cover caller-thread SQL, stale claims,
commit-grant revocation, recovery, and publication ordering. No schema,
retention, durability, or public SDK contract changes.

* fix(plugins): preserve released placement context contracts

Retain the synchronous placement readers and orphan-deferral completion shipped through the v2026.9.7 Gateway plugin context. Add deprecated compatibility records and awaited Async companions, migrate internal callers, and prove the public return types and synchronous effects.

* fix(tooling): include placement compatibility reader imports

Keep the extracted PR wrapper closed over the restored synchronous result readers. Add the 15 transitive modules reported by the inventory and extracted package-resolution checks; both boundary checks pass after reproducing the failures in five runs.

* test(plugins): assert released gateway context equality

Check each released SDK context entry point explicitly while preserving the synchronous return-type and awaited companion assertions. This avoids duplicate union constituents; type-aware lint, focused type checking, and the complete repair changed-file gates pass.
2026-10-02 16:59:44 -07:00
Peter Steinberger
7dd7675080
refactor(cron): prepare display names in workers (#163797)
Publish committed name metadata through both cron mutation owners and refresh
Gateway display projections at asynchronous boundaries. Retain physical
generation fences and reject unprepared or invalidated lookups instead of
reading SQLite on the caller thread. Preserve rename/delete labels, including
hidden SSE prefix refreshes and malformed peer metadata.

Builds on #160448. No schema, retention, durability, configuration, or update
contract changes. Native name reads retain the Doctor transaction-hook contract.
2026-10-02 16:53:34 -07:00
Peter Steinberger
5ab3ae2536
fix(gateway): release completed runs and obsolete cache state (main-thread heap retention) (#163834)
* perf(gateway): release completed runs and obsolete cache state

Retire hidden terminal registrations, replace usage revisions at stable query keys, and keep prompt text memos owned by transcript messages. Bind session-row preparation to observation lifetimes while retaining accepted work through settlement.

A matched 300-session workload completed 300 turns and 7,754 RPCs per run with zero failures. Post-GC heap growth between the five- and thirty-minute snapshots fell from 197,351,336 to 15,768,888 bytes. Focused and sibling tests, the full staged check on Blacksmith Testbox, and independent review passed.

* fix(ci): register heap rig and improve usage failure diagnostics

Model the manually executed benchmark and its Node IPC preload as Knip entrypoints. Include the handler error in the existing usage-attribution assertion without changing its expectation.

The full unused-file scans pass with zero entries. The original CI usage failure did not reproduce in the exact 141-test group or in the nine-test focused file using either current or parent cache modules; these replays do not establish a behavioral fix.
2026-10-02 23:53:12 +00:00
Peter Steinberger
6c1e1667bd
refactor(agents): move workspace state operations off the Gateway thread (#163496)
* perf(agents): move workspace state operations into shared workers

Keep canonical snapshots, conditional alias registration, first-writer setup merges, and exact vanished-workspace expiry off the Gateway thread. Preserve live filesystem and caller grants at transaction and commit, recent/future protection, and acknowledged cache retirement through native settlement.

* fix(agents): evaluate workspace recovery holds in worker transactions

Split workspace guards into SQL-free host authority and a transaction-local recovery predicate. Preserve the recovery reader and typed refusal across worker transport, and prove creation grants avoid host SQL and snapshot children.

Route bootstrap and Bun Talk fixtures through the host broker, join Windows worker teardown, and keep the assertion baseline shrink-only.

* fix(test): preserve sorted Gateway worker ownership

Keep the Talk worker fixture in canonical order so CI planning and CLI ownership select the same files.

* fix: preserve workspace mutation guards across worker admission

Keep the released plugin callback compatible and deprecated, with actionable synchronous database access refusal inside worker grants. Recheck recovery holds before host filesystem effects and preserve callback refusals through auxiliary attestation.

* fix: allow legacy workspace guards before worker dispatch

Preserve synchronous database access in released plugin callbacks with one deprecation warning. Keep typed guards at commit admission and recovery checks before filesystem effects. Extract persisted state-owner record admission without changing ownership policy.

* fix(agents): avoid snapshots in workspace recovery guards

Keep current host recovery checks native outside worker grants while preserving private snapshots for artifact-preserving and schema-admission reads. Prove that real workspace preparation during creation spawns no synchronous snapshots, retaining the grant SQL boundary and late-hold regressions.

* fix: declare the ownership guard callback as a function

Use a function-valued callback contract and avoid shadowing the workspace test namespace. Both corrections preserve runtime behavior and pass focused type-aware lint and independent P2 review.

* fix(test): route Talk workers and settle cleanup fixtures
2026-10-02 16:26:06 -07:00
Kimi Yu
8d756e9c00
fix: enable Skill source lifecycle in paired-node workspaces (#162960) 2026-10-02 15:59:27 -07:00
Peter Steinberger
69600f7c9b
build(macos): pin the app runtime to OpenClaw Bun 13311cf83e (#163831)
Repin the bundled runtime to fork release openclaw-v1.4.3-20261002-13311cf83e-webkit-fb1167ebf2. On top of 6a5d9c721f, module.registerHooks load and resolve hooks now receive valid URLs for packages Bun replaces with built-ins (the node_modules file URL where one exists, otherwise bun-builtin:), so hooks that parse the URL, such as tsx, no longer fail. WebKit is unchanged. Values come from the release manifest.
2026-10-02 15:59:21 -07:00
Peter Steinberger
1275c61003
feat(state): incognito actor lifecycle adapters (P4b, inactive) (#163790)
* feat(state): add inactive incognito actor lifecycle adapters

* fix(state): expose inactive incognito fork adapter through its owner

* fix(tooling): include incognito fork binding dependency in wrapper

* fix(state): keep incognito fork provider policy with the caller

* fix(state): enforce source policy during cross-agent incognito forks
2026-10-02 15:48:21 -07:00
Peter Steinberger
a486e2ab2f
chore(db): reclassify worker inventory sites with caller evidence (#163754) 2026-10-02 14:11:39 -07:00
Peter Steinberger
4aa24e3a13
perf(nodes): load only what a worker turn needs (#160442)
* perf(nodes): split sealed worker bundles and defer turn imports

Preserve and hash every emitted worker chunk in the v1 bundle manifest, including SSH and node installs. Load the turn runtime after admission and retain explicit prewarming. Keep only import-boundary repairs required by splitting, the session type-cycle repair, and lazy MCP OAuth loading.

* fix(nodes): update moved session context type imports

* test(nodes): exercise the split worker artifact layout

* test(nodes): distinguish built-ins from bundled packages

* fix(nodes): keep maintenance contracts outside runtime readers

* test(build): include worker inputs in declaration fixtures

* fix(browser): keep tracked tab cleanup lazy

Move internal raw-target closing into a private lazy runtime so empty cleanup does not load the browser client. Revalidate the selected registration after loading, and preserve cleanup reservation coverage.
2026-10-02 14:02:07 -07:00
Peter Steinberger
05ce3c3a1a
test(gateway): add sustained heap retention diagnostics (#163764)
* test(gateway): add sustained heap retention diagnostics

Add a synthetic dist Gateway workload with signed webchat clients, mock inference, Code Mode, verified subagent completion, minute memory samples, and paired native heap snapshots. Extend the streaming snapshot comparator with named strong paths and separate dominator chains.

Keep retryable project-access refusals visible and revalidate turn admission after asynchronous preparation. The new admission regression fails against the exact prior helper and passes after the repair. Remote checks and independent review passed. Measurements do not establish a production leak fix.

* fix(tooling): register Gateway heap rig entry point
2026-10-02 20:50:09 +00:00
Peter Steinberger
5e6982748a
refactor(gateway): move worker transcript replay off the main thread (#163594)
* refactor(gateway): move transcript replay ledger off thread

Route ledger begin, terminal completion, and exact discard through the existing shared-state broker and placement mutation owner. Preserve live grants, native receipt settlement, ordered replay, and fresh-claim rollback cleanup. Await pending and terminal persistence around the existing transcript application.

Also repair the inherited async session-manager fixture in worker claim recovery. Validation covers 100 focused tests, zero caller-thread ledger SQL, Gateway runtime build, type/lint guards, zero cycles, and P2 review. The inherited env-name budget remains unchanged.

* test(worker): retain harness storage identity across worker startup

Capture the Gateway transcript storage environment before the in-process worker changes process.env. Keep the production RPC deadline so cold worker admission does not inject extra timeout faults into exact replay-count tests. Production code, test deadlines, and assertions are unchanged.
2026-10-02 13:26:57 -07:00
Peter Steinberger
aad3deb6d8
improve(control-ui): flag builds too large to keep the previous build for open tabs (#163362)
The Gateway retains Control UI generations within one 96 MiB budget,
current first, so already-open tabs can load lazy chunks after an
update. Once one build's retained identity bytes exceed half of that
budget, the previous generation no longer fits and stale tabs 404
again. Nothing reported that before users hit it.

The Control UI performance check now reads the build's asset manifest,
counts the entries retention keeps (everything except .br/.gz
sidecars), and limits them to half the retention budget. The line is
always in the build report, base comparisons show the delta, and a
violation follows the existing size-limit policy: an error locally, a
GitHub warning annotation on the retention budget in Actions.

The budget and the sidecar rule move to the build-owned manifest
module so retention, the static server, and the script share one
owner without the script loading Gateway runtime code. Retention
behavior is unchanged.
2026-10-02 13:21:11 -07:00
Peter Steinberger
1a33143995
ci: use Blacksmith for default fork compiler checks (#163744)
Fork preflight retains the GitHub workload profile while selecting the
Blacksmith Node backend when repository variables are unavailable. Give
compiler planning and core type stripes the same first-attempt capacity
instead of sending those heavy jobs to hosted runners.

Keep graph selection, stripes, cache authority and hybrid health admission
unchanged. Fork caches remain restore-only. OPENCLAW_CI_RUNNER_BACKEND=github
retains the hosted override; unset uses the fast default. No repository
settings, permissions or jobs are added. Count the still-hosted fork
baseline ratchet separately from the planner.

Linux cold type stripes, including root partitions, took 152-219s versus
230-342s in recent hosted steps. Three recorded PR inputs preserved every
planner output. All 744 focused workflow tests, both preflight checkout
shapes with PR/main inputs, changed checks, type/lint/boundary checks and
workflow checks passed on Testbox. P2 review is clean.
2026-10-02 13:05:22 -07:00
Vincent Koc
0ef5c30120
fix(ci): isolate all native Testbox prepare gates (#157496)
* fix(ci): isolate all native Testbox prepare gates

* fix(ci): preserve captured base in remote prepare gates

* chore(ci): integrate main fixes for remote gate proof

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-10-03 03:57:58 +08:00
Peter Steinberger
525433006d
test(ui): keep WeakRef-collection proofs on Node (#163353)
JavaScriptCore scans native stacks and registers conservatively, so a
forced Bun.gc(true) cannot prove an unreachable WeakRef target is
collected. After #162667 moved the Control UI retention files onto Bun,
the usage overview and chat thread proofs failed intermittently in the
bun:ui checks-ui shards; a Bun heap snapshot (#159991) showed the
leftover object's only retainer was the test's own WeakRef.

Route the five Control UI files that call collectGarbageForTest to the
Node lane through the ui/vitest.config.ts nodeRequired partition, make
the helper throw under Bun with a pointer to that owner, and restore the
pre-#163018 overview collection proof, which is deterministic on Node.
Routing pins and CI docs follow the mixed Node/Bun UI partition.
2026-10-02 11:54:40 -07:00
Peter Steinberger
fecba819ef
fix(scripts): restore Workboard UI proof captures
Replace retired Workboard proof selectors with the current named automation link and expanded main dashboard surface. Open the explicit fixture session so the recorder captures the intended dashboard, preserving output names and content checks.

The original recorder failed at both old selectors; the repaired recorder produced both inspected synthetic screenshots in 5.52 seconds. Script types, focused lint, cycle checks, and independent review passed.
2026-10-02 18:51:55 +00:00
Peter Steinberger
f2de06b38d
refactor(sdk): retire deprecated Copilot token exchange (#163587)
* refactor(sdk): retire deprecated Copilot token exchange

* chore(sdk): remove stale provider auth test exemption

* chore(sdk): prune retired Copilot assertion allowances
2026-10-02 11:51:09 -07:00
Peter Steinberger
72dfbb85f7
build(macos): pin the app runtime to OpenClaw Bun 6a5d9c721f (#163712)
Repin the bundled runtime to fork release openclaw-v1.4.3-20261002-6a5d9c721f-webkit-fb1167ebf2, which adds synchronous module.registerHooks on top of 1e6f0e7f70. Current OpenClaw keeps its plugin loader on the Bun-native path; published Gateways that feature-detect registerHooks start with their plugins on this runtime. WebKit is unchanged. Values come from the release manifest.
2026-10-02 11:44:30 -07:00
Peter Steinberger
fa283598d0
build(macos): pin the app runtime to OpenClaw Bun 1e6f0e7f70 (#163687)
Repin the bundled runtime to fork release openclaw-v1.4.3-20261002-1e6f0e7f70-webkit-fb1167ebf2. On top of 86bd9e1972 it shuts down socket stdio after final writes like Node, stops retaining duplicated stdio descriptors, preserves MessagePort async context and emitted payloads, applies supported NODE_OPTIONS preloads, keeps net destroy errors on cancelled writes, publishes spawn tracing outcomes, and drains in-flight JIT plans before forced full GC. WebKit is unchanged. Values come from the release manifest.
2026-10-02 11:22:41 -07:00
Vincent Koc
9c32426f5c
fix(tooling): honor qualified dependencies in nested worktrees (#163671)
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-10-03 01:50:44 +08:00
Peter Steinberger
8f98c12c58
chore(release): fail package acceptance before the installed tree outgrows shipped updaters (#163612)
* ci(release): guard installed package tree against shipped updater caps

Published updaters (2026.9.7 and current main) fingerprint the whole
npm-installed package tree with createPackageIntegrityReader().tree(),
capped at 50,000 entries (root included) and 1 GiB. The staged-candidate
walk in preparePackageActivation does not tolerate the limit error, and
installed updaters cannot be patched, so a candidate whose installed tree
crosses the cap cannot be installed by those drivers. The tarball check
only sees the ~13.9k tarball entries, not the installed dependency tree.

Package Acceptance's npm_12_install_sh job already installs the exact
candidate globally; a new step measures that install with the reader's
counting rules (root plus every dirent, no symlink following, regular-file
bytes excluding npm's hidden lockfile) and fails above 47,500 entries or
900 MiB, while every shipped updater can still install the candidate.
It runs wherever Package Acceptance runs (release checks, the 3-hourly
main Full Release Validation, weekly Update Migration) at the cost of one
directory walk; no new job or install.

Measured: main candidate 44,074 entries / 562.0 MiB; published 2026.9.7
44,098 / 630.3 MiB, both matching an independent find oracle. The real
reader accepts a 50,000-entry tree the guard counts as 50,000 and refuses
the 50,001-entry tree.

* fix(release): charge hidden lockfile bytes like published updaters

Published updaters 2026.9.3 through 2026.9.7 add every regular file's
bytes to the 1 GiB rollback-verification cap, including npm's hidden
node_modules/.package-lock.json. Only main (#162365, unreleased) skips
those bytes, and the guard had copied main's more lenient rule, so it
could pass a tree that every shipped updater refuses. Count every
regular file so the guard never undercounts relative to any shipped
driver. Entry counting is identical across all shipped tags.

Real global installs write no hidden lockfiles: published 2026.9.7
still measures 44,098 entries / 630.3 MiB, matching an all-files find.
2026-10-02 10:49:02 -07:00
Dallin Romney
aa6008ad19
improve(release): remove duplicate self-upgrade aggregate (#163676) 2026-10-02 17:47:22 +00:00
Dallin Romney
ccab514b10
fix(release): validate frozen npm bundle versions (#163673) 2026-10-02 17:43:05 +00:00
Peter Steinberger
be5b7292d8
ci: pin the OpenClaw Bun fork 1e6f prerelease (#163658)
Pin Linux CI to the checksum-verified 1e6f Bun fork prerelease and qualify complete Quicksilver worker, broker event-order, and broker group-custody coverage. Preserve V8/registerHooks exclusions, Windows skips, and the shutdown workaround required by stock Bun.

Proof: every existing Bun selection compared against 86bd without new failures or skips; final admitted CI groups passed on 1e6f; the candidate passed all ten Node-hidden smoke steps with an empty blocker list. Focused Node/Bun checks, changed-file checks, and both P2 reviews passed. Three unchanged provider-message assertions failed equally in the frozen baseline comparison, and the old smoke's Chrome startup failure is recorded in the PR evidence.
2026-10-02 10:37:38 -07:00
Dallin Romney
935563c38d
improve(ci): run first-hop post-convergence proof once (#163631)
* perf(ci): deduplicate post-convergence first-hop proof

* test(ci): cover canonical first-hop lane admission
2026-10-02 10:12:15 -07:00
Peter Steinberger
dd5ff2c382
fix(test): avoid runtime rebuilds after test utility edits (#163571)
Exclude dotted .test-utils.ts and .test-utils.tsx paths through the existing build-input owner. Preserve runtime support inputs and extend the existing build-stamp regression.

The controlled prepared test-utility-edit workflow at db793644 improved from 67.205s to 27.870s mean wall time. Current-source correctness and changed-file gates remain pending in the draft PR.
2026-10-02 10:10:28 -07:00
Peter Steinberger
5ab66a5fe4
fix(ci): run Telegram skill tests when a PR changes only skill test files (#163328)
The Telegram userbot skill's node:test (*.test.mjs) and Python (*.test.py)
files are not Vitest-routable, so aggressive PR selection drops them as
direct targets. Their only CI owner is the Vitest wrapper
test/scripts/telegram-e2e-userbot-skill.test.ts, which the policy watch
selected for 20 named non-test scripts only. Test-only skill PRs (e.g.
#162968) and later scripts (reply-policy-*, telegram-runtime) planned
nothing in either selection mode.

Watch the skill's whole scripts/ directory, the agents/openai.yaml the
wrapper parses, and the fixture it loads by URL. The wrapper stays in the
release-only core-tooling family; it now also runs on PRs that touch the
skill, the only PRs that can break these self-contained scripts.
2026-10-02 09:55:09 -07:00
Dallin Romney
bfeca6756c
fix(release): apply 2026.9.8 live shard waivers (#163621) 2026-10-02 16:17:01 +00:00
Peter Steinberger
fcdd870217
fix(watch): complete cache migration and ignore unchanged invalidations (#161543)
Complete the fs-safe watcher migration for catalog and usage-template caches, with non-persistent subscriptions so one-shot commands exit naturally. Preserve atomic-save and missing-root recovery behavior.

Re-read selected sources after undetailed invalidations and restart the dev child only when content changes. Keep unchanged Skills coverage available, and honor CHOKIDAR_INTERVAL for forced polling and automatic fallback. Remove redundant native transports and transport-specific fixtures.

Completes #159226 and supersedes #158182. Dependency pins remain owned by main.

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-10-02 09:14:04 -07:00
Peter Steinberger
f02d16e758
fix(i18n): stop parallel native PRs from conflicting in the string inventory (#163330)
The generated native inventory stored one line per string with every
extraction site inline, sorted alphabetically. Two PRs reusing a string
("Retry") both rewrote its line, and a feature's new strings ("Group by",
"Group chat") landed in the same insertion gap, so parallel native PRs
conflicted in apps/.i18n/native-source.json and needed a rebase plus a
full CI rerun.

Inventory v3 writes one line per extraction site, clustered by source
file, with clusters ordered by a hash of the path so new sibling files do
not share a gap. Each row's position depends only on its own content, so
independent edits merge cleanly (including GitHub's server-side merge)
and the merged text equals a fresh baseline. The new
scripts/native-i18n-inventory.ts owns serialization and parsing; the
generator, Android/Gradle and Apple readers migrate to it together and
receive the same entries in the same order as before.
2026-10-02 15:48:17 +00:00
Vincent Koc
1b8d4594fe
fix(codex): update managed runtime to 0.160.0 (#163560) 2026-10-02 22:36:54 +07:00
Dallin Romney
93e27de58f
fix: macOS release upgrade checks fail during updater recovery (#163580)
* fix(release): canonicalize macOS upgrade temp paths

* test(release): canonicalize macOS temp fixture
2026-10-02 08:35:42 -07:00
Dallin Romney
b7eac4df09
fix(e2e): repair Feishu survivor config recipe (#163604) 2026-10-02 08:35:25 -07:00
Peter Steinberger
b1c09f1088
test(scripts,tts,ui): remove low-value tests (batch d153) (#163563)
* test(scripts): deslop s1024 tests

* test(upgrade): deslop s1039 tests

* test(scripts): deslop s1036 tests

* test(scripts): deslop s1029 tests

* test(release): deslop s1034 tests

* test(tooling): deslop s1033 tests

* test(tooling): deslop s1041 tests

* test(tts): deslop s1000 tests

* test(ui): deslop s1053 tests

* test(ui): deslop s1056 tests
2026-10-02 15:15:14 +00:00
Dallin Romney
88a756ae35
fix(release): allow 2026.9.8 channel waivers (#163585) 2026-10-02 15:01:52 +00:00
Peter Steinberger
46ab36a493
improve(anthropic): append system prompt updates and runtime context in history on Claude routes (#163461)
* feat(llm-core): add Claude in-history system message capability

* improve(agents): pin the stable prompt prefix and append section updates on capable Claude routes

* improve(agents): send turn-scoped runtime context as system messages on capable Claude routes

* fix(plugins): exclude rolled-back registrations from execution scopes

* test(agents): give the live prefix-update case a fifteen-minute budget

Two real plugin-runtime builds on a loaded host exceed the six-minute case timeout; the probes themselves are unchanged.

* fix(agents): preserve dispatch freshness and provider review authority
2026-10-02 08:01:42 -07:00
Peter Steinberger
7555e3f881
fix: keep subagent cleanup and session maintenance responsive (#158251)
* fix: keep subagent registration responsive during database contention

* test: isolate npm config in installer version fixtures

* fix(agents): fence registration rollback after supersession

* test(agents): inject registration faults through async writer

* test(agents): adapt spawn lifecycle to async persistence

* fix: separate session metadata maintenance from archive admission

* test: use archive finalization for idle collection fixture

* test: pass maintenance cases the Vitest test context

* test: join native cleanup and forward registry persistence in fixtures

* test: isolate registration rollback cancellation from source revocation

* fix: cancel accepted subagents through the lifecycle owner

* fix(state): preserve registry snapshots on validated reopens

* fix(state): explicitly type worker transcript assertions

* test(gateway): retain directive fixture state through cleanup

* test: assert preserved predecessor metadata independently

* test: use the typed session owner in registration recovery proof

* test: join skill library database cleanup before removing state

* test(sessions): bind archive maintenance to fixture state

* test(gateway): follow catalog completion in privacy fixtures

* test(media): use valid PNG in Windows file URL fixture

* test(acp): align fixture state and cleanup ownership

* test: retain restart fixture state through cleanup

* test: retire SQLite owner generations across test files

* test: synchronize completion and maintenance worker fixtures

* refactor: dispatch archive pruning through its worker owner

* test: align reclamation and cleanup fixtures with their owners

* fix: preserve selected subagent ownership observations

* test: preserve registry acknowledgments in fixtures

* fix(ci): settle memory capacity before runtime placement

* test(subagents): forward requester handoff acknowledgements

* fix(sessions): preserve cleanup environment across SDK calls

* test(subagents): bind registration fixtures to their requested owner

* fix(ci): remove duplicate database worker test entry

Keep one PDF resource-test registration in the existing fork-owned inventory.
The repeated entry prevented compact timing generation before CI tests began.
Preserve the complete unique test set and the duplicate guard.

* test(sessions): fix cold maintenance fixture context and cleanup

* test(subagents): forward acknowledged IDs in requester retirement

Preserve the persistence callback receipt through the watched-session test
adapter and trigger requester retirement only for acknowledged run IDs.

* fix(state): retain explicit transcript assertion bindings

Restore the typed local assertion targets required by the production compiler.
Keep the creation-path simplification and current worker dispatch unchanged.

* test(sessions): verify archival in cold maintenance proof

Assert the existing durable-conversation archive contract and retained session
data while preserving the cold worker, FIFO, host-access and settlement guards.

* test(sessions): run SDK cleanup proof with live database owner

* test(sessions): await native writer before cleanup race mutation

* test: preserve registry acknowledgement ordering in fixtures

* test: run session fork coverage with the host SQLite broker

* fix(state): retire failed shared workers before lease cleanup

Keep cleanup bound to the original database identity and live owner while joining canonical actor retirement. Preserve active-callback refusal and existing-only admission.

Make lifecycle fixtures observe real completion and retain the original assertions and deadlines. Align shutdown proof with the shared maintenance writer and await UI readiness within its existing polling budget.

* test: bind generated SQLite fixtures to physical identities

Pass observed identities into cleanup admission while retaining the real host-broker refusal. Use a physical fixture identity for schema-scope proof instead of mocking away identity checks. Preserve the full cross-file cleanup and retained-lease assertions.

* test(subagents): respect retirement acknowledgement before registration

Observe the successor joining the actual pending write, then hold only the older cleanup continuation after persistence and publication settle. Preserve successor data, current authority, publication revision and hook fencing when that continuation resumes. Join both operations on cancellation without changing deadlines.

* test: run catalog boundary coverage with the host SQLite broker

Classify the existing embedded-attempt catalog suite with the canonical forked-process owner. Keep broker admission guards and all test assertions unchanged.

* test: preserve active runs and order watcher replacement fixtures

* test: align worker inventory with upstream classifications

* fix: retain failed-spawn cleanup and completion authority

* fix: align subagent cleanup checks with worker ownership

Return the existing false completion policy for retired stores before checking
live delivery authority. Eligible delivery still requires current authority at
the outbound boundary.

Route preparation-fixture cleanup through the captured Gateway owner and join
accepted handlers before tearing down parent state. Align session-group fixture
helpers with the catalog's state directory and classify published inbound
maintenance under the existing host broker test project.

Verified 60 focused behavior cases, 481 project-ownership checks, three owning
type graphs, 13 static checks, and two scoped independent reviews. The prior
parent-fork teardown failure did not reproduce in one bounded diagnostic replay;
its cause remains unresolved. All temporary diagnostics were removed.
2026-10-02 07:58:32 -07:00
Peter Steinberger
65cb5ab547
test(scripts): remove low-value tests (batch d152) (#163549)
* test(scripts): deslop s1015 tests

* test(scripts): deslop s1023 tests

* test(scripts): deslop s1026 tests

* test(scripts): deslop s1027 tests

* test(scripts): deslop s1020 tests

* test(scripts): deslop s1031 tests

* test(scripts): deslop s1038 tests

* test(scripts): deslop s1025 tests

* test(scripts): deslop s1028 tests

* test(scripts): deslop s1037 tests

* test(scripts): retain rollout ancestry coverage
2026-10-02 07:23:04 -07:00
Peter Steinberger
ba811fafc1 fix(scripts): pin the session-store runtime imports in the request wrapper inventory
The wrapper now reaches supported-session-store, channel-route, delivery-context.shared, and the message-channel helpers at runtime; the closure tests reported them missing on main.
2026-10-02 07:17:31 -07:00
Peter Steinberger
82a4cfbe57
feat(plugin-sdk): awaited session persistence; deprecate sync transcript writes (#163264)
* feat(plugin-sdk): await session persistence and deprecate sync writes

* test(sessions): fix awaited persistence fixture types

* fix(sessions): preserve binding and delivery publication

* test(sessions): isolate compaction retarget authority

Model the retarget as an independent operation so the fixture reaches post-commit publication validation. Keep the committed receipt, accounting, and replacement-transcript assertions intact.

* fix(ci): remove duplicate database-worker test routing

Main already routes attempt-phase-lifecycle.test.ts through the database-worker owner. Remove the duplicate introduced by the SDK branch. Exact-head preflight and the native local manifest both reproduced the failure; the corrected manifest passes with 69 selected Node rows. Unique test coverage and the duplicate guard stay intact. Formatting and P2 review pass.

* fix(sessions): keep maintenance projections with the host owner

Return committed projection-rebuild facts from maintenance workers and schedule them through the existing host owner. Preserve custody, rollback, and synchronous compatibility. Update async fixtures and host-broker test routing, restore the native wrapper import inventory, and route memory visibility declarations through their existing producer.

Focused Linux proof passed342 tests across17 suites; old-code controls fail at pending projections. SDK declarations retain legacy signatures with four additive exports. Types, lint, T1, Madge, focused routing checks, and P2 review pass.

* test(cli): await blocked-run hook entry without polling

Await the existing hook-entry gate instead of racing awaited transcript persistence against vi.waitFor's one-second default. Preserve the early-settlement failure and the assertion that agent_end must finish before the CLI run settles.

The two focused cases pass in 155.98s including preparation; their test bodies take 3.656s and 1.804s. Fresh P2 review is clean.

* test(cli): use the deferred helper default type

* test(gateway): keep worktree fixture on the shared state root

Use the nested fixture only for workspace and device files. Activating its environment switches process state roots underneath the shared Gateway, whose projection retains its startup environment. Preserve the registry witness guard and every cwd, transcript, initial-run, and follow-up assertion.

CI observed AgentDatabaseRegistryChangedError during creation. The exact callback interleaving was not captured, and unmodified main passed the whole file in 172.229s; that is non-reproduction, not inherited-failure qualification. The corrected fixture passes all 10 cases in original order in 164.077s. Semantic lint, formatting, and fresh P2 review pass.

* refactor(sessions): separate hydration types and CLI hook fixtures

Keep transcript hydration results beside their request contracts and retain aggregate exports. Move the CLI hook fixture owner into test support without changing coverage. This removes both line-cap increases after main integration; 112 composition tests and all 52 reliability tests pass.
2026-10-02 07:03:11 -07:00
Peter Steinberger
a8c1182c16
refactor(cron): retire pre-July file imports (#163221)
Remove cron JSON jobs/state and JSONL history imports whose last stable writer predates July 2026. Keep supported quarantine and SQLite migrations with Doctor, and refuse retired live inputs before update activation while preserving the published Gateway and operator data.

Final-head Testbox validation and both published 2026.9.7 update cells pass. The PR records source-qualified CI failures inherited from main and their landed fixes.
2026-10-02 06:32:29 -07:00
Peter Steinberger
cee0906f38
improve(agents): explain unknown tool outcomes and assert append-only request history (#163379)
* fix(agents): describe unrecorded tool results as unknown outcomes

Use shared unknown-outcome guidance while preserving the Responses-family aborted convention. Retain synthetic provenance in model context so late real results can replace repair placeholders without changing existing detection or stored transcript rows.

* improve(agents): assert provider request history stays append-only

Track converted message prefixes and record declared compaction, pruning, runtime-context, and image rewrites. Notify every cache-affinity baseline for the same session identity. Memoize message/content and schema fingerprints, with strict assertions enabled only by an opt-in environment flag.

* fix(agents): pin the shared tool-result text for the request wrapper

Include packages/llm-core/src/types.ts in the PR wrapper's extracted source inventory. Main commit 93625aa3d1 pulled tool-result-pairing.ts into that graph, so its existing shared tool-result text import must be included for standalone wrapper execution.
2026-10-02 07:50:31 -05:00
Vincent Koc
1ce46edd0d
refactor(e2e): share gateway CLI payload resolution (#163506)
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-10-02 20:43:14 +08:00
Peter Steinberger
f40ee2069f
feat(state): incognito actor report and outbox adapters (P4a, inactive) (#163494)
* feat(state): add inactive incognito report and outbox adapters

Bind transcript reports and closed-turn outbox commands to the retained incognito actor connection and shared FIFO publication owner. Keep production routing host-owned until P7 and preserve durable outbox semantics.

* fix(tooling): retain incognito transcript wrapper dependency
2026-10-02 07:42:42 -05:00
Peter Steinberger
06195bba7c
refactor(native): deslop native row and polling state (#163449)
Remove redundant Wear page and polling state, retired iOS row fields and branches, and a shared session preference forwarder. Simplify valid-string decoding and keep localization guards and source inventory aligned with their surviving owners.

Production reduction: 41 net Swift/Kotlin lines. Fresh full review is clean through P2. Remote proof passed 76 Wear tests, 62 localization tests, native localization verification, Kotlin and Android lint, and both cycle checks; hosted native CI gates landing.
2026-10-02 12:16:04 +00:00