Skip to content

Qualify fresh published SDK workflow and activity directions - #401

Merged
rmcdaniel merged 10 commits into
mainfrom
rust-325-sdk-directions
Oct 11, 2026
Merged

rmcdaniel merged 10 commits into
mainfrom
rust-325-sdk-directions

Conversation

@rmcdaniel

@rmcdaniel rmcdaniel commented Oct 11, 2026 •

Copy link
Copy Markdown
Member

Published PHP/Python/Rust workflow authors and separately routed activity workers now have a shared execution profile under #325. All nine directions use installed published SDKs: an original workflow-only process schedules work, a separate activity-only process commits it, and a cold workflow process completes the same run with unchanged history prefixes and exact int64/Unicode/null Avro values.

The new manifest retains the existing published PHP Server/embedded/SDK reference identities and pins the Python and Rust registry artifacts separately. Existing cohorts remain unchanged. Embedded provides the canonical authored counterpart and explicitly marks language SDK transport inapplicable.

The adapters use normal published SDK registration, task execution and shutdown APIs. A byte-preserving HTTP observer retains actual starts, claims and completion receipts. The reader requires three distinct processes, separate workflow/activity registrations and queues, unchanged full history checkpoints, the original run and activity, a later workflow task, and exact typed values. The complete reviewed manifest, compiled crate checksum/VCS receipt, hash-required installed wheel and actual loaded PHP/embedded sources are checked.

The existing preparation job builds the locked Rust adapter once with its existing registry/target cache and no debug information or incremental compilation. Runtime jobs receive thin adapters; they reuse the compiled native Server and start separately isolated PHP and embedded databases. Cleanup runs before removing their database services and networks. No SDK or native Server implementation is patched by this PR.

Validation: 4,335 shared-reader checks include34focused direction checks; PHP/JavaScript syntax, workflow YAML, shell syntax, Rust1.86formatting and diff checks pass. Source CI explicitly includes the three new recorder regressions. Combined recorder/CI contract checks pass9tests/110assertions locally.

Separate target directories retain both servers' raw evidence. The corrected recorder keeps actual claim/receipt fields in observations while retaining full unchanged wire bytes in the sidecars and the4MiB parent limit. Three focused PHP regressions pass with16assertions. The separate unnecessary Python activity-only polling is handed to SDK Python #119.

The retained failing phase request observations serialize to5,399,025bytes before correction and72,281bytes after summary, with all raw-file SHA256 values unchanged. The new three PHP regression tests are explicitly included in the required PHP CI selection; combined recorder/CI-contract checks pass9tests/110assertions locally.

Qualified candidate 08deec205d8b752ac82493fa46af886f76441c16 / tree 4bf3d5536a0591eb7683b85ad099976a308f6ab2 integrates main's #394/#403 without changing the frozen direction cohort. PHP/source38151936179 passes, with2635tests/60805assertions (six existing deprecations and one skip), including the three recorder regressions. Both boundaries and SDK preparation pass. Actual runnerb7eb8a08d508606c7102d91615f06ea44057996c has the same tree; official SDK artifact checksum/package identities and all seven worker source hashes match. Shared38151936175 is completedSUCCESS on SQLite, PostgreSQL16/17, MySQL8.0/8.4 and MariaDB10.11. The official SQLite artifact11707162970 checksum matches its API/uploader/download. Independent current-reader recheck passes all27logical records; all54PHP/native raw sidecars match their actual phase/process/run and stored request/receipt fields. Raw empty contract objects remain intact despite PHP's associative observation projection. The complete relevant profile has exact ZIP member comparison and a successful compressed archive byte round-trip. Earlier failed/cancelled observations retain their separate explicit limitations.

This is nine language directions of one authored workflow/activity scenario. Child directions, broader SDK/consumer parity, performance, migration and cutover remain open.

@rmcdaniel

rmcdaniel commented Oct 11, 2026 •

Copy link
Copy Markdown
Member Author

The first integrated candidate a674ebd57b8f223baaa69660263fcf0fe2b19c24 is unqualified: Shared Server fixtures 38146606591 completed with six failed runtime jobs. The PHP/source gate and both boundaries passed. The completed PostgreSQL 16 log and its official artifact identify a runner mistake in the first PHP/PHP original phase: the adapter accessed an absent WorkflowHandle.runId property and configured an invalid zero sticky cache capacity. The published client actually created the run with HTTP 201, but no direction worker registered, and the embedded/native direction recordings were never reached. This is not evidence of a Server or SDK product defect.

Corrected candidate 00844d909a8df364479fcd7bd4645d149c4fa814 / tree 6c0001e401f2cd5cb92b6b8451bbe61f073844e2 uses the published selectedRunId handle property and the default positive cache capacity; cold replay still uses a separate process. The reader now checks actual HTTP 201 creation for both the new run and new worker registration, plus registered:true. All 4,335 shared-reader checks pass, including 34 direction guards; affected PHP syntax and diff checks pass. An interim candidate's Shared run was cancelled before qualification; its PHP cancellation was requested.

Fresh Shared qualification 38147865494 and PHP/source 38147865483 are running. The PR remains draft. The published Rust 3.4.4/Python 2.5.4 adapter preparation and actual archive/source identity gate passed on the prior candidate, but the nine new runtime directions remain unqualified until their actual records and full gates pass. This remains one separately routed original-activity scenario across nine language directions; no performance, cutover or broader SDK capability claim is made.

@rmcdaniel

Copy link
Copy Markdown
Member Author

The completed PostgreSQL 17 job on candidate 00844d909a8df364479fcd7bd4645d149c4fa814 passes all nine SDK directions for PHP HTTP, native HTTP and the embedded counterpart. Its official artifact matches GitHub's SHA256 and size, and an independent reader recheck passes all three recordings. The actual HTTP records show distinct original/activity/replacement PIDs, 3→5→6 unchanged history checkpoints, activity invocation counts 0/1/0 and exact int64 9007199254740993 output in every direction.

Inspection also found a retention defect: both HTTP recorders wrote their raw phase sidecars to the same filenames, so native recording overwrote PHP's raw wire evidence. The parsed PHP observation remains, but that run cannot establish full raw retention for both targets. Corrected candidate 72d15ff73e5d5bb3059aa49ac1a0b7a9ed912ce7 / tree d4c5ba7193d9fa937d9b8d429989277a4a2460ba writes separate php, embedded and rust directories. It also integrates current main, as strict branch protection requires. Published SDKs, native execution, older cohorts and frozen reference bytes are unchanged.

Fresh Shared 38149034955 and PHP/source 38149035029 are running; both boundaries pass. Final qualification must verify all six database configurations and the separate raw sidecars. The PR stays draft. These are nine language directions of one separately routed activity scenario; broader capabilities, consumer parity, performance and cutover remain open.

@rmcdaniel

rmcdaniel commented Oct 11, 2026 •

Copy link
Copy Markdown
Member Author

Candidate 72d15ff73e5d5bb3059aa49ac1a0b7a9ed912ce7 remains unqualified. Shared run 38149034955 finished cancelled after MySQL 8.0's SDK direction step failed with parent spawnSync php ENOBUFS; PostgreSQL 17 was cancelled by matrix fail-fast, while SQLite, PostgreSQL 16, MySQL 8.4 and MariaDB 10.11 completed successfully. Its PHP/source and boundary checks passed.

The actual MySQL 8.0 artifact retains separate PHP/native/embedded paths correctly. For the affected PHP-workflow/Python-activity case, all three real SDK processes exited successfully, with one activity invocation and the original run preserved. Repeated workflow poll response metadata from the Python activity-only worker filled the parent recorder's 4 MiB output pipe. This observation is not a completed recording or a conformance pass; SDK Python #119 separately hands the unnecessary polling to the general agent.

Correction e278134a2771bb7f6d580f8989974ebad686d3a8 / tree 3193dda95854a111b39d8e92046e43ba1c107aa9 keeps actual registration/completion receipts, task claims and run identity in the reader observation, and retains the unchanged full response bytes in each target's raw sidecars. The 4 MiB parent limit remains. Three focused PHP regression tests pass with 16 assertions, including large metadata, false/missing receipts and empty polls; all 34 direction reader guards also pass. Full candidate CI and raw-retention qualification are rerunning; no merge, native publication or performance claim is authorized by the failed run.

An independent projection of the three actual retained failing phase traces confirms that their request observations alone serialize to5,399,025bytes before the correction, exceeding4MiB even before snapshots/package data. With the response summary they serialize to72,281bytes; all three full raw-file SHA256 values remain unchanged. This is an actual failure-trace size check, not a completed runtime recording. Current integrated candidate22db3e7f12f79d43f450981cd107aa6e0f214202/tree600772993ac0ba8941e5b30f627c35222a6fd91b has passed SDK preparation and both boundaries; all six actual runtime jobs and PHP/source remain live in Shared38150994963/PHP38150994979.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Integrated main's #403 after adding the recorder regressions to the required PHP CI's explicit unit selection. Local combined recorder/CI contract checks pass9tests/110assertions. New head 08deec205d8b752ac82493fa46af886f76441c16 / tree 4bf3d5536a0591eb7683b85ad099976a308f6ab2 contains the same frozen workflow/activity cohort and recorder correction; no SDK/native implementation change. The completed prior22db PHP/source check passes, but its interrupted Shared run remains cancelled and unqualified. Earlier intermediate runs stay separately recorded.

