Skip to content

Propose shared typed command intent vectors - #1048

Merged
rmcdaniel merged 4 commits into
mainfrom
workflow/216-command-intent-vectors
Nov 5, 2026
Merged

rmcdaniel merged 4 commits into
mainfrom
workflow/216-command-intent-vectors

Conversation

@rmcdaniel

Copy link
Copy Markdown
Member

The shared command-receipt work has no consumable typed-intent fixture. This adds source vectors derived from Core's existing CommandIntent behavior, with an executable unit test that reads all 64 case IDs: 38 values, 19 command digests and seven native request-root mappings, plus 12 digest equality/distinction relations.

The fixture preserves signed 64-bit values, binary64 bits including negative zero, bytes/text, array/map identity, byte-sorted map keys, Unicode normalization distinctions and explicit run targeting. It marks non-finite and protected-marker conventions separately from supported native input. The source mapping documents native outer-map argument projection, without claiming native adapter execution.

No runtime implementation, receipt schema, capability, external-payload authority or publication changes. Server owns the companion admission/retention/concurrency/read-later consequences; this draft gives that review an actual candidate identity. The artifact remains a proposed source contract until the backend mappings and ordinary checks are reconciled.

Validation: JSON/unique-ID, credential/local-path and public-boundary checks pass; fresh ordinary CI pending. No full/manual, native or installed run. Integration remains behind the existing #1036/#1047 source train.

Refs durable-workflow/.github#216, durable-workflow/server#934, durable-workflow/cli#60.

@rmcdaniel rmcdaniel left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bounded Server source-mapping review for exact 95e69210f89e1667184621992694b901df20713a / tree 73a16a02f7a1a3cf5cecf107773040dcbdba1701. I independently read the four changed paths, matched the 23,045-byte fixture SHA-256 445e5b4eef97e163fb459bc6662932b66e68c555e72ac0968d557767209d4092, and checked strict JSON, all 64 unique IDs, canonical Base64, signed-long carriers and exact binary64 bit widths.

No native source-mapping finding in this candidate:

  • The seven native_argument_cases agree with accepted Server d8eb3bc1 prepare_control_arguments: empty/list roots remain argument lists, a nonempty outer BTreeMap projects its values in byte-sorted key order, nested maps remain typed values, and an empty map or scalar root refuses. Array/list order is not reinterpreted as map ordering. The test correctly labels this as a PHP model of the source mapping, not executed native adaptation.
  • The 34 finite-Avro value cases preserve long/double, bytes/text, empty array/map, Unicode and signed-zero distinctions. The three non-finite cases remain Core canonical conventions refused by native ingress. The sole protected marker is explicitly a declared substitution convention, not plaintext authentication or fresh native transformed-input authority; extra-field and wrong-type maps retain ordinary map identity.
  • Command kind/name, explicit selected-run targeting and the ignored run argument under instance scope reconcile with the agreed intent boundaries. Namespace, instance and key belong to the backend lookup scope, not an invented additional Core digest field. The consuming test calls the existing CommandIntent implementation rather than replacing it.

This is source review only. I did not execute PHP/native tests, recompute Core's algorithm in another implementation, or treat pending ordinary CI as passed. These remain candidate bytes until Workflow completes its normal source qualification and freezes the consumable identity.

Server #934 still owns the companion same-key conflict/no-write, closure/continuation/prune/key-reuse, concurrency, authorized read-later and retained external-artifact binding vectors. Those will reference the actual frozen canonical IDs, including Boolean-versus-integer distinctions, and will not duplicate ingress or infer current receipt capability from this fixture. The current native table is 934/6667668710.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Original 95e69210 quality job failed on exactly one deterministic ECS formatting difference: a short assertion needed one line. Formatter-only successor f4cbc768 applies that exact diff; canonical artifact bytes/hash and every case ID are unchanged. The original failure is not a pass or rerun. Fresh ordinary successor checks are running, including the explicitly selected consuming unit test; no full/manual/native/installed run was added.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Exact formatter-only successor f4cbc76802c5cf575177bc9065ba648881933dbc has fresh ordinary qualification 17 success / seven declared PR-profile skips, no failing/pending checks. Original build 42099350276/1 passed quality/ECS/PHPStan, actual consuming unit contracts, selected MySQL/tracing/corpus/contracts and aggregate build; CodeQL, Sonar and boundary checks also passed.

I read the actual pr-unit-contracts log: at 20:07:40Z CommandIntentVectorTest::testPublishedSourceVectorsMatchTheExistingCanonicalImplementation passes. It consumes the fixture's 64 IDs and 12 digest relations against the real Core implementation; this is not merely a syntax or file-presence check. Its selected-unit phase reports 607 tests / 4,624 assertions with four warnings and one deprecation, retained as reported rather than claimed warning-free. Full unit/coverage/backend/upgrade jobs are profile skips and have not been executed for this head.

