542 Commits

Author SHA1 Message Date
Peter Steinberger e0cd23d81f docs(agents): require screenshot/video proof for UI-visible and gateway-behavior changes (#122920)
Adds hard policy: UI-visible changes need before/after screenshots or a
short video as PR evidence; gateway-behavior changes provable in the
Control UI need an isolated dev-gateway live run with a recorded video.
Documents the verified video upload flow (user-attachments endpoint,
mp4/webm both served) and the bare-URL embed rule for GitHub's player.
2026-08-12 19:32:43 -07:00
Josh Avant 562391b9af feat(audit): explain denied operator approvals (#119815)
* Audit: add durable decision receipts

* Audit: route generic decision facts through writer

* Audit: satisfy strict decision count typing

* Test: align decision writer type coverage

* Refactor: isolate decision receipt projection

* Fix: preserve ambiguous approval correlation

* Fix decision coverage across pages

* Fix approval coverage across corrupt pages

* Fix decision summaries across retention and paging

* Remove superseded decision fact count path

* Keep session-derived approval links conservative

* Test decision paging at owner boundary

* Audit: bind approval receipts to exact execution

* Test: keep decision receipt coverage focused

* docs(agents): preserve decision receipt ownership

* Docs: refresh Plugin SDK split baselines

* Docs: require opt-in for future decision facts

* Fix: bound decision receipt inspection
2026-08-12 05:23:29 -05:00
Josh Avant 3b01ea7905 fix(audit): show authenticated users for Gateway runs (#122484)
* fix(audit): show authenticated users for Gateway runs

* fix(audit): keep profile labels out of sessions

* test(qa): verify session label retention at storage

* fix(sessions): preserve canonical profile ownership

* test(qa): require full identity inspection proof

* docs(agents): preserve execution identity ownership boundary
2026-08-12 08:50:37 +00:00
Josh Avant 35d764076e fix(audit): ignore inherited execution identity evidence (#122418)
* fix(audit): require owned admission data

* docs(agents): preserve owned admission invariant
2026-08-11 23:19:17 -05:00
joshavant 8c1880a54a docs(agents): preserve invoker evidence invariant 2026-08-11 21:52:21 -05:00
joshavant 8646c19a25 docs(agents): preserve execution identity audit invariants 2026-08-11 00:03:25 -05:00
Josh Avant 73a9eed95b refactor(audit): add canonical admitted-run context (#120534)
* feat(audit): carry canonical admitted execution context

* fix(agents): preserve admitted context across retries

* fix(worker): fence legacy launch dialect

* test(gateway): track approval temp dirs

* fix(plugin-sdk): preserve harness attempt compatibility

* fix: close delegated run authority at owner boundaries

* fix: internalize delegated authority validators

* refactor: split delegated authority proof surfaces

* refactor: centralize command admission identity

* test: claim runtime tool authority

* fix(gateway): keep lifecycle cleanup within static budgets

* fix(agents): revalidate harness policy authority

* fix(agents): fence awaited approval capability results

* test(copilot): supply required harness capability fixtures

* fix(agent): preserve scoped embedded run admission

* fix(agent): preserve keyless and worker authority

* test(agent): bind incomplete-turn authority

* docs: preserve execution authority invariants

* chore(plugin-sdk): regenerate API baseline

* fix(gateway): notify pending claim closure

* fix(gateway): revalidate delegated tool authority

* fix(plugin-sdk): keep source guard internal

* fix: close delegated authority races

* fix: revalidate delegated side effects

* fix: close harness authority projection gaps

* fix: align authority integration types

* fix: isolate settled harness finalization

* fix: fence recovery identity finalization

* fix: preserve committed session worktrees

* fix: preserve worker placement agent identity

* fix: fence active harness tool work

* fix(plugins): restore embedded run admission owner

* chore(plugin-sdk): compose integrated surface budgets

* fix(copilot): keep finalization attempt type internal

* fix(plugins): complete admission owner type imports

* test(harness): use settled finalization attempt shape

* fix(security): retain exact side-run and approval authority

* fix(security): preserve protected authority through terminal sweep

* fix(agents): follow moved recovery store owner

* fix(ci): align integrated authority owners with gates

* fix(plugins): distinguish embedded agent adapter export

* chore(plugin-sdk): regenerate API baseline after rolling integration

* refactor(gateway): keep session authority within owner budgets

* fix(gateway): keep session helpers private

* docs(plugin-sdk): name the V2 parameter subpath

* chore(integration): reconcile worker and SDK surfaces

* docs(plugin-sdk): require the V2 host API floor

* chore(plugin-sdk): regenerate after proxy-auth integration
2026-08-10 23:15:20 -05:00
Dallin Romney a808b0d96a docs(release): reconcile stable maturity issue signals (#120515)
* docs(release): reconcile stable maturity issue signals

* docs(release): preserve stable label audit context

* docs(release): reconcile open labelled fixes
2026-08-10 16:13:34 +08:00
Peter Steinberger a8714eea9a docs(agents): add test-audit authoring gate and net-neutral bug-fix doctrine
- Rename openclaw-test-audit skill to test-audit; add an authoring-gate mode
  invoked whenever tests are written, not only during sweeps.
- Repair Doctrine: capture the failing repro before editing; regression tests
  must fail on pre-fix code. Bug fixes default to net <=0 production LOC via
  the refactor that absorbs the fix, not a bolted-on guard.
- ClawSweeper policy: production-vs-test LOC reviewMetrics entry is now
  unconditional for code PRs, counted with judgment; net-positive bug-fix
  deltas become risks findings with bestSolution naming the absorbing refactor.
2026-08-09 19:24:36 -07:00
Shakker cd5ec0027c docs: keep maintainer leads hands-on (#121225) 2026-08-09 21:25:34 +01:00
Peter Steinberger a3e79236aa fix(state): preserve rollback across additive columns (#121075)
* fix(state): tolerate compatible additive columns

Preserve same-version rollback compatibility for bare nullable SQLite columns while continuing to reject constrained schema drift. Treat the historical shared_host CHECK definition as a named compatibility boundary.\n\nRefs #121061

* fix(state): keep additive registry internal

* test(state): keep constrained preflight fixture
2026-08-09 08:29:19 -07:00
Peter Steinberger c70aee247e refactor(scripts): migrate JavaScript tools to TypeScript (#121005)
* refactor(scripts): migrate JavaScript tools to TypeScript

* fix(ci): keep changed-scope preflight zero-install

* fix(ci): preserve zero-install script owners

* fix(ci): complete script migration follow-through

* fix(release): keep stable closeout zero-install

* fix(scripts): preserve standalone execution boundaries

* fix(scripts): repair standalone loader boundaries

* fix(scripts): normalize gateway observation ids

* fix(scripts): keep Docker packager standalone

* test(scripts): preserve rebase cleanup helpers

* test(sessions): use tracked temp directory
2026-08-09 07:21:35 -07:00
Peter Steinberger 428c00a0a2 docs: prefer token-based user-attachments upload for PR/issue media
Replace the artifact-store-first guidance with the direct
uploads.github.com/user-attachments endpoint (same CDN as drag-and-drop,
works with gh auth token); Crabbox artifact publishing stays as the
fallback for non-media artifacts or endpoint failure.
2026-08-08 20:05:37 -07:00
Peter Steinberger 7492f6937c docs(agents): replace exact-head re-review gate with 12-hour review window 2026-08-08 10:50:18 -07:00
Peter Steinberger 00a5db443a refactor: remove obsolete commit helper 2026-08-06 18:10:10 -07:00
Ayaan Zaidi ed8d1e71d1 docs(agents): require exact-head ClawSweeper re-review after post-review pushes (#119069)
The no-round-trip clause from #111385 covered the unchanged-head case; once rank-up moves are applied the old comment attests stale code. Head unchanged: land without re-review, as before. Head changed after review: one exact-head re-review, land when no actionable finding and no remaining rank-up move.
2026-08-04 08:22:03 +05:30
Peter Steinberger 0839f12ccd docs: add pathfinder rule, LOC review metric, and test-duplication clause to AGENTS.md (#118330) 2026-08-02 18:11:29 -07:00
Peter Steinberger 577f2f45fb docs(agents): drop stale packages/ scoped-guide reference 2026-08-01 22:18:00 -07:00
Peter Steinberger 4669db230a docs(agents): require architectural root-cause repairs 2026-07-31 11:06:32 -07:00
Ayaan Zaidi 73ab157e6f docs(agents): calibrate defaults ambition and security tradeoff in Product Doctrine 2026-07-30 08:44:40 +09:00
Peter Steinberger 3f4d65a672 feat(harness): report copilot code-mode engagement on the attempt result (#115913)
* feat(harness): report copilot code-mode engagement on the attempt result

* test(copilot): prove code-mode engagement through the production tool bridge

* docs: describe the normalized codeModeEngaged value for native harnesses
2026-07-29 14:44:15 -04:00
Ayaan Zaidi 987522fdcc docs(vision,agents): layer calibration, interface-on-demand, telemetry opt-in, whole-document guidance rules 2026-07-29 20:13:45 +09:00
Ayaan Zaidi e92da4c8ba docs(agents): reword imported review rules in repo voice 2026-07-29 19:54:37 +09:00
Ayaan Zaidi 9182999eb6 docs(agents): add context-budget, tool-description, cache-invalidation, and review-premise rules 2026-07-29 19:54:37 +09:00
Ayaan Zaidi 344a8e48df docs(agents): mock-gateway proof satisfies gate without discouraging live proof 2026-07-29 19:54:37 +09:00
Ayaan Zaidi c9f8c05598 docs(agents): add vitest in-flight edit rule and mock-gateway proof recipe 2026-07-29 19:54:37 +09:00
Ayaan Zaidi 620bf5a9c0 docs(agents): restructure root AGENTS.md around product doctrine and deduped policy 2026-07-29 19:54:37 +09:00
Vincent Koc 25c375e47f refactor: reuse canonical record guards (#115810)
* docs(agents): standardize canonical record guards

* refactor(model-catalog): use canonical record guard

* refactor(scripts): use canonical record guard

* refactor(ui): use canonical record guard

* refactor(codex): use canonical record guard

* refactor(agents): use canonical record guard

* refactor(sessions): use canonical record guard

* refactor(doctor): use canonical record guard

* refactor(infra): use canonical record guard
2026-07-29 11:43:36 +02:00
Peter Steinberger 1755087bca docs: add grep-discoverability naming rules for agents 2026-07-27 16:27:30 -07:00
Peter Steinberger abfe7c64a7 docs(install): recommend Node 26 as the OpenClaw runtime (#114399)
* docs(install): recommend Node 26; CI/installer stay on Node 24 for now

* feat(cli): point unsupported-runtime nvm hint at Node 26

* feat(install): provision Node 26 by default (brew mainline node formula, NodeSource 26.x, portable win zip)

* test(install): align installer tests with Node 26 provisioning defaults

* docs(install): state per-platform Node provisioning accurately
2026-07-27 04:32:21 -04:00
Peter Steinberger d4ed57bc88 docs(agents): note null-delimited file lists for tool invocations 2026-07-27 00:29:16 -07:00
Peter Steinberger 94923a1688 docs(agents): add ops telegraph notes for CI dispatch, release logs, and shared checkouts (#114307) 2026-07-27 01:17:38 -04:00
Peter Steinberger f6131a4fbf build(deps): remove npm shrinkwrap; mirror pnpm lock into transient package locks (#114006)
* build(deps): remove npm shrinkwrap; mirror pnpm lock into transient package locks

npm 12 removed shrinkwrap (command + tarball/root loading). Delete all 82
committed npm-shrinkwrap.json files and stop publishing lockfiles; keep
pnpm-lock.yaml as the single reviewed dependency boundary. The generator
becomes scripts/generate-npm-package-lock.mjs and feeds plugin bundling via
a transient package-lock.json + npm ci (works on npm 11 and 12). Tarball
validation treats the published 2026.7.2 beta train as a shrinkwrap
transition; self-update npm detection now uses install topology instead of
the shipped shrinkwrap.

* fix(deps): repair lint, deadcode, and test-type lanes for the npm 12 migration

- sort integrity comparisons with an explicit comparator (oxlint)
- keep resolveBunGlobalNodeModules module-local (knip unused-export gate)
- model npm pack --json as npm<=11 array / npm 12 name-keyed object
- default calver destructuring in the tarball test fixture
2026-07-26 01:29:55 -04: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
Peter Steinberger 8d1267dbc1 docs(agents): spell out script declaration contract and fail-loud wrapper rule (#112543)
Codex readers only reliably see the root AGENTS.md, so the .d.mts
declaration contract, the wrapper fail-loud convention, and the
stale-node_modules crash signature move from tribal knowledge into the
root file's Commands section.
2026-07-21 23:13:18 -07:00
Peter Steinberger 4e008cd713 feat(ios): adopt Talk voice sessions (#111369)
* feat(ios): adopt Talk voice sessions

* docs(agents): fix unrelated red-main breakage in the landing PR

* chore(i18n): translate Talk voice-session strings across native locales
2026-07-19 06:28:18 -07:00
clawsweeper[bot] 431482ca3e docs(agents): require reading ClawSweeper rank-up moves before landing PRs (#111385)
Co-authored-by: Molty <molty@openclaw.ai>
2026-07-19 05:37:44 -07:00
Peter Steinberger fa9ae68c34 docs(agents): draft-then-ready PR creation prevents the merge-ref CI race (#110970) 2026-07-18 22:41:10 +01:00
Peter Steinberger 6d5ebac0b1 docs(agents): additive SQLite surfaces skip schema-version bumps 2026-07-18 10:27:27 -07:00
Peter Steinberger a54a292d62 test(ui): fix Node 25+ localStorage crashes in jsdom suites; document PR-open CI drops (#110812)
* test(ui): shim dead Node 25+ WebStorage localStorage in jsdom test setup

Node 25+ ships a default-on global localStorage that is dead without
--localstorage-file (undefined on 26.5; throwing or inert elsewhere). It
shadows jsdom's Storage during vitest global population, so storage-touching
UI tests crash on newer local Node while Linux CI (Node 24) passes — six
files failed locally on Node 26.5. The shared setup now capability-probes
(round-trip, throw-safe), prefers jsdom's own window Storage when only the
global alias is dead, and otherwise installs one in-memory Storage on both
window and globalThis.

Also documents the PR-open CI drop pattern in AGENTS.md: fresh PRs race
GitHub's merge-ref computation and the open-event CI run can drop or die
as startup_failure/BuildFailed (not rerunnable); verify attach and
close/reopen to re-fire.

* fix(test): drop unnecessary String() conversions in localStorage shim
2026-07-18 18:19:44 +01:00
Peter Steinberger 2ca4d92f1a docs: live-test gateway isolation policy (session-owned dev gateway, operator approval for real instances) 2026-07-17 17:55:33 -07:00
Peter Steinberger cc0b8479d9 docs: require approval for SQLite schema bumps 2026-07-17 06:11:51 +01:00
Peter Steinberger 523c07d20e docs(agents): add correct-but-pragmatic code guidance
Two Code-section bullets: correctness on real inputs is mandatory but
over-engineering for imagined ones is a defect; extremely unlikely edge
cases are tradable for real simplification when the tradeoff is named.
2026-07-17 02:24:41 +01:00
Peter Steinberger 333409908d docs: define SecretRef failure isolation policy (#109430) 2026-07-16 17:05:20 -07:00
Peter Steinberger 442d6fc94a docs(agents): prefer remote testboxes with trusted local fallback when unavailable 2026-07-16 21:52:58 +01:00
Peter Steinberger 6dc3e6055f docs(agents): note OPENCLAW_BUILD_PRIVATE_QA=1 to build QA Lab/qa-channel into dist 2026-07-16 13:40:46 -07:00
Peter Steinberger c57d1af958 fix(qa): wait for Matrix config reload (#108214) 2026-07-15 03:31:59 -07:00
Peter Steinberger 40e245856e fix: synchronize gateway dispatch tests before invocation (#108138)
* test(gateway): capture dispatch baseline before invocation

* docs(agents): guard local PR token identity
2026-07-15 01:22:23 -07:00
Peter Steinberger 4f71a2855e test(auto-reply): install channel metadata for group prompt cases (#108113) 2026-07-15 00:43:03 -07:00
Peter Steinberger d801f2e68c docs: document CI rerun attempt selection (#108095) 2026-07-15 00:12:41 -07:00