Peter Steinberger
0135c6bf89
test: cover Codex version contracts on dependency bumps ( #110958 )
2026-07-18 22:09:50 +01:00
Shakker
643476f24d
fix: derive generated asset watch exclusions
2026-07-18 06:42:27 +01:00
Shakker
b118e9e913
fix: preserve generated asset mtimes
2026-07-18 06:42:27 +01:00
Peter Steinberger
700a089d3b
ci(release): tolerate historical script contracts ( #110365 )
...
* ci(release): tolerate historical script contracts
* ci: escape stalled macOS retry capacity
* ci: freeze exact release-gate merge snapshot
2026-07-18 06:31:47 +01:00
Dallin Romney
a9dc393f7e
test(qa): prove Codex auth product migration ( #109291 )
2026-07-17 16:10:23 -07:00
Peter Steinberger
241143262a
fix(ci): script-only changes cold-start every Node job ( #110158 )
...
* fix(ci): keep sticky deps warm across script edits
* fix(ci): register dependency fingerprint entrypoint
* fix(ci): distinguish missing fingerprint inputs
* fix(ci): invalidate delegated workspace scripts
* fix(ci): harden cold install recovery
* fix(docs): escape release gate placeholder
* fix(ci): reject unaudited dependency hooks
2026-07-17 23:05:16 +01:00
Peter Steinberger
6ac15970a7
feat(onboarding): unified empty-state with provider icons, websites, and recommended installs ( #109681 )
...
* feat(onboarding): unify setup recommendations
* fix(control-ui): proxy model setup icons
* fix(onboarding): refresh landing artifacts
* chore(ui): sync translated i18n catalogs
* chore(ui): keep generated locale artifacts on the refresh workflow
2026-07-17 01:01:06 -07:00
Peter Steinberger
6b6bf3a34b
fix(ci): repair Mantis desktop scenario dispatch ( #109505 )
2026-07-16 18:50:57 -07:00
Peter Steinberger
067635cb51
fix(ui): prevent generated locale rebase conflicts ( #109393 )
...
* ci(ui): make locale refresh bot-owned
* test(ui): keep locale gate coverage scoped
* fix(ci): preserve generated PR merge policy
* fix(ci): wait for generated PR head convergence
* fix(ci): retry transient guard API failures
* fix(ci): enforce locale isolation across CI events
* fix(ci): harden generated PR publication
* fix(ci): validate release gate merge tree
* fix(ci): allow trusted main locale output
2026-07-16 18:48:20 -07:00
Peter Steinberger
85d375c1b2
chore: add live tool-surface benchmark ( #109374 )
...
* test(agents): add tool-surface live benchmark
* chore(agents): narrow live benchmark exports
* fix(agents): pin live bench models
2026-07-16 17:20:47 -07:00
Shakker
107820b2bd
fix: prevent generated asset watch loops
2026-07-16 22:48:03 +01:00
Peter Steinberger
ce919593bf
fix(ui): unblock rebases with generated i18n conflicts ( #109279 )
...
* fix(ui): automate i18n conflict resolution
* fix(ui): preserve i18n cache merge intent
* fix(ui): restrict resolver to generated locales
* fix(ui): prune stale locales before baseline
* fix(ui): handle removed locale conflicts
2026-07-16 12:52:28 -07:00
Peter Steinberger
05dd921016
fix: shard OpenAI transport stream tests ( #109181 )
...
* test(agents): shard OpenAI transport stream suites
* chore(lint): transfer transport test baselines
2026-07-16 09:43:07 -07:00
Peter Steinberger
46c3dba537
chore: gate releases on Codex progress follow-through ( #108828 )
...
* test(release): gate Codex progress follow-through
* test(release): register Codex follow-through entry
* test(release): harden Codex follow-through proof
* test(release): preserve legacy Codex follow-through proof
2026-07-16 09:01:00 -07:00
Peter Steinberger
89a16c93b5
fix(ci): give vitest no-output retries the full watchdog window
...
Shards that pin a short no-output timeout (agents-core stripes) die fast
on the known warm-cache stall, but a cold Vitest module cache makes the
same imports legitimately silent for minutes - the in-job retry then
re-dies at the short limit without running a single test (observed 4x
on agents-core-runner-cli-2 today). Raise the retry attempt's window to
the 300s watchdog floor while keeping the fast first kill.
2026-07-16 16:42:01 +01:00
Sash Zats
0960d07d8e
ci: gate PR edit automation by changed field ( #95010 )
...
* ci: gate PR edit automation by changed field
* ci: include title edits in ClawSweeper dispatch gate
* ci: refine PR edit automation gates
Co-authored-by: Sash Zats <sash@zats.io >
* test(ci): require boolean workflow matcher
Co-authored-by: Sash Zats <sash@zats.io >
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-16 00:42:14 -07:00
Peter Steinberger
bae9752c5a
refactor(deadcode): enforce repository hard zero ( #108641 )
2026-07-15 22:40:00 -07:00
Peter Steinberger
6252f9b1f7
improve(ci): speed warm Node shards with sticky bind mount ( #108386 )
...
* perf(ci): bind sticky dependency disk into test shards
* chore(ci): restore workflow guard coverage
* perf(ci): skip pnpm install on exact sticky hits
* fix(ci): require stock layout for sticky dependencies
* perf(ci): bypass pnpm for test shard launches
* fix(ci): declare direct shard runner command
* fix(ci): bypass pnpm in warm shard builds
* fix(ci): invalidate sticky deps on pnpm config
* ci: document sticky failure guard
2026-07-15 15:41:24 -07:00
Peter Steinberger
28d30e9dae
ci: stabilize release validation tests ( #108420 )
...
* test(codex): remove turn-watch timing race
* ci: pin workflow sanity shellcheck
* ci: run workflow sanity on blacksmith
* ci: serialize workflow sanity lint
* ci: bound workflow lint stalls
* ci: cap actionlint process fanout
* ci: report stalled workflow shellcheck
* ci: stabilize release validation checks
* ci: restore release workflow shellcheck
* test: preserve codex turn watch reset proof
2026-07-15 13:22:31 -07:00
Peter Steinberger
a748634aa9
test: isolate stateful unit-fast tests ( #108334 )
2026-07-15 07:14:35 -07:00
Peter Steinberger
86085563be
test(ci): isolate flaky shared-worker suites ( #107780 )
...
* test(ci): isolate flaky shared-worker suites
* test(ci): route isolated agent targets
2026-07-14 15:00:58 -07:00
Peter Steinberger
a6a0716486
feat(setup): rename Crestodian to OpenClaw system agent
...
User-facing name is now OpenClaw (the system speaks); internal code name is
system-agent. Gateway methods crestodian.* -> openclaw.chat/openclaw.setup.*,
agent tool -> openclaw, reserved agent ids openclaw + retired crestodian.
openclaw setup routes: onboarding flags -> onboard, -m/--yes -> system agent,
bare configured interactive -> OpenClaw chat, unconfigured -> onboarding.
Hidden crestodian CLI and /crestodian TUI aliases kept; docs moved to
docs/cli/openclaw.md with redirect stub. macOS/Android strings in lockstep.
Refs #107237
2026-07-14 11:03:02 -07:00
Peter Steinberger
f81f9d8570
chore: enforce max-lines suppression ratchet ( #107315 )
...
* ci: enforce max-lines suppression ratchet
* chore: prune stale max-lines suppression
* fix: close max-lines ratchet enforcement gaps
* fix: harden max-lines ratchet checks
* fix(ci): satisfy max-lines ratchet checks
* style: format max-lines declarations
* fix(ci): match oxlint suppression grammar
* test: isolate max-lines git fixtures
* chore: prune resolved max-lines debt
* test: skip newline path fixture on Windows
* fix: harden max-lines suppression ratchet
* chore: refresh max-lines baseline
* fix: close max-lines ratchet bypasses
* fix: derive ratchet base from PR merge tree
* fix: support older Git in staged ratchet
* fix: align max-lines declarations and baseline
* chore: refresh max-lines baseline for current main
* fix: exclude generated wizard locales from max-lines
* chore: prune resolved max-lines debt
2026-07-14 09:27:02 -07:00
Peter Steinberger
69a578034f
test: isolate provider auth parity suite ( #107167 )
2026-07-14 00:16:49 -07:00
Peter Steinberger
07284af748
test: omit live-only tooling leaf shards ( #107088 )
2026-07-13 20:56:14 -07:00
Peter Steinberger
70833dab7f
ci: scope PR Node tests to changed targets ( #106633 )
...
* ci: scope PR Node tests to changed targets
* ci: bound targeted Node test plans
* test: cover changed path manifest input
* fix(ui): preserve model providers lazy boundary
* ci: cover public SDK re-export consumers
* ci: reject unresolved changed test targets
* ci: cover public SDK wrapper imports
* ci: preserve global checks in targeted plans
* docs(ci): clarify targeted boundary coverage
* test(plugins): declare computed runtime dependencies
2026-07-13 15:26:02 -07:00
Peter Steinberger
418dd85e66
improve: speed up focused test execution ( #106307 )
...
* test: speed up focused test execution
* style: format vitest config test
* test: preserve targeted watch routing
2026-07-13 04:38:05 -07:00
Peter Steinberger
4dd839c462
refactor(release): split cross-os checks ( #106309 )
2026-07-13 04:01:40 -07:00
Peter Steinberger
e01d1e85f3
ci(swift): enforce shared OpenClawKit dead-code coverage ( #105770 )
...
* ci(swift): enforce shared kit dead-code coverage
* chore(i18n): sync native source inventory
* ci(swift): install pinned iOS scan tools
2026-07-12 17:35:47 -07:00
Peter Steinberger
ef3a0cf1fc
fix(test): bound agents-core full-suite processes ( #105382 )
2026-07-12 14:11:08 +01:00
Vincent Koc
a5b70c5abe
refactor(ci): centralize changed-path facts ( #104897 )
2026-07-12 10:26:32 +08:00
Peter Steinberger
93e5b017bf
test(channels): trace-harness follow-ups — scenario names, fault vocabulary, lane sync guard ( #104653 )
2026-07-11 15:14:02 -07:00
Peter Steinberger
6bd14d9129
test(channels): extend bundled artifact parity and add plugin-shape contract suite ( #104618 )
2026-07-11 11:44:34 -07:00
Peter Steinberger
96f0983a85
fix(onboarding): skip setup for configured gateways and require inference first ( #102883 )
...
* fix(crestodian): keep onboarding RPCs restart-safe
* fix(profiles): isolate approval state migrations
* fix(crestodian): bypass configured gateway setup
* test(crestodian): type onboarding mocks
* fix(onboarding): require inference before Crestodian
* fix(onboarding): enforce verified inference handoff
* fix(macos): reset setup on gateway endpoint edits
* chore(i18n): refresh native source inventory
* fix(gateway): keep socket on request cancellation
* test(packaging): require workspace templates
* fix(onboarding): bind setup to verified inference
* fix(onboarding): align inference gate contracts
* fix(crestodian): classify concurrent policy rejection
* test(crestodian): expect registry restoration
* fix(onboarding): bind setup to configured gateways
* fix(codex): preserve startup phase deadlines
* test(crestodian): match fail-closed policy ordering
* test(onboarding): assert bound gateway handoff
* fix(codex): bind runtime resolution to spawn cwd
* test(crestodian): assert policy rejection order
* fix(cli): preserve gateway routing across restarts
* fix(macos): fail closed during gateway edits
* test(macos): cover gateway route generation races
* chore: keep release notes out of onboarding PR
* fix(ci): refresh onboarding generated checks
* style(swift): align gateway channel formatting
* fix(ci): refresh plugin SDK surface budgets
* fix(ci): resync native string inventory
* refactor(swift): split gateway channel support
* test(doctor): isolate plugin compatibility registry
* test(macos): isolate gateway onboarding fixtures
* test(macos): assert gateway lease health ordering
* fix(codex): reconcile computer-use startup changes
2026-07-11 10:25:14 -07:00
Peter Steinberger
d8bf51b462
fix(discord): single-source thread-binding default placement and guard artifact parity ( #104342 )
...
* fix(discord): single-source thread-binding default placement and guard artifact parity
* fix(tests): load thread-binding parity artifacts via sanctioned contract test helpers
2026-07-11 02:50:53 -07:00
Peter Steinberger
2e2366b6d3
chore(tooling): typecheck scripts/** with a dedicated tsgo lane ( #104348 )
...
* feat(tooling): add tsgo typecheck lane for scripts/**
* fix(scripts): burn down scripts type debt surfaced by the new lane
Typing-only except bugs the lane surfaced: gh-read timeout race,
Discord Headers spread dropping entries, undefined allowedHeadBranches
match, plugin-boundary matchAll crash. Deletes retired config keys from
fixtures/benches (prompt snapshots regenerated, config dump only) and
the orphaned non-runnable sync-moonshot-docs script. Adds full-surface
.d.mts declarations for existing .mjs boundaries.
2026-07-11 02:31:17 -07:00
Peter Steinberger
8cd092620d
test: fix changed-run routing, dedupe gateway package lanes, repair force-rerun triggers ( #104287 )
...
* test: fix changed-run routing, dedupe gateway package lanes, repair force-rerun triggers
- route extensions/active-memory changed runs to their dedicated lane; add a
generic guard that every catch-all-excluded extension root resolves to a
dedicated config so future split lanes cannot silently skip changed tests
- exclude packages/gateway-client and packages/gateway-protocol from the unit
lane; explicit targets now route to the gateway-client lane (was double-run)
- generate forceRerunTriggers from the test/vitest directory and resolve all
entries absolute: Vitest matches triggers against absolute changed-file
paths, so the old hand-maintained relative list never matched at all
- replace deprecated envFile:false with envDir:false (Vitest 4.1.9 warning)
- give scripts/test-live.mjs stall detection teeth: kill the process group and
exit non-zero when OPENCLAW_VITEST_NO_OUTPUT_TIMEOUT_MS elapses quietly
- consolidate the live-docker shell target list into changed-lanes.mjs so the
lane regex and check targets cannot drift; cover subagent-announce edits
- delete orphans: vitest.extension-clickclack.config.ts,
vitest.full-core-unit.config.ts, scripts/test-docker-all.sh,
scripts/test-live-acp-spawn-defaults-docker.sh
Closes #104231
* test: keep envDir literal so sharedVitestConfig satisfies Vite UserConfig
Vite 8 types envDir as string | false; the bare object literal widened false to
boolean and broke check:test-types at the defineConfig call sites.
2026-07-11 00:58:14 -07:00
Vincent Koc
54cc90b1b1
fix(release): publish ClawHub bootstrap artifacts immutably ( #103809 )
...
* fix(release): harden ClawHub bootstrap
* fix(release): centralize publication artifact verification
* fix(release): harden publication artifact verification
* fix(release): lock ClawHub bootstrap toolchain
* test(release): assert locked ClawHub binary
* fix(release): pack with trusted ClawHub harness
* fix(release): bound beta verifier artifact reads
* fix(release): bind target and tooling identities
* fix(release): stabilize signed package ordering
* fix(release): bind ClawHub pretag proof
* fix(release): bind ClawHub OIDC readback
* fix(release): bind ClawHub OIDC readback
2026-07-10 13:33:20 -07:00
Vincent Koc
69f8198ba3
fix(release): keep no-push Docker images validation-only ( #103891 )
...
* fix(release): make no-push Docker artifacts portable
* fix(release): keep no-push images validation-only
2026-07-10 12:02:57 -07:00
Peter Steinberger
b91e117dcd
fix(ci): select full Kova performance reports ( #103863 )
2026-07-10 19:01:30 +01:00
Peter Steinberger
b597a8d364
fix(release): restore prerelease and release validation startup ( #103834 )
...
* fix(release): split image publication from validation
* fix(ci): honor install smoke caller input
* fix(ci): harden Docker rerun targeting
2026-07-10 18:46:08 +01:00
Vincent Koc
daa653c5cc
ci(release): add plugin npm artifact preflight ( #103759 )
...
* ci(release): add plugin npm preflight proof
* fix(release): bind plugin preflight package evidence
* fix(release): harden plugin preflight trust
* fix(release): bind plugin registry readback
* fix(release): retry npm packument bodies
* fix(release): retry malformed npm packuments
* fix(release): satisfy npm preflight lint
2026-07-10 09:39:10 -07:00
Peter Steinberger
366d09bcc7
fix(ci): harden release performance evidence ( #103790 )
2026-07-10 16:59:10 +01:00
Peter Steinberger
ea6aa1dc75
fix(pr): prevent same-PR operations from overlapping ( #103669 )
...
* fix(pr): serialize operations per pull request
* fix(pr): tighten supervisor error handling
2026-07-10 13:34:03 +01:00
Peter Steinberger
13819996ad
fix(ci): preflight generated PR app permissions ( #103671 )
2026-07-10 12:57:30 +01:00
Peter Steinberger
bcf2798920
fix(ci): publish locale refreshes through exact merge ( #103625 )
2026-07-10 11:25:25 +01:00
Peter Steinberger
7fe004d852
feat: show build identity in About screens ( #103595 )
...
* feat: show build identity in About screens
* chore: leave root changelog to release automation
* fix: translate Control UI About build details
2026-07-10 10:42:36 +01:00
Peter Steinberger
336e43c314
fix(release): converge on the render-github-release-notes pipeline
...
Two competing release-notes pipelines existed: the release branch's
hardened render/verify/provenance pipeline (a486f3ab08 + dcee1da876 ,
battle-tested by 2026.7.1) and main's lighter prepare-github-release-notes
size gate (#103222 ). Repo policy is one canonical path; the release-branch
pipeline wins and main's unique value is grafted in:
- scripts/render-github-release-notes.mjs becomes the canonical release
body renderer (full/compact 125k char+byte modes, tag-pinned record
link, verification tail, canonical shipped-baseline format), now also
preferring a correction tag's dedicated changelog section (from
prepare's heading matrix).
- verify-release-notes.mjs is a three-way merge: release's --shipped-ref
cumulative baselines, provenance checks, highlights gate, and the
excluded-record rewrite fix, plus main's compact contribution rows,
externalReferences threading, and both-heading parser compat.
- release-candidate-checklist.mjs gains validateCandidateCheckout and
changelog-provenance gates that run before any dispatch.
- openclaw-release-publish.yml keeps main's fail-before-mutation early
notes gate (retargeted to the renderer) and adopts release's
render/verify_release_tag_target/canonical_release_body_matches flow.
- scripts/prepare-github-release-notes.mjs and its test are deleted;
release-notes-ledger.test.ts stays and pins the merged verify exports.
- .gitignore tracks every repo skill for Git-aware syncs; SKILL.md
runbooks and RELEASING.md document the converged contract.
2026-07-10 02:06:52 -07:00
Vincent Koc
f11b2493b9
fix(ci): read Codex bindings from SQLite in live harness ( #103467 )
...
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-09 23:32:39 -07:00
Peter Steinberger
73db6b2aca
ci: pin docs i18n Go toolchain ( #103244 )
2026-07-10 03:02:52 +01:00