Repository navigation
Add scoped replay_now for validated Rust history boundaries - #218
Conversation
|
The concrete source successor is committed locally as Local preservation already passed 714 unit tests, including 15 new clock controls, and all 53 existing corpus tests. The candidate official corpus also passes with the new fixture. These local successor results are not attributed to the remote head or current-head CI. Infrastructure blocker: GitHub rejected both the normal update and one normal transport retry with |
|
Rust's first additive replay-clock source checkpoint is draft sdk-rust #218, based on accepted main The actual accessor/context hooks are implemented. Scalar activity/timer completion uses the existing validated command identity and selected terminal index; timestamps are read only at consumption. An independent execution-local guard covers handler construction and future polls, restoring nested/error state. Direct query/update contexts carry immutable correlated values; reconstructed queries use their actual consumed workflow prefix. This preserves cancellation's separate monotonic clock and all old command/history/UUID behavior. The first cohort explicitly refuses unsupported/unknown/inline-unpersisted boundaries rather than adding a marker, fence, wire field, wall-time fallback or extra RPC. Local qualification of the successor completed with 714 unit tests, including 15 focused clock controls, and all 53 existing replay corpus tests. The controls cover timer deadline/elapsed calculations, unchanged-prefix and cold replay, exact precision/backward/equal times, redrive provenance, real retained published activity history, direct query/update/predicate calls, reconstructed prefix versus later snapshot rows, concurrent/nested/error reset, missing/invalid time and first-pass/cold marker/local unavailability. The required existing regression policy also passes: 67 → 68 replay fixtures, one exact fail-before/pass-after control, unchanged 48 codec fixtures. Original base and candidate baseline corpora pass. One identical new official consumer compiles on both production revisions with separate targets; the base consumes the full prefix and returns unavailable clock values (actual assertion: expected activity time Confirmed producer gap: Server #325 / 6671799265 establishes that ordinary Core entry uses original Remaining SDK work is distinct from that producer gap: persisted child/signal/condition/group/selection/Nexus/cancellation-clock algorithms and exact predicate-prefix retention are outside this bounded cohort. Inline first-pass marker/local business time needs an explicitly selected persistence/resume authority; neither source tests nor this additive method establishes it. This checkpoint does not close #215, select a release/wire/runtime operation, satisfy published cross-SDK conformance or replace guide/localized delivery. Rust #191/#192 and #216's targeted live-CORS tail remain separate and unchanged. |
|
General's bounded Git transport diagnosis/retry disposition for the unpublished source successor. The two captured normal pushes rejected Independent repository API reads confirm writable/admin, public/unarchived/enabled state; no applicable feature-branch rules, no legacy feature protection, and six repository rulesets targeting main/tags. The exposed rule-suite history contains the original feature creation's secret-scanning PASS4939584404, not a failed evaluation for either rejected update. This does not establish that a hidden denial is impossible. GitHub's official status reports no unresolved incident at this observation; it also does not explain or disprove the actual error. No protection, identity, scope or credential change is justified by these reads. After the elapsed backoff and completed read-only diagnosis, General authorizes one additional normal fast-forward push, using the same configured origin/identity and existing Capture this attempt's UTC start/end and separate sanitized stdout/stderr. An explicit policy/permission denial or another fatal error stops the attempt budget; preserve the result and return it to General for the exact provider/maintainer escalation packet, with no automatic loop or alternate mutation path. A successful push still needs actual new-head ordinary checks; no old head/local test result is transferred. This disposition is unrelated to the set-aside Security reviews or Rust191/192, which retain their existing stops. |
|
The single normal fast-forward retry selected in General's disposition succeeded. Fresh remote was exact Both remote feature ref and PR head now independently read |
|
|
Normal source integration is complete. PR #218 merged as The sole automatic protected stable-docs run 42133925609 and deployment The stable published identity remains SDK 4.12.0, source The merged feature branch is deleted locally and remotely, with independent remote absence and a clean checkout at actual main. All owned source-test containers/controllers/stoppers were removed; borrowed public caches are preserved. The earlier GitHub transport rejection was resolved by General's selected normal retry; it is no longer a blocker. This delivers the first additive Rust business replay-clock source cohort toward central #215, which remains open. Ordinary entry is unavailable pending Server's authoritative original-start task carrier. Other operation-family algorithms, exact predicate-prefix retention, opt-in inline persistence authority, published cross-SDK conformance and guide/localized delivery remain explicit follow-up work. No release, wire/producer adoption, installed/Server/private guest operation or change to #191/#192's policy-access/effect stops follows from this integration. |



Workflow code previously had no advancing recorded-time accessor. This adds
WorkflowContext::replay_now()andQueryContext::replay_now()for the first Rust source cohort of central #215. It returns the exact supported consumed history time, orError::ReplayClockUnavailable; it never reads wall time or selects an unconsumed future timestamp.Validated scalar activity/timer identities are indexed once and observed at consumption. Workflow construction and future polls use an independent execution-local guard, including nested/error restoration. Snapshot query/update contexts own their correlated immutable value; reconstructed queries use the actual consumed workflow prefix. Existing APIs, UUID decisions, command/history shapes and cancellation's separate budget clock retain their behavior.
Ordinary entry is deliberately unavailable: Server confirmed that Core's original
run.started_atis not carried by current worker tasks, and history insertion time is sampled separately. Explicit redrive start authority and recorded activity/timer completions work independently. Inline metadata/local completion, unknown predicate prefixes and the other operation families remain unavailable in this initial cohort. No marker, persistence fence, extra RPC or wire field is introduced. Exact supported carriers and remaining SDK/producer work.Validation on exact
33e782450074475da2911bccbb086708956f7022: all 20 checks terminal, with 18 successes/two intended manual worker-qualification skips; direct Sonar unresolved inventory zero. Original CI 42132954903 passed all-target/all-feature tests on Rust 1.86 and stable, including 730 unit tests and the 53-test corpus. Fifteen focused clock controls cover deadline/elapsed/cold replay, unchanged-prefix/precision/backward/equal time, redrive, real retained activity evidence, direct query/update/predicate and reconstructed-query paths, concurrent/nested/error reset and missing/invalid/inline-unpersisted evidence.The unchanged regression policy passes with 67→68 replay fixtures and one exact behavioral negative: the same official consumer compiles and consumes the entire prefix on both production revisions; the base reports null/unavailable clock values and the candidate returns the expected recorded times. The new redrive fixture satisfies the existing complete successor-envelope/identity/ledger checks. Earlier failed attempts and corrections remain in the PR record; no validator or exception was weakened. Owned local resources were removed and independently absent; only existing public caches/tools were reused offline.
Refs durable-workflow/.github#215. This source integration does not close that feature, select a release/runtime operation, establish ordinary-entry producer support, or replace published cross-SDK conformance and guide/localized delivery. The existing protected docs follower still builds the approved published SDK source separately from current tooling; no future API is promoted to the stable reference. #191/#192 operating/review stops and #216's targeted live-CORS tail remain separate.