Merge coordination: this PR's strict source gate and six-configuration runtime/retention qualification need a current reviewed tree. Please sequence further nonurgent Server main merges after this candidate's checks, or coordinate the next integration, so the full matrix can finish without repeated invalidation. The general agent retains PHP Nexus/SDK/Waterline ownership; native/shared capability work remains in #325. Ordinary independent work can continue.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Candidate08deec205d8b752ac82493fa46af886f76441c16/tree4bf3d5536a0591eb7683b85ad099976a308f6ab2 is qualified for this bounded SDK direction slice. Shared38151936175 is completedSUCCESS across all six database configurations; PHP/source38151936179 and both boundaries pass. Source CI includes the new recorder regressions (2635tests/60805assertions,6existingdeprecations/1skip). Actual SDK preparation/package archive identities, seven worker source hashes and actual runner's same tree are verified.

Actual completed SQLite job114507493799/artifact11707162970 has27passing logical records. Its official size37,910,238/SHA2562df6ac39d6e70a3c549700b02209a4fa5be826fcf667ffd03c4ccca328c8bde7 match API/uploader/download. Independent current-reader comparison passes all three recordings. All54PHP/native sidecars match actual phase/process/run identities and stored requests/receipts, with only the documented PHP associative empty-contract-map projection accounted for; original wire objects and bytes remain intact. Complete relevant ZIP members compare exactly, and the compressed retained profile has a full successful byte round-trip. SQLite also passes71native execution tests.

This proves nine language directions of one authored workflow/activity scenario on separate PHP/native databases, with canonical embedded execution marked transport-inapplicable. It does not qualify children, broader consumers/namespaces, performance, migration or cutover. Native transitions remain serialized. Earlier00844 raw-PHP loss and72d ENOBUFS/fail-fast evidence stay separately unqualified. Proceeding to exact-tree merge and main verification; no native release/default-image change.

@rmcdaniel
rmcdaniel marked this pull request as ready for review October 11, 2026 16:00
@rmcdaniel
rmcdaniel merged commit b5a6e8d into main Oct 11, 2026
14 checks passed
@rmcdaniel
rmcdaniel deleted the rust-325-sdk-directions branch October 11, 2026 16:02
@rmcdaniel

Copy link
Copy Markdown
Member Author

Merged as b5a6e8d1e478d43af5219c560ec392e6d17258aa, tree 4bf3d5536a0591eb7683b85ad099976a308f6ab2, exactly matching the qualified candidate and actual runner. Remote branch rust-325-sdk-directions is deleted and its absence verified.

All six candidate runtime configurations, source CI, both boundaries and independent actual artifact/readers/raw-retention checks pass as recorded above. Main Shared38153629672 and main PHP38153629774 are live; the main boundary passes. Full main follow-through remains pending. No native/default-image publication, performance, migration or cutover claim. The next scoped fixture work remains published parent/child directions after main verification and cleanup.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Post-merge follow-through at b5a6e8d1e478d43af5219c560ec392e6d17258aa: Shared run 38153629672 passed SQLite, MySQL 8.0/8.4, MariaDB 10.11 and PostgreSQL 17. PostgreSQL 16's job is cancelled: GitHub's check annotation explicitly says it exceeded the maximum execution time of 15 minutes. Every comparison step, owned cleanup and artifact upload completed successfully, but that does not make the cancelled job a completed qualification pass. Main PHP/source and boundary checks pass.

The failed-job rerun is requested against that unchanged main merge. #406 records the candidate qualification and raises only PostgreSQL's job allowance to the existing MySQL allowance of 20 minutes, preserving a bounded run and its cleanup/evidence steps. No runtime, fixture or published tuple changes.

Independent inspection of the official main MariaDB artifact confirms all 27 logical records and all 54 separate PHP/native phase sidecars. The complete relevant profile matches the official ZIP members and its compressed archive passes a byte round-trip. The cancelled PostgreSQL log and annotation remain distinct from this successful artifact receipt.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Main follow-through is complete at the unchanged merge b5a6e8d1e478d43af5219c560ec392e6d17258aa: Shared run 38153629672, attempt 2 is completed success. The previously cancelled PostgreSQL 16 job passed on retry in 13 minutes 12 seconds. The other five successful configurations carry forward, so all six now have completed passing results. Main PHP/source and boundary checks also pass.

The original job's 15-minute timeout remains recorded separately. #406 documents this bounded qualification and provides 20-minute PostgreSQL headroom matching MySQL, with its own final source/Shared qualification underway. Official main MariaDB artifact inspection independently passed all 27 logical records and 54 separate PHP/native wire sidecars. One workflow/activity scenario across nine language directions remains the precise scope; broader capability and consumer families, performance and upgrade/cutover qualification remain open in #325.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants