You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[Task] Resolve GitHub activity ID collisions with explicit compatibility evidence #8325
The released-package and relocated-source probes delivered by #8317 and #8322 independently reproduce four GitHub activity failures: Comments.DeleteComment, Comments.GetComment, Comments.UpdateComment, and Gists.GetGist. Each declares an Input<T> Id that hides the workflow IActivity.Id. The existing serialized shape cannot reliably preserve both identities. This is a baseline defect, not evidence that relocation introduced it. #8313 remains blocked on an explicit resolution or supported migration.
Acceptance
Reproduce all four failures in offline regression fixtures, covering root activities and Sequence-contained activities, concrete and IActivity serialization entry points, and configured provider IDs.
Define and implement a serialization/activity-version compatibility strategy preserving the public package ID and established activity type identities. Preserve public CLR APIs where feasible; document any required input/version migration rather than silently renaming contracts.
Verify the workflow activity ID and provider input independently survive serialization, restoration, and subsequent reserialization. No GitHub API calls or credentials are needed.
Preserve representative historical JSON. If old JSON has already lost the workflow ID, report the irrecoverable information and require explicit migration input; do not invent an ID and call it preserved.
Prove unaffected GitHub activity contracts remain unchanged, and run the current source compatibility matrix. Keep the original released-host failure evidence intact and distinguish a corrected-source pass from a historical pass.
Store a focused source-integration patch or implementation in Core using the established consolidation approach, with tests and migration documentation. Incorporate and verify it in the eventual history-preserving import before closing the parent gate.
Dependencies and boundaries
Parent membership is #8286; this task blocks #8313. #8323 resolves a separate generated-root serialization defect and does not resolve these four static activities. Inspect existing Extensions work before implementation. No package publication, external communication, live provider operation, or production change is authorized by this task.
Source-grounded follow-up: all four retained released-host net10 fixtures serialize id as an Input object; their provider literal values survive, while IdentityPreserved is false. Core activity discovery includes every Input<T> property even without an InputAttribute, and root versus nested serialization follow different metadata paths. A simple rename or obsolete alias is therefore insufficient without root/nested regression tests. Any historical document that contains no original workflow ID needs explicit migration input; inventing a replacement is not identity preservation. Original receipts remain unchanged.
The PR adds the versioned activity compatibility patch, bounded offline migration, ADR, and a reproducible mapped-source replay. Its committed receipt records 6/6 focused .NET tests on net10.0 and 20 Python tests in normal and optimized modes. The actual history-preserving import, other target frameworks, and current source compatibility matrix remain open gates; this issue stays open.
Focused identity proof #8330 merged as 63abc7205343486a5aa20b205409b2a66daec950 after current-head required checks, exact-head Greptile 5/5 and resolved threads. It preserves the version-1 activity classes, adds explicit version-2 provider-ID inputs and a bounded offline workflow migration utility. The six recorded net10.0 mapped-source tests and 23 Python guards remain scoped evidence; net8.0/net9.0, refreshed full activity matrix and validation in the actual imported source are still required before this task can close. The merge subject suppressed publishing-capable push workflows; no package was published.
A review of #8333 exposed an additional fail-open case in the already merged offline GitHub activity-ID migration: a supported Sequence could contain Elsa.For or Elsa.StateMachine nodes with nested legacy GitHub activities that the visitor did not inspect. The focused fix is PR #8338, head 806151433fa53a37615fe01896dad09d8d67a65d. It rejects both unsupported containers before writing output; the CLI regression verifies no partial output and an unchanged input. Focused migration tests passed 17/17 in normal and optimized Python, and the full tooling suite passed. Current-head CI and review are pending. #8325 remains open for the framework matrix and actual imported-source validation; no package was published.
PR #8338 merged at 2700e12 after exact-head CI, Greptile 5/5 and zero unresolved threads. It prevents partial migration of nested legacy GitHub activity IDs while preserving unrelated business-data type fields. PR #8333 was rebased to include this guard at head 218cf9a; its refreshed checks/review are pending. #8325 stays open for the remaining net8/net9 and actual imported-source identity proof.
#8512 merged into draft import #8409 as ecd2a77613405efe98a4adb9f9587a8d668c31e7 (merge commit). It passed exact-head checks (import-rehearsal-tests, mapped-source-artifact-proof, selector-and-plan, pinned-source-contract) with Greptile 5/5 and resolved threads.
The version-2 activities (DeleteCommentV2, GetCommentV2, UpdateCommentV2, GetGistV2) and their identity tests are now in the imported source. Before, the fix existed only as a stored patch in Core.
Version-1 classes are unchanged, per the ADR.
Focused tests: 6/6 reviewed tests plus a new nested-ID regression test, on net10.0.
Compatibility matrix on the actual import, identical on net10.0, net9.0 and net8.0:
Released 3.8.4 has 134 activity types (118 plain + 16 generated); the imported source has 147.
The source adds only the 9 approved LDAP/MQTT activities and the 4 maintainer-approved GitHub version-2 contracts. The latter use a separate, versioned matrix entry that approves exactly those four.
Historical workflows import with IDs and typed inputs preserved.
Negative probes reject 18/18 mutations.
The four version-1 GitHub identity failures stay failing by maintainer decision, with no allowlist, so the runner exits 1. The ADR and migration utility are the supported path. The generated Agent root failure is fixed in source by #8323.
Remaining:
verification after the import lands on main;
generated activities beyond the controlled fixtures;
Delivered: #8409 landed on main as merge commit 8b34ab1e71c22c853e1aa340774231c80e92e677, with the imported histories preserved. The work and evidence for this issue were merged into the import branch, as recorded above. No package publication or cutover occurred.
Activity
sfmskywalker commentedon Sep 24, 2026
Source-grounded follow-up: all four retained released-host net10 fixtures serialize
idas an Input object; their provider literal values survive, whileIdentityPreservedis false. Core activity discovery includes everyInput<T>property even without an InputAttribute, and root versus nested serialization follow different metadata paths. A simple rename or obsolete alias is therefore insufficient without root/nested regression tests. Any historical document that contains no original workflow ID needs explicit migration input; inventing a replacement is not identity preservation. Original receipts remain unchanged.sfmskywalker commentedon Sep 24, 2026
Implementation is in PR #8330: #8330
The PR adds the versioned activity compatibility patch, bounded offline migration, ADR, and a reproducible mapped-source replay. Its committed receipt records 6/6 focused .NET tests on net10.0 and 20 Python tests in normal and optimized modes. The actual history-preserving import, other target frameworks, and current source compatibility matrix remain open gates; this issue stays open.
Add versioned GitHub activity identity proof for #8325
sfmskywalker commentedon Sep 24, 2026
Focused identity proof #8330 merged as
63abc7205343486a5aa20b205409b2a66daec950after current-head required checks, exact-head Greptile 5/5 and resolved threads. It preserves the version-1 activity classes, adds explicit version-2 provider-ID inputs and a bounded offline workflow migration utility. The six recorded net10.0 mapped-source tests and 23 Python guards remain scoped evidence; net8.0/net9.0, refreshed full activity matrix and validation in the actual imported source are still required before this task can close. The merge subject suppressed publishing-capable push workflows; no package was published.sfmskywalker commentedon Sep 24, 2026
A review of #8333 exposed an additional fail-open case in the already merged offline GitHub activity-ID migration: a supported Sequence could contain
Elsa.FororElsa.StateMachinenodes with nested legacy GitHub activities that the visitor did not inspect. The focused fix is PR #8338, head806151433fa53a37615fe01896dad09d8d67a65d. It rejects both unsupported containers before writing output; the CLI regression verifies no partial output and an unchanged input. Focused migration tests passed 17/17 in normal and optimized Python, and the full tooling suite passed. Current-head CI and review are pending. #8325 remains open for the framework matrix and actual imported-source validation; no package was published.sfmskywalker commentedon Sep 24, 2026
PR #8338 merged at 2700e12 after exact-head CI, Greptile 5/5 and zero unresolved threads. It prevents partial migration of nested legacy GitHub activity IDs while preserving unrelated business-data type fields. PR #8333 was rebased to include this guard at head 218cf9a; its refreshed checks/review are pending. #8325 stays open for the remaining net8/net9 and actual imported-source identity proof.
test(github): check nested V2 activity IDs; record slnf update proven…
Merge pull request #8512 from elsa-workflows/audit/8313-imported-acti…
sfmskywalker commentedon Sep 27, 2026
#8512 merged into draft import #8409 as
ecd2a77613405efe98a4adb9f9587a8d668c31e7(merge commit). It passed exact-head checks (import-rehearsal-tests, mapped-source-artifact-proof, selector-and-plan, pinned-source-contract) with Greptile 5/5 and resolved threads.GitHub fix (#8325):
DeleteCommentV2,GetCommentV2,UpdateCommentV2,GetGistV2) and their identity tests are now in the imported source. Before, the fix existed only as a stored patch in Core.Compatibility matrix on the actual import, identical on net10.0, net9.0 and net8.0:
The four version-1 GitHub identity failures stay failing by maintainer decision, with no allowlist, so the runner exits 1. The ADR and migration utility are the supported path. The generated Agent root failure is fixed in source by #8323.
Remaining:
main;No package publication occurred.
sfmskywalker commentedon Sep 29, 2026
Delivered: #8409 landed on
mainas merge commit8b34ab1e71c22c853e1aa340774231c80e92e677, with the imported histories preserved. The work and evidence for this issue were merged into the import branch, as recorded above. No package publication or cutover occurred.