Development record
An intent verb's link repoint (plan, spec close, bundle plan and close, reclassify, through repointUnderLock in internal/core/intent/lifecycle.go) rewrites every markdown record linking the moved path, issue and reading records included, under the intent store's lock alone: a ledger writer (a resolve, a link, a disposition) landing on a linking ledger record between the repoint's read and its write is erased, and the same holds for a spec record against a spec writer. The intent package cannot take the ledger lock (capture imports it), so closing this needs a registered ledger-lock seam taken OUTSIDE the intent lock (ledger, then intent, the order capture's transition and migrate take), and a stance on a tree with no ledger, which taking the lock would create.
An intent verb's link repoint (plan, spec close, bundle plan and close, reclassify, through repointUnderLock in internal/core/intent/lifecycle.go) rewrites every markdown record linking the moved path, issue and reading records included, under the intent store's lock alone: a ledger writer (a resolve, a link, a disposition) landing on a linking ledger record between the repoint's read and its write is erased, and the same holds for a spec record against a spec writer. The intent package cannot take the ledger lock (capture imports it), so closing this needs a registered ledger-lock seam taken OUTSIDE the intent lock (ledger, then intent, the order capture's transition and migrate take), and a stance on a tree with no ledger, which taking the lock would create.
Grounds
- pursued: a ledger writer arriving while an intent verb's repoint runs now waits for its write and the linking issue keeps both edits (TestRepointHoldsTheLedgerLockAgainstALedgerWriter, TestAnIntentVerbRepointTakesTheLedgerLock); a ledger edit erased by a repoint would show it wrong
Frontmatter
| id | iss-2609262143209970 |
|---|---|
| type | issue |
| lifecycle | resolved |
| severity | minor |
.abcd/work/issues/resolved/iss-2609262143209970-an-intent-verb-s-link-repoint-plan-spec.md
open on GitHub ↗ · commit history ↗