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
Peter Steinberger
b23c7bd0f8
feat(cron): convert heartbeat tasks: entries into independent cron jobs ( #113165 )
...
Each legacy heartbeat tasks: entry becomes an editable system-created cron
job (declaration key heartbeat-task:<agentId>:<hash>, per-occurrence
identity for duplicate names) that fires a guarded heartbeat wake carrying
the task prompt plus current monitor scratch context. Task cadence is now
independent of the base heartbeat interval; active-hours, busy-retry,
min-spacing, and flood guards are preserved, deferred payload-carrying
wakes are retained and retried after the spacing floor, and colliding
task/event wakes cannot starve each other.
openclaw doctor --fix migrates existing blocks: async parse/plan, then one
synchronous SQLite transaction that rereads the pinned scratch revision,
upserts job rows, and strips the tasks: block atomically — concurrent
doctors serialize on the database and a losing run aborts untouched.
Orphan fields, invalid intervals, and incomplete entries block migration
of their block with a clear finding instead of silent text loss. The
runtime tasks: parser is deleted; leftover text is ordinary scratch prose.
Nine Codex gpt-5.6-sol xhigh autoreview cycles; final verdict clean.
2026-07-23 16:13:08 -07:00
Peter Steinberger
b3b9e691bd
fix(ci): rebuild sticky modules before snapshot refresh ( #113155 )
2026-07-23 15:56:49 -07:00
joshavant
30395ba31b
feat(ios): support App Store release revisions
2026-07-23 16:24:15 -05:00
Peter Steinberger
8a2b2b35f5
fix(ci): rebuild stale sticky dependency snapshots ( #113142 )
2026-07-23 13:59:22 -07:00
Peter Steinberger
6c3d8fc1b0
ci(release): honor candidate pnpm pin ( #113110 )
2026-07-23 11:32:04 -07:00
Peter Steinberger
3e2b3ea4d5
feat(cron): database-backed heartbeat monitor scratch replaces HEARTBEAT.md ( #112967 )
...
* feat(cron): move heartbeat context into database-backed per-job cron scratch
- new additive cron_job_scratch SQLite table (revision tombstones keep
compare-and-swap monotonic across unset/recreate; 256KiB cap)
- heartbeat runner reads monitor scratch instead of workspace HEARTBEAT.md;
heartbeat_respond gains a private scratch replacement parameter
- openclaw doctor --fix migrates HEARTBEAT.md into scratch (hash-verified,
archived under state backups, idempotent, symlink-contained)
- gateway cron.scratch.get/set admin RPCs + openclaw cron scratch CLI
- workspace bootstrap no longer seeds HEARTBEAT.md; Codex heartbeat file
guidance removed; docs and prompt snapshots updated
* fix(cron): review round 2 — shared-workspace heartbeat migration and non-default agent monitors
- doctor migration groups agents by heartbeat source file and imports into
every monitor before archiving/removing the shared file once
- exempt heartbeat payloads from the main-session default-agent restriction:
monitors only poke the wake bus, so non-default agents converge again
- document why disabled monitors retain their last cadence (config default
already resolves before the fallback)
* fix(cron): honor configured cron store, legacy heartbeat fallback, and safer doctor claim
* fix(cron): claim HEARTBEAT.md before committing scratch and restore without clobbering
* fix(cron): pin migration CAS to precondition revision, re-verify claim on release, archive first, report scratch as pending
* docs(heartbeat): remove retired config options
* fix(cron): crash-recoverable migration claims, partial-import rollback, latest-response scratch pairing
* test(heartbeat): keep latest scratch proposal paired
* fix(cron): roll back committed scratch on changed-claim release and restore no-row state
* fix(cron): revision-guarded rollback delete and recreated-file detection on claim release
* fix(cron): treat every failed claim re-verification as a migration conflict
* test(heartbeat): rename ack test after ackMaxChars retirement
* fix(heartbeat): keep monitor scratch out of bypass-scope runs
* fix(cron): resolve claimed symlinks on release and gate legacy fallback on proven scratch state
* fix(cron): strict claim-name recovery and per-entry migration grouping
* fix(ci): heartbeat scratch gate repairs — lint causes, dead exports, since-train, inventory path, prompt snapshot, regenerated docs map, SDK baseline, protocol bindings
* fix(cron): live-owner claim guard and canonical entry-key migration grouping
* fix(cron): archive claimed inode on release and flag orphan claims beside recreated files
* docs(cron): document process-global state-db invariant for scratch service ops
* chore(i18n): refresh native inventory line numbers after protocol binding regen
2026-07-23 11:10:49 -07:00
Peter Steinberger
c5a2220d37
refactor(sessions): restructure per-agent SQLite schema ( #113071 )
...
* refactor(sessions): restructure agent session schema
* fix(sessions): preserve sharing across node ownership
* refactor: split session node artifact helpers
* test: track session cleanup temp directories
* fix(sessions): preserve fresher alias artifacts
* fix(sessions): reject placeholder membership writes
* test(sessions): align schema ownership fixtures
* fix(sessions): align incognito and heartbeat ownership
* test(sessions): preserve retained window rehoming coverage
2026-07-23 10:21:05 -07:00
Peter Steinberger
0cd7ea0089
fix(update): avoid dirty checkouts after source builds ( #113094 )
...
* fix(update): prevent build artifact drift
* fix(update): preserve excluded UI artifacts
2026-07-23 09:52:22 -07:00
Peter Steinberger
c440ae3e86
refactor(sessions): collapse legacy JSON store ( #113075 )
...
* refactor(sessions): collapse legacy JSON store
* chore(sessions): ratchet legacy importer boundary
* fix(sessions): align cleanup checks
2026-07-23 09:36:48 -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
joshavant
b85c0e2064
fix(ios): harden release screenshot capture
2026-07-23 11:09:06 -05:00
Peter Steinberger
9a624cd78f
fix(ios): localize Agent Pro detail labels ( #112980 )
...
* fix(ios): preserve localized Agent Pro detail labels
* fix(ios): localize Dreaming metric labels
* test(ios): refresh native localization inventory
* test(setup): align isolated detection fallback
* test(system-agent): allow slow shared TUI setup
* test(chat): allow loaded outbox retry drain
---------
Co-authored-by: Alix-007 <li.long15@xydigit.com >
2026-07-23 09:01:07 -07:00
Peter Steinberger
9cbbac8fc8
refactor(plugins): prune retired compatibility tombstones ( #113025 )
...
* refactor(plugins): prune retired compat tombstones
* chore: shrink cleanup ratchets
* test(tooling): model flattened agent-core exports
* test(system-agent): isolate TUI catalog discovery
2026-07-23 07:30:35 -07:00
Peter Steinberger
5bd719fb9c
refactor(system-agent): split setup inference phases ( #113028 )
...
* refactor(system-agent): split setup inference phases
* fix(system-agent): preserve activation helper types
* fix(system-agent): keep read-only inference verification
* test(system-agent): track moved lint suppressions
2026-07-23 06:52:23 -07:00
Peter Steinberger
525a7f4c96
ci(release): restore full validation after config migrations ( #112740 )
...
* fix(browser): preserve scoped CDP authority policy
* test(release): migrate canonical config fixtures
* ci(release): repair acceptance harness drift
* ci(release): extend Anthropic setup budget
* test(release): align remaining CI contracts
* test(release): align Docker and QA contract tests
* docs(release): preserve validation evidence inputs
* test(plugins): align unprepared metadata reads
* ci(release): separate QA live suite filters
* test(release): bind cron MCP cleanup device
2026-07-23 08:46:55 -04:00
Peter Steinberger
a2be4efb63
refactor(transcripts): store meeting captures in SQLite ( #112910 )
...
* refactor(transcripts): move meeting transcripts to sqlite
* perf(transcripts): batch legacy utterance staging
* fix(transcripts): report recovery moves on migration failure
* fix(transcripts): refresh archive membership after recovery
* fix(transcripts): omit failed summary export paths
* fix(transcripts): type restore metadata tuple
* fix(transcripts): align migration contract gates
* fix(transcripts): verify case-aliased export ownership
* fix(transcripts): allowlist doctor verifier sqlite query
* fix(transcripts): preflight partial artifact recovery
* fix(transcripts): stabilize exports and legacy path checks
* fix(transcripts): resolve case-renamed doctor ownership
* fix(transcripts): harden canonical export recovery
* fix(transcripts): preserve pending import boundaries
* refactor(transcripts): split migration insert transaction
* perf(transcripts): query selected summary existence
2026-07-23 07:18:55 -04:00
Peter Steinberger
9ae9fcb1cd
fix: preserve transcript cursors across session resets ( #112988 )
...
* feat: add reset transcript boundaries
* feat: project reset boundaries in history
* refactor: reset sessions in place
* fix: fence reset runtime caches by lifecycle
* fix: preserve reset filtering during compaction
* fix: anchor compaction after reset boundaries
* fix: budget reset preludes during compaction
* fix: honor reset visibility in bounded history
* fix: couple reset boundaries to lifecycle commits
* fix: commit reset boundaries atomically
* fix: preserve reset boundary transition states
* fix: preserve concurrent reset lifecycle owners
* fix: preserve reset boundary storage compatibility
* fix: preserve reset windows across persisted histories
* fix: fence legacy reset lifecycle state
* fix: keep stale appends behind reset boundaries
* perf: index reset descendants linearly
* fix: bound reset history projection reads
* fix: narrow invalid leaf control types
* test: use typed cron lifecycle revision
* style: keep acp lifecycle helper within limit
* style: satisfy reset boundary lint rules
* test: split reset concurrency coverage
* style: satisfy compaction fixture lint
* refactor: remove retired reset replay exports
* test: assert in-place reply session resets
* test: assert reset boundary persistence
* test: mock session boundary counts
2026-07-23 06:22:43 -04:00
Peter Steinberger
6522ce37d9
fix(release): unblock Telegram QA and Copilot media proof ( #112972 )
...
* fix(release): build Telegram candidate with private QA
* fix(copilot): preserve offloaded prompt images
2026-07-23 04:43:53 -04:00
Peter Steinberger
bac2bbd243
refactor(google-meet): split CLI modules ( #112937 )
...
* refactor(google-meet): split CLI modules
* test(google-meet): align CLI split routing
* refactor(google-meet): isolate CLI command contract
2026-07-23 03:00:34 -04:00
Peter Steinberger
e76c9aac30
fix(release): allow isolated Telegram private QA ( #112935 )
...
* fix(release): forward private QA flags to Telegram SUT
* test(ui): update catalog activity state owner
2026-07-23 02:17:48 -04:00
Peter Steinberger
a542f01f49
refactor: remove dead tooling and deprecated exports ( #112915 )
2026-07-23 01:28:11 -04:00
joshavant
ebbbfa4c30
fix(ios): stabilize release screenshot launches
2026-07-23 00:28:00 -05:00
Peter Steinberger
0f0d9a2d74
refactor(telegram): consolidate bot test fixtures ( #112894 )
...
* test(telegram): consolidate bot fixtures
* fix(ci): allow cross-platform UI gzip variance
2026-07-23 01:03:34 -04:00
Peter Steinberger
ec8f957f2e
fix(release): test candidate external channel plugins ( #112899 )
2026-07-23 00:53:23 -04:00
Peter Steinberger
e99d978e24
test: consolidate script workflow fixtures ( #112892 )
2026-07-23 00:51:10 -04:00
Peter Steinberger
b3e2af7eb2
refactor(scripts): remove orphaned secret provider proof ( #112875 )
2026-07-23 00:29:44 -04:00
Peter Steinberger
c11f175282
feat(ci): ratchet the Control UI startup JS budget against a committed baseline ( #112880 )
...
The startup JS gzip gate was a fixed ceiling that main drifted to within
1-3 KiB of, forcing repeated hand-bumps (315->317 KiB) and failing
feature PRs on drift they did not cause (#112649 burned two CI rounds).
check-control-ui-performance.mjs now also enforces a committed baseline
(config/control-ui-startup-budget-baseline.json) with a 512 B tolerance:
regressions beyond baseline+tolerance fail with an actionable message,
intentional increases become a reviewed one-line diff via
--update-baseline --reason, meaningfully lighter builds print a
lower-the-baseline hint, and a malformed/missing baseline fails closed.
The fixed ceiling stays as the cumulative-creep backstop.
Closes #112743 .
2026-07-23 00:19:36 -04:00
Dallin Romney
a195d6fcee
fix(release): invoke frozen Telegram CLI directly ( #112874 )
2026-07-23 13:08:33 +09:00
joshavant
690ed56441
fix(ios): preserve localized app display names
2026-07-22 22:56:22 -05:00
Peter Steinberger
4c5e8f3b85
feat(scripts): add watch-pr-ci CI watcher with mergeable and attach prechecks ( #112821 )
...
* feat(scripts): add watch-pr-ci CI watcher with mergeable and attach prechecks
* fix(scripts): require successful attached PR CI run
* fix(scripts): harden watch-pr-ci verdicts against foreign runs and truncated rollups
* fix(scripts): add fresh-run gating to watch-pr-ci attachment
* fix(scripts): guard stale-cancelled verdict against truncated context pages
* fix(scripts): declare rollup context total count
* fix(scripts): sanitize check names and close the final polling interval
* test(scripts): type deadline wait samples
2026-07-22 23:33:45 -04:00
Dallin Romney
f7d61b4352
fix(ci): skip new OpenClawKit suite for frozen targets ( #112860 )
2026-07-23 12:26:49 +09:00
Dallin Romney
67ef07863f
fix(release): support frozen candidate contracts ( #112841 )
2026-07-23 12:03:11 +09:00
Peter Steinberger
099d6351b3
refactor(sessions): canonical lineage model — creation provenance, fork ancestry, generation chain, typed row contract ( #111861 )
...
* fix(sessions): preserve spawn/fork lineage across implicit daily/idle rollover
* refactor(sessions): canonical creation model with forkSource ancestry and generation chain
* feat(sessions): stamp creation provenance across all creation paths and emit created events
* refactor(gateway): lock lineage patching, split control from navigation, add typed session-row contract
* docs(gateway): document creation provenance stamping and lineage patch tightening
* fix(sessions): keep provenance proof-only on wire fallbacks and strip node-local lineage from cron continuations
* fix(gateway): never journal a created event for session adoption
* fix(gateway): keep post-create work on adoption while gating the created event
* fix(sessions): restore trusted ensure-main provenance and stamp navigation parent at spawn
* fix(sessions): allow parentSessionKey through the direct child spawn patch
* fix(ci): break type cycles, satisfy export scan, regenerate Swift protocol models
* refactor(sessions): replace createdBy with createdActor
* fix(protocol): export session row type
* fix(sessions): preserve proven creation provenance
* fix(sessions): close lineage creation gaps
* test(sessions): align atomic spawn lineage coverage
* test(sessions): widen transcript search reconcile wait
* fix(sessions): stamp reset-created rows
* test(sessions): keep reset provenance coverage focused
* fix(sessions): journal chat-created rows
* test(ci): anchor release skill reads to repo
* test(ci): avoid cached module paths
2026-07-22 22:54:31 -04:00
Dallin Romney
19d17bc3c4
refactor(qa): canonicalize runtime-pair lanes ( #112603 )
2026-07-23 10:06:12 +09:00
Dallin Romney
74cc99f2d1
fix(release): publish extended-stable Docker channels safely ( #112494 )
...
* fix(release): isolate extended-stable Docker aliases
* fix(release): harden Docker channel promotion
* docs(release): pin Docker policy into tagged tree
* refactor(release): isolate Docker channel promotion
* fix(release): queue Docker publications
* fix(release): harden docker channel promotion
* docs(release): tighten extended-stable guidance
* fix(release): promote Docker aliases after verification
* chore(release): format maintainer instructions
* refactor(release): separate release version policy
* docs(release): clarify extended-stable gateway scope
* fix(release): harden Docker channel promotion
2026-07-23 10:03:11 +09:00
Peter Steinberger
79d4e4a3ad
fix(release): accept complete core tarball manifests ( #112813 )
...
* fix(release): consume complete core tarball manifest
* fix(release): declare core tarball selector
2026-07-22 21:02:47 -04:00
Peter Steinberger
8ef067a216
refactor(config): move Discord and Teams schemas to plugins ( #112812 )
...
* refactor(config): move Discord and Teams schemas to plugins
* refactor(discord): privatize config schema fragments
* style(discord): format private schema fragments
2026-07-22 21:02:12 -04:00
Dallin Romney
14654922d4
fix(release): support frozen gateway stop commands ( #112582 )
...
* fix(release): support frozen gateway stop commands
* fix(release): import gateway stop capability helper
* fix(release): fail closed on gateway stop capability probe
2026-07-22 18:00:37 -07:00
Peter Steinberger
e085b379f8
refactor(agents): thread plugin metadata snapshots per turn ( #112769 )
...
* refactor(agents): thread plugin metadata snapshots per turn
* fix(agents): validate threaded plugin metadata
* fix(agents): preserve prepared metadata fallbacks
* fix(commands): preserve snapshot auth refs typing
* fix(commands): use indexed synthetic auth refs
* test(auto-reply): isolate completed goal session store
* test(agents): serialize embedded runner harness files
* test(auto-reply): serialize reply runtime files
* test(auto-reply): isolate goal context admission
* test(auto-reply): allow persisted goal admission under CI load
* test(agents): allow embedded harness warmup under CI load
2026-07-22 19:33:45 -04:00
Peter Steinberger
637afd0114
refactor(config): move Slack and Signal schemas to plugins ( #112792 )
...
* refactor(config): move Slack and Signal schemas to plugins
* build(signal): declare schema runtime dependency
* build(signal): refresh plugin shrinkwrap
2026-07-22 19:14:56 -04:00
Peter Steinberger
62c148d7d0
refactor(e2e): remove stale proof scripts ( #112776 )
2026-07-22 15:31:36 -07:00
Peter Steinberger
e194979830
test: table-drive policy guard cases ( #112759 )
2026-07-22 14:38:26 -07:00