Skip to content

πŸ›πŸ§‘β€πŸ’» - Release issue closes and reaches 100 at production promotion before publication and reconciliationΒ #792

Closed

Description

@efraespada

Is there an existing issue for this?

  • I have searched the existing issues.

Searches included release closed publishing, "100%" "promotion", "promotion_pr_pending" "closed", "publicationVerified" "100%", and release premature, across open and closed issues.

#520 contains an earlier related UX observation that a release launcher closed on promotion before reconciliation. Its main defect and acceptance concerned reconciliation retry. #735 requests a typed staged-rollout lifecycle for ordinary operational work. This report isolates premature completion of an already typed, native release orchestration with publication and reconciliation explicitly pending. #740 concerns tag-push issue resolution and is a different, fixed defect. Please consolidate if a dedicated completion bug already exists while retaining this fresh native reproduction.

Which actions are affected?

Issue, Pull Request

Which platforms are affected?

Linux

Description

A native Copilot release issue is closed as completed and receives 100% immediately after the production promotion merges, while its durable operation is still publishing, publicationVerified=false, and no development reconciliation exists. In this case zero of ten packages were published and the publisher was still waiting for the normal protected pub.dev review.

The release dashboard correctly shows publication, reconciliation and final cleanup unchecked, but the native issue state and completion label imply the entire release is finished. This can mislead a maintainer following the issue list, notifications or project state. It is a completion-state defect; publication itself has not failed, and its successful continuation is not proof that the premature completion was correct.

Consumer: vypdev/zstandard issue #185, release 1.5.5, promotion PR #186.

Durable operation 3038f8c6-5823-4dd1-8f37-ef7ac1963e9f:

  • kind=release, version=1.5.5, strategy production-lineage.
  • prMode=auto, backmergeMode=auto, cleanup=all, issueCompletion=close.
  • Origin develop@689fc7441e0265c7573a9768dc91f6bd7e7c317a.
  • Candidate release/1.5.5@9a0d2df97d68aa0cdb81759b61b1c8ba0e4cf506.
  • Candidate/accepted tree c8235a446578e703c1c5a0789c66945469b43723.
  • Accepted production/tag SHA f2b106d828d5ac7c2f15ff4bf708cf48d4fc1413.
  • Observed persisted revision 5: phase=publishing, publicationVerified=false, reconciliationTargets=[], lastFailure=null.

Expected: for native release/hotfix orchestration, production acceptance is an intermediate milestone. Keep the issue's native open/closed state, progress label and project/status projection consistent with the operation until verified publication, all required reconciliation and cleanup complete. issueCompletion=close should take effect at the actual configured completion boundary. Preserve ordinary completed-issue closure, protected checks, environment review, operation identity and immutable publication receipts.

Reproducing the issue

This was observed during an explicitly authorized real release; do not create another tag or upload packages merely to reproduce it.

  1. Admit a Release issue using the installed form; a maintainer starts it and uses the normal deploy launcher. No consumer-created remote branch or manual version bump is involved.
  2. Run full deployment preparation and candidate gates. Preparation 40904824050 succeeds at attempt 1, generates all distributable outputs, and uploads the exact candidate receipt. Artifact 12912889105, release-candidate-1.5.5, records issue185, run40904824050/attempt1, source9a0d2df and treec8235a4. Its downloaded ZIP SHA256 is 0b5ceb3c9a3889d2df30282dd7356b50ae88b8f5b2ce51612ff3b317f16cdd1a.
  3. Copilot opens PR186 targeting master, with its native deployment operation marker and GitHub auto-merge enabled by vypbot, method merge. The displayed body has no Closes #185 text; it has the release control-center link. Read-only GraphQL nevertheless returns issue185 in closingIssuesReferences.
  4. At 2026-10-29 16:33:48 UTC, PR186 merges as vypbot to productionf2b106d.
  5. At 16:33:50 UTC, issue event 34609201846 records closed, actor vypbot, commit_id=null. No maintainer manually closed the issue.
  6. Copilot pull_request:closed run40912816485, job123585033047, was created at 16:33:52 UTC and succeeds. The initial closure therefore predates this handler; this report does not claim that its later close routine caused the first close. The exact closure producer/root cause still needs upstream investigation.
  7. At 16:34:24 UTC, event 34609254477 adds 100%, actor vypbot. The observed labels are release, branched, deploy, priority: medium, 100%, state:working.
  8. The release dashboard comment6502239175, updated16:34:39, states publishing artifacts; package publication, development reconciliation and cleanup remain unchecked.
  9. The normal publication continuation40912953679 creates/verifies the accepted new tag. Tag publisher40913044268, created16:35:15, validates the immutable tag and then waits for the protected pub.dev environment. No checks or environment protection were bypassed.
  10. At 16:38:26 UTC, independent REST reads still show issue185 closed/100%, while the publisher is waiting, normal environment approval is pending, durable publication is unverified and reconciliation is empty. Public API requests for each of these exact1.5.5 versions return404: zstandard_platform_interface, zstandard_native, zstandard_android, zstandard_ios, zstandard_linux, zstandard_macos, zstandard_web, zstandard_windows, zstandard_cli, zstandard.