Server's independent mapping review remains about the unchanged artifact: 23,045 bytes / SHA-256 445e5b4eef97e163fb459bc6662932b66e68c555e72ac0968d557767209d4092, 38 value / 19 command / seven native-root IDs. The formatter successor changes no artifact bytes or product code. Integration stays after the #1036/#1047 source train, with normal maintained-base refresh/current checks before merge. No native adapter, receipt authority, external transform, installed tuple or capability publication is inferred.

@sonarqubecloud

sonarqubecloud Bot commented Nov 5, 2026

Copy link
Copy Markdown

@rmcdaniel
rmcdaniel marked this pull request as ready for review November 5, 2026 21:00
@rmcdaniel
rmcdaniel merged commit 7890928 into main Nov 5, 2026
24 checks passed
@rmcdaniel

Copy link
Copy Markdown
Member Author

Normal protected source integration completed at 2026-11-05 21:00:28Z as 78909284bbbd5cf9bc3b34c00a38a079ba35dbb5 / tree b965189add3576b6b509df2a70bd5b3b12ea0b48, ordered parents [2de50a9e, dd64bf24]. Exact fresh candidate had 17 successful checks / seven declared skips, no failed/pending, required build green, CLEAN/MERGEABLE; match-head merge used no admin override. Three vector/test/doc blobs are byte-identical to previously qualified f4cbc768; the only combined selector delta adds this consuming test while preserving the support-policy and cold-restoration entries.

The canonical source path now actually exists on main and at the immutable merge commit: resources/protocol/command-intent-v1-vectors.json, 64 IDs / 23,045 bytes / SHA-256 445e5b4eef97e163fb459bc6662932b66e68c555e72ac0968d557767209d4092, with 12 digest relations. This is the same artifact independently reviewed by Server and consumed successfully by PHP tests. No product runtime, receipt schema or capability changes.

Original automatic main Quality Cycle 42108617400/1 is running. Workflow owns actual unit/coverage/backend/upgrade and any failure, with current source/runtime graphs attributed honestly. Earlier #1047/#1034 original main runs retain separate outcomes; no extra full dispatch or cancellation/rerun occurred. Full-cycle acceptance remains pending for this merge. The branch stays until cleanup/dependency checks finish.

Server #934 owns the native receipt/retention/concurrency/read-later/schema and external-binding companion. CLI/SDK source consumers can reference these actual bytes for review; this is no native adapter/installed cohort, automatic resend authority, producer adoption, tag or release.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Original automatic resulting-main qualification is complete for merge 78909284bbbd5cf9bc3b34c00a38a079ba35dbb5, tree b965189add3576b6b509df2a70bd5b3b12ea0b48, ordered parents [2de50a9e, dd64bf24].

Build 42108617400, attempt 1 succeeded: 20 jobs succeeded and three PR-only jobs were declared skips. No rerun or extra full dispatch was used.

  • Quality: ECS and PHPStan passed.
  • Unit: 5,877 tests / 79,720 assertions, 49 skips and 15 PHPUnit notices; PHP 8.3.36 with PCOV 1.0.12, 138-package resolved graph. Actual test time 12:53.547.
  • MySQL: 2,833 tests / 28,270 assertions / three skips, zero errors or failures. Shards 0–3 exited zero in 849 / 789 / 594 / 793 seconds under the existing 900-second bound.
  • PostgreSQL: 2,833 tests / 27,875 assertions / 32 skips, zero errors or failures. Shards 0–3 exited zero in 507 / 428 / 526 / 600 seconds under the existing bound; shard 3's recorded JUnit body was 598.434883 seconds. Its passing original outcome is retained without claiming spare timing margin.
  • MariaDB, regression corpus, tracing HTTP, both current source-upgrade cells (Laravel 12/PHP 8.2 and Laravel 13/PHP 8.3), repository contracts, build and Sonar succeeded.
  • Coverage: 75,824 / 80,768 executable lines = 93.87%; the 93.08% ratchet passed, while the 100% target remains unmet. The actual five-report unit + MySQL summary binds this commit; artifact 13453382053 ZIP SHA-256 ab64629b382c7c04584c58666e496e3c5ccf34f4b2abb57dca1d068d04f9c680.

The canonical source file is now available at the immutable merge: 23,045 bytes / 64 IDs / SHA-256 445e5b4eef97e163fb459bc6662932b66e68c555e72ac0968d557767209d4092. The consumed PHP tests and Server source-mapping review retain their distinct attribution. Receipt authority, native implementation, pruning/closure/read-later and external payload consequences remain owned follow-through on central #216 / Server #934 / CLI #60; this source adoption does not advertise a native capability or authorize automatic resend.

Workflow owns normal incorporated-branch cleanup and the next concrete source/publication packet. No tag, release, installed/native experiment or consumer operation was performed by this qualification.

@rmcdaniel
rmcdaniel deleted the workflow/216-command-intent-vectors branch November 5, 2026 21:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant