tickmarkr 1.33.2 → 1.33.3

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
@@ -368,7 +368,7 @@ Cloning this repo gives Claude Code project skills under `.claude/skills/`:
368
368
  - **`/tickmarkr-auto`** — the **GSD binding**: run remaining GSD milestone phases autonomously with tickmarkr as the
369
369
  executor (plans → compile → dry-run → run → merge → sync-back). Bindings are per-SDD by nature — the
370
370
  sync-back writes that methodology's artifacts; other SDDs need their own thin binding, not this one.
371
- - **`/overseer`** — supervise an autonomous tickmarkr engagement from a Herdr workspace: two-tier visible hierarchy,
371
+ - **`/tickmarkr-overseer`** — supervise an autonomous tickmarkr engagement from a Herdr workspace: two-tier visible hierarchy,
372
372
  journal-based watchers, gate-failure triage, human-checkpoint routing. Requires `HERDR_ENV=1`.
373
373
 
374
374
  Repo-scoped: available automatically in Claude Code sessions inside this repo; not installed by npm.
@@ -100,13 +100,16 @@ const liveness = (events) => {
100
100
  const pid = daemonPid(events);
101
101
  if (pid === undefined)
102
102
  return `last event ${age} ago · daemon pid unknown`;
103
+ // a dead pid after run-end is a clean exit, not a crash — "dead" is only alarming (red) while
104
+ // the run is still incomplete (operator's crash indicator)
105
+ const ended = events.some((e) => e.event === "run-end");
103
106
  let state;
104
107
  try {
105
108
  process.kill(pid, 0);
106
109
  state = "alive";
107
110
  } // no throw ⇒ alive
108
111
  catch (k) {
109
- state = k.code === "ESRCH" ? "dead" : "alive";
112
+ state = k.code === "ESRCH" ? (ended ? "finished" : "dead") : "alive";
110
113
  } // EPERM ⇒ alive
111
114
  return `last event ${age} ago · daemon pid ${pid} ${state}`;
112
115
  };
@@ -172,6 +175,7 @@ const renderFrame = (cwd) => {
172
175
  const gauge = (fill ? color("█".repeat(fill), anyFailed ? 31 : 32, true) : "") + (fill < gaugeCells ? dim("░".repeat(gaugeCells - fill)) : "");
173
176
  const live = liveness(events)
174
177
  .replace(/\bdead\b/, color("dead", 31, true))
178
+ .replace(/\bfinished\b/, color("finished", 2, true))
175
179
  .replace(/\balive\b/, color("alive", 32, true))
176
180
  .replaceAll(" · ", dot);
177
181
  const tally = `${done}/${g.tasks.length} done`;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tickmarkr",
3
- "version": "1.33.2",
3
+ "version": "1.33.3",
4
4
  "description": "Spec in, verified work out.",
5
5
  "type": "module",
6
6
  "license": "MIT",