Repository navigation
[Task] Implement immutable consolidated package and symbol executor #8649
Description
Program: #8194
Parent: #8220
Related: #8645, #8647, #8643, #8216, #8593
Outcome and readiness
Implement the artifact-only consolidated Feedz executor and complete symbol-content verification for the original 3.10.0 candidate. This provides the reviewed executable needed for the later, separately approved publisher cutover and publication. It must never rebuild the candidate or treat a successful push as content proof.
The accepted #8645 original-input verification and complete package reconciliation are reusable foundations. #8647 supplies the authority inventory and ordered cutover constraints; its preparation does not supply operational approval. Verified existing-release PDB research establishes an anonymous Feedz Portable PDB retrieval path across the three 3.9.0 frameworks, without proving candidate 3.10 symbols or original snupkg archive readback. No matching open issue or PR was found on 2026-10-07. #8593 remains the separate general NuGet.org/OIDC publisher correction.
This bounded implementation is accepted through merged #8650 after #8647 acceptance. Implementation starts from program merge 8876428f472f3cf22957bec35302ee2470644dc9. The Sol 6.1 worker owns executor/symbol-verifier code in an isolated worktree; the lead owns the workflow, integration and final QA. Implementation itself does not depend on the pending Hosted routing or npm ownership decisions; actual release activation does.
Scope and acceptance
- Reuse
prepare_recovery_inputsand fullplan_recoveryreconciliation, preserving their read-only contracts. Bind original producer sourceba5b348aa2414fdf7c19d9d8806e87b7c91a4205, run 37456860080 attempt 1, artifact 11412848210, archive SHA-256ace85260c3389916fe3dcd7ee9cd5b766e4030dd6cee13c7f89285ada79c944fand expiry 2026-11-05T12:13:30Z. Revalidate all 225 package/symbol pairs (450 archives), complete package inventory and 124 exclusion rows / 123 excluded IDs. Accept no arbitrary feed, version, package subset or replacement archives. - Implement explicit bounded upload of original missing package and symbol bytes to the fixed intended Feedz resources. Before any upload, reconcile every package and all manifest-derived expected symbol keys. Conflicts, unreadable state, missing approval inputs or uncertain authority block mutation. HTTP 409, retries and
--skip-duplicatecannot prove content equality. Stop on unknown acceptance; resume only after fresh reconciliation with the same original bytes. Preserve a complete sanitized operation ledger even on partial failure. - Extend the existing symbol verifier without breaking its current modes. Emit each DLL/PDB association's Portable PDB key, GUID, stamp, declared checksum and unchanged PDB hash. Preserve SourceLink/document and association checks. Fetch actual symbol bytes through the intended-reader contract; validate GUID/stamp/normalized checksum and exact original PDB bytes. Reject inconsistent duplicate keys; deduplicate network reads without dropping package/framework associations. Explicitly account for assembly-free packages. Completion requires 225 matching packages and every required PDB association, not a representative sample.
- Keep original
.snupkgarchive readback explicitly separate and unproven unless the provider supports and verifies it. Do not equate public PDB retrieval with private-reader rights, authenticated publisher absence, or whole-archive round trip. Bind the execution ledger to the original archives and publish request outcomes as well as retrieved package/PDB contents. - Add an artifact-only workflow: token-isolated retrieval; complete verification without publisher credentials; a manual, explicitly approved protected execution job using a dedicated environment-scoped credential. Never build/pack candidate projects; compiling the verifier is allowed. Default/PR/push verification must have no publication capability. No credential fallback, arbitrary ref/input source, script interpolation or unreviewed artifact can cross into execution. A workflow input or environment name is not approval: document and enforce the actual admission boundary, including current exact executor/approval/candidate identities and the pending protected environment setup. Do not provision environments/secrets or dispatch publication in this implementation task.
- Add focused normal/optimized contracts for complete and partial recovery, package-present/symbol-missing state, accepted-then-interrupted uploads, delayed visibility, 409 ambiguity, package/PDB conflicts, changed or expired input, wrong GUID/stamp/checksum/bytes, incomplete framework coverage, duplicate keys, bounded requests/deadlines, fail-closed admission and credential-safe diagnostics. Exercise the real upload/reader transport against a bounded local fake service without real tokens or public writes.
- Run hosted artifact-only integration against the actual retained candidate, checking every original DLL/PDB association and all 225 pairs without publication. Preserve existing maintenance/recovery verification. Root reviews implementation and exact-head evidence; merge only after repository CI, independent Elsa 3 APPROVE + HIGH and Greptile 5/5.
- Update operator documentation with exact rehearsal, approval, execution, readback and recovery commands, known limitations and retained receipt locations. The concrete future approval packet must identify reviewer/ref/bypass settings, provider overwrite controls, source maintenance/npm replacement, old/queued credential containment, fresh quiescence and full compatibility. Do not silently waive a pending gate.
Admission contract for implementation
Use the conservative fail-closed default established in lead readiness review. Only GitHub's native approval of the same workflow run against the fixed, pre-existing protected Core environment can authorize its publication job. A CLI flag, workflow input, JSON approved/ready value, prior receipt or artifact-produced output is not authority. Explicit dispatch may select the operation but cannot bypass the native approval/protection gates.
Before admitting a protected publishing job, perform a fresh bounded read that proves the expected existing environment identity, required reviewer identities, prevention of self-review/admin bypass, and exact allowed execution refs against reviewed policy. Do not allow a missing environment to auto-create an unprotected publishing path. Missing, unreadable, incomplete or mismatched configuration blocks admission; preparation and verification can still run without publisher credentials. Recheck the applicable policy at execution before using a credential. Use a dedicated environment-only secret with no repository/org fallback. No publisher credential is exposed to the retrieval, build or verification jobs.
The actual environment ID, reviewer IDs, allowed refs and operational approval are not invented here. Their absence is a tested blocked-admission state. A later explicitly approved, reviewed configuration change can bind those exact values; no arbitrary dispatch value or boolean override may fill that gap. Bind the executor revision, original candidate/run/attempt/archive, full manifest/feed and same-run verified bytes in the approval summary and execution ledger. This implementation may be accepted with publication correctly blocked while operational configuration remains pending; it must not claim a live protected environment or completed cutover.
Version one permits publication only from Core refs/heads/main, manual dispatch attempt 1. Recovery uses a fresh native-approved dispatch. Public scheduling checks establish eligibility only and explicitly defer credential provenance. After native approval, a separate environment-only ELSA_CONSOLIDATED_METADATA_READ_TOKEN performs bounded GETs to the exact environment/repository/repository-visible organization secret-name endpoints; complete stable snapshots must show both dedicated credentials only at environment scope before publisher-key use. This token must have only repository Secrets:read and Environments:read, with no Actions/artifact-reading, Contents or organization-administration grants. Actual grants require administrative inspection during future approved setup; names do not prove permissions. Inspector child processes receive neither credential. Existing rejection of inherited GH_TOKEN, GITHUB_TOKEN and ACTIONS_READ_TOKEN remains intact. Immediate fresh checks narrow but cannot eliminate configuration races, so execution also requires stable reviewed environment administration. Implementation provisions no token, environment or live policy.
Boundaries and remaining program outcomes
Acceptance closes the reviewed implementation and nonpublishing proof, not the release. Actual provider/environment/credential changes, source-publisher cutover, NuGet/npm publication, deprecation or archival still require their concrete approval where absent. Full compatibility remains #8643; its 36 browser records and 60 optional profiles are preserved. npm ownership remains #8216. The parent #8220 stays open until actual approved publication, full readback and operational recovery outcomes are verified. Earlier research and simulations are not live release evidence.
Suggested minimal files: a new consolidated executor/test pair, existing VerifyPackageSymbolPair/Program.cs, one artifact-only workflow, and the recovery runbook. Extract shared helpers only where semantics match; do not fork the accepted input/reconciliation validation. Work exclusively in isolated worktrees. Use Sol 6.1 for implementation and Luna 6 Extra High for bounded review; final integration and QA stay with the lead. No heavy local .NET/Node/browser workloads while the host is overloaded; use hosted verification.
Sources: accepted lockstep ADR, original-byte recovery acceptance, public symbol research, NuGet symbol publishing protocol, GitHub secret-read timing.
Acceptance — 2026-10-07
Merged #8650 into the program branch as 702376b501439e5244a0db8728d12b9da86eb5d9. The lead verified both merge parents and exact tree equality with reviewed head db6157125ab70361030c0d24e3be99737d7237e8. Full acceptance and retained artifact evidence records passing exact-head gates, independent APPROVE + HIGH, Greptile 5/5, all 225 original pairs / 668 associations, complete attempt-2 readback and simulated recovery, and the retained failed attempt-1 timeout evidence. CI ran on the reviewed head; the identical-tree program merge uses [skip ci] and is not claimed as a separately tested merge head.
Only implementation/nonpublishing proof is closed. Actual publication, full compatibility, credentials/environment/source-publisher cutover and final main integration remain open in #8220/#8194.
Activity
sfmskywalker commentedon Oct 7, 2026
Lead readiness clarification
The task now defines the authoritative admission boundary: native GitHub approval of the same run against a fixed, pre-existing protected environment. A prior receipt, CLI flag or workflow input cannot authorize publication. A fresh missing/unreadable/mismatched environment check must prevent the publisher job from being scheduled, avoiding automatic creation of an unprotected environment. Exact environment/reviewer/ref identities stay unset and admission stays blocked until the later reviewed operational configuration is approved.
A read-only transport preflight on 2026-10-07 confirmed that an anonymous public GET of
/repos/elsa-workflows/elsa-core/environments/github-pagesreturns HTTP 200 with environment ID 44792141,can_admins_bypass: true, and its branch policy metadata. This proves metadata inspection is feasible without inventing an administrative token; it does not establish a protected publishing environment. GitHub documents public environment reads and Actions-read permission. Actual dedicated publisher settings and authority remain absent/unapproved.The leaf remains Todo / Agent Ready / verification Pending while #8647 is the sole active delivery Task. No environment, credential or publication was changed.
sfmskywalker commentedon Oct 7, 2026
Implementation is under review in PR #8650. Initial head
78903567263f74b75e07b5d324544ebb6fd47532passes 136 consolidated contracts normally and with optimized Python, actionlint and whitespace checks. Independent review and Greptile are running; Copilot was requested but no output is claimed.Hosted original-byte verification is running against all 225 original pairs. The native admission summary is being strengthened in response to early independent review; this initial head is not accepted. No publisher/environment/credential changes or publication have occurred. Board: In Progress / In Review / verification Running; #8649 remains the sole active Task.
sfmskywalker commentedon Oct 7, 2026
The first hosted original-candidate run 37616703880 passed at
78903567263f74b75e07b5d324544ebb6fd47532. Its immutable verification artifact is 11479994629, digestsha256:c79613debac30890227f744d60ab83512b2b7e9474ecf056a29547cb0fa9d1ab.Lead inspection of the retained receipts confirms all 225 pairs / 450 original archives, 668 DLL/PDB associations, and zero assembly-free pairs. Interrupted simulated publication resumed to 225 matching packages and 668 matching PDB keys, using exactly 450 original-byte simulated uploads. Anonymous live GETs classified 225 packages and 668 PDB keys as missing, with zero conflicts or unknown observations. No publication occurred; anonymous absence is visibility evidence, not publisher authority or release acceptance. Original archive SHA remains
ace85260c3389916fe3dcd7ee9cd5b766e4030dd6cee13c7f89285ada79c944f.Receipt SHA-256: rehearsal
f721cc3de00ca4a21d1608f1d23e4289ad23d0d349edb884d92cfae25760142c; verificationd45e517c4d16d43ee89e45fbc5f1b9058f9d839e219ffb6dc1d3eafed980067f.This is preliminary evidence, not acceptance of the revised head. Current head
2d57b9426f2042d14635adac8f8a59bddc690873includes all independent review fixes and APPROVE + HIGH code-review evidence. Its fresh hosted proof, repository CI and Greptile remain in progress. #8649 remains the sole active Task, In Progress / In Review / Running. No merge or publication acceptance is claimed.Fresh source refresh also confirms all previously verified 35 release refs and all three main tips are unchanged; 3.9.0 remains latest in Core, Studio and Extensions. The previously recomputed ancestry proof therefore still applies to those exact identities.
sfmskywalker commentedon Oct 7, 2026
Exact-head hosted checkpoint for PR #8650 at
7c3075232e5c4fdd9b34ad27ec0e2e8cfb0baf17:11482049624,consolidated-executor-verification-37620966477-1, GitHub digestsha256:50b9606f2b4d7832f21fe4e8341ac2405df5dd37a82004a2ac8eebc577bc5501.ba5b348aa2414fdf7c19d9d8806e87b7c91a4205, run 37456860080 attempt 1, artifact 11412848210; executor identity is the current PR head. Source digest matches the reviewed executor.rehearsal.json=80ff74cb9511826ec139b003bf0a8f4949c4d1e53f9eb6cd3e79a026c1bd3a8d;verification.json=867a80c4542b7b2e6faa515d4162555fe3a9fced1e5af64be33af54691a27399.The task remains In Progress / In Review / Running while broader exact-head package CI finishes. This checkpoint does not close #8649, authorize publisher setup, or complete #8220/the program.
[skip ci] Add immutable consolidated package executor (#8650)
sfmskywalker commentedon Oct 7, 2026
Accepted through merged #8650, program merge 702376b. Exact merged-tree equality and all scoped acceptance evidence: #8650 (comment). This closes implementation and nonpublishing proof only; release/cutover/full compatibility remain open.