Development record
capture migrate --apply rewrites intent records (the related_issues back-edge, any bucket including shipped/) under the ledger lock only, not the intent mint lock (internal/core/capture/migrate.go, Migrate): an intent writer holding withIntentMintLock (a hold, a condition disposition, a verdict ingest, a review emit, a related-issue edge) landing on the same record between migrate's scan and its write is erased. The intent package exports no seam for another package to take its lock, the same gap iss-2609261254247117 names for relink.Repoint.
issueresolvedminoriss-2609261941039204
capture migrate --apply rewrites intent records (the related_issues back-edge, any bucket including shipped/) under the ledger lock only, not the intent mint lock (internal/core/capture/migrate.go, Migrate): an intent writer holding withIntentMintLock (a hold, a condition disposition, a verdict ingest, a review emit, a related-issue edge) landing on the same record between migrate's scan and its write is erased. The intent package exports no seam for another package to take its lock, the same gap iss-2609261254247117 names for relink.Repoint.
Grounds
- pursued: an intent writer landing between the migration's scan and its write waits and its edit survives the rewrite; the edit missing from the migrated record, or the apply finishing while another holder has the intent lock, would show it wrong
Frontmatter
| id | iss-2609261941039204 |
|---|---|
| type | issue |
| lifecycle | resolved |
| severity | minor |
.abcd/work/issues/resolved/iss-2609261941039204-capture-migrate-writes-intents-outside.md
open on GitHub ↗ · commit history ↗
mentions1
- iss-2609261254247117relink.Repoint rewrites the link text in every record naming a moved path as a read-modify-write outside the intent mint lock, on every verb that moves a record (intent plan, spec close, intent reclassify): a concurrent edit to a linking record between the read and the rename is lost. The move itself is judged under the lock; only the repointing that follows it is not.