Replace 183 inline fully qualified type names across 56 Contracts files
with ordinary imports, using the same skip rules as the Runtime batch.
The compiled classes are unchanged: all 604 classes are identical under
javap -c -p ignoring constant-pool indices.
Co-authored-by: Claude Opus 5.5 <[email protected]>
* refactor(runtime-broker): extract binding provisioning from RuntimeBrokerService
RuntimeBrokerService still carried the whole Runtime binding lifecycle:
durable provisioning and attestation, the bounded reconciliation loop,
lost-binding cleanup and the trusted maintenance recovery path. Those
members only depend on each other and on the operation claim, so they
move into a package-private RuntimeBindingProvisioning collaborator,
alongside the existing dispatcher, reconciler and recovery classes.
This is a pure move. The service delegates binding acquisition, recovery,
the deadline and step-timeout helpers and attestation checks to the new
class. The provision failure handler is now owned by the collaborator,
which removes the service's constructor-time method reference cycle.
BindingRenewal stays in the service because the drain path also uses it;
the collaborator receives its constructor as a factory.
RuntimeBrokerService shrinks from 4174 to 2948 lines.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
* fix(runtime-broker): tighten class-size ratchet after binding extraction
---------
Co-authored-by: Claude Opus 5.5 <[email protected]>
The runtime provisioner, transport and host modules spelled 80 type
references as inline fully qualified names. They now use imports.
The conversion only touches code (never strings or comments) and leaves a
name qualified whenever importing it could change what any name in the
file resolves to: an existing or same-package type with that simple name,
a declared or nested type, java.lang, a bare identifier already in use, or
a wildcard import.
The compiled bytecode is unchanged: javap -c -p of all 49 classes in the
seven modules is identical before and after, ignoring constant-pool
indices.
Co-authored-by: Claude Opus 5.5 <[email protected]>
The CSI ready admission and application progress stores kept their own
copies of the 10 second query-timeout statement helper because #16485
was still editing the adjacent lines when #16486 introduced the shared
helper. Both now use the shared one; the timeout is unchanged.
Co-authored-by: Claude Opus 5.5 <[email protected]>
Release local execution membership while questions wait, recover the original runtime owner, and isolate root-page action selection and drafts.
Co-authored-by: Qwen-Coder <[email protected]>
Six runtime broker persistence classes each carried an identical private
helper that prepares a statement with the default 10 second query timeout.
The helper now lives once in the package's JDBC support class and the
copies are removed; the timeout value is unchanged.
Three call sites built a new ObjectMapper on every invocation: the Hosted
Harness lifecycle settlement, the resident Workspace registration check
and the preflight version readers. Each now reuses a static mapper with
exactly the configuration it built before.
Co-authored-by: Claude Opus 5.5 <[email protected]>
The qwen-csi-alias/1 storage alias key had four independent copies of the
same length-prefixed SHA-256 routine. The JDBC repository entry point now
delegates to the shared registration key, and the two private copies in the
CSI ready/progress admissions are removed.
Hand-rolled MessageDigest.getInstance("SHA-256") calls are replaced with
Commons Codec DigestUtils as the module guide requires; incremental
length-prefixed digests keep their exact input bytes. runtime-local now
declares commons-codec directly.
A golden-value test pins the alias, physical, value and raw SHA-256 outputs
to independently computed digests so stored keys cannot drift.
Co-authored-by: Claude Opus 5.5 <[email protected]>
* docs(managed-agent): design tool execution admission without tenant placement
Admission still takes tenant placement on every tool call. It orders
admission's plain read of the harness drain fence against
requestHarnessDrain, the only fence writer that holds no row admission
takes. Lifecycle phases already hold the Session root, and the storage fence
is backstopped by migration's retirement check. The design has the drain
take the Session root after placement, and lets an ordinary session-class
admission with an existing root skip placement, taking the root as its first
statement so a REPEATABLE READ snapshot cannot predate the drain.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
* docs(managed-agent): record the storage alias order blocker for placement-free admission
Co-Authored-By: Claude Opus 5.5 <[email protected]>
* perf(managed-agent): take tool execution admission off tenant placement
Every tool call still took tenant placement in admitExecution. Placement
ordered admission's plain read of the Harness drain fence against
requestHarnessDrain, the only fence writer holding no row admission takes.
requestHarnessDrain now locks the Session root after placement. An ordinary
session-class admission with an existing root, no lifecycle authority and no
storage or LOCAL storage skips placement and locks that root as its first
statement, so its REPEATABLE READ snapshot cannot predate a committed drain.
Other admissions take placement first, as before.
completeStoppedSessionRelease locked the storage alias and owner rows before
the binding, the reverse of admission and createSession. It now locks the
binding first, so a placement-free admission cannot close a cycle with it.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
* docs(managed-agent): format the admission design with the pinned Prettier
Co-Authored-By: Claude Opus 5.5 <[email protected]>
---------
Co-authored-by: Claude Opus 5.5 <[email protected]>
Binding control took tenant placement and the publication guard for every
session-class binding, so each periodic lease renewal queued on both
tenant-wide rows. The publication guard only tells whether a CSI profile
original's retention root exists; any other binding is answered null or
refused whatever it says, so lockBindingControl now takes it for profile
bindings only.
Claim, renew and release change only the operation lease and move no binding
out of its state. Like dispatch, they now decide the CSI pin under the Session
root alone when it exists. compareAndSet keeps placement, which it takes next
and which must precede the root.
Co-authored-by: Claude Opus 5.5 <[email protected]>
Expose glob in ordinary file sessions, durable todos in Shell sessions, and PDF page selection in Hosted read_file. Restore saved todo state on session reload while keeping exact current-schema validation and restricted resident/CSI tools.
Co-authored-by: Qwen-Coder <[email protected]>
* fix(serve): bound command snapshot replay memory
Suppress unchanged command snapshots and retain only the latest full skill details so periodic refreshes cannot grow daemon heap indefinitely. Bound replay rings by serialized bytes while preserving ACP live delivery and reconnect IDs, and expose retention diagnostics.
* fix(serve): avoid redundant replay seed serialization
Size only retained complete command snapshots when seeding replay history, and forward the replay byte limit through the development daemon launcher. Pin snapshot accounting and lifetime eviction counters with independent regression assertions, and document the count/byte retention bounds and conditional command notifications.
Co-authored-by: Qwen-Coder <[email protected]>
---------
Co-authored-by: Qwen-Coder <[email protected]>
Every tool call admits an execution and authorizes its dispatch. Both went
through lockBindingControl, which for a session-class binding (the default
isolation class) took tenant placement, the publication guard, every slot and
binding row of the Session and then its root, only to prove the Session is
not CSI-pinned.
lockExecutionControl now decides that under the Session root alone: the pin
lives on the root, and profile slots and bindings require a committed pin.
lockManagedSession and requireProvisionPin lock the root before slot and
binding rows, so every placement owner shares the root-then-binding order
that guard-free dispatch uses. Without an existing root, a locking read takes
only a gap lock and orders nothing; dispatch then keeps the guarded path (a
MySQL stress test reproduced the deadlock between the binding's unique-index
and primary-key lookups otherwise). Admission still takes placement for the
harness drain fence.
lockSnapshotWriter took tenant placement and the publication guard on each of
its three calls per snapshot, so every snapshot of a tenant queued behind
binding transitions, provisioning, retention, maintenance, collectors and
writer acquisition. It now uses the guard-free publication writer.
The build transaction cannot lock the Session root first, because its
nested journal reads take read leases on that root and head. When it reaches
the root it holds only the snapshot's own new rows. Any transaction that
could hold the root and wait for those rows already closes a cycle with it
today through the guards, so dropping them adds no cycle. Root and head
order the writer checks, and the read lease keeps the copied resources. A
pinned CSI Session still takes both guards behind its root.
Co-authored-by: Claude Opus 5.5 <[email protected]>
Settle SSH registrations using their operation and exact physical owner.
Allow ordinary Runtime members and uploads during main worktree preparation
while retaining maintenance ownership and cleanup exclusion.
Co-authored-by: Qwen-Coder <[email protected]>
Co-authored-by: Shaojin Wen <[email protected]>
Allow neighboring Sessions, uploads and rewinds to coexist while retaining pending rewind recovery on the originating Runtime Session.
Co-authored-by: Qwen-Coder <[email protected]>
* docs(managed-agent): design publication lanes without the placement guard
Placement owners lock the original binding and the Session root in both
orders (lockBindingControl: binding then root; lifecycle verification and
hosted cleanup: root then binding), so a lane cannot replace placement with
a binding lock in one fixed position. Ordinary lanes instead lock the Session
root first, read a session-class binding without a lock (its transitions out
of READY hold that root) and share-lock a workspace-class binding.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
* perf(managed-agent): take ordinary publication lanes off the placement guard
An ordinary (non-CSI, non-Resident) publication lane now locks its Session
root where it took tenant placement. It reads a session-class original
binding without a lock, on the repository's own connection: every move of
such a binding out of READY holds that root. It share-locks a
workspace-class binding, whose writers take no root. Placement owners lock
the binding and the root in both orders, so neither fixed binding position
would be safe without placement.
Placement stays for CSI and Resident Workspace originals, a session-class
binding of another Session, and lifecycle-authority receipts. The writer
takes placement only when the lane took it first. Receipts refuse hosted
cleanup records, whose commit would take placement after the root.
Operator recovery locks a session-class binding's Session root before its
storage rows and the binding.
---------
startNext locked the tenant placement guard before its Session row, a
leftover from when Turn admission took the guard; the Session row now
comes first, as in Turn admission.
Workspace Session creation now locks the selected Workspace row as its
first statement instead of the tenant guard, so creations in different
Workspaces of a tenant run at once. Selections that may resolve to a
configured Resident Workspace keep the guard, because its single-Session
range check shares gaps across Workspaces. The default Workspace is
resolved through its generated unique key, so a locking resolution
takes one row instead of every Workspace row of the tenant.
Co-authored-by: Claude Opus 5.5 <[email protected]>
* docs(managed-agent): design publication lanes without tenant-wide guards
Publication lanes take the placement and output_publication tenant rows
on every call. The design separates their three roles: tenant byte quota
on a dedicated guard domain for reserve only, a per-Session lock order
shared by lanes and collection, and a shared lock on the original
Runtime binding in place of placement.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
* perf(managed-agent): take publication reserve and renew off the tenant lock
The ordinary apply lane (reserve, renew, fence, no-start release) took
the tenant output_publication guard for every call, mostly so that a
reservation's tenant byte and active-capture sums were exact. Those
limits are protective caps, so a bounded, self-correcting overshoot by
concurrent reservations of different Sessions is accepted. The lane
runs at READ COMMITTED and its Session root keeps the Session limit
exact.
The lane already locks the Session root and head before the
publication row, as collection does. Its evidence reads took a read
lease through the tenant guard after the root, which inverts
retention's order; they now take the lease under the Session locks the
writer already holds. CSI publications keep the guard.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
* docs(managed-agent): correct the publication lane order in the guard design
Ordinary publication lanes already lock the Session root and head before
publication rows, as collection does; only CSI lanes lock the publication
row first. C2 therefore needs the post-root guard audit, not a reorder.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
* perf(managed-agent): take ordinary publication lanes and read leases off the tenant lock
Ordinary producer, admission and receipt lanes and the tool-result
projection worker no longer take the output_publication guard. Below
the guard they already lock the Session root and head before
publication rows, as collection does, so no lane changes its order.
CSI originals keep the guard, as does a receipt whose commit carries
lifecycle authority.
Read leases take only the Session root and head: every collector that
checks them holds the same root and head, and retirement updates the
root. This replaces the Session-locked read variant added for the
apply lane and removes the guard from Artifact and resource reads.
The convoy test now runs every ordinary lane while the guard is held,
so a lane that takes it after its root stalls there.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
* fix(managed-agent): avoid tenant guard during read lease renewal
Keep renewal serialized by the Session root and preserve retirement generation and expiry checks. Add a MySQL regression that forces renewal while another connection holds the tenant guard, and synchronize the bilingual design.
Co-authored-by: Qwen-Coder <[email protected]>
* fix(managed-agent): bound publication cleanup and preserve lock order
Co-authored-by: Qwen-Coder <[email protected]>
* fix(managed-agent): keep projection completion off tenant guard
Reuse the root and head held by projection admission while retaining private Session mutation refusal. Add a full-completion contention regression and align the lock registry, dead helper pin and bilingual design.
Co-authored-by: Qwen-Coder <[email protected]>
---------
Co-authored-by: Claude Opus 5.5 <[email protected]>
Co-authored-by: Qwen-Coder <[email protected]>
MCP and extension management checks, model and approval changes,
context compression, task cancel and action responses checked the
storage fence with exclusive locks, so every Session on one storage
queued on its alias and directory rows. None of them writes those rows
later in its transaction, so they now use the read-only admission form
(FOR SHARE on MySQL, the exclusive fallback on H2). Fence writers still
wait for every admitted command. The publication writer stays exclusive
because its receipt lane may commit with lifecycle authority in the
same transaction.
Co-authored-by: Claude Opus 5.5 <[email protected]>
Bound HTTP dispatch and local runtime operations, readers, and stop escalation. Preserve retryable admission refusal and durable recovery identity under saturation.
Co-authored-by: Qwen-Coder <[email protected]>
* docs(managed-agent): design journal commit without the tenant lock
Journal commit queues on its own Session row instead of the tenant
placement guard. The design covers why each guard reader stays
correct and converts missing-key locking reads on the commit path.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
* perf(managed-agent): probe commit-path keys before locking them
Resource writes and hosted cleanup references probed a key that is
often missing with FOR UPDATE, which gap-locks an index shared across
the tenant's Sessions. Probe with a plain read, lock only rows that
exist, and let the unique key decide a racing insert with a locking
re-read and the existing identity checks. Safe with the tenant guard
still in place; it prepares commits of different Sessions to run at
once.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
* perf(managed-agent): queue journal commits on the Session row
An ordinary journal commit took the tenant placement guard first and
held it to the end, so every commit in a tenant ran one at a time.
It now locks its own Session row as its first statement: lifecycle
begin, settle and Harness placement lock that row before they write,
so none of them can land mid-commit, and the plain reads after it see
what they committed. The storage fence check keeps its alias and
directory locks without the guard. Lifecycle-authority and CSI-pinned
commits still take the guards.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
* fix(managed-agent): lock the Session row before the storage fence in publication lanes
The publication writer and tool-result lanes checked the storage fence
(alias and directory rows) before locking their Session row. Turn
admission, Session commands and journal commits now lock the Session
row first without the tenant guard, so the old order could close a
cycle on one Session. Both lanes keep the placement guard and check
the fence after the Session row and before the head.
A commit also reuses the CSI pin its first root lock read, so the root
is locked once per commit as the journal lock contract expects. The
design records both changes and notes that commits sharing one storage
still queue on its alias row.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
---------
Co-authored-by: Claude Opus 5.5 <[email protected]>
* perf(managed-agent): take session commands off the tenant lock
Fourteen Session commands no longer take the tenant placement guard:
rename delivery claim, settle, abandon and retry; session mutation and
parked rename settlement; cwd change completion; model and approval
changes; context compression; task cancel; action response admission;
and MCP and extension management checks.
Each starts with a locking read of its Session row or root, uses a
Session-scoped idempotency key or settles an existing row, checks the
storage fence before creating work migration counts, and takes no
guard later in its transaction. Rename and mutation admission (tenant
scoped keys), Session creation and lifecycle keep the guard.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
* perf(managed-agent): take rename and mutation admission off the tenant lock
Rename and session mutation keys are tenant-scoped, so the tenant guard
was what serialized two Sessions reusing one key. Admission no longer
takes the guard: the receipt's unique key decides that race. A
DuplicateKeyException on the receipt insert re-reads the winner with a
locking read and answers idempotency_conflict for another Session or
digest, as the serialized path did.
The mutation replay probe becomes a nonlocking read for every kind, so
admissions of different keys no longer gap-lock the tenant-shared
receipt index and deadlock on insert without the guard.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
* codex: address PR review feedback (#16225)
---------
Co-authored-by: Claude Opus 5.5 <[email protected]>
The standalone Harness admission, recovery, cleanup and Hook checks in
JdbcRuntimeBindingRepository only read the Session and Harness head
rows and write nothing. Drop the tenant placement guard and keep the
snapshot transaction, so tool dispatch no longer queues every call of
every Session in a tenant on the placement row. authorizeDispatch still
locks the binding row and requires it READY at the same generation.
Turn submit no longer takes the tenant placement guard. Its Session row
lock already orders it against lifecycle begin, and requireOpen's
locking reads of the storage's alias (fence) and directory rows order
it against migration fence installation and physical fencing.
Migration prepare locks that fence row in migrationSource but could
check idleness on a REPEATABLE READ snapshot taken before the lock. It
now reads committed work on a separate autocommit connection after the
lock, so a Turn admitted before it is seen and a later one is refused
by the fence.
Co-authored-by: Claude Opus 5.5 <[email protected]>
The resident branch of WorkspaceExecutionStore.claim and release only
reads: it writes no row a concurrent transition could observe. Drop the
tenant placement guard and keep the snapshot transaction, so resident
Runtime Session acquisition and release no longer wait for unrelated
tenant work. assertHeld already runs the same check unguarded, and CSI
reclamation still requires released Sessions and settled executions
through locking reads.
Directory occupancy is decided by a short conditional update on the storage owner, so a held tenant placement guard no longer stalls tool admission, release, or rewind.
Keep the shared Failsafe configuration in pluginManagement so ordinary
release verification does not activate environment-specific integration tests.
Preserve the dedicated profiles and executable artifact assertions.
Backport the same POM repair to the pinned 0.26.5 source with checked patch
digests, and verify both patches before applying either one.
Co-authored-by: Qwen-Coder <[email protected]>
* test(managed-agent): audit lock order across store collaborators
Record the bilingual Store decomposition contract and entry ownership,
transaction, lock and caller inventories. Follow final collaborator fields
across source files while preserving owner-bound facade populations and
existing ambiguity, transaction and compiled-member checks.
Co-authored-by: Qwen-Coder <[email protected]>
* refactor(managed-agent): split Agent and Session stores
Move Agent and Journal responsibilities into immutable internal collaborators while retaining transaction facades and compatibility bridges. Resolve Journal dependencies at construction and migrate factories, fixtures, lock auditing and the bilingual implementation contract.
Record focused verification and outstanding full-gate requirements separately.
Co-authored-by: Qwen-Coder <[email protected]>
* fix(managed-agent): repair store decomposition verification
Keep declared field receivers visible across method-local type scopes while retaining fail-closed nested class handling. Preserve the Hosted CSI dependency identity assertion at its new owner.
Co-authored-by: Qwen-Coder <[email protected]>
---------
Co-authored-by: Qwen-Coder <[email protected]>
Apply the already merged documentation-only repair to the original release source before the unchanged full verification and missing-only publication gates.
Co-authored-by: Qwen-Coder <[email protected]>
The Maven module split promoted the ECMAScript number formatter to public
API and moved the external runtime kinds into the contracts module. Both
changes left javadoc that doclint now rejects:
- The formatter's comment compares against 1e21 with a bare "<", which
doclint reads as the start of an HTML tag. While the method was
package-private the comment was never documented, so it went unnoticed.
- The external provisioner links to the kinds class without importing it.
That resolved when both lived in the same package and no longer does.
The release profile is the only place that runs javadoc, so the failure
surfaced while publishing rather than in PR CI, and the managed runtime JAR
for the latest release was never built.
Make dependency references final while preserving optional collaborators, lazy cycle resolution and standalone construction. Migrate verification fixtures and add a synchronized bilingual design.
Co-authored-by: Qwen-Coder <[email protected]>
* refactor(managed-agent): Separate runtime broker execution workflows
Give process-local Binding and Session state a registry and separate execution reconciliation, takeover scans and cancellation while preserving the existing fenced state transitions and dispatch boundary. Add a deterministic cooldown completion-order regression and synchronized bilingual designs.
Co-authored-by: Qwen-Coder <[email protected]>
* style(managed-agent): Remove extra blank lines from runtime workflows
Co-authored-by: Qwen-Coder <[email protected]>
---------
Co-authored-by: Qwen-Coder <[email protected]>
Share Public and WebShell delivery while preserving replay, permissions, timestamp projections, heartbeats and deletion handling. Keep the session creation command already merged upstream and document the focused stream verification.
Co-authored-by: Qwen-Coder <[email protected]>
* test(managed-agent): close post-split verification gaps
Establish an active response before probing caller cancellation, retain close deadlines, run both independent embedding hosts from the full MySQL lane, and record post-merge acceptance boundaries.
Co-authored-by: Qwen-Coder <[email protected]>
* ci(managed-agent): keep embedding checks within workflow size gate
Move the existing embedding-host verification commands unchanged into a shell script so sdk-java.yml stays within the existing growth allowance. Extend the workflow guards to inspect the script and retain the test and cache-lock requirements.
Co-authored-by: Qwen-Coder <[email protected]>
* fix(cli): finish hosted settle budget call migration
Replace the 25 remaining references to the removed settle timeout constant with the existing per-test budget function. This repairs the TypeScript compilation failure exposed by the main merge while preserving the new shared deadline policy.
Co-authored-by: Qwen-Coder <[email protected]>
* fix(managed-agent): preserve Hosted fault checks after module split
Preserve the typed stream-idle failure and its duration across the SDK boundary. Update fault-injection fixtures for wrapped connectors and the verification module directory, and wait for the documented pending Items projection within the existing bounded poll.
Co-authored-by: Qwen-Coder <[email protected]>
---------
Co-authored-by: Qwen-Coder <[email protected]>
* refactor(managed-agent): split server into Maven modules
Separate contracts, orchestration, persistence, adapters, assembly, and verification while retaining the existing service delivery model. Move tests and build consumers together and document local evidence and pending CI acceptance.
Co-authored-by: Qwen-Coder <[email protected]>
* refactor(managed-agent): reduce configuration and SDK boilerplate
Co-authored-by: Qwen-Coder <[email protected]>
* refactor(managed-agent): narrow contracts and simplify test scaffolding
Co-authored-by: Qwen-Coder <[email protected]>
* fix(managed-agent): repair verification after module migration
Resolve shared fixtures and worker paths from the Maven module root, update CI packaging assertions, and align existing test fixtures with the extracted contracts. Restore restricted Workspace constructors and remove redundant test visibility changes without altering inherited MySQL coverage.
Co-authored-by: Qwen-Coder <[email protected]>
* test(managed-agent): align remaining Harness and OSS fixtures
Preserve SDK refusal messages and register the managed OSS adapter at fixture injection points. Keep the existing retry and client shutdown assertions intact.
Co-authored-by: Qwen-Coder <[email protected]>
* style(managed-agent): order Hosted cleanup Harness imports
Co-authored-by: Qwen-Coder <[email protected]>
* test(managed-agent): fix recovery smoke fixture and import order
Supply the required transcript coverage in the recovery browser fixture and wait for history before testing a complete handoff. Preserve its existing safety and submission assertions. Order the cleanup coordinator test imports for Checkstyle.
Co-authored-by: Qwen-Coder <[email protected]>
---------
Co-authored-by: Qwen-Coder <[email protected]>
Use bounded live message pages for public history and exports, remove the public snapshot schema and background lifecycle, and retain native recovery history.
Co-authored-by: Qwen-Coder <[email protected]>
Read bounded current SQL messages for initial and older Managed pages,
resume SSE from projection coverage, and export live bodies.
Co-authored-by: Qwen-Coder <[email protected]>
* feat(managed): Bound SQL session history and recovery
Extract the Managed H2/MySQL history and authority window from Draft #15696 onto main. Preserve daemon Legacy readers and notification admission, and defer standalone file-terminal streaming and residency work.
Retain captured canonical prefixes, exact receipts and CSI proof validation. Adopt the validated compact activation lease during streamed authority restoration.
Co-authored-by: Qwen-Coder <[email protected]>
* feat(managed): Scope SQL history to paged reads and lookups
Replace the broad authority and recovery changes with recent published Item pages and bounded canonical journal queries. Preserve existing execution, Legacy, schema and CSI behavior.
Co-authored-by: Qwen-Coder <[email protected]>
* fix(managed): Advance contract version for recent history query
Co-authored-by: Qwen-Coder <[email protected]>
---------
Co-authored-by: Qwen-Coder <[email protected]>
Keep the complete MySQL 8.4 integration profile and per-fork isolation. Retain JDBC precision and CAS coverage on the supported database and align workflow guards and documentation.
Co-authored-by: Qwen-Coder <[email protected]>
* feat(managed): add independent worktrees for main sessions
* fix(managed): reconcile session worktree contract guards
Join worktree descriptors into session pages while preserving the existing query budgets. Keep schema, CSI inventory, surface captures and lock-order witnesses consistent with the new feature, and memoize cleanup blockers and maintenance operation kinds.
Co-authored-by: Qwen-Coder <[email protected]>
* fix(managed): require initial worktree checkout completion
Record checkout completion only after Git succeeds and refuse reentry or verification without the matching durable receipt. Preserve incomplete directories and user edits.
Co-authored-by: Qwen-Coder <[email protected]>
* fix(managed): allow shared local project imports
Keep registration metadata private to each local installation so existing projects can be imported without taking over the parent marker. Refuse operations that require exclusive authority over shared storage.
Co-authored-by: Qwen-Coder <[email protected]>
* feat(web-shell): streamline managed worktree controls
Show the actual Git branch and use a one-click worktree choice that creates isolation on the first message. Keep ready worktree metadata in session details and match Local sidebar markers while preserving frozen retries and preparation feedback.
Co-authored-by: Qwen-Coder <[email protected]>
* fix(managed): address worktree lifecycle regressions
Keep cancellation available before worktree readiness, bind persistence to the Managed catalog, use maintenance-safe cleanup IDs and isolate Git scan scheduling. Refuse new checkouts nested under their source repository while retaining existing cleanup, and repair the affected CI fixtures.
Co-authored-by: Qwen-Coder <[email protected]>
---------
Co-authored-by: Qwen-Coder <[email protected]>
Download the immutable artifact emitted by the successful producer when only a distribution consumer is rerun.
Co-authored-by: Qwen-Coder <[email protected]>
Add journal-validated terminal query records for local activation and inbox duplicate replay, preserving terminal commit acknowledgements.
Co-authored-by: Qwen-Coder <[email protected]>
* test(managed-agent): Add Kubernetes pool qualification tools
Build from immutable source, constrain deployment to explicit business workers,
and verify deployment identity plus signed multi-tenant public flows.
Include the cross-Pod foreground publication configuration exercised on ACK.
Co-authored-by: Qwen-Coder <[email protected]>
* style(managed-agent): Match Kubernetes qualification YAML lint rules
Co-authored-by: Qwen-Coder <[email protected]>
---------
Co-authored-by: Qwen-Coder <[email protected]>
* docs(runtime): revise resident Workspace delivery scope
Remove complete CSI auditing from the first-release prerequisites and retain bounded retirement with ownership preserved. Record platform-managed reclamation as separately designed and qualified work.
Co-authored-by: Qwen-Coder <[email protected]>
* docs(runtime): distinguish withdrawal and acceptance baselines
Keep the historical audit withdrawal baseline separate from the source pinned for S1 qualification.
Co-authored-by: Qwen-Coder <[email protected]>
* docs(runtime): record resident cold placement acceptance blocker
Co-authored-by: Qwen-Coder <[email protected]>
* docs(runtime): record resident public tool admission blocker
Co-authored-by: Qwen-Coder <[email protected]>
* fix(runtime): unblock independent resident workspaces and tool admission
Keep independent resident mount paths distinct from storage ownership and reject unsupported tools before dispatch while preserving public Plan approval and existing unknown outcomes.
Co-authored-by: Qwen-Coder <[email protected]>
* fix(runtime): preserve hosted capability lookup compatibility
Limit resident capability discovery to file profiles, reuse validated warm metadata on legacy route absence, and allow failed queries to be retried. Preserve existing nonresident paths and fault-driver identity assertions.
Co-authored-by: Qwen-Coder <[email protected]>
* test(cli): drain pending hosted approval turns before teardown
Cancel and await the test-owned execution when approval observation or assertions fail, retaining the original happy-path awaits and timeout.
Co-authored-by: Qwen-Coder <[email protected]>
---------
Co-authored-by: Qwen-Coder <[email protected]>
Execute bounded public HTTPS text fetches in the bound Runtime with approval, durable results, and recovery support. Preserve local fetch behavior and CSI tool contracts.
Co-authored-by: Qwen-Coder <[email protected]>
* refactor(managed-agent): Simplify first-release contracts
Remove unreleased compatibility paths across the managed runtime, Java control plane and WebShell. Keep one fresh V1 baseline and document that schema versions stay at V1 until the first formal release.
Co-authored-by: Qwen-Coder <[email protected]>
* test(managed-agent): Align remaining tool fixture with current contract
Restore schema rationale comments while retaining the V1 baseline.
Co-authored-by: Qwen-Coder <[email protected]>
* fix(managed-agent): Align CSI proof with current checkpoint encoding
Require the three current nullable checkpoint fields in the native proof, keep malformed and missing fields rejected, and synchronize retained fixture bytes and digest chains. Update tests that still expected retired pre-release state and replay compatibility.
Co-authored-by: Qwen-Coder <[email protected]>
---------
Co-authored-by: Qwen-Coder <[email protected]>
* feat(managed-agent): add local serve and lightweight runtime packages
Co-authored-by: Qwen-Coder <[email protected]>
* feat(managed-agent): download local server runtime on first use
Require local Java 21, install the exact-version service JAR atomically from OSS or GitHub, and reuse verified runtime caches offline. Add protected signed Central publication and identical release distribution without bundling Java in the CLI.
Co-authored-by: Qwen-Coder <[email protected]>
* fix(ci): register managed runtime workflow size
Record the new release workflow in the repository size baseline so the static CI gate can track it.
Co-authored-by: Qwen-Coder <[email protected]>
* feat(managed-agent): Share the local daemon and Managed entry
Serve daemon APIs and the signed Managed proxy from one loopback listener. Keep workspace ownership explicit, enable authorized local directory import and preserve the daemon trust boundary.
Co-authored-by: Qwen-Coder <[email protected]>
* fix(cli): expose configured models in local Managed tasks
Co-authored-by: Qwen-Coder <[email protected]>
* test(web-shell): Cover Managed and local deep-link restoration
Co-authored-by: Qwen-Coder <[email protected]>
* test(managed-agent): Align local database expectation with main schema
Co-authored-by: Qwen-Coder <[email protected]>
* fix(managed): Keep local model and approval choices independent
Use native initial model selection for local model presets and persist it with the selected approval mode before admitting the first Turn. Preserve custom Agent definition policy pins and creation replay semantics.
Co-authored-by: Qwen-Coder <[email protected]>
---------
Co-authored-by: Qwen-Coder <[email protected]>
Expose qualified public child Sessions with immutable launch policy, aggregated approvals, prompt-scoped stopping and recovery, and WebShell task and transcript views.
Co-authored-by: Qwen-Coder <[email protected]>
Close Spring contexts before fixture database cleanup, run integration classes in isolated reusable forks, and remove redundant fixture validation and duplicate load-test execution. Document bounded local validation and preserve full CI gates.
Co-authored-by: Qwen-Coder <[email protected]>