The snapshot is point-in-time evidence. We will continue the separately authorized release through its supported workflow, so the URLs may subsequently show successful publication/completion. That later success does not erase the earlier closed/100% interval while the registry and environment evidence proved publication had not started.

copilot Version

Consumer config uses vypdev/copilot@v3. The actual closed-PR job downloads Action revision f5e5a4cf9a80248994469cd88ad55eecab5b95ca; runner2.338.0, Linux self-hosted. The source SHA identifies executed diagnostics only: no SHA-pinned Action reference was added to the consumer.

Relevant Log Output

2026-10-29T16:33:57.2217269Z Download action repository 'vypdev/copilot@v3' (SHA:f5e5a4cf9a80248994469cd88ad55eecab5b95ca)
2026-10-29T16:34:04.5391124Z   reconciliation-issue-completion: close

Read-only provider evidence at16:38:26UTC:

{
  "issue": 185,
  "state": "closed",
  "closed_at": "2026-10-29T16:33:50Z",
  "completion_label": "100%",
  "operation_phase": "publishing",
  "publicationVerified": false,
  "reconciliationTargets": [],
  "publisher_run": 40913044268,
  "publisher_status": "waiting",
  "pending_environment": "pub.dev",
  "published_target_versions": "0/10; all ten exact-version endpoints return HTTP404"
}

These are state observations, not fabricated failure logs. Native jobs currently report success and the release continues normally.

Additional context and comments

The human maintainer explicitly requested detailed upstream reports for every genuine Copilot anomaly, leaving implementation to this repository's maintainers. We have not modified the consumer's Copilot engine, generated workflows/profile, verification setup, credentials, PR_APPROVAL_POLICY or durable operation state; manually reopened or relabeled its closed release issue; created a replacement managed branch; or fabricated publication/reconciliation success. The separate minor1.6.0 remains stopped and all previous immutable tags remain untouched.

Suggested regression coverage: actual automatic production promotion and its closing-issue relationship; closure occurring before the pull_request:closed handler starts; queued protected publication; a failed/retryable publication; verified publication with pending reconciliation; successful final completion; duplicate/concurrent merged/closed/label events; and ordinary non-deployment issue closure. Verify native issue state, labels, project/status and dashboard together. A text-rendering-only test will not catch an earlier GitHub/provider close.

