Respect Forgejo UI closes during backlog sync #144
Labels
No labels
abandoned
active
audit
blocked
data-safety
difficulty:easy
difficulty:hard
difficulty:high
difficulty:medium
docs
done
duplicate
notebook-v0
open
priority:high
ready
release-critical
safe-mode
spec
spec-backlog
subsystem:api
subsystem:backlog
subsystem:bases
subsystem:ci
subsystem:command
subsystem:configuration
subsystem:consolidate
subsystem:dependencies
subsystem:desktop-electron
subsystem:diffmerge
subsystem:docker
subsystem:docs
subsystem:fuzzy
subsystem:graph
subsystem:hotkeys
subsystem:lapis
subsystem:maint
subsystem:maintenance
subsystem:markdown
subsystem:markdown-lint
subsystem:md018
subsystem:notebook
subsystem:notifications
subsystem:opfs
subsystem:package
subsystem:plugin-markdown
subsystem:plugin-tasks
subsystem:plugins
subsystem:registry
subsystem:release
subsystem:renovate
subsystem:restore
subsystem:scripts
subsystem:search
subsystem:settings
subsystem:spec
subsystem:tasks
subsystem:testing
subsystem:ui
subsystem:web
subsystem:workspace
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
lapis-notes/lapis#144
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
pnpm backlog:syncpushes local open state to Forgejo and reopens issues that were closed manually in the Forgejo UI when the local mirror still has them under.issues/open/.Goal
During push reconciliation, treat a remote closed issue as authoritative unless the local file records an intentional reopen via
## Reopen Reason(pnpm backlog:reopen).Scope
resolveIssueStateConflicthelper andreconcileRemoteIssuebehavior inscripts/issue-sync.mjsNon-goals
backlog:closestill closes Forgejo)Acceptance Criteria
## Reopen Reason## Reopen Reasonfrompnpm backlog:reopen.issues/closed/Implementation Notes
Push then pull: skip remote reopen on state mismatch; pull writes remote closed state locally.
Suggested Files or Specs To Inspect
scripts/issue-sync.mjs(reconcileRemoteIssue)scripts/issue-sync-lib.mjsspec/src/80-maintenance/issues-backlog.mdValidation Commands
node --test scripts/issue-sync-lib.test.mjspnpm check:allFollow-up Tasks
Implementation Summary
Push reconciliation skips Forgejo reopen when remote is closed unless local has ## Reopen Reason; pull moves UI-closed issues to .issues/closed/. Added resolveIssueStateConflict helper and unit tests; documented sync state policy in issues-backlog spec.