scrumrun 2.6.8 → 2.6.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  ScrumRun gives an agent a small command surface and a precise project memory: what should be done, how each attempt happened, which decisions constrain the code, and why the architecture exists in its current form.
6
6
 
7
- **Package:** `2.6.8` · **Method target:** `2.0.0` · **Runtime:** Node.js `>=22.13.0` · **License:** MIT
7
+ **Package:** `2.6.9` · **Method target:** `2.0.0` · **Runtime:** Node.js `>=22.13.0` · **License:** MIT
8
8
 
9
9
  **New here?** Read the [Quickstart](docs/QUICKSTART.md) — first Run in under 10 minutes, no `SPEC.md` reading required. Full docs map in [`docs/INDEX.md`](docs/INDEX.md).
10
10
 
@@ -187,6 +187,23 @@ function planFile(file, kind, ctx) {
187
187
  }
188
188
 
189
189
  if (kind === "run") {
190
+ // Reconcile `updated` with the last event's occurred_at date. Fixes Runs
191
+ // normalized by an older CLI that stamped `updated: today` instead of
192
+ // matching the snapshot event, which produced the "Run updated date
193
+ // disagrees with final event timestamp" migration blocker.
194
+ const currentUpdated = extractField(header, "updated");
195
+ const eventDates = [...split.body.matchAll(/"occurred_at":\s*"(\d{4}-\d{2}-\d{2})/g)].map((m) => m[1]);
196
+ if (eventDates.length && currentUpdated && ISO_DATE.test(currentUpdated)) {
197
+ const lastEventDate = eventDates[eventDates.length - 1];
198
+ if (currentUpdated !== lastEventDate) {
199
+ const next = replaceField(header, "updated", lastEventDate);
200
+ if (next !== header) {
201
+ changes.push({ field: "updated", from: currentUpdated, to: lastEventDate });
202
+ header = next;
203
+ }
204
+ }
205
+ }
206
+
190
207
  const taskRef = extractField(header, "task");
191
208
  if (taskRef === undefined) {
192
209
  if (hasField(header, "id")) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "scrumrun",
3
- "version": "2.6.8",
3
+ "version": "2.6.9",
4
4
  "description": "Evidence-driven Agile runtime and semantic project memory for AI coding agents.",
5
5
  "bin": {
6
6
  "scrumrun": "bin/scrumrun.js",