Activity

  1. added
    bugSomething isn't working
    bugfixSomething isn't working
    priority: highCritical issue, needs immediate attention.
    on Oct 29, 2026
  2. added theissue type on Oct 29, 2026
  3. moved this to Todo in vypdevon Oct 29, 2026
  4. changed the title [-]Release issue closes and reaches 100% at production promotion before publication and reconciliation[/-] [+]πŸ› - Release issue closes and reaches 100 at production promotion before publication and reconciliation[/+] on Oct 29, 2026
  5. vypbot commented on Oct 29, 2026

    @vypbot
    Contributor

    Hi! I’m @vypbot, the Copilot assistant for this repository.

    I can answer questions, explain the codebase, propose implementation and test plans, review issues and pull requests for potential bugs or security problems, and help authorized maintainers apply changes.

    Try /copilot help to see the available commands, or mention @vypbot with your question.

  6. moved this from Todo to In Progress in vypdevon Oct 30, 2026
  7. added
    branchedIndicates that a branch has been created for this issue.
    on Oct 30, 2026
  8. changed the title [-]πŸ› - Release issue closes and reaches 100 at production promotion before publication and reconciliation[/-] [+]πŸ›πŸ§‘β€πŸ’» - Release issue closes and reaches 100 at production promotion before publication and reconciliation[/+] on Oct 30, 2026
  9. 1 remaining item

  10. vypbot commented on Oct 30, 2026

    @vypbot
    Contributor

    Implementation plan

    Current status: Ready to start. No action is required from maintainers before implementation.

    1. Trace release completion triggers
      • Read repository documentation and conventions, then trace native release/hotfix promotion, closing-issue references, pull_request:closed handling, and issue/project status updates.
      • Identify every path that closes the issue or applies 100% before publication and reconciliation finish.
    2. Define the completion boundary
      • Use the configured completion boundary: verified publication, required reconciliation, and configured cleanup.
      • Keep issue state, progress labels, project/status projection, and dashboard aligned with the durable operation phase.
    3. Make completion updates safe
      • Gate closure and 100% on the durable operation reaching its actual completion boundary; handle promotion merges and earlier GitHub closures.
      • Make duplicate or concurrent merge, close, and label events idempotent while preserving ordinary completed-issue closure.
    4. Add lifecycle regression coverage
      • Cover closure before the closed-event handler, queued or retryable publication, pending reconciliation, successful completion, duplicate events, and ordinary issue closure.
      • Assert issue state, labels, project/status, and dashboard against operation state.
    5. Document and verify behavior
      • Document the release completion boundary and status projection in the relevant project guidance.
      • Run the targeted regression suite and confirm protected checks, environment review, operation identity, and immutable publication receipts remain intact.

    Acceptance: Automated lifecycle tests prove native release/hotfix issues remain incomplete through promotion, queued or failed publication, and pending reconciliation, and become closed/100% only after configured completion; ordinary completed issues still close normally.

    Need something else? Mention the bot with a question or use /copilot help.

  11. added
    size: XXLIndicates an extremely large task or issue that requires significant time and effort to complete.
    65%Progress: 65%
    and removed on Oct 30, 2026
  12. vypbot commented on Oct 30, 2026

    @vypbot
    Contributor

    Issue closed β€” historical progress

    Current status: closed as completed.

    The last estimate is retained below as history. Closure does not certify a new percentage, tests, or branch alignment.

    Action required: none for this closed issue. If work continues, reopen the issue; a fresh assessment can update this same card.

    Last assessment before closure (historical)

    Progress: 65% β€” in progress

    > Current status: [R1] Expected: for native release/hotfix orchestration, production acceptance is an intermediate milestone. Keep the issue's native open/closed state, progress label and project/status projection consistent with the operation until verified publication, all required reconciliation and cleanup complete. issueCompletion=close should take effect at the actual configured completion boundary. Preserve ordinary completed-issue closure, protected checks, environment review, operation identity and immutable publication receipts. β€” Source patches implement deferred native completion while deployment publication, reconciliation, or cleanup is pending; preserve ordinary issue completion; detach the managed promotion PR's native closing reference before merge handoff; and perform final closure and metadata reconciliation after verified completion. Patches also add retry handling for failed issue projection while retaining completed functional state and publication facts. Runtime behavior is not independently verified.
    [R2] "Run the targeted regression suite and confirm protected checks, environment review, operation identity, and immutable publication receipts remain intact." β€” The comparison adds targeted regression cases and documentation, but provides no independent execution evidence for the targeted regression suite or verification that protected checks, environment review, operation identity, and immutable publication receipts remain intact.
    [R3] "ac
    [untrusted content truncated]

    Next: [R2] "Run the targeted regression suite and confirm protected checks, environment review, operation identity, and immutable publication receipts remain intact." β€” Run the targeted regression suite and independently verify protected checks, environment review, operation identity, and immutable publication receipts.
    [R3] "acceptance": "Automated lifecycle tests prove native release/hotfix issues remain incomplete through promotion, queued or failed publication, and pending reconciliation, and become closed/100% only after configured completion; ordinary completed issues still close normally." β€” Obtain independent execution evidence for automated lifecycle tests covering promotion, queued or failed publication, pending reconciliation, configured completion to closed/100%, and ordinary completed-issue closure.

  13. vypbot commented on Oct 30, 2026

    @vypbot
    Contributor

    Issue closed: synchronization recommendation retired

    No branch synchronization is required for this closed issue.

    The previous recommendation is historical. Issue closure does not certify that the branches are synchronized.

  14. moved this from In Progress to Done in vypdevon Oct 30, 2026
  15. added
    100%Progress: 100%
    and removed
    in-progressStart work on an admitted issue.
    state:workingWork can proceed on the verified branch or without a branch.
    on Oct 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

100%Progress: 100%branchedIndicates that a branch has been created for this issue.bugSomething isn't workingbugfixSomething isn't workingpriority: highCritical issue, needs immediate attention.size: XXLIndicates an extremely large task or issue that requires significant time and effort to complete.

Type

Projects

  • Status
    Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions