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
Owner priority change — 2026-10-08: structural cutover first
The owner has redirected delivery toward completing the repository consolidation and cutover as soon as possible. Production-grade Slack delivery is no longer a prerequisite for structural consolidation or source-repository archival. The earlier broader integration roadmap below is retained as future work, not an obligation to finish every connector capability before cutover.
Current completion boundary: implement the approved root core/, extensions/, studio/ layout (#8667); preserve all accepted source/history and latest release inclusion; verify the relocated solution, product builds/tests, packages and relevant developer workflows; reconcile contributor issues/PRs and contribution ownership; establish working release/publisher ownership and retire competing source workflows; then perform and verify the source-repository read-only/archival cutover with accurate documentation and recovery instructions. Existing concrete operational/publisher decisions remain explicit; a directory move alone is not cutover.
Pilot boundary: reuse existing accepted module/package evidence where sufficient. If an additional structural example is needed, timebox a simple deterministic sample module to roughly one hour of implementation, with no external credentials, live Slack setup, durable message delivery or production connector platform expansion. Required verification remains explicit; the timebox is not a claim that all CI finishes within one hour.
Slack disposition:#8666 is deferred, incomplete, with its branch and worktree changes preserved. Stop new Slack implementation and extra verification runs. Source and Admission evidence already accepted remains retained, but unmerged Socket code and uncompiled new discard scenarios must not enter the structural migration merely to save prior effort. Remaining Slack provider/fault/process/six-cell/outbound/live-operational scope stays in its existing issues as post-cutover work, not silently accepted or deleted.
Current delivery state: structural #8667, Core contribution register #8670 and source notices #8676 are accepted and closed. Studio #1128 and Extensions #288 are merged with reviewed/tested tree equality and verified nonpublishing merge-event readbacks. No implementation leaf is active while the next maintenance/npm ownership and archival sequencing choices remain pending. Preserve deferred Socket work.
After cutover: investigate an alternative React + React Flow Elsa Studio alongside the existing Blazor implementation. First inventory the complete current Blazor feature surface. Separately inspect Elsa Foundation Studio as an architectural reference for modular projects serving React modules and React Flow integration. Reuse suitable infrastructure patterns, not Elsa 4 product functionality or an assumed Elsa 4 migration. This discovery begins after cutover and does not block it.
The owner clarified that the first useful deliverable is structural repository consolidation. The lead will close that bounded milestone separately from the complete program and will surface any requirement that materially expands its outcome or effort. The full goal remains open until its required later outcomes are verified.
React Studio discovery after cutover: inventory Blazor Studio functionality and review Foundation Studio's modular React/React Flow infrastructure, producing an architecture proposal before implementation. This is subsequent work and does not block consolidation or archival.
Each next delivery slice will state its usable outcome, done criteria, exclusions and estimate/checkpoint before implementation. Related improvements remain separate unless needed to meet that slice's concrete outcome.
Current delivery checkpoint — structural and contribution records accepted
Structural milestone #8667 remains accepted at 658a9da06b2b77417f5c07eee00fff68478ba15c. Contribution handoff #8670 is now accepted through PR #8675, merged on 2026-10-08 at main 8802a883d6069d689d110008c904787b3b691042. Exact-head independent review, Greptile 5/5 and CI passed. The final clean main tree equals the reviewed/tested candidate and contains only the four reviewed documentation/data changes relative to the structural baseline. The register preserves all 205 issues and 31 PRs from its dated snapshots; it does not implement those proposals or freeze future source activity.
Source notices #8676 are accepted through Studio #1128 at dab6831ac11aa0d2caef93f39c8e705d9459bbaa and Extensions #288 at 2611ee6d9b6fb5e50f4c0b3fbc9cc15b355b4751. Exact-head independent review and required CI passed. Actual merge parents/tree/subject and source main refs were read back; bounded exact-merge and Packages-workflow queries showed no Packages runs. Dynamic analysis is separate. Extensions Copilot did not deliver an advisory review; it is not claimed as passed. The notices preserve existing 3.8/3.9 maintenance procedures and original contributor identities.
No delivery Task is currently active. The next maintenance-support/home, npm ownership and archival-versus-full-release sequencing decisions remain pending. The concrete maintenance-home option and estimate preserves original release layouts in Core: approximately 1½–2 engineering days plus approval/access delays, subject to historical-build results. This option has not been selected or implemented. Keep the next slice bounded and estimated before activation.
A verified maintenance/npm publisher replacement, retirement of competing source authority and actual read-only archival remain open under #8216/#8220. No source settings, package publication or archival occurred. Retained maintenance continues until an explicitly approved replacement is verified or an explicit support-policy decision changes it. The full program is not complete. Slack remains deferred and React discovery starts after cutover.
Historical structural follow-up — 2026-10-08
PR #8669 is merged and the three-product layout is on main. Task #8667 remains active for the final automatic main Packages result and documentation correction PR #8674: 18 stale copyable command paths across nine Markdown files. The correction has exact-head independent APPROVE + HIGH and Greptile 5/5 at 875b69259609fb8ea36a6284e44ca7367ecc281f; CI and merge remain pending. The task's developer-command criterion is explicitly reopened. Main Docker, publication guards and CodeQL/Code Quality are successful; Docker/guard original logs have been verified by the lead. No publication or archival occurred. #8670 remains the queued contribution-handoff task.
Structural main checkpoint — 2026-10-08 17:03 UTC
PR #8669 is merged as 598f8fef28cdca503d20373c2e5cd09e129024d2. The actual merge tree equals the reviewed candidate, with both expected parents and baseline/pure-move history preserved. Exact-head independent review, Greptile 5/5 and all premerge CI passed; lead acceptance and original-artifact scope.
The clean actual-main checkout has root sibling core/, extensions/, and studio/ product trees. All 10,910 baseline destinations/blobs/modes are accounted for; solution/filter and ADR checks pass. Fresh all-repository advertisements and release pagination verify all 35 selected 3.8.x/3.9.0 refs and source main tips are included. Latest and newest published release remain 3.9.0 in Core, Studio and Extensions. Final-main source audit SHA-256: 8089d8643515f3a3e655b2ed6c5dbf4a0fa8a789c5a5fe0eac72748070243a4f.
[Task] Relocate Core, Extensions and Studio into separate root product directories #8667 remains the sole active Task while actual main-push Packages, Docker, publication guards and CodeQL/Code Quality finish. Candidate receipts remain bound to b117; identical tracked trees do not relabel them as main-SHA artifacts. The shared integration branch was restored after GitHub deleted it; its duplicate Packages run was cancelled/requested cancelled, preserving the actual main run.
No package publication, deployment or source archival occurred. Maintenance support, npm ownership and publisher/operational cutover decisions remain explicit. Slack stays deferred with WIP preserved; React Studio discovery remains after cutover.
Summary
Build a sustainable integration ecosystem for Elsa 3: consolidate Core, all Extensions, and Elsa Studio into elsa-workflows/elsa-core, enable independently released connectors, provide shared connector infrastructure, and deliver a researched, prioritized catalog of useful integrations.
Elsa 3 is the implementation target. Preserve a practical path to Elsa 4 by separating provider-facing logic from runtime adapters where useful; do not block Elsa 3 delivery on a universal cross-version abstraction.
This issue is the program charter and execution plan. The initial breakdown has been created: 10 epics, 40 features, 6 stories and 12 tasks. E/F/S/T identifiers are planning IDs mapped to actual issues in the execution index below. Research and implementation are in progress; the latest execution checkpoint is below.
Superseded delivery checkpoint — 2026-10-08, before the owner priority change
Full goal remains active. Required migration, independent release capability, publisher cutover, shared connector infrastructure, Slack pilot, researched catalog and operational acceptance remain in scope.
Package prerequisite accepted:[Task] Prepare seven Admission and Connections packages with PostgreSQL consumer proof #8661 is Done / Accepted / Passed through Package Admission and Connections with PostgreSQL consumer proof #8664, merged to shared integration as c98ba68951178b0be7f39deeb9d4bda4cd678e77, tree 84add4c53979a7557be44f70044f5e852b352cd0 equal to reviewed/tested e67. Lead acceptance covers all eight criteria, 232 original package/symbol pairs and six cells/twelve real PostgreSQL scenarios, provenance, migrations and cleanup. Exact-head independent APPROVE + HIGH, Greptile 5/5 and CI passed. Prior failures remain preserved. Live Socket ACK/reconnect, outbound CreateMessage/grants/unknown-write safety, same-thread reply and operational acceptance remain required; neither parent is closed.
Operational effects: automatic wiki [codex] Refresh codebase wiki #8610 and npm security update Bump the npm_and_yarn group across 3 directories with 4 updates #8659 were generated/updated by main workflows; neither was merged. GitHub's automatic merged-branch deletion was repaired by restoring the shared program ref and fast-forwarding it to accepted main. No package publication, deployment, source-publisher cutover, deprecation, archival, live Slack credentials or message delivery occurred. Socket Mode remains the approved sandbox transport; live settings and consent remain activation gates.
Problem
Elsa needs both foundational engine/platform modules and a broad set of business integrations. Developers should be able to work on both in one solution, using solution filters for focused development and debugging. A connector release must not require republishing unrelated connectors or core.
Shared cloud users cannot upload arbitrary NuGet packages. They therefore depend on the supplied capabilities, connection experience, and catalog to build complete business processes. Adding API-call activities alone is insufficient: authentication, trigger lifecycle, tenant isolation, data handling, compatibility, and maintenance must be reusable platform capabilities.
Outcomes
Core, Extensions and Studio are developed in one repository under root siblings core/, extensions/ and studio/, each owning its src/, test/ and docs/, with a shared root solution and focused solution filters.
Connectors have explicit, independent release units and compatibility declarations.
Source-based development and published-package compatibility are both verified.
Shared cloud exposes a curated catalog with enforced tenant and capability boundaries.
Evidence-based research prioritizes complete customer workflows rather than connector counts.
A pilot cohort validates the architecture and provides reusable implementation and contribution patterns.
The program is decomposed into Program → Epic → Feature → Story → Task issues, with dependencies and acceptance criteria.
Scope and constraints
Canonical repository: elsa-workflows/elsa-core. Consolidate all Elsa Extensions and Elsa Studio here, including persistence, scheduling, runtime, expression and integration modules, paired backend/Blazor modules, tests, samples, build assets and relevant documentation. Preserve source history and account for active issues/PRs through an explicit migration ledger. Create new program work here.
Reuse or link existing issues and implementations instead of duplicating them.
Preserve existing package IDs, activity identities, serialized contracts, and consumer entry points unless an explicit migration is provided.
Initially keep engine packages and tightly coupled platform packages in their existing coordinated release groups. Independent connector releases are the first objective.
Package release, host deployment, and workflow activity/schema versioning are separate concerns.
Shared hosts initially use a curated, pinned connector set. Arbitrary conflicting connector/dependency versions within one process are out of scope.
Repository consolidation does not automatically consolidate unrelated commercial products.
Shared cloud, dedicated deployments, and self-hosting need explicit capability profiles.
Public issues and artifacts must not contain credentials, private customer correspondence, or confidential demand evidence. Record sanitized findings.
No schedule, staffing allocation, or demand ranking is established by this charter. Estimate after the inventory and pilots reduce uncertainty.
Studio inclusion and release boundaries
Include Elsa Studio in the monorepo so backend and Blazor functionality can be developed, debugged, reviewed and tested together. Audit paired modules already in Extensions. Provide focused solutions/filters and sample hosts spanning both sides.
Source co-location does not imply a single release train. Tightly coupled server/Studio module pairs may share a release unit; the Studio shell and unrelated packages retain explicit independent release policies. Add backend API/protocol and package compatibility checks. Preserve existing package identities and source ownership during migration.
On 2026-10-08 the product owner explicitly approved separate root product directories as the required final layout. This supersedes the earlier choice to retain the imported src/extensions/ and src/studio/ locations. Earlier import and history-preservation acceptance remains valid; completing the program now also requires the focused relocation and fresh verification below.
Each product owns its source, tests, documentation and product-specific build settings. Keep shared build/release orchestration, the root solution, common tooling and central dependency policy at the root. Place product-specific samples and assets with their owning product; explicitly classify cross-product assets. Core/Studio contain deployable applications; Extensions chiefly contains consumable packages. Directory boundaries do not change existing package IDs, activity/API identities, dependency direction or the accepted initial 3.10 lockstep release and later independent-release requirements.
Deliver this as a focused history-preserving migration with an explicit old-to-new path map. Update project/solution/filter paths, MSBuild imports and inheritance, source/package references, CI selection and caches, Docker contexts, scripts, tests, docs, catalog/release/source-provenance tooling and ownership metadata. Verify all three product development/build/test entry points and the integrated solution from the relocated tree. Refresh source-bound package, compatibility and release evidence after relocation; pre-move evidence is historical and cannot accept the new source head. Track implementation in #8667 under reopened architecture feature #8213. Final program closeout requires this layout merged into main and verified, not merely recorded in an ADR.
Folders organize source; release manifests define release boundaries. Catalog categories may overlap.
Each connector owns its projects, release metadata, changelog, documentation, tests, and examples. Shared provider code must have a justified boundary and dependency graph; do not create a mandatory dependency on every service from the same vendor.
Hierarchy and issue conventions
Use native GitHub parent/sub-issue relationships where supported. Record semantic level with existing repository conventions, issue types where available, or labels/title prefixes where needed. Verify organization capabilities before inventing new types or labels.
Level
Purpose
Required content
Program
Outcomes and overall scope
Charter, epic index, milestones, risks, decisions
Epic
Independently assessable workstream
Outcome, features, dependencies, exit criteria
Feature
Coherent capability
Consumer behavior, scope, compatibility, stories
Story
Verifiable user/operator/developer outcome
Scenario and acceptance criteria
Task
Concrete implementation or research work
Inputs, deliverable, verification, blockers
Use all five levels when meaningful; avoid artificial one-child chains. If native hierarchy cannot be configured, use explicit Parent and Children links and state that native relationships remain pending.
Every executable leaf must identify its parent, deliverable, in/out of scope, acceptance criteria, verification method, dependencies, and relevant sources/code. Assign ownership and estimates through normal triage; do not invent assignees. Distinguish implementation dependencies from containment.
Create all epics and their initial feature issues first. Decompose near-term research, audit, and release-proof work fully. Decompose later stories/tasks after their prerequisite findings, avoiding a large speculative task backlog.
Epic plan
E0 — Program initialization and current-state audit
Features
F0.1: Establish the issue hierarchy, reporting conventions, and decision log.
F0.2: Inventory core/extensions projects, packages, dependencies, and existing integrations.
F0.3: Map existing issues, release workflows, host composition, and Studio extension points.
F0.4: Audit the existing Elsa Secrets module, its provider contracts, storage/read/write capabilities, tenant scoping, authorization, and existing consumers. Record verified capabilities and gaps for integration credentials.
Initial stories/tasks
As a maintainer, I can find each release unit and its owner, consumers, dependencies, and current version source.
Inventory projects and actual published NuGet artifacts; distinguish README claims from verified functionality.
F1.4: Rank delivery cohorts and define their operation-level scope.
Research method
Start with the existing extensions inventory and public requests.
Identify target scenarios for Microsoft-centric teams, SaaS/business operations, developers, and self-hosted enterprise users.
Survey approximately 50–100 candidate services across the categories below. This is a bounded discovery target, not a completeness claim.
Deeply investigate the top 15–20 candidates using official provider documentation.
Validate demand from authorized evidence and maintainer/customer input. Competitor availability is discovery evidence, not proof of Elsa demand.
Produce ranked cohorts, exclusions, unresolved questions, effort ranges, and confidence levels.
Required catalog fields
Stable ID, provider, categories, target personas, concrete workflows, existing Elsa status, proposed actions/searches/triggers, authentication types/scopes, OAuth app/verification requirements, API and webhook documentation, polling/renewal requirements, pagination and rate limits, file/size constraints, paid-tier/API-access restrictions, sandbox/test availability, SDK/license considerations, data residency considerations where relevant, maintenance burden, ownership/sponsorship, shared-cloud eligibility, Elsa compatibility, evidence URLs, checked date, confidence, and recommendation.
Use machine-readable records (JSON/YAML or equivalent) plus a generated readable summary. Unknowns remain explicit; do not infer API support from a competitor listing.
Proposed scoring
Score 0–5 on each dimension: evidenced demand (30%), complete-workflow coverage (25%), feasibility (15%), shared-infrastructure reuse (15%), and maintenance sustainability (15%; higher means easier to sustain). Publish rationale and confidence separately. Apply hard eligibility checks for usable API/auth access and cloud restrictions; do not let a weighted score conceal blockers. Weights are an initial hypothesis to validate.
Candidate categories
Microsoft: OneDrive, SharePoint, Outlook, Teams, Microsoft calendar, Dynamics 365.
Commerce/documents: Shopify, WooCommerce, DocuSign and document-processing services.
AI/agents: model invocation, structured extraction, agent execution, governed remote tools.
These are research candidates, not verified support commitments.
Exit: sourced catalog, deep assessments, scored shortlist, initial operation matrices, maintenance estimates, and recommended complete workflow cohorts.
E2 — Repository consolidation and developer experience
Features
F2.1: Architecture decision for folder, dependency, and release boundaries.
F2.2: Incremental import of all Extensions and Elsa Studio into Core, including paired backend/Blazor modules.
F2.3: Root solution, solution filters, samples, and debugging workflows spanning backend and Studio.
F2.4: Migration of contribution/release documentation and source ownership.
Tasks/requirements
Inspect repository instructions and branch/release policy before changes.
Choose and document history-preservation strategy and migration order.
Preserve package/activity identities and existing release support.
Establish a single authoritative source and publisher per migrated package.
Update project references, SourceLink/repository metadata, CI paths, tests, and documentation.
Map old issues/PRs and avoid losing active work. Freeze/archive the old repository only after migration completion is assessed, not as a first step.
Verify one focused connector filter brings in the needed core source dependencies for debugging.
Exit: migrated work builds and debugs in core, active changes are accounted for, old consumer contracts are preserved, and rollback/cutover guidance exists.
E3 — Independent versioning, packaging, and compatibility
Features
F3.1: Explicit release-unit manifests and scoped versions.
F3.2: Dependency-aware CI and selective publication.
F3.3: Published-package compatibility validation.
F3.4: Artifact provenance, release notes, and recovery procedures.
Required behavior
A connector change can publish only that release unit; unrelated packages are not version-bumped.
Shared changes expand the impacted build/test set using the dependency graph.
Explicit change records declare version intent; connector-specific tags identify immutable release commits.
CI validates source/project-reference development and clean consumers using built/published NuGet artifacts against claimed released Elsa versions.
Check package dependency metadata and prohibit accidental reliance on unreleased core changes.
Verify the exact artifacts being published match the release commit; smoke-test actual packages, not only source.
Document supported compatibility ranges/matrix and SDK dependency conflicts.
Preserve existing package version monotonicity; do not reset a migrated package from 3.x to 1.x.
Document failed/partial publication recovery without overwriting immutable NuGet versions.
Exit: an existing connector demonstrates an independent prerelease/release process, clean host consumption, and no unrelated publication; a shared-dependency change triggers the right additional tests.
E4 — Connector SDK, connections, and execution infrastructure
Features
F4.1: Tenant-owned named connections and runtime authorization.
F4.2: OAuth/API-key authentication lifecycle and integration with the existing Elsa Secrets module, subject to the architecture assessment below.
F4.3: Typed actions/searches, schemas, pagination, and dynamic options.
F4.4: Provider-aware execution, throttling, retries, and diagnostics.
F4.5: Managed file references and data transformation primitives.
F4.6: Governed authenticated API requests for the long tail.
Key acceptance
Workflow definitions contain connection references, not embedded secrets.
Authorization is enforced on each execution/resumption and on design-time lookups.
Refresh concurrency, reconnect/revocation, credential rotation, scope changes, and environment promotion are defined.
Retries distinguish safe reads from writes with unknown outcomes; use provider idempotency where available and never promise universal exactly-once delivery.
Large files use bounded streams/references with ownership, expiration, quotas, and cleanup.
Diagnostics redact secrets and expose actionable provider errors.
Reuse existing Elsa abstractions where suitable. Audit JSON/CSV/XML, date/time, validation, approvals, and subworkflow capabilities before adding replacements.
Generic authenticated requests enforce provider/destination and credential-forwarding restrictions.
Exit: pilot connectors share these capabilities without connector-specific copies of generic lifecycle logic.
Secrets module and connection architecture decision
Explicitly investigate whether and how integration connections should leverage Elsa's existing Secrets module. Reuse is the preferred starting hypothesis, not an assertion that its current implementation already satisfies the requirements.
Proposed responsibility split to evaluate
A connection owns non-secret metadata: provider, account/administration identifiers, granted scopes, status, ownership, and references to credentials.
The Secrets module or an adapter over its provider abstractions resolves/protects sensitive material: API keys, OAuth client secrets, refresh tokens, access tokens when persisted, and webhook signing secrets.
The authentication/connection layer coordinates consent, refresh, reconnect, and revocation. Secret storage alone does not implement the OAuth lifecycle.
Workflows refer to connections; connection records refer to secrets. Avoid exposing raw tokens as normal activity inputs/outputs or persisting them in workflow state, logs, traces, or exports.
Questions and alternatives for the ADR
Can existing Secrets providers support runtime writes, atomic/versioned updates, deletion, and the access patterns needed by rotating OAuth credentials, or are some providers read-only configuration sources?
Compare direct reuse, extending Secrets, and a dedicated credential lifecycle store backed by Secrets/provider abstractions. Justify any separate store and avoid duplicating secret management without a demonstrated requirement.
Decide whether short-lived access tokens should be cached only or persisted; define expiry, cache isolation/invalidation, and durable refresh-token storage.
Define concurrency and recovery for refresh-token rotation across workers, including a crash between provider refresh and local persistence. Do not assume cross-system atomicity.
Distinguish platform-owned OAuth application credentials from tenant-owned connection credentials; define authorization for creating, using, sharing, inspecting metadata, rotating, and deleting them.
Assess encryption/key management and supported external vault integration from actual module capabilities. Define outage behavior, audit events without secret values, and least-privilege access.
Define secret reference/version semantics, environment-specific binding during promotion, disconnect/revocation, tenant deletion, and cleanup of credentials shared by multiple connections.
Verify background polling, webhook renewal, and resumed workflows resolve credentials through an authorized tenant execution context.
Deliverables and acceptance
E0 audit documents actual Secrets APIs/providers and gaps.
E4 produces an ADR comparing alternatives and selecting a supported approach before credential persistence is implemented.
Create feature/story/task issues for reuse, necessary module extensions/adapters, and any credential migration.
A pilot demonstrates connection creation, authorized credential resolution, token refresh/rotation, reconnect/revocation, and redacted diagnostics.
Expressions and scripts have an assessed execution boundary; language-engine configuration is not assumed to be a security sandbox.
Host manifests pin the tested connector set. Do not promise per-tenant arbitrary package versions in one process.
Upgrade tests cover saved definitions and suspended workflows; incompatible changes require documented migration or routing to compatible hosts.
Connection/provider outages are observable without exposing secrets.
Exit: the pilot cohort meets the shared-cloud policy and has deploy/rollback and incident runbooks.
E7 — Pilot connectors and complete workflow examples
Features
F7.1: OneDrive pilot: authentication, file operations, and a validated change-detection path.
F7.2: Moneybird pilot: authentication, selected business-record actions, and a validated event path.
F7.3: Existing Slack connector audit and upgrade to shared infrastructure.
F7.4: End-to-end examples and user validation.
These pilots are the initial hypothesis. E0/E1 may justify a replacement before implementation.
For each pilot, define an operation matrix: activity/trigger ID, inputs/outputs, scopes, behavior, pagination, errors, idempotency, limits, and compatibility. Keep initial API coverage narrow and useful.
Example scenarios to validate
New document → review/approval → notification.
Business event → selected accounting record action → confirmation.
Engineering/business event → routed team notification.
Use realistic provider semantics; do not assume that a document event directly maps to invoice creation without a validated scenario.
Exit: published packages, onboarding documentation, reproducible examples, sandbox/live contract checks where available, negative-path tests, and shared-cloud certification evidence.
E8 — Catalog experience and sustainable expansion
Features
F8.1: Discoverable connector/operation catalog and Studio integration.
F8.2: Connection setup, resource selection, and actionable diagnostics.
F8.3: Connector templates, contributor guidance, and certification checks.
F8.4: Cohort rollout, support ownership, and lifecycle governance.
Key acceptance
Users see actual supported operations, compatible versions, deployment eligibility, limitations, and maturity.
Metadata drives docs and discovery where practical; avoid duplicated inventories.
Define Experimental, Preview, and Stable requirements.
Every maintained connector has ownership, provider-change monitoring, support expectations, deprecation policy, and test-account arrangements.
Expansion is selected by E1 evidence and complete workflow coverage, with explicit maintenance capacity.
Exit: catalog and contribution process are usable, and the first post-pilot cohort is scoped and owned.
E9 — Elsa 4 portability assessment
Features
F9.1: Identify reusable provider clients, schemas, authentication definitions, and test fixtures.
F9.2: Define Elsa 3 versus Elsa 4 runtime adapter boundaries.
F9.3: Validate one representative portability spike after the Elsa 3 pilot.
Exit: a documented, evidence-based migration/reuse strategy. Full Elsa 4 connector implementation is a follow-on program, not a gate for Elsa 3 completion.
Delivery sequence and dependencies
Milestone
Work
Exit gate
M0: Program ready
E0; initialize E1
Inventory, hierarchy, evidence plan, unknowns recorded
M1: Architecture and portfolio
E1 + E2/E3 design
Ranked shortlist, ADRs, pilot scope, effort ranges
Connect → trigger → execute → observe works safely
M4: Pilot cohort
E7 + E6 + E8 essentials
Three pilots or justified replacements meet certification
M5: Expansion readiness
E8 + E9 assessment
Owned next cohort, runbooks, portability findings
Research and architectural discovery can proceed concurrently. E4/E5 should be shaped by pilot vertical slices, not implemented as a large speculative framework. Shared-cloud controls are designed and tested throughout, not deferred until the end.
Do not require the entire repository migration to finish before proving independent release mechanics. Do not migrate a package while two pipelines can publish it.
Definition of done and success measures
Initial hierarchy verified on 2026-09-23: all 68 native parent/sub-issue relationships and 26 separate blocking dependencies are configured and read back through authenticated GitHub REST.
Inventory and evidence-based research outputs are committed and linked.
All Extensions and Elsa Studio are consolidated into Core under a documented cutover plan, with paired module compatibility and independent release boundaries verified.
One connector can be released without republishing unrelated packages.
Published artifacts are traceable to immutable source commits and pass clean-consumer tests.
The Secrets-module reuse/extension decision is documented and validated in a pilot, including token lifecycle, authorization, and redaction.
Connections and durable triggers pass lifecycle and tenant-isolation tests.
Pilot workflows run using documented setup and curated packages.
Saved/suspended workflow compatibility is demonstrated for supported upgrades.
Catalog, contribution guidance, support ownership, and runbooks are available.
Ranked follow-on cohorts and Elsa 4 portability findings are recorded.
Measure baseline and subsequent change for connector lead time, unrelated packages published per connector release (target: zero), validated compatibility coverage, setup success, trigger lag/recovery, release failures, and maintenance effort per connector. Establish numerical operational targets after baseline measurement rather than inventing them here.
Risks and decisions to record
Monorepo builds may become expensive: dependency-aware CI and focused filters.
Shared infrastructure changes may create release coupling: keep contracts narrow and validate consumers.
NuGet/API compatibility may differ from source compatibility: test exact artifacts and supported host combinations.
Provider OAuth verification/API access may block delivery: investigate early.
Long-running workflows may break on schema/type changes: stable identities and explicit migration policy.
Broad connector coverage may exceed maintenance capacity: narrow operation scope, ownership, cohorts, and deprecation.
Scripts/HTTP/remote tools can bypass intended tenant boundaries: enforce capability and execution policies.
Cloud data models may already provide connection/secret functionality: inventory and reuse before introducing competing abstractions.
Generated OpenAPI wrappers may accelerate implementation but do not solve auth, lifecycle, UX, or semantics: evaluate selectively.
Research must distinguish verified facts, assumptions, and demand hypotheses.
All 68 child issues are in elsa-workflows/elsa-core. Native hierarchy and dependencies verified on 2026-09-23: authenticated GitHub REST configured and individually read back all 68 intended parent/sub-issue relationships and 26 explicit blocking dependencies. The Markdown links remain readable references. No issues were recreated or silently reparented; both graphs are acyclic. Title prefixes identify semantic levels without inventing organization issue types or labels. Audit evidence is being committed under #8205.
Start with the three unblocked tasks above; they can proceed independently.
Read repository instructions, check for existing work, and record source commits before investigating.
Deliver the specified evidence as a repository document/PR; record verification and limitations on the task.
Follow the explicit task blocker lists. Parent membership is not a blocking dependency.
Advance from inventory to migration/release decisions, and from Secrets audit to the credential ADR.
Expand later stories/tasks only when prerequisite findings establish scope.
No assignees, deadlines, public package releases, or production changes are implied by backlog creation.
Initial link and task-dependency validation found no missing parents or task dependency cycles.
Next execution instructions
Inspect repository instructions and current state; reconcile this charter with existing work.
Use the created E0–E9 issues in the execution index; do not recreate them.
Use the forty created feature issues linked from the epics; native relationships are configured and verified (2026-09-23).
Execute the initial stories/tasks and progressively elaborate remaining E0/E1 and migration work after findings; do not duplicate the existing breakdown.
Link existing relevant issues; do not silently reparent unrelated work or create duplicates.
Update this program with real issue links, decisions, dependencies, and milestones.
Begin the audit and bounded research. Publish evidence-backed results before committing to later connector scope.
Keep later work progressively elaborated; this charter does not imply implementation or research has already been completed.
The original 69 issues were read and preserved. All 68 native parent/sub-issue links and 26 separate blocking dependencies were configured and read back; both graphs are acyclic. No issues were recreated or unrelated work reparented.
Evidence proposed for review
PR
Backlog work
Reconciliation, live verifier and architecture/next-batch summary
Historical delivery status, superseded below: evidence PRs were open for review. Their existence is not accepted implementation or completed issue delivery; acceptance checkboxes remain open. No PR was merged, repository archived, package published, or production changed.
Verified findings:
Inventory covers 343 project paths at recorded commits, complete module trees and associated tests/samples/build/docs assets. Five package IDs have competing source locations and need explicit canonical source/publisher ownership. Public Slack 3.8.4 artifact provenance was inspected separately; static project declarations are not package compatibility proof.
Source co-location must preserve independent release units. Current solution-wide package workflows can publish unrelated previews. A first audit push triggered Core's existing codex/* Packages job; it was canceled before build/publish steps ran. Further audit branches avoid that path, and the reconciliation branch skips publishing CI deliberately.
Existing Secrets storage/protection is reusable, but generic version rotation is not distributed OAuth coordination. The proposed lifecycle service separates metadata/authorization, secret persistence and provider state, including consumed-token ambiguity and staged-generation recovery. 359 targeted existing tests passed with retained run evidence; future two-worker outbound lifecycle tests remain unimplemented.
Catalog contains 67 candidates, 18 deep assessments, 124 proposed operations, six workflow hypotheses and 172 dated sources. Official documentation, historical public demand leads, engineering estimates and unknowns are distinguished. Pilots remain conditional. All six current Slack Watch activities throw rather than implement triggers.
Recommended next execution batch: review the evidence, then execute the refined #8259 release-unit design and #8262 synthetic credential validation plan. After #8259 is accepted, run #8260 using local artifacts only: selected-package/version isolation, dependency-aware tests, actual nuspec/provenance and clean consumer checks. Slack is the recommended packaging candidate; a natural backend/Studio pair still needs a separate co-debugging proof. Related OneDrive/Slack historical issues remain linked from #8234/#8236, not reparented.
Unresolved decisions: canonical owners for the duplicate package IDs; sole publishers and release-unit ownership; durable lifecycle persistence/fencing and lifecycle-owned generation enforcement; the natural backend/Studio proof pair; and pilot sponsors, maintainers, test accounts, exact consent and operational responsibility. These are explicit follow-up gates, not reasons to invent demand or begin a wholesale migration.
PR check/reviewer results are recorded on each PR and may continue changing. Local audit validation must not be confused with a full solution CI pass or provider certification. Copilot review requests did not register on the first three PRs; no unavailable review is claimed as passed.
Accepted and merged audit evidence: #8264 (hierarchy), #8266 (inventory and ownership), #8265 (Secrets assessment and proposed lifecycle architecture). Corresponding bounded audit tasks #8251, #8252, #8253, #8254 and #8261 are closed with acceptance evidence. Catalog #8267 is also merged after all three findings were fixed; #8255–#8258 are accepted with schema, evidence and regression verification. No audit merge constitutes completion of the program or its implementation features.
Current integration lane: #8259 then #8260, local independent-packaging proof. Parallel implementation: #8270, synthetic durable credential lifecycle, followed by #8271 workflow/offboarding conformance. The #8262 validation plan is accepted. Backend/Studio co-debugging remains a separate proof from Slack packaging.
All four audit merges used reviewed heads and normal squash merges; their commit messages suppress publishing-capable push workflows. No Packages or deployment run was present for those merge heads on verification. Required PR checks were not bypassed. Subsequent implementation merges must again inspect current triggers; source co-location must not impose a shared release train.
The execution goal now includes implementation, verification, integration and operational handoff. Focused merges are authorized after checks and review gates pass. Publication (including preview feeds), production/cutover, repository archival and external communications remain reserved for explicit approval after concrete artifacts and rollback evidence.
Execution additions: #8268 rehearses exact source relocation with original history for #8213; #8272 refines #8262. New story #8269 under #8222 contains #8270 (synthetic durable lifecycle) and #8271 (workflow/offboarding conformance). These are evidence-derived implementation subtasks, not replacement backlog. The board now has 74 verified issue memberships: original 69 plus credential story #8269/tasks #8270–#8271 and compatibility story #8275/task #8276.
Project visibility limitation (2026-09-23): GitHub confirms the original 72 unarchived Project item nodes and the two new #8275/#8276 memberships and their issue-side memberships/fields, but the Project items collection and web table currently return zero rows. A membership refresh and explicit position update did not repair enumeration. No duplicate board or issues were created. Until GitHub exposes the rows, this program issue is the visible delivery queue: execute #8259→#8260 and #8270→#8271; collision compatibility evidence for #8213/#8214 proceeds independently.
Implementation progress — 2026-09-23 16:49 UTC
Rehearse history-preserving repository consolidation #8268 merged as 0b5250f6f68decb3e50dd96266d9e47dc18f396f after all 16 reported checks passed and exact-head Greptile 5/5. The full disposable rehearsal preserves 9,604 exact blobs/modes and all three original histories; it does not prove a buildable consolidated workspace.
Local Slack packaging proof now builds clean public/local artifact consumers on net8/net9/net10 and executes an offline CreateChannel request/output smoke. Its PR and root verification remain pending. The upstream Slack test is skipped; broader dependency test execution is still open in [Task] Implement and verify the bounded independent-packaging proof #8260.
Released Secrets compatibility is a consolidation gate: official 3.8.1 EF package provenance points to Extensions, while 3.8.2–3.8.4 points to Core with different schema/types. A concrete upgrade fixture is required; static differences alone are not a demonstrated upgrade failure.
The three new implementation issues have verified native parents and separate blocking dependencies. The original hierarchy file remains the initial 69-issue snapshot.
No package publication or production/cutover is authorized by these merges. The goal remains active.
Active delivery queue — 2026-09-24
Current integration task: [Task] Prepare and diagnose the full consolidated source build #8287, consolidated build and import readiness. Merged source-history/build evidence remains Prove consolidated build with canonical Secrets sample registration #8306/Verify consolidated build with current Core lifecycle and BPMN changes #8312: 340 projects build, zero errors, 1,867 warnings; 214 focused tests pass. The earlier full test run remains 6,169 passed / 21 failed / 148 skipped. The 21 Studio layout failures have a merged fix Fix Studio source-contract tests for the consolidated layout #8314 with 103/103 targeted tests; no new complete-suite pass is claimed. Asset ledger Record dispositions for retained consolidation assets #8319 merged at f8509c8, covering 163 retained assets with a frozen source-receipt comparison; all dispositions remain pending or candidates. Canonical Elsa.sln/NUKE preparation Prepare imported projects in canonical Elsa.sln #8324 merged at 77f3ca9 after exact-head checks/review; 19 preparation tests pass independently. Its retained 076 property audit covers 167 projects and 2,586 evaluations with packing disabled. A fresh selected-95a rehearsal preserves 9,993 files and all original source histories; its property audit passed all 2,586 evaluations across 167 imported/test projects. The canonical 343-project Elsa.sln compiled with zero errors and 1,570 warnings. NUKE Restore/Compile/Test completed with exit 0; all 95 selected project commands ran, including 15 Studio projects. The 94 retained TRX files report 6,056 passed, 148 skipped and zero failed. Root independently reconciled all-framework log evidence to 6,222 passed, 148 skipped and zero failed: Designer net8/net9/net10 each passed 83 tests, but fixed TRX naming retained only one framework. One selected benchmark project produced no tests/TRX; AzureServiceBus and Slack each had one explicitly skipped test. Compared with the historical run, 21 Studio path failures now pass and 32 added tests explain the increase. Warnings include inherited package vulnerability, nullable/analyzer and source-link warnings. Source-profile evidence Record canonical 95a rehearsal profile #8328 merged at 6f49380 after exact-head gates and independent root verification. Manifest-driven release-unit and package provenance proof [8260] Add manifest-driven Slack release-unit proof #8327 merged at 1374d4f after exact-head gates and root verification; [Task] Implement and verify the bounded independent-packaging proof #8260 remains open for final graph/closure, SourceLink, publisher/pipeline and approved publication gates. This closes the bounded canonical-rehearsal evidence slice, not the actual source import or program. Root verified no production-source, root build-property, NUKE or solution delta from selected95a through77f3ca. Source import has not occurred.
Actual Workbench/Studio rehearsal ([Task] Verify isolated Workbench startup and Studio Secrets workflows #8326): synthetic local browser verification exercised canonical Secrets create, list/detail, metadata edit, rotation, revoke, active/revoked test, deletion and a saved named-reference workflow picker. The draft was never published or executed and was removed after verification. A root-verified 20-case HTTP matrix confirmed denied principals cannot read/mutate and view-only principals cannot mutate. Exact synthetic plaintext markers were absent from the scanned database, workflow payload and logs. This covers only the default empty tenant; actual host tenant separation remains unverified. The exercise exposed missing DomInterop/Designer frontend builds and a mapped BPMN generator path defect that .NET NUKE checks did not cover; temporary recorded repairs enabled the picker, but durable integration is still being implemented. The canonical/legacy Secrets menu compatibility patch is merged in Prepare Studio Secrets menu for canonical host feature name #8332 at 9cc3541; the browser has not been rerun on the imported Studio source. Existing Studio PR999 permission work is preserved. This is rehearsal evidence, not final imported-source acceptance.
Pilot decision pending: no current sponsor, operational owner or provider test account is established. The request for a real workflow and nonproduction access remains pending; independent implementation continues.
No package feed publication, production change, cutover or repository archival has been performed or approved. Implementation continues; reserved release/cutover approval requires concrete verified artifacts and rollback instructions.
Latest execution checkpoint — 2026-09-24
Record isolated Workbench and Studio Secrets runtime proof #8333 is open with a reviewed Workbench opt-in patch and bounded synthetic browser/API evidence. Its follow-up verifier rebuilt the isolated mapped Workbench project-reference graph, recorded matching hashes for all six Secrets project/host assemblies, and replayed the distinct pinned Workbench patch transition. A CodeQL test-fixture finding was corrected; exact-head checks and review are pending. This does not prove tenant separation, a published workflow, or the imported host.
Prepare consolidated Studio browser asset build #8334 is open with a repeatable Node 22 build for both Studio ClientLibs and an import-time BPMN generator layout patch. In the mapped clone, the BPMN generated-type check, 253 Designer tests/type checks, both webpack builds and six required browser assets passed. Required CI on the history-bearing imported source remains open; dependency advisories are recorded.
History import: Core draft Import Extensions and Studio histories into consolidated source #8409 retains the original three-parent import and must be merged with a merge commit, never squash. Extensions main has since advanced to 9361c80e with persistence fixes and new tests; Studio main remains f0eeb3c. Refresh the mapped source-tip receipt and affected proofs before final import review. [Story] Resolve Secrets package and upgrade compatibility #8275 historical Secrets key custody/compatibility and the remaining retained-asset, host, tenant and identity gates still block acceptance.
Pilot selection: the researched catalog is available, but a named sponsor, operational owner, concrete workflow and nonproduction provider access have not been established. OneDrive, Moneybird and Slack remain candidates until the evidence supports a choice.
No package/feed publication, production change, cutover, repository archival or external provider communication has occurred. Continue implementation on unblocked slices; request the reserved release/cutover approval only with exact release evidence and rollback artifacts.
Owner priority change — 2026-10-08: structural cutover first
The owner has redirected delivery toward completing the repository consolidation and cutover as soon as possible. Production-grade Slack delivery is no longer a prerequisite for structural consolidation or source-repository archival. The earlier broader integration roadmap below is retained as future work, not an obligation to finish every connector capability before cutover.
Current completion boundary: implement the approved root
core/,extensions/,studio/layout (#8667); preserve all accepted source/history and latest release inclusion; verify the relocated solution, product builds/tests, packages and relevant developer workflows; reconcile contributor issues/PRs and contribution ownership; establish working release/publisher ownership and retire competing source workflows; then perform and verify the source-repository read-only/archival cutover with accurate documentation and recovery instructions. Existing concrete operational/publisher decisions remain explicit; a directory move alone is not cutover.Pilot boundary: reuse existing accepted module/package evidence where sufficient. If an additional structural example is needed, timebox a simple deterministic sample module to roughly one hour of implementation, with no external credentials, live Slack setup, durable message delivery or production connector platform expansion. Required verification remains explicit; the timebox is not a claim that all CI finishes within one hour.
Slack disposition: #8666 is deferred, incomplete, with its branch and worktree changes preserved. Stop new Slack implementation and extra verification runs. Source and Admission evidence already accepted remains retained, but unmerged Socket code and uncompiled new discard scenarios must not enter the structural migration merely to save prior effort. Remaining Slack provider/fault/process/six-cell/outbound/live-operational scope stays in its existing issues as post-cutover work, not silently accepted or deleted.
Current delivery state: structural #8667, Core contribution register #8670 and source notices #8676 are accepted and closed. Studio #1128 and Extensions #288 are merged with reviewed/tested tree equality and verified nonpublishing merge-event readbacks. No implementation leaf is active while the next maintenance/npm ownership and archival sequencing choices remain pending. Preserve deferred Socket work.
After cutover: investigate an alternative React + React Flow Elsa Studio alongside the existing Blazor implementation. First inventory the complete current Blazor feature surface. Separately inspect Elsa Foundation Studio as an architectural reference for modular projects serving React modules and React Flow integration. Reuse suitable infrastructure patterns, not Elsa 4 product functionality or an assumed Elsa 4 migration. This discovery begins after cutover and does not block it.
Delivery milestones — owner clarification, 2026-10-08
The owner clarified that the first useful deliverable is structural repository consolidation. The lead will close that bounded milestone separately from the complete program and will surface any requirement that materially expands its outcome or effort. The full goal remains open until its required later outcomes are verified.
core/,extensions/,studio/boundaries, update affected references/tooling, and verify builds/tests and developer paths. This milestone is accepted and [Task] Relocate Core, Extensions and Studio into separate root product directories #8667 is closed: Promote consolidated product directories and package surfaces to main #8669 and documentation correction Fix operator command paths after documentation relocation #8674 are merged, with exact-head review/CI and final main-tree/source verification. No Slack feature, full release certification, contribution backlog implementation or live publisher/archival operation is a prerequisite to closing this structural milestone.Each next delivery slice will state its usable outcome, done criteria, exclusions and estimate/checkpoint before implementation. Related improvements remain separate unless needed to meet that slice's concrete outcome.
Current delivery checkpoint — structural and contribution records accepted
Structural milestone #8667 remains accepted at
658a9da06b2b77417f5c07eee00fff68478ba15c. Contribution handoff #8670 is now accepted through PR #8675, merged on 2026-10-08 at main8802a883d6069d689d110008c904787b3b691042. Exact-head independent review, Greptile 5/5 and CI passed. The final clean main tree equals the reviewed/tested candidate and contains only the four reviewed documentation/data changes relative to the structural baseline. The register preserves all 205 issues and 31 PRs from its dated snapshots; it does not implement those proposals or freeze future source activity.Source notices #8676 are accepted through Studio #1128 at
dab6831ac11aa0d2caef93f39c8e705d9459bbaaand Extensions #288 at2611ee6d9b6fb5e50f4c0b3fbc9cc15b355b4751. Exact-head independent review and required CI passed. Actual merge parents/tree/subject and source main refs were read back; bounded exact-merge and Packages-workflow queries showed no Packages runs. Dynamic analysis is separate. Extensions Copilot did not deliver an advisory review; it is not claimed as passed. The notices preserve existing 3.8/3.9 maintenance procedures and original contributor identities.No delivery Task is currently active. The next maintenance-support/home, npm ownership and archival-versus-full-release sequencing decisions remain pending. The concrete maintenance-home option and estimate preserves original release layouts in Core: approximately 1½–2 engineering days plus approval/access delays, subject to historical-build results. This option has not been selected or implemented. Keep the next slice bounded and estimated before activation.
A verified maintenance/npm publisher replacement, retirement of competing source authority and actual read-only archival remain open under #8216/#8220. No source settings, package publication or archival occurred. Retained maintenance continues until an explicitly approved replacement is verified or an explicit support-policy decision changes it. The full program is not complete. Slack remains deferred and React discovery starts after cutover.
Historical structural follow-up — 2026-10-08
PR #8669 is merged and the three-product layout is on main. Task #8667 remains active for the final automatic main Packages result and documentation correction PR #8674: 18 stale copyable command paths across nine Markdown files. The correction has exact-head independent APPROVE + HIGH and Greptile 5/5 at
875b69259609fb8ea36a6284e44ca7367ecc281f; CI and merge remain pending. The task's developer-command criterion is explicitly reopened. Main Docker, publication guards and CodeQL/Code Quality are successful; Docker/guard original logs have been verified by the lead. No publication or archival occurred. #8670 remains the queued contribution-handoff task.Structural main checkpoint — 2026-10-08 17:03 UTC
598f8fef28cdca503d20373c2e5cd09e129024d2. The actual merge tree equals the reviewed candidate, with both expected parents and baseline/pure-move history preserved. Exact-head independent review, Greptile 5/5 and all premerge CI passed; lead acceptance and original-artifact scope.core/,extensions/, andstudio/product trees. All 10,910 baseline destinations/blobs/modes are accounted for; solution/filter and ADR checks pass. Fresh all-repository advertisements and release pagination verify all 35 selected 3.8.x/3.9.0 refs and source main tips are included. Latest and newest published release remain 3.9.0 in Core, Studio and Extensions. Final-main source audit SHA-256:8089d8643515f3a3e655b2ed6c5dbf4a0fa8a789c5a5fe0eac72748070243a4f.Summary
Build a sustainable integration ecosystem for Elsa 3: consolidate Core, all Extensions, and Elsa Studio into elsa-workflows/elsa-core, enable independently released connectors, provide shared connector infrastructure, and deliver a researched, prioritized catalog of useful integrations.
Elsa 3 is the implementation target. Preserve a practical path to Elsa 4 by separating provider-facing logic from runtime adapters where useful; do not block Elsa 3 delivery on a universal cross-version abstraction.
This issue is the program charter and execution plan. The initial breakdown has been created: 10 epics, 40 features, 6 stories and 12 tasks. E/F/S/T identifiers are planning IDs mapped to actual issues in the execution index below. Research and implementation are in progress; the latest execution checkpoint is below.
Superseded delivery checkpoint — 2026-10-08, before the owner priority change
179749636fd4ddce07b186d4fe3456a43fa91162, parentsb38e7523… + 0da8146…, tree6ddb9a8d…equal to the reviewed/tested candidate. All exact-head premerge reviews/CI and all five focused main proofs, broad main Packages, CodeQL and Code Quality passed; skips and scope limits are retained in acceptance. That accepted promotion established179749636fd4ddce07b186d4fe3456a43fa91162. Subsequent #8658 acceptance through Add durable PostgreSQL event admission and guarded local execution #8660 advanced main and the shared program branch toa866284727cce19068b417a908bbe4a2573815d5, whose tree exactly matches its reviewed/tested candidate.bf4020b49fb724f439cb9384b99adaa63c2e5a91. The lead recomputed72 inclusion checks plus prior-main ancestry;3.9.0 remains the latest published release in all three repositories. Core main now includes Require verified Apps Docker images in Elsa release completion #8662 and Require working Dashboard evidence in container releases #8665 container/Dashboard release evidence requirements; both must be preserved during final integration and #8220 delivery. Shared program branch is nowc98ba68951178b0be7f39deeb9d4bda4cd678e77after Package Admission and Connections with PostgreSQL consumer proof #8664; conflict-free merge-tree evidence is not combined-head CI acceptance. All31 source PR identities are unchanged; disposition remains separate.c98ba68951178b0be7f39deeb9d4bda4cd678e77, tree84add4c53979a7557be44f70044f5e852b352cd0equal to reviewed/tested e67. Lead acceptance covers all eight criteria, 232 original package/symbol pairs and six cells/twelve real PostgreSQL scenarios, provenance, migrations and cleanup. Exact-head independent APPROVE + HIGH, Greptile 5/5 and CI passed. Prior failures remain preserved. Live Socket ACK/reconnect, outbound CreateMessage/grants/unknown-write safety, same-thread reply and operational acceptance remain required; neither parent is closed.Problem
Elsa needs both foundational engine/platform modules and a broad set of business integrations. Developers should be able to work on both in one solution, using solution filters for focused development and debugging. A connector release must not require republishing unrelated connectors or core.
Shared cloud users cannot upload arbitrary NuGet packages. They therefore depend on the supplied capabilities, connection experience, and catalog to build complete business processes. Adding API-call activities alone is insufficient: authentication, trigger lifecycle, tenant isolation, data handling, compatibility, and maintenance must be reusable platform capabilities.
Outcomes
core/,extensions/andstudio/, each owning itssrc/,test/anddocs/, with a shared root solution and focused solution filters.Scope and constraints
Studio inclusion and release boundaries
Include Elsa Studio in the monorepo so backend and Blazor functionality can be developed, debugged, reviewed and tested together. Audit paired modules already in Extensions. Provide focused solutions/filters and sample hosts spanning both sides.
Source co-location does not imply a single release train. Tightly coupled server/Studio module pairs may share a release unit; the Studio shell and unrelated packages retain explicit independent release policies. Add backend API/protocol and package compatibility checks. Preserve existing package identities and source ownership during migration.
On 2026-10-08 the product owner explicitly approved separate root product directories as the required final layout. This supersedes the earlier choice to retain the imported
src/extensions/andsrc/studio/locations. Earlier import and history-preservation acceptance remains valid; completing the program now also requires the focused relocation and fresh verification below.Target architecture
Required final directory structure, approved by the product owner on 2026-10-08:
Each product owns its source, tests, documentation and product-specific build settings. Keep shared build/release orchestration, the root solution, common tooling and central dependency policy at the root. Place product-specific samples and assets with their owning product; explicitly classify cross-product assets. Core/Studio contain deployable applications; Extensions chiefly contains consumable packages. Directory boundaries do not change existing package IDs, activity/API identities, dependency direction or the accepted initial 3.10 lockstep release and later independent-release requirements.
Deliver this as a focused history-preserving migration with an explicit old-to-new path map. Update project/solution/filter paths, MSBuild imports and inheritance, source/package references, CI selection and caches, Docker contexts, scripts, tests, docs, catalog/release/source-provenance tooling and ownership metadata. Verify all three product development/build/test entry points and the integrated solution from the relocated tree. Refresh source-bound package, compatibility and release evidence after relocation; pre-move evidence is historical and cannot accept the new source head. Track implementation in #8667 under reopened architecture feature #8213. Final program closeout requires this layout merged into main and verified, not merely recorded in an ADR.
Folders organize source; release manifests define release boundaries. Catalog categories may overlap.
Each connector owns its projects, release metadata, changelog, documentation, tests, and examples. Shared provider code must have a justified boundary and dependency graph; do not create a mandatory dependency on every service from the same vendor.
Hierarchy and issue conventions
Use native GitHub parent/sub-issue relationships where supported. Record semantic level with existing repository conventions, issue types where available, or labels/title prefixes where needed. Verify organization capabilities before inventing new types or labels.
Use all five levels when meaningful; avoid artificial one-child chains. If native hierarchy cannot be configured, use explicit Parent and Children links and state that native relationships remain pending.
Every executable leaf must identify its parent, deliverable, in/out of scope, acceptance criteria, verification method, dependencies, and relevant sources/code. Assign ownership and estimates through normal triage; do not invent assignees. Distinguish implementation dependencies from containment.
Create all epics and their initial feature issues first. Decompose near-term research, audit, and release-proof work fully. Decompose later stories/tasks after their prerequisite findings, avoiding a large speculative task backlog.
Epic plan
E0 — Program initialization and current-state audit
Features
Initial stories/tasks
Exit: inventory tied to inspected commit(s), existing work mapped, hierarchy created, and actual gaps identified.
E1 — Integration landscape research and prioritization
Features
Research method
Required catalog fields
Stable ID, provider, categories, target personas, concrete workflows, existing Elsa status, proposed actions/searches/triggers, authentication types/scopes, OAuth app/verification requirements, API and webhook documentation, polling/renewal requirements, pagination and rate limits, file/size constraints, paid-tier/API-access restrictions, sandbox/test availability, SDK/license considerations, data residency considerations where relevant, maintenance burden, ownership/sponsorship, shared-cloud eligibility, Elsa compatibility, evidence URLs, checked date, confidence, and recommendation.
Use machine-readable records (JSON/YAML or equivalent) plus a generated readable summary. Unknowns remain explicit; do not infer API support from a competitor listing.
Proposed scoring
Score 0–5 on each dimension: evidenced demand (30%), complete-workflow coverage (25%), feasibility (15%), shared-infrastructure reuse (15%), and maintenance sustainability (15%; higher means easier to sustain). Publish rationale and confidence separately. Apply hard eligibility checks for usable API/auth access and cloud restrictions; do not let a weighted score conceal blockers. Weights are an initial hypothesis to validate.
Candidate categories
These are research candidates, not verified support commitments.
Exit: sourced catalog, deep assessments, scored shortlist, initial operation matrices, maintenance estimates, and recommended complete workflow cohorts.
E2 — Repository consolidation and developer experience
Features
Tasks/requirements
Exit: migrated work builds and debugs in core, active changes are accounted for, old consumer contracts are preserved, and rollback/cutover guidance exists.
E3 — Independent versioning, packaging, and compatibility
Features
Required behavior
Exit: an existing connector demonstrates an independent prerelease/release process, clean host consumption, and no unrelated publication; a shared-dependency change triggers the right additional tests.
E4 — Connector SDK, connections, and execution infrastructure
Features
Key acceptance
Exit: pilot connectors share these capabilities without connector-specific copies of generic lifecycle logic.
Secrets module and connection architecture decision
Explicitly investigate whether and how integration connections should leverage Elsa's existing Secrets module. Reuse is the preferred starting hypothesis, not an assertion that its current implementation already satisfies the requirements.
Proposed responsibility split to evaluate
Questions and alternatives for the ADR
Deliverables and acceptance
E5 — Durable triggers and event lifecycle
Features
Key acceptance
Exit: webhook and polling scenarios survive restart, isolation, duplicate-delivery, and renewal tests.
E6 — Shared-cloud policy, isolation, and operational readiness
Features
Key acceptance
Exit: the pilot cohort meets the shared-cloud policy and has deploy/rollback and incident runbooks.
E7 — Pilot connectors and complete workflow examples
Features
These pilots are the initial hypothesis. E0/E1 may justify a replacement before implementation.
For each pilot, define an operation matrix: activity/trigger ID, inputs/outputs, scopes, behavior, pagination, errors, idempotency, limits, and compatibility. Keep initial API coverage narrow and useful.
Example scenarios to validate
Use realistic provider semantics; do not assume that a document event directly maps to invoice creation without a validated scenario.
Exit: published packages, onboarding documentation, reproducible examples, sandbox/live contract checks where available, negative-path tests, and shared-cloud certification evidence.
E8 — Catalog experience and sustainable expansion
Features
Key acceptance
Exit: catalog and contribution process are usable, and the first post-pilot cohort is scoped and owned.
E9 — Elsa 4 portability assessment
Features
Exit: a documented, evidence-based migration/reuse strategy. Full Elsa 4 connector implementation is a follow-on program, not a gate for Elsa 3 completion.
Delivery sequence and dependencies
Research and architectural discovery can proceed concurrently. E4/E5 should be shaped by pilot vertical slices, not implemented as a large speculative framework. Shared-cloud controls are designed and tested throughout, not deferred until the end.
Do not require the entire repository migration to finish before proving independent release mechanics. Do not migrate a package while two pipelines can publish it.
Definition of done and success measures
Measure baseline and subsequent change for connector lead time, unrelated packages published per connector release (target: zero), validated compatibility coverage, setup success, trigger lag/recovery, release failures, and maintenance effort per connector. Establish numerical operational targets after baseline measurement rather than inventing them here.
Risks and decisions to record
Required ADRs: repository migration; release-unit/versioning policy; package compatibility; connection/secret ownership and existing Secrets-module reuse versus extension; trigger lifecycle/delivery guarantees; shared-cloud capability policy; host upgrade/workflow compatibility; Elsa 4 reuse boundary.
Execution index — initialized 2026-09-23
All 68 child issues are in elsa-workflows/elsa-core. Native hierarchy and dependencies verified on 2026-09-23: authenticated GitHub REST configured and individually read back all 68 intended parent/sub-issue relationships and 26 explicit blocking dependencies. The Markdown links remain readable references. No issues were recreated or silently reparented; both graphs are acyclic. Title prefixes identify semantic levels without inventing organization issue types or labels. Audit evidence is being committed under #8205.
Epics
Initial tasks — accepted audit evidence
Initial story index
Execution protocol
Next execution instructions
Starting references
MongoWorkflowInstanceStore/DapperWorkflowInstanceStoredon't implement `IWorkflowInstanceStore.TryMarkInterruptedAsync elsa-extensions#205Provider behavior and API access must be revalidated during research. These links are starting points, not a completed feasibility assessment.
Initial execution evidence (historical review snapshot, 2026-09-23)
The original 69 issues were read and preserved. All 68 native parent/sub-issue links and 26 separate blocking dependencies were configured and read back; both graphs are acyclic. No issues were recreated or unrelated work reparented.
Historical delivery status, superseded below: evidence PRs were open for review. Their existence is not accepted implementation or completed issue delivery; acceptance checkboxes remain open. No PR was merged, repository archived, package published, or production changed.
Verified findings:
codex/*Packages job; it was canceled before build/publish steps ran. Further audit branches avoid that path, and the reconciliation branch skips publishing CI deliberately.Recommended next execution batch: review the evidence, then execute the refined #8259 release-unit design and #8262 synthetic credential validation plan. After #8259 is accepted, run #8260 using local artifacts only: selected-package/version isolation, dependency-aware tests, actual nuspec/provenance and clean consumer checks. Slack is the recommended packaging candidate; a natural backend/Studio pair still needs a separate co-debugging proof. Related OneDrive/Slack historical issues remain linked from #8234/#8236, not reparented.
Unresolved decisions: canonical owners for the duplicate package IDs; sole publishers and release-unit ownership; durable lifecycle persistence/fencing and lifecycle-owned generation enforcement; the natural backend/Studio proof pair; and pilot sponsors, maintainers, test accounts, exact consent and operational responsibility. These are explicit follow-up gates, not reasons to invent demand or begin a wholesale migration.
PR check/reviewer results are recorded on each PR and may continue changing. Local audit validation must not be confused with a full solution CI pass or provider certification. Copilot review requests did not register on the first three PRs; no unavailable review is claimed as passed.
End-to-end execution status — 2026-09-23
Canonical delivery board: https://github.com/orgs/elsa-workflows/projects/52. The existing issues remain the authoritative backlog; native parents and blocking dependencies remain separate.
Accepted and merged audit evidence: #8264 (hierarchy), #8266 (inventory and ownership), #8265 (Secrets assessment and proposed lifecycle architecture). Corresponding bounded audit tasks #8251, #8252, #8253, #8254 and #8261 are closed with acceptance evidence. Catalog #8267 is also merged after all three findings were fixed; #8255–#8258 are accepted with schema, evidence and regression verification. No audit merge constitutes completion of the program or its implementation features.
Current integration lane: #8259 then #8260, local independent-packaging proof. Parallel implementation: #8270, synthetic durable credential lifecycle, followed by #8271 workflow/offboarding conformance. The #8262 validation plan is accepted. Backend/Studio co-debugging remains a separate proof from Slack packaging.
All four audit merges used reviewed heads and normal squash merges; their commit messages suppress publishing-capable push workflows. No Packages or deployment run was present for those merge heads on verification. Required PR checks were not bypassed. Subsequent implementation merges must again inspect current triggers; source co-location must not impose a shared release train.
The execution goal now includes implementation, verification, integration and operational handoff. Focused merges are authorized after checks and review gates pass. Publication (including preview feeds), production/cutover, repository archival and external communications remain reserved for explicit approval after concrete artifacts and rollback evidence.
Execution additions: #8268 rehearses exact source relocation with original history for #8213; #8272 refines #8262. New story #8269 under #8222 contains #8270 (synthetic durable lifecycle) and #8271 (workflow/offboarding conformance). These are evidence-derived implementation subtasks, not replacement backlog. The board now has 74 verified issue memberships: original 69 plus credential story #8269/tasks #8270–#8271 and compatibility story #8275/task #8276.
Project visibility limitation (2026-09-23): GitHub confirms the original 72 unarchived Project item nodes and the two new #8275/#8276 memberships and their issue-side memberships/fields, but the Project items collection and web table currently return zero rows. A membership refresh and explicit position update did not repair enumeration. No duplicate board or issues were created. Until GitHub exposes the rows, this program issue is the visible delivery queue: execute #8259→#8260 and #8270→#8271; collision compatibility evidence for #8213/#8214 proceeds independently.
Implementation progress — 2026-09-23 16:49 UTC
0b5250f6f68decb3e50dd96266d9e47dc18f396fafter all 16 reported checks passed and exact-head Greptile 5/5. The full disposable rehearsal preserves 9,604 exact blobs/modes and all three original histories; it does not prove a buildable consolidated workspace.22f479d423975cf5d35f12fa5204b6597764d06bafter all 14 reported checks passed and exact-head Greptile 5/5. [Task] Specify the credential lifecycle validation slice #8262 and architecture story [Story] Decide the Secrets-backed connection and authentication architecture #8250 are accepted; [Task] Implement synthetic credential lifecycle with durable refresh recovery #8270 implementation is active.No package publication or production/cutover is authorized by these merges. The goal remains active.
Active delivery queue — 2026-09-24
No package feed publication, production change, cutover or repository archival has been performed or approved. Implementation continues; reserved release/cutover approval requires concrete verified artifacts and rollback instructions.
Latest execution checkpoint — 2026-09-24
No package publication, production cutover, repository archival or external communication is authorized by this checkpoint.
Latest execution checkpoint — 2026-09-25
[skip ci]; no package or wiki publisher run was triggered by those heads.9361c80ewith persistence fixes and new tests; Studio main remainsf0eeb3c. Refresh the mapped source-tip receipt and affected proofs before final import review. [Story] Resolve Secrets package and upgrade compatibility #8275 historical Secrets key custody/compatibility and the remaining retained-asset, host, tenant and identity gates still block acceptance.No package/feed publication, production change, cutover, repository archival or external provider communication has occurred. Continue implementation on unblocked slices; request the reserved release/cutover approval only with exact release evidence and rollback artifacts.