Commit Graph
14 Commits
Author SHA1 Message Date
haelyra 137ec69adc test: verify Windows lock refusal after committed publication 2026-10-11 06:51:30 -04:00
haelyra cc12310b69 test(ledger): classify owned snapshot entries through directory records 2026-10-11 05:48:40 -04:00
haelyra 723e097e92 test(ledger): bind storage-preservation snapshots to descriptors 2026-10-11 05:44:22 -04:00
haelyra 5da9a1f4a7 fix: preflight ledger storage and normalize saved model padding 2026-10-11 05:33:44 -04:00
haelyra ca32c9ab79 test(ledger): normalize the competing-publication fault selector 2026-10-11 05:05:26 -04:00
haelyra 15b51b6ca4 fix(windows): make fault probes portable and bound sharing-denial retries 2026-10-11 04:56:18 -04:00
haelyra 8f80de5975 fix(ledger): retain lock descriptors across ownership checks and release 2026-10-11 04:19:35 -04:00
haelyra afdf403ae9 test: keep stale lock race fixture portable 2026-10-11 03:54:38 -04:00
haelyra 644269657c fix: harden ledger publication and mixed Ollama histories 2026-10-11 03:53:41 -04:00
haelyra 1bbebf61d9 fix(story-lifecycle): reject unsafe numeric allocation IDs
A real CLI fixture reproduced an infinite allocation loop from an existing unsafe numeric ID. Reject unsafe IDs and overflow without writing markers; 26 workflow fixtures, changed-code coverage and validators pass.
2026-10-11 02:17:50 -04:00
haelyra 54925308d7 feat(skills): integrate collision-safe story lifecycle from PR 2311
Preserve full contributor history and current catalog. Actual process workflows cover concurrency, recovery, sprint planning and read-only status. Bound registry symlinks, counts and lock waits; preserve manually curated trigger provenance.
2026-10-11 01:59:36 -04:00
t0kubetsu bf5cd6c95e fix(story-lifecycle): reject Points outside 1, 2, 3, 5, 8
A non-numeric, negative, or exponent Points value was persisted and
silently skewed the derived sprint total (bogus -> 0, -3, 1e3 -> 1000)
with no drift reported. parseStory now enforces the documented values,
so apply rejects the batch and status reports the invalid story.
2026-10-07 12:05:53 +02:00
t0kubetsu 7f797d65c4 fix(story-lifecycle): confine ledger I/O, race-free stale locks, enforce transitions
Resolve the Greptile findings on 74262955:
- Refuse symlinked .stories/, epics/, sprints/, .txn/, .ids/ and
  symlinked ledger files, so no read or write leaves .stories/.
- Recovery accepts only regular backup-<n> files in .txn/, validates the
  whole journal before restoring, and never writes through a planted
  restore.tmp.
- Remove a stale lock only under .lock.break after a re-read, so a live
  lock is never deleted; a leftover .lock.break times out (exit 3)
  instead of spinning.
- apply enforces one-step-forward status transitions, new stories start
  as todo, and Sprint must be unassigned or an existing sprint file.
- Refuse a batch that names the same file twice (e.g. a\b vs a/b).

Symlink tests skip on Windows when symlink creation returns EPERM.
2026-10-07 11:45:30 +02:00
t0kubetsu 7426295579 feat(story-lifecycle): collision-safe, all-or-nothing ledger writes
Route every .stories/ write through skills/story-lifecycle/scripts/ledger.js:
- exclusive per-ledger lock; a second writer waits, then exits 3 without writing
- story IDs reserved with exclusive-create markers in the git common dir, so
  concurrent agents and worktrees of one clone never share an ID
- journaled batches: stage, journal, rename; derived epic/sprint tables are
  regenerated inside the batch; an interrupted batch is rolled back by the
  next write command or `recover`; `status` reports it only when no live
  writer holds the lock

Bound the ledger to an opt-in planning projection that is never canonical
ECC Task/Evidence/Completion/Integration state, and state that .stories/
follows the checkout.

tests/docs/story-lifecycle-ledger.test.js exercises create, concurrent
create, concurrent cross-worktree allocation, lock contention, overwrite
refusal, interrupted-batch recovery, sprint planning, status drift and
reconcile, and path confinement. Also refresh the skill-triggers manifest
digest for 294 skills.
2026-10-02 11:39:04 +02:00