Repository navigation
Description
Decision
Native Server 3.0 is released. The CLI moves from PHP to Rust and ships as a CLI 2.x minor release: 2.5.0, or the next free minor after #61's 2.4.0. The operator directed the rewrite; General approved the scope below on 2026-11-03.
Version decision (General, 2026-11-03, reversing the earlier 3.0.0 plan). The rewrite keeps every command, flag, JSON shape and exit code, so semver makes it a minor release. A major version would also break PHP Server compatibility. Published PHP Server 2.11.8 advertises client_compatibility.clients.cli.supported_versions: ">=2.0.0,<3.0.0", and the CLI warns on every command when its version is outside that range. No further PHP Server releases are planned, so the range will not widen. Native Server does not constrain the CLI version. General will ask Server to advertise a client-compatibility block in 3.1.0 with ranges that admit the 2.x line.
Users keep the same dw command, install path and automation contract. Nobody should need to change a script, profile or pipeline because the implementation language changed.
Scope
- Same repository, same
dwbinary name, same release channels, installers, Homebrew formula anddw upgradepath. - The Rust CLI depends on the published
durable-workflowcrate from sdk-rust, pinned to the latest qualified release. Missing client capabilities are filed as sdk-rust issues. Client code is not copied into the CLI. - The PHP implementation (PHAR and static-PHP binaries) is in maintenance until the Rust release ships: security and correctness fixes only. After that the PHAR gets a published deprecation date.
- The release notes state plainly that the implementation changed (a static Rust binary instead of the PHAR or static-PHP). Asset names and install channels stay the same, so
dw upgrademoves 2.3.x users with no action on their part.
Acceptance
- Command parity. Every command group in the 2.x CLI exists with the same names, arguments, options, environment variables and profile config file. Any intentional difference is listed in the release's upgrade notes with a reason.
- Automation contract.
--output=jsonand--output=jsonlproduce the same envelopes, validated against the publishedschemas/outputmanifests. Exit codes keep their current categories (usage, network, authentication, not-found, server, timeout, compatibility). - Parity harness. A repository command runs the PHP 2.x and Rust binaries against published Server 2.11.8 (PHP) and native Server 3.0.5. It compares stdout JSON shapes, exit codes and stderr categories after normalizing timestamps and ids. Stderr must also match on PHP 2.11.8, so the Rust 2.x build triggers no compatibility warning there. It runs in CI for each migrated slice.
- Correctness contracts carry over. Fixes made to the PHP CLI during the rewrite are reproduced in Rust with the same tests. That includes Preserve the selected run identity during bulk cancellation #59 (bulk cancel targets the exact selected run) and the human-output sanitization from Expose command keys with safe human output and exact JSON values #61.
- Release integrity from day one. The Rust release workflow keeps exact-source builds,
SHA256SUMS, SLSA attestations and public-download verification. It also uploads every asset before publication for stable releases and prereleases, so immutable releases (Make published CLI releases immutable without breaking asset publication #64) can be enabled without weakening the PHAR path. Code from the release (installers, the publisheddw) runs only in read-only jobs, never in the job that holds write or OIDC permissions (Run post-release verification outside the privileged release job (MEDIUM) #75). - Installed qualification. Before the Rust release is called delivered, the published binaries are installed through each installer and pass the harness against the published Servers above.
Plan
Each slice is a draft PR labelled agent:cli with Security review (or General while Security is out).
- Preserve the selected run identity during bulk cancellation #59 fixed in PHP and released as 2.3.4.
- Rust skeleton: Cargo crate, profile/config loading, output envelopes, exit codes, and the parity harness with one command wired through.
- Slices: workflow, namespace and schedule first, then the remaining groups (activity, worker, task-queue, search-attribute, schema, system, env, server, storage, query/workflow tasks, service-call, bridge, debug/doctor/watch/upgrade).
- Release workflow for the Rust binaries, then the 2.x minor release and installed qualification.
Activity
rmcdaniel commentedon Nov 3, 2026
Known issue (General's decision, 2026-11-03): the raw worker commands (
workflow-task:polland related) in the 2.x CLI fail against native Server 3.0.x because native omits the worker-protocolprotocol_versionbody field. The fix ships in Server 3.1.0 (durable-workflow/server#1001). No client workaround goes into the PHAR. The Rust CLI keeps the same body check, so its parity harness runs those commands against 3.1.0 or later.[-]Rewrite the CLI in Rust for 3.0.0 with full 2.x parity[/-][+]Rewrite the CLI in Rust as a 2.x minor release with full parity[/+]rmcdaniel commentedon Nov 4, 2026
Version decision updated in the body: the Rust CLI ships as a 2.x minor (2.5.0 or the next free minor), not 3.0.0. PHP Server 2.11.8 advertises CLI support
>=2.0.0,<3.0.0and won't be re-released, so a 3.0.0 CLI would warn on every command against PHP 2.x Servers. The rewrite is non-breaking, so semver makes it a minor anyway.rmcdaniel commentedon Nov 4, 2026
Step 2 is merged: #76 (
b460f0e1) adds the Rust skeleton, the 2.x command catalog and the parity harness.env:*,server:health, and 2.x command lookup/listings.General's requirements before any Rust release (2.5.0):
--helpparity;Next slice: the compatibility preflight and
server:info.rmcdaniel commentedon Nov 4, 2026
Progress: #79 is merged (
28e3a04c). It ports the compatibility preflight, session and--versionwarnings, exit-8 refusals,server:info/cluster:infoand PHP-exact JSON encoding, and CI compares the compatibility checks against the 2.x PHP classes. #80 (per-command--helpparity) is in review.Recorded follow-up from #79's review:
php::float_to_jsonrounds ties at 1e14 and above half-up, where PHP uses half-to-even (for example1149865714285714.2). Fix before 2.5.0.rmcdaniel commentedon Nov 4, 2026
Planning note for the remaining command slices: path encoding of IDs.
Most 2.x workflow commands put IDs and names into the URL without encoding them. Affected:
"/workflows/{$workflowId}/runs/{$runId}").Only five commands use
rawurlencode, for exampleactivity:describe. In 2.x, an ID containing/,?,#,%or a space therefore reaches a different route or query, or fails.The Rust port builds paths through the SDK's segment encoder (sdk-rust#183, which is
rawurlencode-compatible). For those IDs it sends the route the user meant, so it will differ from 2.x on exactly those inputs. For IDs made only of unreserved characters (A-Za-z0-9-._~), the requests are byte-identical.Proposal: encode every segment and list this as an intentional difference in the release notes. The alternative is to reproduce the unencoded paths. I'll add parity cases that keep IDs to unreserved characters, plus one case per affected command that records the difference.
rmcdaniel commentedon Nov 4, 2026
Decision (General, 2026-11-03): encode every path segment, and list it as an intentional difference in the 2.5.0 release notes. Do not reproduce the 2.x unencoded paths: an unencoded
../or?in an ID is a path-injection risk, not only a wrong route.Condition: parity cases against both published Servers (PHP 2.11.8 and native 3.0.5) with IDs containing
/, a space,%,?and#. Each must reach the right workflow, or get a clean 404 or validation refusal; it must never reach a different route. Server mishandling of%2Fgets filed against server with a repro, not worked around in the CLI.Probe results today (both Servers, raw HTTP):
/, space,%,?,#,@or~inworkflow_idvalidation_failedvalidation_failed:or.inworkflow_idGET /api/workflows/a%20b,a%25b,a%3Fb,a%23b,%2E%2Einstance_not_found, decoded idGET /api/workflows/cli%3Aenccli:enccli:encGET /api/workflows/a%2Fb,..%2Fhealthworkflow_ida/b/../health%2F. Apache's defaultAllowEncodedSlashes Offcauses it, and it is filed as server#1013./in a workflow ID, the impact is the missing JSON refusal, not an unreachable workflow.:is a valid ID character that the Rust CLI sends as%3Awhile 2.x sent it raw. Both Servers decode it to the same workflow, so the request is equivalent.Plan for the slices: each ported command that takes an ID or name in its path gets parity cases against both Servers:
/, space,%,?and#IDs, which expect the clean 404 or 422; the PHP%2Fcase is recorded as an expected difference citing server#1013;:ID that reaches the real workflow.The same applies to other path segments (signal, query and update names, schedule and activity IDs) as those commands land.
rmcdaniel commentedon Nov 4, 2026
cli#81 merged as ae2c3c6, with a tree equal to the cleared head 1d35507. Review nits carried to the next slice:
SHELL_VERBOSITYwith PHP(int)semantics (-1x→ quiet).$SHELLwith a trailing slash the waybasenamedoes.format_status: split and lowercase ASCII only.--output=-hvalidation order;dw -- -h.rmcdaniel commentedon Nov 4, 2026
Two more items to decide in the command slices, both raised by sdk-rust#183's clearance:
Policy::none); a 3xx comes back as a RawResponse. The 2.x Server client used Symfony HttpClient's default: it follows up to 20 redirects and dropsAuthorizationwhen the host changes. Plan: report a 3xx as an error and never re-send the bearer token to theLocation. Record it as an intentional difference, with a parity case using the mock Server.--tls-verify=false. 2.x prints no warning. The SDK logs onewarnon thedurable_workflow::tlstarget. Plan: install no tracing subscriber by default, so stderr stays byte-identical to 2.x; revisit if Security wants a visible warning.rmcdaniel commentedon Nov 4, 2026
Release workflow decisions (General, 2026-11-03). All three defaults were accepted, with conditions:
dw-*.dependencies.jsonbecomes a Cargo.lock inventory under a new schema id.release-rust.ymlwith a two-way version gate.release-rust.ymlreleases only versions >= 2.5.0;release.ymlrefuses them.release.ymlrefusal merges before any 2.5.0 tag exists.release.ymlretires after 2.5.0.dw upgradeis a release gate. The critical path is the published 2.x upgrade code (latest stable: 2.3.5) fetching 2.5.0 under the asset names it already expects.upgradecommand, with parity.dw upgradeto a 2.5.0 candidate release, and confirm the binary is checksum-verified and runs.rmcdaniel commentedon Nov 4, 2026
2.5.0 notes review (General, 2026-11-03). The wording is approved. Additions due before the tag:
Get-FileHashagainst SHA256SUMS, attestation, copy; no iex (cli#85).--tls-verify=falsemust warn on stderr (security requirement). 2.x printed no warning, so list this as an intentional difference. This replaces my earlier "no subscriber" plan.dw upgrade" only if the release-gate e2e check (published 2.3.5 → candidate, all 3 platforms) passes. Name any failing platform explicitly.30 remaining items
rmcdaniel commentedon Nov 4, 2026
General approves the proposed single next source slice in6641873059:
workflow:listand only the SDK transport adapter required for it, using the accepted public Rust SDK4.12.0 raw API. CLI owns implementation after the bounded61 maintenance correction. Preserve namespace selection, filters/pagination, exact output envelopes, error/exit categories, compatibility preflight and all accepted completion/doctor/runtime/security behavior. Add mock/PHP parity and no-request/refusal/error controls, then one ordinary draft with exact CI and independent Security review.The static audit is accepted as a release-readiness finding: current18/86 executable command coverage,68 unavailable commands and skipped live parity templates do not qualify stable2.5.0. Continue subsequent command groups as distinct source slices and keep the explicit Intel-installer/TLS gaps in the plan. No broader port, live Server experiment, tag/publisher or stable selector change is admitted by this decision.
rmcdaniel commentedon Nov 4, 2026
Current source order and concrete advancement: #61 safety correction and #102 P1 lock repair are accepted on actual main
0ce81284363ae3bc0832b95282d79ee0b3552834; public SDK=4.12.0/ checksum620a8287af73c363dac61f0a91f20971a39f3b8cdc9513fbea85cdbd95a74ba4is unchanged. The Rust command surface still has the previously recorded 18/86 executable coverage and 68 unavailable commands; neither the lock repair nor maintenance controls adds a handler or qualifies stable 2.5.0.The P1 distribution path is now concrete: maintenance source #103 is merged; its CI constraint is corrected on #104 successor
c14c7868, which has 12/12 fresh checks and awaits independent Security carry / General normal merge, then actual-target acceptance. CLI prepared the separate current-main PHP/Rust/reconciliation control repair with 120 local passing controls, still unpushed behind that checkpoint. General's latest source order places that repair next, followed by the separate Server520 history-export help truth correction. No larger CLI slice is mixed into the security/control changes.CLI then owns the already approved
workflow:listplus only its required public-SDK raw-request adapter. Inspection confirms the SDK can provide the existing namespace/auth/base-path/TLS/protocol headers through one raw request; no second HTTP client or retry layer is needed. Preserve the PHP command's filter/page-size behavior, compatibility preflight, Server envelope and namespace enrichment, human/JSON/jsonl output, refusal/error/exit categories and unsafe remote-text handling. Add matching PHP/mock parity and no-request controls, then normal source CI and Security. This remains source-only; no live Server experiment, larger port, stable selector, tag or publisher is admitted.Named next gate: Security carries exact #104, General owns its normal integration and the P1 release-source decisions, and CLI performs target acceptance and the ordered source follow-through. Those concrete requests are already sent in the owning PR/issue; #72 remains open through actual command completeness, installed parity and qualified release delivery.
rmcdaniel commentedon Nov 5, 2026
Replacement cli ownership reconciled from current GitHub. Main remains
2592865dbee812f21195d93fa55188037a0a79cf; the published Rust SDK pin stays =4.12.0. The accepted 18/86 executable-command audit and missing 68 handlers still apply. No maintenance/source-control work is counted as Rust command parity or stable 2.5.0 acceptance.Concrete priority advancement: P1 #101 verifier draft #106 now has exact fc67feaf source qualification, all 12 terminal checks and zero unresolved provider findings; renewed Security is requested. General owns its integration/final source decisions, cli owns actual maintenance acceptance and the separate current-main installer follow-through. The unchanged publisher's automatic Latest-before-install-check consequence is now explicit on #101, not hidden behind a presumed later alias gate.
The ordered source follow-up remains the separately scoped Server #520 truthful history-export help correction, then cli's approved
workflow:listplus only its published-SDK raw-request adapter. I inspected the actual PHP export consumer and pinned Rust catalog: PHP returns the Server's JSON and copies no external object bytes; Rust has catalog/help entries but no export handler. A small isolated PHP help diff is prepared for the separate source slice; no archive implementation, expanded port or live Server experiment is mixed into #106.Docs owner durable-workflow-github-io has resumed #457 and was directly told that PHP 2.3.7 does not satisfy its stable-2.5 gate. CLI retains the qualified stable source/package/installed/installer handoff, including Intel/TLS gaps and actual command completeness. After prerequisites, cli owns source work and evidence, Security owns independent review, and General owns the recorded integration/release decisions. Existing prerelease tags remain immutable and current Latest remains 2.3.6.
rmcdaniel commentedon Nov 5, 2026
The P1 source checkpoint has advanced: #106 is integrated and actual maintenance acceptance/cleanup is complete at 4da82b0, with the reviewed tree and all eleven merge checks. Separate current-main PATH follow-through #108 is frozen at 05d9e24 with 26 passing checks and requested Security review. Separate maintenance nonlatest publisher #109 is frozen at 7971697 with twelve passing checks; its remaining source/promotion-race review is requested. No final H/tag/publication/install gate has cleared.
The immediate #72 source dependency is concrete: General integrates #108 after Security carry; cli verifies actual main and normally refreshes the existing #107 help-only draft, obtains fresh combined-base checks/carry and accepts its eventual actual main. Cli then owns the already approved single
workflow:list/published-SDK raw-request adapter slice under the recorded source order. This maintains the accepted 18/86 executable-command audit; neither the installer/control work nor truthful PHP help adds a Rust command handler. TLS/Intel gaps, full command completeness and qualified installed/public delivery remain open.All current open work is now on named external gates: #101/#108/#109 source review and integration with Security/General; #72/#107 accepted-main integration before the next cli source slice; #60 Rust selected-run prerequisites and Workflow/Server's actual frozen intent/receipt capability handoff, already directly requested. Local branches are clean/pushed, no local build or container remains, and no duplicate source or runtime run was started. Cli resumes actual-target checks, branch cleanup, normal refresh or focused corrections when those decisions arrive.
rmcdaniel commentedon Nov 5, 2026
The approved first workflow source slice is now draft #110, exact
48c397c242b6e98dba384c091337f2fc6d573f73/ tree893ddb74390c3a8a2fa851500f16c760b52c6132, on accepted main2592865d. This is independent authoring under General's current direction; #108/#107 normal integration and refresh order remains separate.The candidate makes
workflow:listexecutable through the existing pinned public SDK =4.12.0 raw request API. One selected-namespace visibility page retains type/status/query/page-size behavior, canonical filter validation, namespace enrichment, full Server/cursor envelope and table/JSON/JSONL. The SDK owns base-path/auth/TLS/transport and one request attempt; no HTTP client, retry or pagination loop is duplicated. The required response adapter ports PHP's header/contract/legacy-field/consistency/projection boundary, including error-body normalization without masking HTTP status. Scoped error namespace/profile mode is retained.The same literal-data renderer already used by doctor is shared with workflow rows, compatibility warnings and human errors; remote formatter/control text remains literal while JSON retains exact values. That presentation change is intentional for unsafe text and has focused controls. It does not change the config/profile contract; a new profile test fixture was corrected to its existing
token_sourceformat.Concrete local evidence at this source: Rust 1.86 fmt/Clippy with warnings denied; 139 normal unit/integration tests pass, and the two PHP differential suites then pass separately. The new response suite covers 278 PHP-generated cases; all eight focused command tests pass. The 22 new mock cases match current PHP source exactly, zero mismatches. The 294 pre-existing parity cases and all Rust/PHP dependency, published-reference and Server pins are unchanged. Comparisons used source and disposable loopback fixtures; no public CLI or live Server was executed locally. All owned test containers are removed; bounded compiler cache is retained for this active PR.
The draft's normal CI must still bind its exact head, full pinned published-reference comparison and five native dry-run builds before independent Security review. Candidate executable coverage becomes 19/86; accepted main remains 18/86 until integration. Sixty-seven further command handlers, TLS/Intel source gaps, actual live parity and release qualification remain outside this slice. No stable readiness, tag/publication/runtime experiment or larger port is claimed.
Next owner/action: cli resolves any normal-CI/source finding on this same draft, then requests exact-head Security carry; General owns source integration. In parallel cli retains actual-target #109 acceptance and the returned final maintenance H proposal on #101, and refreshes #107 only after accepted #108 main. No unrelated merge timing blocks this already-approved authoring work.
rmcdaniel commentedon Nov 5, 2026
The approved first workflow slice now has qualified successor #110 / 771552a, tree 66f8dbae on accepted main 2592865: 26/26 checks pass, all five native builds pass, and both debug/release comparisons report 381/392 matches, eleven documented differences, zero unexpected. Local 140 Rust tests, two PHP differential suites (278 response cases), eight focused command controls and 22 current-PHP-source workflow cases pass. Dependency/reference/Server pins are unchanged.
The first normal debug/release runs remain failed. Their ANSI regression was corrected by limiting new literal rendering to workflow:list, with a focused old-renderer boundary test. The only added intentional reference difference is the named 2.3.5 invalid-filter stderr behavior versus accepted main's #61 JSON envelope; exact candidate JSON/exit/namespace/recommendation/zero-list-request behavior is asserted. No published pin or general comparison is relaxed.
Next owner/action: Security independently reviews the complete frozen exact head; General owns integration after carry. Cli owns corrections, any required normal accepted-base refresh, actual-main qualification and safe cleanup. Candidate coverage is 19/86; accepted main remains 18/86. #108 PATH carry and #107 accepted-base refresh remain separately requested, without blocking this completed authoring slice. #101 has accepted maintenance 82b3dfd and a final source/H proposal awaiting General's next bounded decision; #60 still requires the selected-run mutation ports and actual Workflow/Server intent/receipt authority. No larger command slice, live Server or release operation has been started.
rmcdaniel commentedon Nov 5, 2026
The first Rust
workflow:listslice now has independent Security SOURCE PASS at exact #110 head771552a69ca60b59d649a7d4eccc96c92c80d165, tree66f8dbae43811fb51f154056dd261e06e1afb2aa, old base2592865dbee812f21195d93fa55188037a0a79cf. Its recorded 26 successful checks and 381/392 comparisons (eleven documented differences, zero unexpected) qualify that pair only. Candidate executable coverage is 19/86; accepted main remains 18/86. The pinned SDK 4.12.0, TLS refusal, Intel-installer and release boundaries remain unchanged.The ordered current-main installer prerequisite #108 is integrated and accepted at
5fdf43b06d94d90f2603d65a783e336de5b4fc86: 16 exact-main successful checks and safe merged-branch cleanup. #107 is normally refreshed onto that main at0fe8cc5c36841dca038a68b7376f2eb43007c4c2, preserving the same PHP-only truthful-help blob; fresh checks and independent review are in progress (packet).Next owners/actions: cli completes #107 qualification, Security reviews its exact refreshed pair, General integrates it, then cli normally refreshes #110 against that actually accepted main and obtains fresh checks/review before General integration. The #110 branch remains frozen until that point. No runtime, installed-package, release or stable-readiness acceptance carries from these source milestones.
rmcdaniel commentedon Nov 5, 2026
The first
workflow:listsource slice is now accepted on actual main852bb3cf2b43dc5c23d786e03318e93ab5e2254a, tree690c2ad6e567426b3316eab7702e6404c7f36bdd, after refreshed-pair Security SOURCE PASS, ordered normal integration, sixteen successful exact-main checks and safe merged-branch cleanup. Both qualified debug/release comparisons remain 381/392 with eleven documented differences and zero unexpected; dependency/reference/Server pins and TLS refusal are unchanged.Actual accepted source coverage is now 19/86 executable commands; 67 unavailable, rather than the earlier 19-command proposal. CLI owns the remaining command ports, the separate TLS/Intel source gaps, future exact installed/Server qualification and downstream follow-through. The current top P1 action is #101's separately directed quota-repair source; this merge does not admit another handler, package solve, runtime experiment or release by implication. Stable 2.5 and documentation #457 remain held until their full artifact/installed gates. General/Security retain those scope and release decisions; CLI will return concrete remaining source slices in the owning issue after the current P1 correction.
rmcdaniel commentedon Nov 5, 2026
The next approved source slice is draft #113:
workflow:list-runs, exact head922fc1d3e9a0d04fd63442bcc2f9706e654ae6eb, tree1aa5e7c1dc2dcdde2a29f2121ff84171c7f2be0c, based on accepted main852bb3cf2b43dc5c23d786e03318e93ab5e2254a.One published SDK request preserves Server envelopes/cursors, run JSONL records, namespace enrichment, HTTP/compatibility errors and PHP table/count behavior. It adds no pagination, retry or mutation. The documented safe path-segment handling prevents an ID from selecting another route; no dependency, reference, Server or release pin moves. Human remote values remain literal.
Local source controls pass 146 ordinary Rust tests, fmt/clippy, both PHP differential suites including 556 response cases across both read paths, 21 new PHP command-source comparisons and seven harness tests. The first comparison correctly exposed omitted workflow-ID error context; the correction preserves server diagnostics and now matches all 21. Hosted CI will run the new cases against the unchanged pinned public PHP reference. No published CLI/live Server/runtime/installed acceptance is claimed locally.
Candidate coverage is 20/86; accepted main stays 19/86. cli owns CI/corrections then actual-main acceptance/cleanup; Security has the frozen source pair for independent review; General owns normal integration. The remaining 66 candidate command ports, TLS/Intel source gaps and future exact-artifact/Server/installed/stable-2.5/docs gates remain CLI-owned work. #101's failed 2.3.8 evidence and separately reviewed maintenance source correction #112 remain separate; no new publication action is inferred.
rmcdaniel commentedon Nov 5, 2026
The next read-only
namespace:listsource preparation is pushed on the isolatedagent/cli/72-namespace-listbranch: commitf65a8bf67f18b4671d55bc2e4debd80cbff8ec8c, treeb3f1fca763a3af8636c567d8bbe5bf5830b49ec6, currently based on accepted main852bb3cf2b43dc5c23d786e03318e93ab5e2254a. It remains separate from frozen #113 and will be normally refreshed against #113's actual accepted main before its implementation draft is exposed. No old-base qualification is carried to that future pair.The SDK owns the one request, configured auth/base/TLS and redirect policy. The source preserves the global namespace-list envelope, per-resource name context, JSON/JSONL, PHP table and HTTP/credential diagnostics; it adds no pagination, retry or mutation. A new source comparison found that a malformed nonempty scalar list was incorrectly rendered as empty; the correction preserves PHP's human refusal while JSON preserves the response. Non-scalar status rendering also follows the existing PHP formatter.
Local controls now pass fmt/clippy, 148 ordinary Rust tests on this provisional base, eight namespace integration cases, seven parity-harness tests and 34/34 PHP-source comparisons. The original 24/27 comparison is retained as diagnosis evidence, alongside the corrected result. No published CLI or live Server was executed. Owned bounded containers are removed; source/private-location/credential/whitespace scans pass, and every package/reference/Server/installer/release pin is unchanged.
Next owners/actions: Security finishes #113's independent source review; General owns its integration; cli owns actual-main acceptance and then normal refresh/fresh qualification of this namespace source. Accepted coverage remains 19/86, #113's candidate remains 20/86; this preparation is not a new acceptance claim. P1 #101's exact-H proposal/operation decision remains ahead of any publication or installed work.
rmcdaniel commentedon Nov 5, 2026
Namespace source preparation now covers both read-only
namespace:listandnamespace:describe, pushed as5c498b6a3a129629e6f0e81e2526c1a63c39fbf6/ tree3907378eae009c73b239f1c6d87c1cad4177c53don the existing isolated branch, still based on accepted main852bb3cf2b43dc5c23d786e03318e93ab5e2254a. There is no additional PR ahead of #113 integration.The describe path uses one SDK request with segment encoding, configured auth/base/TLS and no retry or pagination. JSONL keeps the complete resource; PHP resource-name fallback and explicit Server namespace fields survive. Human configuration/error values remain literal. The shared formatter preserves unnamed list-shaped items; a regression control catches accidental conversion while enriching resource context.
Fresh source qualification uses a branch-isolated build target: 153 ordinary Rust tests pass, with the existing two ignored controls, fmt/clippy, thirteen namespace integration controls, seven harness controls and 63/63 PHP-command-source comparisons across the two namespace reads. An initial shared-target check had stale tests from the other worktree and is discarded; no acceptance is based on it. All exact owned containers are removed, secret/private-location and diff scans pass, and no package/reference/Server/installer/release pin moves. These are source/mock comparisons; no published CLI or live Server was run.
Next owners/actions: cli owns actual-main qualification after #113, normal namespace refresh and fresh exact-pair checks; Security has been asked for #113 successor
a60940e8disposition after its 26 successful hosted contexts and 401/420 parity (19 documented, zero unexpected). General owns integration. Accepted coverage remains 19/86; #113 remains the twentieth-command candidate, and these two ports are preparation only. P1 #101 source correction is draft #114; original 2.3.9 is published-but-unqualified/non-Latest and every new operational effect remains separately held.rmcdaniel commentedon Nov 5, 2026
Concrete follow-through after #113 actual-main acceptance: draft #115 ports only
namespace:listandnamespace:describe, head 3196778, tree 85cb77ee0cae60ad0d0af94abd8cd296d172fe00, accepted base 6261dd8. The normal refresh merge ebb591f retains ordered parents [prepared5c498b6, accepted6261dd85]; workflow:list-runs response binding, descriptors and namespace scoping are preserved. Accepted coverage remains 20/86; these two source candidates would make22 only after review/integration/actual-main acceptance.Local source controls pass 162 Rust tests (two existing ignored), fmt/clippy, 13 parity-harness controls, and 65 PHP-source comparisons:63 matching, two explicitly documented redirect refusals, zero unexpected. Real loopback request controls cover SDK auth/base URL/encoded names, exact one target request, untouched Server resource contexts, JSON/JSONL/human literal output, malformed/empty/unnamed data and HTTP/usage/TLS/compatibility refusals. All five redirect statuses are refused without following or reporting success. The first added redirect test expected an unprefixed error; the established generic
Server error:prefix was retained and its assertion corrected. Cached/offline/read-only source controls and exact owned container cleanup completed; secret-pattern and public-boundary scans pass.The separately pushed ec7a4d2 namespace lifecycle preparation retains create/update/delete in its own commit, with its earlier159 Rust tests and120 comparisons (three documented redirect differences/zero unexpected). That old-base prep is neither accepted nor part of115; cli owns its later normal refresh and fresh pair checks. Source-only115 hosted CI/review are next, with General retaining integration. P1 #101/#114 source qualification/proposal remains separate; no private-tool build, Server, archive/installed stable2.5, TLS opt-out, publication or docs457 acceptance follows.
rmcdaniel commentedon Nov 5, 2026
Actual-main acceptance advances source coverage to 22/86: #115 normally merged as
eb2fce06487eb764d993ad90285ac35f1e9cf5e1, exact reviewed tree85cb77ee0cae60ad0d0af94abd8cd296d172fe00, ordered parents[6261dd856c4dd9cc63e8cb247aa5daa15ffded46,31967780df4a05a1357cc6b28a7c8b1109d52647]. All 16 actual-main checks succeeded. The acceptance/cleanup receipt includes the 162 Rust tests, 65 source comparisons (63 matching/two documented redirect refusals/zero unexpected), and exact merged branch/worktree removal.Next action/owner: cli retains the separately prepared namespace create/update/delete source at
ec7a4d21bdc0c116ffffc8c8051abb56184918bd; it will receive a normal refresh onto this accepted main and fresh pair checks before its next draft. General's current priority is the single shared central #295/#297 trust correction; cli owns that cross-repository implementation and has moved its finite H4 predecessor through #303. No other owner is duplicating the CLI ports.The 22 commands are accepted source coverage. Installed/archive/stable-2.5, selected-run mutation/resumable-manifest, live Server, Intel installer and docs #457 gates remain unqualified. Maintenance #114 is accepted separately and grants no release or installed carry.
rmcdaniel commentedon Nov 5, 2026
The namespace lifecycle refresh is now draft #116 at
55a56e0a90ce3e85256d0c147f25064f46b1a0b5/ tree48490ec372409c683de3dba666d3ffc53bcbe472, accepted baseeb2fce06487eb764d993ad90285ac35f1e9cf5e1. Its normal merge has ordered parents[ec7a4d21,eb2fce06]. The nine-file diff adds create/update/delete through the existing published SDK transport while retaining all accepted workflow/list-runs binding and namespace read behavior.Meaningful local checks pass168 Rust tests (two existing ignored), fmt/clippy,15 parity-harness controls and122 PHP-source comparisons:117 matching/five documented redirect refusals/zero unexpected. All six namespace PHP source files and the complete accepted parity-case sequence are preserved. Exact owned Docker container inventory is empty; cached public inputs were reused without acquisition or image build. Current hosted checks are successful except the original remaining source-parity cell still running; no result is carried or waived.
Cli owns normal current-head CI follow-through, any concrete source correction and actual-main acceptance/cleanup. Accepted coverage remains22/86; the three lifecycle candidates would make25 only after integration/acceptance. The central297 terminal-evidence closure is separate source work after Security's specific finite finding. No live Server, selected-run resumable journal, installed/archive stable2.5, release, Intel installer or docs457 qualification is claimed.
rmcdaniel commentedon Nov 5, 2026
Actual-main source acceptance is complete:
c84858cde750cad3611321aed52a58d89093b5eb, exact reviewed tree48490ec372409c683de3dba666d3ffc53bcbe472, ordered[eb2fce06487eb764d993ad90285ac35f1e9cf5e1,55a56e0a90ce3e85256d0c147f25064f46b1a0b5]. All16 actual-main check runs succeed after26/26 successful PR contexts. Normal protected merge used no bypass. The exact clean owner branch/worktree is removed and remote absence independently verified; only the generated owned Python bytecode cache was removed before that check.Accepted source coverage is now 25/86. Local168 Rust tests (two existing ignored),15 harness controls and122 PHP-source comparisons (117 matching/five documented redirect refusals/zero unexpected) remain source evidence. No live namespace mutation, installed/archive/stable2.5, resumable journal, Intel installer or release qualification follows. Cli owns the remaining #72 source slices; current priority is the sole central #295/#297 closure and authorized manual-only source wiring, with no actual setup dispatch selected.