Peter Steinberger
b6de8d5e15
improve(agents): reduce per-turn conversation metadata tokens ( #113616 )
...
* perf(agents): trim per-turn conversation metadata tokens
* test(agents): expect compact supplemental metadata
* test(agents): cover compact persisted sender metadata
2026-07-25 05:01:07 -07:00
ooiuuii
591e029095
fix(browser): skip non-executable auto-discovery candidates ( #111951 )
...
* fix(browser): skip non-executable candidates
* test(browser): preserve fs constants in mocks
* fix(browser): simplify executable candidate checks
* fix(browser): require regular executable files
* style(browser): format executable candidates
* test(ci): allow sqlite proof on fork runners
* style(test): keep sqlite timeout diff compact
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-25 04:50:40 -07:00
Peter Steinberger
eddd5224ad
fix(e2e): expose redacted packaged plugin failures ( #113635 )
...
Co-authored-by: Peter Steinberger <steipete@golden-gate.local >
2026-07-25 04:48:08 -07:00
Dallin Romney
26b7bb822b
fix(ci): validate frozen release candidates with compatible harnesses ( #113628 )
...
* fix(ci): keep release harnesses compatible with frozen candidates
* style: format release Telegram workflow test
2026-07-25 04:45:29 -07:00
Peter Steinberger
825d6f7f1f
fix(openai): align Codex discovery client version ( #113615 )
...
* fix(openai): align Codex discovery client version
* chore: leave release notes to release workflow
2026-07-25 04:33:12 -07:00
Vincent Koc
d4794c90a0
test(sqlite): cover interrupted canonical index repair ( #113624 )
2026-07-25 19:27:17 +08:00
Peter Steinberger
57e2f220de
fix(ci): restore packaged OpenWebUI and update validation ( #113614 )
...
Co-authored-by: Peter Steinberger <steipete@golden-gate.local >
2026-07-25 04:14:41 -07:00
joshavant
bb47d9f29a
test(packaging): cover manifest-declared plugin assets
2026-07-25 06:03:30 -05:00
sallyom
f045f33a62
feat(onepassword): add managed SecretRef integration
2026-07-25 06:03:30 -05:00
Vincent Koc
2b19ae1f00
fix(snapshot): recover complete pending sqlite snapshots ( #113607 )
2026-07-25 18:50:50 +08:00
Peter Steinberger
902cc53279
refactor: batch of independent dedup wins ( #113535 )
...
* refactor(config): reuse session parent fork types
* refactor(channels): reuse setup adapter type
* refactor(discord): share model preference primitives
* refactor(whatsapp): share reaction eligibility
* test(auto-reply): deduplicate dispatch scenarios
* test(scripts): share scenario fixtures
* test: share process and registry fixtures
* test: satisfy dedup fixture lint
* fix(plugin-sdk): keep setup adapter contract acyclic
2026-07-25 02:56:05 -07:00
Peter Steinberger
55d66fbf98
chore(scripts): remove resolved investigation tools and orphans ( #113532 )
...
* chore(scripts): remove orphaned wrappers
* chore(scripts): remove resolved investigation tools
* refactor(code-mode): remove orphaned plugin namespaces
* test(code-mode): remove stale namespace import
2026-07-25 02:47:40 -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
Vincent Koc
7a5c47db8e
test(sqlite): prove repository interruption recovery ( #113555 )
2026-07-25 15:37:16 +08:00
Vincent Koc
6734b132f1
test(sqlite): prove restore interruption recovery ( #113531 )
2026-07-25 15:16:51 +08:00
Vincent Koc
bdd5653c3e
test(sqlite): prove killed vacuum recovery ( #113518 )
2026-07-25 13:56:41 +08: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
Vincent Koc
5f63f744ea
test(sqlite): prove publication interruption recovery ( #113512 )
2026-07-25 13:09:32 +08:00
Vincent Koc
92f01470d4
test(sqlite): crash writers during reliability proof ( #113498 )
2026-07-25 12:44:29 +08:00
Vincent Koc
509a5f0373
fix(sqlite): reject schema data loss during upgrades ( #113473 )
...
* fix(sqlite): reject schema data loss during upgrades
* test(macos): align native state schema boundary
2026-07-25 12:22:02 +08:00
joshavant
592be7b407
style: format installer validation tests
2026-07-24 17:22:07 -05:00
joshavant
09c26e24eb
fix(installer): harden managed script downloads
2026-07-24 17:22:07 -05:00
Sebastien Tardif
34cc32fa41
fix(test): mock download/validate for Debian NodeSource install path
...
install_node now calls validate_downloaded_script after the NodeSource
download step. The Debian pacman-ignore harness did not mock those
helpers, so empty mktemp files failed closed and status was 1.
Signed-off-by: Sebastien Tardif <sebtardif@ncf.ca >
2026-07-24 17:22:07 -05:00
Sebastien Tardif
20c9c6b1f9
fix(test): mock validate_downloaded_script in NodeSource failure tests
...
The rebase onto main introduced validate_downloaded_script between
download_file and run_required_step. Since the test mocks
run_quiet_step (which swallows the actual download_file call), the
temp file stays empty and validate_downloaded_script fails early,
preventing the test from reaching the intended run_required_step
failure path.
2026-07-24 17:22:07 -05: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
14df16007f
fix(ci): log every pr-ci-sweeper classification and scan by creation time ( #113397 )
2026-07-24 13:33:16 -07:00
Franck MEYER
5e3007cc23
fix(ui): preserve session identity across gateway snapshots ( #113322 )
...
* fix(ui): preserve session identity across gateway snapshots
Co-authored-by: openclaw-repo-broker[bot] <285669409+openclaw-repo-broker[bot]@users.noreply.github.com>
* test(ui): cover session identity transitions
Co-authored-by: openclaw-repo-broker[bot] <285669409+openclaw-repo-broker[bot]@users.noreply.github.com>
* test(ui): model identity reconnect snapshot accurately
* style(ui): format session identity test import
* test(ui): isolate assistant identity snapshot coverage
---------
Co-authored-by: openclaw-repo-broker[bot] <285669409+openclaw-repo-broker[bot]@users.noreply.github.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-24 13:17:23 -07:00
Peter Steinberger
4e9cba2aba
fix(release): scope dependency conflicts to bundled plugins ( #113350 )
2026-07-24 08:08:55 -07:00
Peter Steinberger
7dfb660d1f
fix(release): keep msteams packaging and Docker reruns reliable ( #113332 )
...
* fix(release): forward-port beta packaging repairs
* fix(ci): acknowledge sweeper token grant
2026-07-24 07:05:41 -07:00
Vincent Koc
ebf2306c1d
fix(sqlite): normalize Windows verification paths ( #113313 )
...
* fix(sqlite): normalize Windows verification paths
* test(windows): normalize backup archive fixture paths
* test(windows): separate backslash and traversal archive cases
2026-07-24 21:00:15 +08:00
Vincent Koc
48d65f94a1
fix(test): release SQLite fixtures before Windows cleanup ( #113316 )
...
* fix(test): close SQLite fixtures before Windows cleanup
* test(windows): extend fixture cleanup retries
* fix(test): avoid registry reads during fixture cleanup
2026-07-24 20:04:57 +08:00
Vincent Koc
a18e8fbe0c
refactor(tooling): centralize positive env integers ( #113277 )
2026-07-24 16:23:35 +08:00
Peter Steinberger
73bba03e4c
refactor: canonicalize session delivery state ( #113225 )
...
* refactor: canonicalize session delivery state
* test: canonicalize reply persistence fixtures
* test: canonicalize talk delivery fixtures
* test: canonicalize voice session routes
* test: canonicalize attachment delivery fixtures
* test: migrate gateway delivery fixtures
* fix: skip invalid session delivery rows
* test: align delivery SDK surface gates
* fix: preserve legacy delivery precedence
* test: canonicalize heartbeat delivery fixtures
* fix: preserve delivery route prompt identity
* test: canonicalize session delivery fixtures
* fix: preserve recoverable legacy delivery routes
* fix: canonicalize remaining session state
* fix: preserve canonical session classification
* style: format delivery state changes
* test: refresh plugin SDK delivery baseline
* test: avoid mutating session fixture input
* style: simplify delivery identity check
* style: simplify delivery origin spread
* fix: preserve fresh delivery route metadata
* test: assert canonical surface route switch
* fix: canonicalize doctor file-store imports
* fix: preserve transitional delivery migration state
* fix: satisfy canonical delivery CI gates
* ci: scope GitHub App token permissions
* test: infer canonical delivery projections
* test: canonicalize ACP requester delivery fixtures
* test: canonicalize harness rollback fixture
* style: apply pinned formatter
2026-07-24 01:01:19 -07:00
Peter Steinberger
f3c4b120e2
fix(tooling): prevent silent test filters and local dependency reconciliation ( #113236 )
...
* fix(tooling): harden changed checks and test filters
* test(tooling): align temp report with helper lanes
2026-07-24 00:55:52 -07:00
Vincent Koc
6dbe278283
fix(android): allow post-merge flavor translations
2026-07-24 15:26:58 +08:00
Vincent Koc
342816a58d
fix(i18n): publish Android flavor locale artifacts
2026-07-24 15:26:58 +08:00
Vincent Koc
4990ac3aa9
fix(i18n): cover Android flavor surfaces
2026-07-24 15:26:58 +08:00
Vincent Koc
f5cc8b6da6
fix(sqlite): support long Windows snapshot paths ( #113228 )
...
* fix(sqlite): support long Windows snapshot paths
* test(sqlite): run snapshot paths in Windows CI
* fix(sqlite): normalize long Windows VFS paths
2026-07-24 14:34:51 +08:00
joshavant
bd559a98ed
fix(cron): migrate scheduled authority provenance
2026-07-24 01:24:03 -05:00
Peter Steinberger
80449f9a8f
refactor(scripts): retire the STALE-CANCELLED watcher verdict ( #113242 )
...
Run-identity supersession (#113230 ) resolves the scenario this heuristic
softened: superseded runs and rerun-attempt leftovers are filtered before
classification, so aggregate-FAILURE-with-green-duplicates now classifies
as GREEN or PENDING on evidence. The only remaining reachable case —
identity-less app check runs posting duplicate same-name results — is
genuinely ambiguous and now honestly exits FAILING (15) instead of the
special verify-manually exit 17.
2026-07-23 23:11:41 -07:00
Peter Steinberger
169dad6224
fix: watch-pr-ci exits with false FAILURE when draft-to-ready cancels superseded runs ( #113230 )
...
* fix(scripts): ignore superseded workflow runs in watch-pr-ci rollup classification
Draft->ready re-triggers leave cancelled superseded runs on the head SHA
forever, and GitHub's aggregate rollup state counts them, so the watcher
emitted terminal FAILURE while the replacement run was still in progress
and could never reach GREEN (observed on PR #113150 , head bd1b9a0e ).
- fetch run identity per check and resolve same-name checks to the newest
run/check id (GitHub latest-name-wins); drop cancelled checks from
replaced runs; keep older runs' unique jobs visible
- paginate statusCheckRollup contexts (bounded, 10 pages) so >100-context
rollups are not truncation-blind; changed or lost snapshots throw into
the bounded retry
- classify GREEN when aggregate FAILURE is explained solely by superseded
contexts with full visibility; truncation still fails conservatively
* ci: scope GitHub App token permissions in stale, labeler, auto-response, and pr-ci-sweeper
Fixes red main: #112963 bumped zizmor v1.22.0 -> v1.28.0, whose github-app
audit flags create-github-app-token mints without permission-* inputs (14
high findings, Workflow Sanity red on main since 3b7b2a2a1f ). Most
workflows already migrated to scoped tokens; these four were stragglers.
Scopes follow each consumer's actual API surface: stale needs issues/PR
write plus actions read for its state-cache check; labeler needs label
CRUD (issues write), PR write, members read for maintainer gates, and
contents read where actions/labeler reads its config; auto-response needs
issues/PR write plus members read; pr-ci-sweeper needs actions write to
re-fire runs, checks read, and PR write. Verified locally with the exact
CI invocation (zizmor 1.28.0, repo config, regular persona, medium
severity/confidence): no findings, ignore/suppress counts match CI.
2026-07-23 22:46:04 -07:00
Vincent Koc
2b7622d9a3
fix(sqlite): preserve state across maintenance races ( #113216 )
...
* fix(sqlite): harden destructive maintenance safety
* fix(sessions): compact transcripts atomically
* fix(cron): prevent orphan scratch writes
2026-07-24 12:29:47 +08: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
joshavant
ed7d9ef441
fix(ios): preserve planned build during release validation
2026-07-23 21:34:34 -05:00
joshavant
be29b907f4
test(ios): require strict Settings navigation
2026-07-23 20:45:33 -05:00
joshavant
ee317497d9
fix(ios): isolate release screenshot captures
2026-07-23 20:45:33 -05:00
Peter Steinberger
7915c44773
fix(ci): allow sticky writer rebuild to finish ( #113175 )
...
* fix(ci): allow sticky writer rebuild to finish
* test: register iOS release tooling ownership
2026-07-23 17:17:10 -07:00
joshavant
ba09e05e97
refactor(ios): append unpadded App Store revisions
2026-07-23 18:42:16 -05:00
joshavant
0558831b92
fix(ios): normalize App Store build upload state
2026-07-23 18:26:29 -05:00
joshavant
b7d77b0f21
feat(ios): deterministically plan App Store releases
2026-07-23 18:18:32 -05:00