Add owner-authorized manual workflow triggers - #6964
Conversation
ca2c16c to
e191591
Compare
59cdda3 to
5c314b3
Compare
|
🤖 I’m Larry. The identity/replay fixes and restack are published at
Exact-head validationBlox workstation
Retained evidence directory:
Publication skipped only the local Final-head CI is running. The new archive-based PostgreSQL gate still requires its actual CI execution result; previous-head CI is not evidence for this head. No merge or auto-merge was requested or performed. Residual scope: third-party clients must preserve retry identity and distinguish new operations. No new run-lookup index or schema uniqueness constraint is included; the manual-command route uses transactional event-ID deduplication. These are documented compatibility/performance considerations, not a claim of arbitrary-client exactly-once execution. Protected PRs #2737 and #6697 were not changed. |
|
🤖 I’m Larry. The final CI fixture correction is published at The first archive-based CI run correctly exposed a bootstrap defect: our fixtures replayed SQLx migration history into CI’s already Causal validation now matches CI: on Blox The same exact-head run also passed full relay (994 library + 13 target), SDK (302), CLI (414), DB (113) packages, all root unit groups, Desktop Rust (2,980 library tests plus integration targets), targeted root/Tauri Clippy, and formatting. Non-ignored command parser tests remain in the ordinary unit lane; ignored infrastructure tests outside the explicitly selected scope remain ignored. Downloaded evidence: Fresh-head GitHub checks remain the delivery gate. The prior-head backend failure is fixed and reproduced, not retried away. No merge/auto-merge; protected PRs #2737/#6697 unchanged. |
|
🤖 I’m Larry. Engineering complete at
Downloaded CI backend log: The PR remains draft, stacked on #6960, for the human-controlled ready/merge decision. I did not merge, arm auto-merge, or change protected PRs #2737/#6697. Compatibility and deferred index/uniqueness scope remain documented in the description. |
53b92fc to
8368014
Compare
Co-authored-by: Larry <8cf5a83f590ec0955b11647d1c88f796a98e088c30a492c58e0e46c3026ae7a4@buzz.block.builderlab.xyz> Signed-off-by: Logan Johnson <loganj@squareup.com>
Co-authored-by: Larry <8cf5a83f590ec0955b11647d1c88f796a98e088c30a492c58e0e46c3026ae7a4@buzz.block.builderlab.xyz> Signed-off-by: Logan Johnson <loganj@squareup.com>
Co-authored-by: Larry <8cf5a83f590ec0955b11647d1c88f796a98e088c30a492c58e0e46c3026ae7a4@buzz.block.builderlab.xyz> Signed-off-by: Logan Johnson <loganj@squareup.com>
Co-authored-by: Larry <8cf5a83f590ec0955b11647d1c88f796a98e088c30a492c58e0e46c3026ae7a4@buzz.block.builderlab.xyz> Signed-off-by: Logan Johnson <loganj@squareup.com>
Co-authored-by: Larry <8cf5a83f590ec0955b11647d1c88f796a98e088c30a492c58e0e46c3026ae7a4@buzz.block.builderlab.xyz> Signed-off-by: Logan Johnson <loganj@squareup.com>
Co-authored-by: Larry <8cf5a83f590ec0955b11647d1c88f796a98e088c30a492c58e0e46c3026ae7a4@buzz.block.builderlab.xyz> Signed-off-by: Logan Johnson <loganj@squareup.com>
8368014 to
bb7de1e
Compare
f9a9a12 to
0f5fded
Compare
|
🤖 I’m Larry. Restack published at The database store extraction moves four transaction/retry wrappers to Exact-head Blox validation on
Local retained log: An earlier pre-restack run timed out in the unrelated mesh echo test; it passed both in isolation and in two subsequent full relay runs. The original failure log is retained; its cause is not established. Missing GTK/WebKit dependencies were installed on the same workstation before Tauri checks passed. Publication skipped only the exact-head Blox-proven |
|
🤖 I’m Larry. This PR is ready for human review at
Marked ready for review. No merge or auto-merge performed. Blox workstation 2177084 was deleted after source/log custody was downloaded and verified. |
|
🤖 I’m Larry. Administrative correction: I restored this PR to draft, preserving the coordinating workstream’s requested state. It remains engineering-ready for human review; draft status does not reflect a remaining code blocker. The post-readiness delivery concern was reconciled and withdrawn: Fresh GitHub verification at unchanged |
🤖
I’m Larry. This PR adds owner-authorized manual workflow triggering on the exact-revision foundation in #6960.
Summary
Manual runs now require the workflow identity or its immutable human owner, active channel membership, an enabled in-scope workflow, and the current signed revision. Missing or stale revisions, ordinary channel-member requests, and revoked owners fail closed. Approval resumes retain the run’s original signed revision instead of picking up later definition edits.
CLI and Desktop use the SDK trigger builder. Each new invocation carries a unique request ID, so two otherwise identical requests in the same second create distinct runs. Redelivering the same signed request returns the original committed run ID and identical response, provided its authorization and revision remain valid. Command persistence and run creation share one transaction.
Related issue
No exact duplicate found in the earlier scope search. Stacked on #6960 (
bb7de1e3, workflow revision migration0041); supersedes the corresponding manual-trigger scope from #6721. Does not change #2737 or #6697.Testing
At
0f5fded7189a49160b6f3745143d757cb70f5309, on Blox:pgschema-initialized database: 10 ignored manual-trigger/revoked-owner tests and all 11 workflow DB tests passed. Non-ignored parser/tag tests passed in the ordinary unit lane.The backend integration CI job now explicitly runs the ignored PostgreSQL manual-trigger regressions from its existing nextest archive. CI status and evidence are recorded separately rather than treating prior-head checks as validation of this head.
Compatibility: third-party trigger clients must preserve the same signed event for a retry and vary unsigned event fields for a distinct invocation. The SDK supplies this identity automatically. A retry after revocation, disabling, or revision replacement is rejected rather than treated as a new authorization grant. This PR does not add a workflow-run lookup index or schema-level uniqueness constraint; it relies on transactional event-ID deduplication in the manual-command route.