tickmarkr 2.6.6 → 2.6.7

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.
Files changed (41) hide show
  1. package/dist/adapters/claude-code.js +8 -2
  2. package/dist/adapters/codex-commit-check.d.ts +3 -2
  3. package/dist/adapters/codex-commit-check.js +37 -10
  4. package/dist/adapters/codex.js +10 -4
  5. package/dist/cli/commands/beat.d.ts +6 -1
  6. package/dist/cli/commands/beat.js +123 -76
  7. package/dist/cli/commands/fleet.js +64 -21
  8. package/dist/cli/commands/init.js +18 -7
  9. package/dist/cli/help.d.ts +1 -0
  10. package/dist/cli/help.js +10 -5
  11. package/dist/cli/index.d.ts +1 -1
  12. package/dist/cli/index.js +1 -1
  13. package/dist/gates/baseline.d.ts +9 -0
  14. package/dist/gates/baseline.js +14 -3
  15. package/dist/gates/cache.js +1 -1
  16. package/dist/gates/review.js +15 -0
  17. package/dist/gates/run-gates.d.ts +18 -6
  18. package/dist/gates/run-gates.js +324 -204
  19. package/dist/gates/test-manifest.d.ts +8 -0
  20. package/dist/gates/test-manifest.js +151 -111
  21. package/dist/run/beat-lifecycle.d.ts +154 -0
  22. package/dist/run/beat-lifecycle.js +825 -0
  23. package/dist/run/daemon.js +18 -7
  24. package/dist/run/git-trust.d.ts +27 -0
  25. package/dist/run/git-trust.js +178 -0
  26. package/dist/run/git.js +34 -14
  27. package/dist/run/journal.js +15 -3
  28. package/dist/run/lease.d.ts +23 -0
  29. package/dist/run/lease.js +232 -38
  30. package/dist/run/merge.js +2 -2
  31. package/dist/run/stall.js +20 -1
  32. package/dist/run/supervision.d.ts +8 -0
  33. package/dist/run/supervision.js +24 -4
  34. package/dist/run/verification-job.d.ts +51 -0
  35. package/dist/run/verification-job.js +137 -0
  36. package/dist/tui/ink/fleet-app.d.ts +9 -0
  37. package/dist/tui/ink/fleet-app.js +209 -127
  38. package/package.json +1 -1
  39. package/skills/tickmarkr-auto/SKILL.md +19 -10
  40. package/skills/tickmarkr-loop/SKILL.md +19 -10
  41. package/skills/tickmarkr-overseer/SKILL.md +25 -16
@@ -326,16 +326,25 @@ For `resume`, use the same host-owned split form with `tickmarkr resume <runId>`
326
326
  in the process table to the host PTY; verify no agent session is an ancestor. If an agent is
327
327
  an ancestor, stop that launch and relaunch through the host split before continuing.
328
328
 
329
- Start `tickmarkr beat <tier> --seat <seat> --loop` as a DETACHED background process, one per
330
- (tier, seat), from the repository root. Use setsid plus nohup (or the host's equivalent detached
331
- session facility), redirect output to a file, and record a pidfile under the repository's state
332
- dir. Verify ppid 1 and no agent-session ancestor. Never put beats in a harness background task
333
- or a visible tab. The lifecycle must be idempotent: start checks the pidfile against the live
334
- process payload and returns an "already running" no-op for the same (repo, tier, seat); status
335
- checks that payload and beat freshness; stop sends `--stand-down` for the same tier and seat,
336
- verifies the loop exits within one interval, then removes its pidfile. A stale or reused pid
337
- must never be killed without matching its live payload. Include a run-end stop item for every
338
- beat started, also on failure, park or handoff; verify DISARMED and remove retired beat files.
329
+ Detached beats are product-owned, one per (tier, seat), from the repository root, through the
330
+ shipped lifecycle verbs — never a hand-rolled setsid plus nohup wrapper, pidfile or shell loop:
331
+
332
+ ```bash
333
+ cd <repo> && tickmarkr beat start <tier> --seat <seat>
334
+ cd <repo> && tickmarkr beat status <tier> --seat <seat>
335
+ cd <repo> && tickmarkr beat stop <tier> --seat <seat>
336
+ ```
337
+
338
+ `start` launches the `--loop` child in its own session, logs to `<state-dir>/supervision/<tier>.log`,
339
+ records its pid, birth, argv and cwd, and exits 0 only after it reads back that exact child's own
340
+ advancing beat. A repeat start for the same (tier, seat) is an "already running" no-op; a stale,
341
+ dead, foreign, reused-pid, unreadable or busy tier is a nonzero refusal that changes nothing.
342
+ Verify ppid 1 is never proof on its own — an orphan of a dying session shows it too; `status`
343
+ is the check: it reads the recorded process identity and beat freshness, writes nothing, and exits
344
+ nonzero for STALE, MISMATCH or UNREADABLE. `stop` signals only that recorded pid after its
345
+ generation and identity still match, and reads back DISARMED. Never put beats in a harness
346
+ background task or a visible tab. Include a run-end `beat stop` item for every beat started, also
347
+ on failure, park or handoff, and require its DISARMED read-back.
339
348
 
340
349
  Keep only watchers that must WAKE the seat in the harness. Re-arm them on each wake and at
341
350
  their harness cap; daemon and beat lifetimes must not depend on that cap.
@@ -1166,14 +1175,14 @@ watching it. Two thirds of that line were constants, not measurements.
1166
1175
 
1167
1176
  The beat is one shipped command and it arms through two explicit verbs, `--new-arm` and `--loop` —
1168
1177
  never a bare invocation. `--loop` already implies `--new-arm`: it creates a durable arm and beats in
1169
- this process every 10 seconds, exiting on its own within one interval after a stand-down. Run it from
1170
- the repo root as a detached setsid+nohup process with a pidfile, following the idempotent
1171
- start/stop/status lifecycle in Host-owned daemon and detached beats; never as a harness task or visible tab:
1178
+ this process every 10 seconds, exiting nonzero with its reason within one interval after a stand-down.
1179
+ Never launch it by hand: `beat start` runs it detached and owns it, following the start/stop/status
1180
+ lifecycle in Host-owned daemon and detached beats; never as a harness task or visible tab:
1172
1181
 
1173
1182
  ```bash
1174
- # Payload for the detached start above; do not execute as a foreground or harness task.
1175
- cd <repo> && tickmarkr beat overseer --seat <overseer-agent-or-pane> --loop
1176
- cd <repo> && tickmarkr beat overseer --seat <overseer-agent-or-pane> --stand-down # deliberately hand off; --loop exits
1183
+ # beat start owns the detached --loop child; do not execute the loop as a foreground or harness task.
1184
+ cd <repo> && tickmarkr beat start overseer --seat <overseer-agent-or-pane>
1185
+ cd <repo> && tickmarkr beat stop overseer --seat <overseer-agent-or-pane> # deliberately hand off; reads back DISARMED
1177
1186
  ```
1178
1187
 
1179
1188
  **The legacy wrapper loop, `while :; do tickmarkr beat overseer --seat <pane>; sleep 10; done`, is the