Commit Graph

6680 Commits

Author SHA1 Message Date
Peter Steinberger 6c1879e5e7 fix(scripts): recognize relocated subagent-registry lifecycle seam in audit (#121363) 2026-08-09 20:22:20 -07:00
Peter Steinberger 8430fc0e3b refactor(agents): move spawn family into subagents/spawn (#121350)
* refactor(agents): move spawn family into subagents/spawn

* refactor(agents): keep spawn imports within lint budget
2026-08-09 19:51:29 -07:00
Peter Steinberger 188a248449 fix(test): restore root-matrix unit-fast cleanup (#121356) 2026-08-09 19:44:44 -07:00
Peter Steinberger f44c5e2e5e fix(plugins): surface manifest-only bundled capabilities (#121354)
Use a manifest-first inventory with independent coverage for manifest-only bundled capabilities.

Retire the undocumented thread-ownership plugin while Doctor removes stale references.

Document Talk voice and persist only provider-scoped voice selection.

Closes #121353
2026-08-09 19:43:49 -07:00
Peter Steinberger 88fc335323 fix(ci): support frozen script entrypoints (#121208)
* fix(ci): support frozen script entrypoints

* fix(ci): route frozen plugin tests through package script

* fix(release): support compiled candidate test helpers

* fix(release): support compiled upgrade helpers

* fix(release): mount trusted upgrade runtime

* fix(release): preserve trusted tsx resolution
2026-08-10 10:31:21 +08:00
Peter Steinberger da0fad6718 fix(usage): expand Windows footer template paths (#121303) 2026-08-09 19:29:10 -07:00
Vincent Koc 4ee008a026 fix(qa): reuse one immutable Docker candidate (#121253)
Punchcard-Session: amber-workshop-workshop-36

Co-authored-by: Dallin Romney <6581799+RomneyDa@users.noreply.github.com>
2026-08-10 10:14:24 +08:00
Peter Steinberger e61ba9c1ea fix(scripts): fall back to local check:changed lanes on full Crabbox provider outage (#121323)
Recognize Crabbox workload-routing provider exhaustion as a pre-dispatch backend outage so check:changed runs its documented local fallback.

The observed full provider-chain outage previously exited 2 without running local lanes.

The existing command-exit veto still runs first, so a remote run that actually executed and failed remains fail-closed.
2026-08-09 19:06:01 -07:00
Peter Steinberger 64695e5024 chore: detect export name collisions (#121300)
* chore(scripts): add export-name-collision check with debt baseline

* chore(scripts): allowlist per-module test-hook export idiom

* chore(scripts): recognize const forwarders, harness files, and JS sources in collision check
2026-08-09 18:58:28 -07:00
Peter Steinberger 1c95854163 refactor(media): fold per-kind alias shells into per-concern modules (#121302)
* refactor(media): fold per-kind alias shells into per-concern modules

* test(ci): retarget media test inventories after shell fold
2026-08-09 18:19:38 -07:00
Peter Steinberger cfe6ebcd1e fix(scripts): anchor hydrated tsx at checkout root (#121149)
Resolve pnpm's configured modules directory from the checkout root before TypeScript boot, preserving both environment spellings and canonical checkout/common-worktree fallbacks. Use Node package self-resolution from the hydrated tsx package so nested wrappers cannot change relative path semantics.
2026-08-09 17:15:27 -07:00
Peter Steinberger 055a2dc6ce feat: continue dashboard sessions from CLI URLs (#120893)
* feat(cli): ingest session targets

* refactor(ui): remove gateway scope shim

* docs(cli): document session targets

* fix(cli): classify session target failures

* fix(cli): keep session target result private

* fix(cli): simplify timeout option warning

* build: declare session URL contract dependency

* fix(cli): parse bare session URL options symmetrically

* fix(cli): preserve command-owned URL arguments

* build: keep session URL contract build-only

* fix: address session URL review findings

* test: preserve session key mock exports

* fix: keep session URL helpers internal

* fix(tui): preserve URL agent for global sessions

* fix(tui): keep URL agent input internal

* fix(gateway): reconcile websocket protocol owner

* fix(attach): preserve global session agent ownership

* fix(attach): enforce global owner at grant boundary
2026-08-09 16:44:25 -07:00
Peter Steinberger 3bdfd60caa fix(media): accept mixed-case local file URLs (#121226) 2026-08-09 16:40:55 -07:00
Peter Steinberger bd6c6aaef2 refactor(ws): consolidate raw WebSocket payload decoding (#121268)
* refactor(ws): consolidate raw data conversion

* fix(scripts): keep gateway client source-loadable

* refactor(ws): share plugin frame decoding
2026-08-09 16:32:18 -07:00
Peter Steinberger ce53f7e82e refactor(agents)!: remove the session write lease (#121113)
* refactor(agents): remove session write lease

* refactor(plugin-sdk): deprecate session write lease

* refactor(doctor): remove session lock checks

* test(agents): remove session lease fixtures

* test(agents): align writer rebound assertion

* refactor(infra): remove retired session lock exports

* test(tooling): preserve embedded abort race shard
2026-08-09 15:30:48 -07:00
Peter Steinberger 0dbdf994b3 feat(macos): isolate named app profiles (#121136)
* feat(macos): isolate named app profiles

* refactor(macos): isolate profile launch ownership

* fix(macos): avoid overlapping approvals socket access

* fix(macos): declare profile defaults concurrency ownership

* fix(macos): return profiled node launch arguments

* chore(i18n): refresh macOS profile source inventory

* fix(macos): gate profile startup before services

* test(macos): evaluate profile state before assertions

* fix(daemon): skip absent launchd deactivation

* fix(macos): fail closed on profile port conflicts

* chore(i18n): refresh profile conflict inventory

* fix(macos): ignore non-gateway launch agent claims

* test(macos): stabilize profile lifecycle timing

* fix(macos): remove stale dashboard URL

* chore(macos): refresh native source baseline
2026-08-09 14:50:15 -07:00
Peter Steinberger 0ef798d28d fix(gateway): keep hello authorization aligned with RPC access (#120888)
* fix(gateway): separate socket and device token scopes

* chore(i18n): refresh native source baseline

* style(ios): keep gateway channel within lint limit

* refactor(gateway): simplify scope metadata decoding

* ci(ui): isolate real-gateway e2e suites

* docs(ci): align runner table formatting

* chore(plugin-sdk): refresh api baseline

* ci(ui): route real-gateway retries to hosted runners

* chore(plugin-sdk): repair generated api baseline

* test(ui): select Labs toggles by title

* fix(gateway): preserve stored scopes without wire metadata
2026-08-09 14:50:07 -07:00
Vincent Koc 87ba8ef82b fix(release): use frozen source build entrypoint (#121216) 2026-08-10 05:08:46 +08:00
Peter Steinberger f31d9d8fa9 fix: prevent externally supervised state schema drift (#121069)
* fix: prevent externally supervised state schema drift

* refactor: isolate schema ownership support code

* test: follow canonical additive column order

* test: keep older schema fixture valid

* fix: preserve additive schema compatibility

* chore: remove release-owned changelog entry

* test: follow schema compatibility owner

* style: format schema compatibility test

* refactor: split sqlite schema sql helpers

* fix: preserve desktop schema compatibility

* fix: preserve ownership gates across platforms

* fix: preserve detached updater long paths

* fix: close external state ownership races

* chore: refresh plugin sdk api baseline
2026-08-09 14:04:40 -07:00
Peter Steinberger db61480056 fix(windows): honor explicit executable paths (#121094) 2026-08-09 12:52:09 -07:00
Vincent Koc 2e4683ba7f fix(qa): finish aggregate suites without shared cache races (#120816)
* fix(qa): bound parallel aggregate script runs

Punchcard-Session: amber-workshop-workshop-36
Co-authored-by: Dallin Romney <6581799+RomneyDa@users.noreply.github.com>

* test(tui): wait for adopted session frame

Punchcard-Session: amber-workshop-workshop-36

---------

Co-authored-by: Dallin Romney <6581799+RomneyDa@users.noreply.github.com>
2026-08-10 03:32:04 +08:00
Peter Steinberger 40dbc7a65a test(plugin-sdk): remove repo-local test helper fossils (#121190) 2026-08-09 11:44:18 -07:00
Peter Steinberger a828bfe04e fix(release): bootstrap typed Docker planner (#121088)
* fix(release): bootstrap typed Docker planner

* test(release): handle optional workflow steps

* fix(release): isolate trusted planner dependencies

Punchcard-Session: amber-workshop-workshop-36

* test(release): update trusted harness contract

Punchcard-Session: amber-workshop-workshop-36

* fix(release): bootstrap every trusted Docker planner

Punchcard-Session: amber-workshop-workshop-36

* fix(release): centralize trusted harness bootstrap

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-08-09 11:14:23 -07:00
Peter Steinberger 72283e440e fix: steering misses the next tool boundary after ACK (#120964)
* fix(steering): wait for queue acceptance before ack

* fix(steering): preserve session steer call contract

* fix(steering): close runtime ownership gaps

* fix(ci): refresh plugin SDK API baseline
2026-08-09 10:46:09 -07:00
Peter Steinberger 34b8a6515d test(gateway): boot a minimal test gateway in the gateway lane (#121134)
* test(gateway): boot a minimal test gateway in the gateway lane

A gateway startup stall (#120926, awaited chat-metadata refresh in minimal
mode) shipped with green CI and first surfaced by hanging every checks-ui-e2e
suite that boots a minimal test gateway: no gateway-lane test booted one with
bundled plugins enabled (gateway.test.ts disables them, which masked the
stall), and the changed-scope classifier only selects the ui-e2e lane for
ui-touching diffs.

Add a minimal-gateway boot smoke in src/gateway that mirrors the ui-e2e boot
environment (bundled plugins enabled, minimal skips, strict time budget).
Selection is automatic: the smoke imports the gateway server, so the changed
node test plan picks it up through the import graph for any diff that can
affect startup, and full-suite plans run it in the
agentic-control-plane-startup-core shard. Reintroducing the #120926 hunk makes
the smoke fail (watchdog kill) in the gateway lane; healthy code boots in ~10s.

A planner regression test keeps the smoke classified as a gateway-server test
file and import-graph-reachable from gateway startup sources, so a rename or
graph-invisible import shape cannot silently drop the coverage again.

* test(ui): resolve labs rows by registry id, not positional index

Unblocks landing onto red main: 8fdf7570a1 (#120727) added the Cloud Worker
Desktop labs entry with a hardcoded row index that collides with Message audit
metadata, so enabling it toggled the neighboring row and the full-suite lane
failed deterministically (labs-page.test.ts, exposed only on PRs that run the
compact full suite). Derive each table case's row index from LAB_FEATURES by
feature id — the idiom the rest of the suite already uses — so a new labs
entry can no longer silently retarget an existing case.
2026-08-09 10:32:35 -07:00
Vincent Koc af73dbcc83 fix(release): prefer SQLite upgrade survivor state (#120983) 2026-08-10 01:08:15 +08:00
Vincent Koc 106cdd18a9 fix(ci): shard release merge-tree lint (#120421)
* fix(ci): shard release merge-tree lint

Punchcard-Session: amber-workshop-workshop-36

* fix(ci): resolve branch-creation push base

Punchcard-Session: amber-workshop-workshop-36

* fix(ci): follow Oxlint shard runner rename

Punchcard-Session: amber-workshop-workshop-36
2026-08-10 00:48:44 +08:00
Peter Steinberger 4b85d834ed fix(ci): sparse-checkout the renamed local-heavy-check-runtime.mts on the frozen shard lane (#121097) 2026-08-09 08:59:30 -07:00
Peter Steinberger 3b37d15ed4 fix(maintainers): prevent false PR closeout failures (#121101) 2026-08-09 08:58:54 -07:00
Peter Steinberger 081a565cba perf(doctor): restore telegram doctor repairs dropped on source-run hosts (#120954)
* perf(doctor): keep telegram doctor enumeration off the runtime graph

Telegram's built doctor artifact reached execa through dist chunking, so a
source-run host (pnpm dev, tsx CLI, vitest) could not require it and silently
dropped all 9 telegram legacy config rules plus its state migration. The
artifact also pulled telegram's runtime stores, making it a 674-chunk outlier
that dominated doctor enumeration.

Root cause: `src/token.ts` took the broad `plugin-sdk/provider-auth` barrel for
`resolveDefaultSecretProviderAlias`, dragging the auth-profile store, provider
runtime, and plugin install graph (execa, kysely, commander) into the closure.
The alias now has a narrow `plugin-sdk/secret-provider-alias` leaf, and
provider-auth re-exports it so its runtime surface is unchanged.

Thread-binding, sent-message, and sticker-cache row shapes, keys, and legacy
sidecar readers move to `*.legacy-state.ts` leaves. The doctor closure keeps
the rows and drops the ACP, session-binding, send, logger, and plugin-runtime
graphs the stores also load.

The postbuild control-plane verifier only required each artifact in a plain
Node child, the one host where these graphs resolve fine, so it proved nothing
about the invariant that broke. It now also walks each built doctor artifact's
static import closure and fails when it reaches the process-spawn graph, which
is the dist-level analogue of the source closure guard.

Guard rules added for provider-auth, acp-runtime, and conversation-runtime; the
telegram boundary test became a real closure assertion instead of a string grep.

* fix(doctor): drop dead export surface from the telegram legacy-state split

Knip and oxlint caught leftovers from the split: the leaves exported helpers
only they use, the store modules re-exported constants nobody imports from them
anymore, and thread-bindings kept a `testing` barrel whose last production
caller was the migration path that now reads the leaf directly. Tests import the
constants from the leaf that owns them, and the reset helper directly.

The closure gate's failure message still interpolated a `host` field left over
from a probe-host approach that was reverted before commit; the existing verifier
test caught it. The gate now has its own coverage: a transitive chunk edge to a
forbidden dependency is reported, while dynamic imports and non-doctor contract
surfaces are not.

* fix(doctor): adopt the upstream telegram thread-binding store split

`main` landed an equivalent thread-binding leaf as `thread-bindings-store.ts`
while this branch was open, so the branch-local `thread-bindings.legacy-state.ts`
is dropped rather than kept as a second path for the same rows.

`state-migrations.ts` now reaches token.js through the lazy import `main` added,
so `token.ts` is no longer in the doctor closure at all. The narrow
`secret-provider-alias` leaf still matters: telegram's contract-api closure
reaches `provider-auth` through `token.ts` on current `main`, which is the same
execa/kysely/commander graph, so the barrel is repaired at its source instead of
being deferred a second time.

* fix(scripts): type the built doctor closure gate for the TypeScript migration

The gate was authored against the `.mjs` script and landed in the `.mts` file
`main` migrated to, so its parameters were implicitly `any` and `check:test-types`
failed. Adds the explicit signatures plus the violation type.

Regenerates the plugin-sdk API baseline: `provider-auth` re-exports the default
secret-provider alias from the new leaf, so its module hash moves while its
runtime export surface stays identical.
2026-08-09 08:50:03 -07:00
Peter Steinberger 0303af17f3 test: remove low-value implementation assertions (#121085)
* test: remove low-value implementation assertions

* test: refresh native i18n inventory
2026-08-09 08:48:48 -07:00
Vincent Koc 41423753e0 fix(release): normalize appended PR suffixes (#120971) 2026-08-09 23:21:32 +08:00
Peter Steinberger 623866a30e fix(release): preserve SHA evidence identity (#121080) 2026-08-09 07:51:57 -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 8616c0c374 refactor: finish shared test helper migrations (#120996)
* test: finish shared helper migrations

* test: fix helper migration CI

* style: fix test import ordering

* test(acpx): restore deferred void types

* test: fix helper migrations after rebase
2026-08-09 06:00:06 -07:00
Peter Steinberger dfbc95e4ea fix: replies fail after transcript projection repair (#121025)
* fix(reply): rebind prepared session ownership

* test(mcp): correlate queued wait events

* fix(sessions): await transcript admission projection

* fix(recovery): distinguish admission failure stages

* refactor(sessions): split runtime transcript projection

* fix(ci): preserve transcript API baseline

* fix(sessions): await target projection only
2026-08-09 05:54:39 -07:00
Peter Steinberger 600787a0cb test(gateway): isolate live-event sweep assertion (#106216)
* test(gateway): isolate agent run registry state

* test(infra): reset agent event state between files
2026-08-09 05:06:40 -07:00
Peter Steinberger 758d4a4786 test(updater): clean cloned Git fixtures (#113348) 2026-08-09 05:02:39 -07:00
Anuj Bolewar 1328a53930 fix: keep cron trigger once when editing only the script body (#120226)
* fix: keep cron trigger once when editing only the script body

* test: cover cron trigger once preservation on script edit

* test: clean up temp script fixture in cron edit once test

The test leaked the mkdtemp directory under os.tmpdir. Remove it in a
finally block so repeated runs do not accumulate temp fixtures.

Fixes #120226

* test: prove trigger.once survives script edit via real gateway store

* fix(cron): preserve trigger metadata on script edits

Validate trigger script input before any Gateway lookup, retain existing trigger metadata during script-only edits, and replace mock-only handler coverage with isolated CLI-to-Gateway persistence proof.

Co-authored-by: Anuj Bolewar <bolewara@gmail.com>

* test(cron): normalize trigger-script rejection cases

Keep the table rows type-stable so the cron edit regression suite passes test type checking.

Co-authored-by: Anuj Bolewar <bolewara@gmail.com>

* style(cron): format trigger preservation tests

Co-authored-by: Anuj Bolewar <bolewara@gmail.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-08-09 04:54:50 -07:00
Serghei d7054d4daf fix(gateway): streamed chat text stalls mid-answer until the next agent event (#119566)
* fix(gateway): flush trailing chat deltas

Keep the fixed-deadline wake-up on the existing chat run record so terminal, abort, and shutdown cleanup cancel it at the lifecycle owner. Normalize voice runs onto their unique per-turn ID instead of compensating for a stale client alias downstream.

Fixes #119557

Co-authored-by: Serghei <43180231+xyrolle@users.noreply.github.com>

* test(gateway): drop obsolete delta length assertions

Remove stale fixtures and assertions for the write-only chat delta length field deleted by the owner-boundary repair.

Co-authored-by: Serghei <43180231+xyrolle@users.noreply.github.com>

* fix(gateway): preserve chat run state type contract

Keep the optional delta length field and its cleanup semantics in the exported ChatRunState closure without restoring runtime writes.

Co-authored-by: Serghei <43180231+xyrolle@users.noreply.github.com>

* refactor(gateway): hide chat delta timer from SDK shape

Keep the trailing wake physically on each run record while exposing it only through internal state-module accessors, preserving the public ChatRunState closure.

Co-authored-by: Serghei <43180231+xyrolle@users.noreply.github.com>

* refactor(gateway): narrow chat delta timer access

Use one Gateway-internal record accessor so the run-owned timer remains outside the public ChatRunState shape without extra state maps.

Co-authored-by: Serghei <43180231+xyrolle@users.noreply.github.com>

* refactor(gateway): keep chat timer casts private

Keep the run-owned timer invisible to the generated Plugin SDK closure by using module-private casts in each owning Gateway module.

Co-authored-by: Serghei <43180231+xyrolle@users.noreply.github.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-08-09 04:53:16 -07:00
Vincent Koc f83ba2b326 fix(ci): route UI E2E PR retries to hosted runners (#120997)
* fix(ci): route UI E2E PR retries to hosted runners

Punchcard-Session: amber-workshop-workshop-36

* fix(ci): align UI E2E retry cache routing

Punchcard-Session: amber-workshop-workshop-36

* fix(ci): clarify UI E2E retry routing

Punchcard-Session: amber-workshop-workshop-36

* fix(ci): validate workflow expression capture

Punchcard-Session: amber-workshop-workshop-36
2026-08-09 19:50:24 +08:00
Peter Steinberger b869d5e73f fix(workers): skip shared-host quiescence sweeps (#120969)
* fix(workers): skip shared-host quiescence sweeps

Refs #120952.

* test(workers): update shared-host fixtures

Refs #120952.

* fix(workers): reconcile shared-host lease metadata

* fix(workers): fence unknown lease isolation

* chore(plugin-sdk): refresh API baseline

* fix(workers): fence tunnel isolation updates

* docs(workers): clarify shared-host final fences

* ci: invalidate Vitest cache for state schemas

* refactor(workers): import stableWorkerPathComponent from its defining module

workspace-sync.ts crossed the 700-line lint budget by one; drop its
re-export and point consumers at workspace-sync-helpers directly.
2026-08-09 04:34:39 -07:00
Peter Steinberger b61bc5cd8d fix: sync Cloud Worker workspaces from macOS gateways (#121027)
* fix(cloud-workers): support Apple openrsync receivers

* build: register worker receiver entry

* fix(cloud-workers): narrow receiver invocation types

* test(cloud-workers): resolve real rsync before wrapping
2026-08-09 03:51:24 -07:00
Vincent Koc c8a99f7aab test(gateway): cover rolling node compatibility (#119991)
Punchcard-Session: calm-lantern-timber-wa
2026-08-09 18:45:08 +08:00
Peter Steinberger 8b501c1c13 fix(build): reject incomplete Plugin SDK declaration caches (#120961)
Require the unified declaration cache to contain every production Plugin SDK declaration before accepting or stamping it. Matching partial v4 stamps are now stale and rebuild instead of failing later in the canonical declaration writer.
2026-08-09 03:38:37 -07:00
Gio Della-Libera 7422222788 feat(claws): add local project author lifecycle (#117037)
* feat(claws): add local project lifecycle

* fix(claws): harden local project lifecycle

* fix(claws): harden project source selection

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 3cdcdb00-ade8-4e61-85a7-8151b35f216a

* fix(claws): preserve project archive paths

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: db3a73db-01ff-428e-a451-b7b710cd5085

* fix(claws): harden author lifecycle

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: db3a73db-01ff-428e-a451-b7b710cd5085

* chore(claws): normalize authoring test mode

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: db3a73db-01ff-428e-a451-b7b710cd5085

* fix(claws): normalize archive path spellings

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: db3a73db-01ff-428e-a451-b7b710cd5085

* fix(claws): exclude repository-local sources

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: db3a73db-01ff-428e-a451-b7b710cd5085

* fix(claws): satisfy CI contracts

Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com

Copilot-Session: db3a73db-01ff-428e-a451-b7b710cd5085

* chore: record CI fix attribution

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: db3a73db-01ff-428e-a451-b7b710cd5085

* fix(claws): reject excluded manifest links

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: db3a73db-01ff-428e-a451-b7b710cd5085

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 3cdcdb00-ade8-4e61-85a7-8151b35f216a
Copilot-Session: db3a73db-01ff-428e-a451-b7b710cd5085
2026-08-09 03:30:21 -07:00
Peter Steinberger c092900e3c fix(plugins): keep OpenCode Go bundled (#120985)
* fix(plugins): keep OpenCode Go bundled

* fix(plugins): mark OpenCode Go dist bundled

* fix(docs): show OpenCode Go as bundled

* fix(release): defer bundled plugin publication
2026-08-09 03:09:47 -07:00
Peter Steinberger 8b0735e89f refactor(memory)!: remove the QMD backend; builtin is the only memory engine (#120936)
* refactor(memory): remove qmd backend

Make builtin the sole memory-core engine, rename the retained session helper barrel, retire QMD config with doctor migrations, and remove QMD runtime/UI/policy surfaces.

* docs(memory): remove qmd backend guidance

Delete the QMD concept page, rewrite memory documentation for builtin retrieval, and remove QMD from navigation and taxonomy source.

* refactor(memory): remove qmd-only leftovers

* refactor(memory): finish qmd integration cleanup

* build(deps): align root string-width types

* build(deps): model root string-width tooling

* refactor(memory): align qmd removal ui and docs

* fix(memory): preserve qmd external paths in doctor

* test(memory): remove obsolete backend probe case

* test(plugin-sdk): refresh private type baseline
2026-08-09 03:05:47 -07:00
Dallin Romney dcdbd7aab6 fix(update): prevent stable upgrade notices on extended-stable (#118518)
* fix(update): keep extended-stable update notices on channel

* fix(update): repair extended-stable CI checks

* fix(update): retain verified extended-stable channel

* fix(update): normalize gateway install surface

* test(update): split effective channel coverage

* fix(update): resolve verified extended-stable status paths

* fix(update): preserve Sparkle fallback on missing channel

* fix(update): restore effective channel after rebase

* fix(update): repair rebased CI coverage
2026-08-09 16:01:14 +08:00
Vincent Koc 1b404a1755 fix(release): accept repeated PR title suffixes (#120948) 2026-08-09 14:49:39 +08:00