Commit graph

16 commits

Author SHA1 Message Date
Peter Steinberger
fa22ec4702
fix(workboard): archived worker dispatch consumes retries (#176939)
* fix(workboard): archived worker dispatch consumes retries

* fix(workboard): use the canonical warning log level
2026-10-19 23:46:06 -07:00
Peter Steinberger
c4e70bc82a
fix(workboard): keep CLI changes visible to the running Gateway (#168457)
* feat(plugin-sdk): expose local state owner routing for CLI commands

* fix(workboard): route CLI mutations through the active Gateway

* fix(workboard): preserve dispatch without explicit parameters

* fix(plugin-sdk): type and account for the CLI ownership surface

* test(workboard): preserve state owner module exports

* test(workboard): prune the retired config mock allowance

* test(workboard): load plugin owners through public test surfaces

* test(workboard): type owner routing fixtures precisely

* test(workboard): type the facade export as a standalone function

* fix(workboard): report empty worker results for offline dispatch

* test(workboard): exercise Gateway lifecycle through RPC
2026-10-10 08:22:44 -07:00
Peter Steinberger
1d76f57d4b
improve: reduce SQLite work during chat turns (#167965)
* perf(sqlite): checkpoint shared admission across workers (WIP)

* test(sqlite): align worker fixtures with shared admission

* perf(sqlite): avoid repeated quarantine reads in retained scopes

* docs(sqlite): define single-owner database freshness

* perf(sqlite): replace runtime probes with writer publications

Checkpoint the single-owner cutover, cache invalidation regressions, and request-owned read transactions. Keep explicit migration verification. Paired measurement and final validation are still in progress.

* test(sqlite): align first-admission coverage and deletion fixtures

Route retained existing-state writer coverage through the host-owned worker project, preserve first-admission incompatibility refusal, and match the final deletion-authority contract. Keep the gateway test under its inherited line count by moving existing pure fixture helpers. Regenerate assertion allowances without adding production assertions.

* build(sqlite): include shared admission in compiled wrappers

Include the thirteen transitive admission modules required by the native wrapper import-closure proof. Carry the existing birthtime through the worker validation fixture to preserve its physical-file identity.

* test(sqlite): use the canonical settlement owner in publication proof

* fix(sqlite): complete writer custody and snapshot cache lifetimes

Preserve snapshot-local reuse without freshness queries, publish dedicated archive writes, and remove Workboard polling. Retain native authority and settlement boundaries. Checkpoint reviewed corrections and focused regression repairs; final integrated proof remains in progress.

* test(sqlite): exercise worker failure through its owner

* fix(sqlite): retain integrity and worker admission through cleanup

* fix(sqlite): preserve cleanup and explicit maintenance validation

* fix(sqlite): retain revocation and scoped worker admission

* test(sqlite): preserve reader coverage in existing fixture owners

* fix(sqlite): preserve cache receipts across sibling writers and temp DDL

* fix(sqlite): preserve migration and read-cache owners

* fix(workboard): type the replacement card-list promise

* fix(sqlite): preserve maintenance and bootstrap admission

* fix(sqlite): keep temporary trigger admission connection-local

* fix(sqlite): preserve unavailable discovery target isolation

* style(docs): normalize merged worker access spacing

* test(state): include admission lifecycle in heartbeat diagnostics mock

* test(sqlite): align CI fixtures with single-owner receipts

* fix(sqlite): avoid invalidating search on empty maintenance

* test(sqlite): exercise managed writers at authority boundaries

* test(auth): preserve staging refusal contract

* fix(sqlite): name bounded cleanup row identifiers explicitly

* refactor(sqlite): consolidate admission and scope bookkeeping

* test(sqlite): admit competing writers before grant races

* fix(sessions): preserve typed reclamation worker transport calls

* fix(state): use owned read snapshots for migration witnesses

Adapt the migration-preservation caller added on main to the single-owner SQLite cutover. Preserve a consistent multi-statement snapshot without restoring data_version probing.

* style(sessions): sort archive worker relay import
2026-10-10 06:54:33 -07:00
Leon-SK668
6ae2aee12e
fix(workboard): explain dispatch workspace refusals (#167427)
Some checks are pending
CodeQL / Security High (channel-runtime-boundary) (push) Waiting to run
CodeQL / Security High (core-auth-secrets) (push) Waiting to run
CodeQL / Security High (mcp-process-tool-boundary) (push) Waiting to run
CodeQL / Security High (network-ssrf-boundary) (push) Waiting to run
CodeQL / Security High (plugin-trust-boundary) (push) Waiting to run
CodeQL / Security High (process-exec-boundary) (push) Waiting to run
Control UI Locale Refresh / resolve-base (push) Waiting to run
Control UI Locale Refresh / Verify generated PR App permissions (push) Blocked by required conditions
Control UI Locale Refresh / Refresh (push) Blocked by required conditions
Control UI Locale Refresh / Commit control UI locale refresh (push) Blocked by required conditions
Docs Sync Publish Repo / sync-publish-repo (push) Waiting to run
Docs / docs (push) Waiting to run
Node Runtime Conformance / scope (push) Waiting to run
Node Runtime Conformance / TypeScript contracts (push) Blocked by required conditions
Node Runtime Conformance / Rust workspace (push) Blocked by required conditions
Plugin Init Scaffold Validation / scope (push) Waiting to run
Plugin Init Scaffold Validation / Validate provider scaffold (push) Blocked by required conditions
Plugin NPM Release / preview_plugins_npm (push) Waiting to run
Plugin NPM Release / Validate release publish approval (push) Blocked by required conditions
Plugin NPM Release / preview_plugin_pack (push) Blocked by required conditions
Plugin NPM Release / Preflight plugin npm package () (push) Blocked by required conditions
Plugin NPM Release / Seal prepared plugin npm release (push) Blocked by required conditions
Plugin NPM Release / approve_plugins_npm_release (push) Blocked by required conditions
Plugin NPM Release / Trusted publisher OIDC exchange (push) Blocked by required conditions
Plugin NPM Release / Publish plugin npm package () (push) Blocked by required conditions
Plugin NPM Release / verify_plugins_npm (push) Blocked by required conditions
Vitest Cache Warm / dependencies (push) Waiting to run
Vitest Cache Warm / warm (push) Waiting to run
Workflow Sanity / actionlint (push) Waiting to run
Workflow Sanity / generated-doc-baselines (push) Waiting to run
When `openclaw workboard dispatch` refuses a card whose workspace is outside the caller's allowed workspaces, name the card and point to `--admin` (which needs operator.admin) instead of a bare failure count. Authorization behavior is unchanged.

Fixes #167346.

Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-10-08 15:12:20 -07:00
Peter Steinberger
4a92afbff9
fix(workboard): keep column edits on rename and validate list status (#167348)
* fix(workboard): reject invalid list status filters

Reject mistyped status filters with allowed choices instead of silently reporting an empty board. Reuse Commander choices through the existing command instance. Reproduced through the isolated CLI; the owner regression fails before and passes after the fix.

* fix(workboard): preserve columns when renaming session boards

Track the original session-board draft alongside appearance fields and publish columns only when edited. A metadata-only save no longer overwrites concurrent column changes. Proven with two real browser tabs, a failing-before/passing-after owner regression, synthetic screenshots, related suites and changed checks. Refresh generated Control UI asset references.

* test(workboard): cover fallback-only session board saves

The fallback flag lives on each column, and the rename dirty check compares
the full structuredClone'd column snapshot, so a fallback-only edit is still
published. Pin that behavior next to the two-tab rename regression.

* chore(workboard): refresh Control UI asset references

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-10-08 10:39:35 -07:00
Peter Steinberger
6652f7eac8
refactor: remove Tasks and TaskFlow runtime (#159179)
Remove Tasks and TaskFlow runtime, APIs, CLI, SDK surfaces and panels after the Cron, session, native execution and media completion ownership cutovers. Preserve stored rows and import provable legacy native assignments through Doctor; ambiguous ownership stays untouched with a warning.

Follows #158221, #158217, #158225, #158222, #158702 and #158776. Related: #156532. Task-specific public APIs retire immediately; retained responsibilities use their existing owners.

Maintainer-authorized administrative landing after full CI run 36312986498 attempt 2 passed on 274595e2, with subsequent actual conflicts reviewed and focused checks passing. Current PR CI preflight hits the 64 KiB changed-path metadata limit before tests (run 36335042695); its duplicate security-review status mirrors that planning failure. Review and scoped proof are recorded in the PR. Published 9.4 native import is proven; remaining native completion and 9.4 rollback witnesses are explicitly unproven.
2026-09-27 10:40:29 -07:00
Ayaan Zaidi
c7ee70c52d
fix(workboard): preserve ready-card history on idle dispatch (#149160)
## What Problem This Solves

Every ready card gains dispatch history even when no worker starts. Thanks to @gregbond for measuring the repeated stamps. Closes #143842.

## Why This Change Was Made

Remove the scan-only write and its unused helper. This state has one writer: card mutation records actual maintenance, claim and execution transitions.

## User Impact

Idle scans preserve ready-card history, waiting age and edit versions. Real launches still record their launch state, attempts and execution events.

## Compatibility

Existing dispatch counters, timestamps and events remain readable and unchanged. No schema, stored shape, ledger or retention change. Both dispatch guides describe this behavior. Legacy notification repair from #120999 still runs during real metadata updates.

## Evidence

Three `openclaw workboard dispatch --board intake-proof --max-starts 1 --json` calls against an isolated Gateway: zero starts, six added events before; zero card changes after. Releasing capacity records an accepted launch and reaches the local provider. Expired-claim and dependency-promotion controls pass.

## Consumers

CLI, dashboard history, waiting diagnostics and capacity explanations retain their contracts. Idle scans no longer reset waiting age.

## Invalidation

Real card mutations still publish changes; idle scans publish none.

## Tests

Registered regression fails on main and passes with the fix. All 322 owner and sibling tests pass on a fresh merge. Type, lint, formatting and static checks pass.

Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-09-15 20:46:50 +05:30
Vincent Koc
118555858e
docs: STE structural cleanup for gateway, cli and concepts (46 audit findings) (#143931)
* docs(cli): apply STE structural fixes to small CLI reference pages

* docs(cli): STE structural fixes for cron and browser reference

* docs(cli): STE structural fixes for migrate and triage reference

* docs(concepts): STE structural fixes for architecture, agent, presence, mantis runbook

* docs(concepts): STE structural fixes for session-state and models

* docs(concepts): STE structural fixes for user-model

* docs(concepts): STE structural fixes for mantis

* docs(concepts): STE fixes and person-noun normalization for multi-user

* docs(concepts): STE fixes and failover term normalization for model-failover

* docs(concepts): define Mantis runbook terms

* docs(gateway): STE structural fixes for logging, local-models, tailscale, multiple-gateways

* docs(gateway): normalize Configuration reference naming and STE fixes

* docs(gateway): STE fixes and workspace term normalization for openshell

* docs(gateway): split semicolon-joined sentences in operator-scopes, restart-recovery, heartbeat, cli-backends

* docs(gateway): finish semicolon splits in gateway reference pages

* docs(gateway): normalize Gateway, heartbeat, tombstone and profile terminology

* docs(gateway): split remaining multi-clause sentences in heartbeat and cli-backends

* docs(gateway): split semicolon in heartbeat transcript-markers paragraph from main

---------

Co-authored-by: Vincent Koc <vincent@openclaw.org>
2026-09-10 18:50:32 +08:00
Peter Steinberger
d685037c6e
fix(workboard): avoid duplicate proof entries on completion (#111324)
* fix(workboard): resolve duplicate completion proof

* fix(workboard): import proof cap from constants

* fix(workboard): correlate completion proof by id

* fix(workboard): reuse terminal completion proof

* fix(workboard): retain correlated proof under budget
2026-07-19 03:00:37 -07:00
ruizcrp
40cf6c51b3
feat(workboard): add manual card movement surfaces (#96554)
Adds consistent manual Workboard movement across CLI, slash commands, and agent tools while preserving operator authority and agent claim isolation.

Co-authored-by: Ross I4JU <ross@i4ju.ch>
2026-07-13 23:01:06 -07:00
Peter Steinberger
0ecbbe2382
fix(workboard): keep dispatch inside caller workspace authority (#107087)
* fix(workboard): inherit caller workspace authority

* docs(plugin-sdk): refresh API baseline

* fix(workboard): pin restricted worker authority

* fix(workboard): avoid host git for restricted dispatch

* refactor(worktrees): extract owner matching

* refactor(workboard): reuse sdk workspace helpers

* fix(workboard): narrow cleanup owner

* refactor(workboard): clarify claim value handling

* fix(workboard): inherit caller workspace authority

* test(worktrees): use managed temp directories

* chore: keep release notes in PR body

* fix(workboard): keep internal authority helpers private
2026-07-13 21:36:26 -07:00
Souvik Ghosh
da629045d9
feat(workboard): expose dispatch --max-starts to raise the per-pass start cap (#100174)
* feat(workboard): expose configurable dispatch cap

Co-authored-by: Souvik Ghosh <gshsouvik01@gmail.com>

* refactor(workboard): split gateway dispatch helpers

* docs(changelog): note Workboard dispatch cap

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
Co-authored-by: Souvik Ghosh <gshsouvik01@gmail.com>
2026-07-13 08:58:08 -07:00
Peter Steinberger
f7d7148cf0
docs: rewrite published docs grounded in current source (#100142)
Source-grounded rewrite of 529 published docs pages with per-unit information-loss verification: 1,713 factual corrections cited to src/**, generated surfaces regenerated, frontmatter titles preserved for i18n, release notes pages untouched. All docs gates green.

Closes #100141
2026-07-05 00:32:47 -04:00
Wynne668
d15e89a83e
fix(workboard): hide archived cards in CLI list by default (#94562)
* fix(workboard): hide archived cards in CLI list by default

The `openclaw workboard list` CLI printed soft-archived cards, while the
`workboard_list` agent tool and the `/workboard list` command both hide
cards with `metadata.archivedAt` set unless archives are requested. Users
who archived cards still saw them in CLI output and assumed archive failed.

Filter archived cards by default in the CLI list handler and add an
`--include-archived` flag mirroring the tool's `includeArchived` option, so
all three list surfaces share one default. Docs updated to match.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* fix(workboard): preserve json list archive visibility

* fix(workboard): preserve json list archive visibility

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-06-24 10:57:06 +08:00
Vincent Koc
82d24b26ea
fix(workboard): wire task-backed board runs
Summary:
- remove the leftover Workboard mini-game/prototype surface
- wire autonomous Workboard card starts through Gateway task-backed agent runs
- reconcile card task/session lifecycle for starts, stops, stale tasks, reassignment, and default-agent sessions
- clarify dispatch summary copy and admin-only model override behavior

Verification:
- autoreview clean: no accepted/actionable findings
- targeted Workboard/UI Vitest: 72 tests passed
- Workboard extension Vitest: 9 tests passed
- UI build, docs list, docs format, diff check, and focused oxlint passed
- PR CI checks: 50 ok, 0 attention
- Testbox tbx_01kt07mk5sjyj2whjq2sc967hg: pnpm verify check phase passed; broad test phase exposed unrelated latest-main failures/stalls in memory, Codex app-server, provider timeout, command daemon env, Telegram worker OOM, and gateway-client timeout suites
2026-06-01 01:41:21 +01:00
Peter Steinberger
ed46e62bcc
feat(workboard): add worker dispatch CLI
* feat(workboard): add worker dispatch CLI

* fix(workboard): avoid new unsafe assertions

* fix(workboard): keep remote dispatch failures remote
2026-05-31 10:31:56 +01:00