Skip to content

Gated repeat import on 2026.10.19 appends closed-item history and fails the no-diff gate #175

Open

Description

@unbraind

Evidence and version scope

Confirmed in pm-vcs run 40067990579, job 120795158174, 2026-10-24, caller checkout fd0d9b66f66b72db40c6d0947a2c2433cc7fe124, reusable workflow 09412243e2543adedbb73a4f4b2f2b6e2ac0c8a6.

The installed-package receipt resolves and verifies pm-github 2026.10.19. The deprecated input says 2026.10.16, but that is not the actual tested package version.

Expected and actual

The first atomic import reports 4 new, 1 updated. Its immediate repeat reports 0 new, 5 updated. Both privacy gates pass with 0 findings and 11 scanned files. The subsequent no-diff check exits 1, preventing publication.

The second import appends 12 history rows across 5 already-closed items:

  • 5 close events replace closed_at with the current import time.
  • 5 import-finalization events restore the original source closure dates.
  • 2 additional update events change only updated_at and have no message.

The final item source closure dates are restored, so this is not evidence that those dates remain corrupted. It is durable history/timestamp churn and a blocked scheduled sync. Batch IDs differ: github-import-b7e719cac1f679c1 then github-import-9a6e42f32ffd814b.

Reproduction / regression fixture

In an isolated synthetic tracker, import a batch mixing new closed GitHub issues and an already-linked closed item with original creation/closure dates. Snapshot item and history bytes after the first successful atomic gated import. Repeat with identical provider fixtures and compare. The existing hosted log supplies the concrete failure and diff; no live import or workflow rerun was initiated by this review.

Current-source inspection, not current-release reproduction

At f4c29e8391462d03be4c3303e8309ece7864c025, index.ts still constructs forced closed-state updates. Transaction context selection in import-fidelity.ts treats unrecognized/message-free events as external context. The timestamp-only SDK updates may therefore contribute to transaction identity churn. This is a static investigation lead, not an independently reproduced current-head defect or a proven complete root cause. The update-only refresh no-change filter is a different path.

Canonical goal and dedup

pm-github-c093 describes idempotent source-lifecycle finalization. pm-github-aiok explicitly requires repeat-import idempotency. Related #142 and #154 do not identify this hosted repeat-import failure. All-status issues/PRs in pm-github and pm-vcs were checked before filing.

Acceptance

  • Repeated identical atomic gated imports leave item and append-only history bytes unchanged, including the mixed new/existing closed-item fixture.
  • Preserve exact source lifecycle dates and truthful native mutation clocks.
  • Genuine upstream changes and local reopen/lifecycle cycles still invalidate stale completed transactions.
  • Interrupted transaction replay remains recoverable without duplicate effects.
  • Keep the no-diff publication gate and privacy gate intact; do not suppress history diffs or weaken assertions.
  • Verify the relevant shipped artifact and distinguish current-source results from the hosted 2026.10.19 failure.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions