qwen-code/docs
Shaojin Wen fc84ced8a5
test(managed-agent): gate the FG11f refusing arms (FG11f) (#14821)
* wip(managed-agent): stage the FG11f publication arms on a public Shell wake turn

Not ready to push: the warm-up turn is refused with workspace_unavailable
before the fault arm runs. Stage 1 of the stacked chain.

* test(managed-agent): gate the FG11f lost-ack publication fault (FG11f)

A wake turn that publishes a Shell capture can lose the object store's
acknowledgement after the bytes landed. Nothing in CI pins what happens next:
the shared OSS stub accepts every write, and the only real-bucket fault gate is
opt-in and outside CI.

The case runs a public Shell session through the packaged stack, faults the
physical put, and pins the properties the store actually guarantees: the
committed capture is kept and every large object is this run's bytes, a refused
write never stores anything, the operation settles from what the store recorded,
the Shell runs once, and the run settles once. `fail-before-write` and
`timeout` remain scoped in the design.

The fixture now registers the storage guard whenever the guard itself is
enabled. It previously registered only on Linux, so a Shell turn on macOS was
refused before its fault arm could run.

The fork budget follows the 2x convention: the cell measured 41.1 s, so the
healthy sum becomes 8527 s, the fork 9127 s, the Verify step 163 minutes and the
job 256.

* test(managed-agent): gate the FG11f refusing arms (FG11f)

The publication gate shipped only the lost-ack arm, and the case resolves which
arm to run from a property, so CI exercised whichever one the default picked.
The two refusing arms now have their own methods: a put that throws before the
bytes land, and a put that stays silent past the operation timeout. Both assert
that nothing was stored, that the operation stays unresolved, that the Shell
runs once and that the run settles once.

Measured locally through the packaged stack: 41.2 s and 80.0 s. The fork budget
follows the 2x convention, so the healthy sum becomes 8769 s, the fork 9369 s,
the Verify step 167 minutes and the job 260.

* fix(managed-agent): drop the unused import and re-align the ceiling comment

The FG11f case carried an import for a symbol it never used; with
includeTestSourceDirectory on and UnusedImports at error severity, that is a
checkstyle failure rather than a warning. The step-ceiling comment also still
read 161 while the literal beneath it is 163.

* refactor(managed-agent): take the FG11f arm as a parameter and re-align the comments

The wrapper methods delegated through a mutable field, which made the case
property stop narrowing a run: naming one arm also ran the other wrapper and
the default-resolving method. The arm is now a helper parameter and each method
gates on `selected()` the way fg11b and fg11c do, so an unset property runs
every arm and naming one runs only that arm.

Two comments still described the older budget: the step-ceiling line read 161
against a 167 literal, and the job-ceiling derivation stopped at the 9045 s
fork without the FG12d, FG11f-arm or refusing-arm steps it now includes.

* test(managed-agent): pin that the fault fired and the payload is the run's own

Three probes showed the arm passing for the wrong reason: with the injection
removed, with the retained bytes replaced by a same-sized placeholder, and with
the operation never settling, the case stayed green and only an absent object
reddened it. The arm now asserts that its injection fired, that every
OBJECT_PUT settles RETURNED, and that the retained payload is exactly the
Shell's 2 MiB of output.

Two ceiling comments still described the pre-merge budget; both now carry the
FG11f step and the values the literals hold.

* test(managed-agent): count the physical puts each object takes

A reconcile that regressed into writing the same key again would be invisible
to the arm: putIfAbsent reports FileAlreadyExists, the real adapter swallows it
and the object map still holds the first write, so the settlement assertions
keep passing. The stub now counts putObject calls per key and the lost-ack arm
asserts every key was written exactly once.

* test(managed-agent): restore the FG11b retryable-status guard

The merge that retargeted this branch to main resolved the FG11b helper from
the branch side, silently reverting #14645: it accepted a 409 as final and
named only one code on a 503. The helper and the comment above the case are
main's again, so a public route that starts answering 409 fails at once and a
coded 503 must name the writer conflict or the lost-answer code.
2026-10-20 17:00:46 +08:00
..
archive/managed-agent-schema refactor(managed-agent): Consolidate server and broker sources (#14277) 2026-10-16 00:28:58 +00:00
assets feat(managed-agent): Improve workspace selection and tool progress (#14405) 2026-10-17 10:35:25 +08:00
design test(managed-agent): gate the FG11f refusing arms (FG11f) (#14821) 2026-10-20 17:00:46 +08:00
developers feat(web-shell): show background shell task runtime details (#14831) 2026-10-20 16:18:17 +08:00
e2e-tests refactor(core,cli): rename generic Gemini identifiers to Llm (#10124) 2026-08-28 03:05:49 +00:00
images fix(web-shell): render built-in tag icons (#7024) 2026-07-17 15:33:34 +00:00
plans refactor(managed-agent): Consolidate server and broker sources (#14277) 2026-10-16 00:28:58 +00:00
superpowers feat(cli): reference prior sessions via @ and add completion tabs (#7302) 2026-07-24 06:11:48 +00:00
users feat(mods): support tool middleware in interactive terminals (#14565) 2026-10-20 16:14:50 +08:00
verification refactor(managed-agent): organize server packages by responsibility (#14710) 2026-10-19 14:16:18 +00:00
_meta.ts
evaluation.md docs(readme): simplify evaluation overview and refine trend chart (#14093) 2026-10-14 02:33:54 +00:00
evaluation.zh-CN.md docs(readme): simplify evaluation overview and refine trend chart (#14093) 2026-10-14 02:33:54 +00:00
index.md