arcane-cli 0.22.11 → 0.22.12

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.
@@ -66,6 +66,8 @@ Workflow:
66
66
  - Keep unresolved items open.
67
67
  - Remove completed checklist items only when completion is documented in the correct source-of-truth file.
68
68
 
69
+ 4b. **Register unfinished, task-bearing work on a durable surface (session handoff durability, ARC-040) before the handoff is written.** Enumerate: an incomplete `Active task`, the `Next concrete action`, and any content that would otherwise live only in `Notes` because it has no other durable home. For each, resolve the sink from `tracking_mode` (per ARC-032): `internal` → the appropriate `TODO.md` (root or venture book); `external` → a work item via the configured `external_provider`, falling back to `TODO.md` when tracker tooling is unavailable this session. Write or update the entry, then carry its location into step 5b so the handoff fields below can name it. Skip this step entirely when nothing is unfinished — a fully clean close has nothing to register.
70
+
69
71
  5. **Update [ai-context/system-prompt-context.md](../../ai-context/system-prompt-context.md).**
70
72
  - If priorities, environment state, or agent rules changed during the session, update the file to reflect current reality.
71
73
  - If no changes are needed, skip this step.
@@ -80,14 +82,14 @@ In `ai-context/system-prompt-context.md`, replace the existing `## Next Session
80
82
  > Auto-generated by spell-close-session. Consumed by spell-open-session. Do not edit manually.
81
83
  > Generated: YYYY-MM-DD
82
84
 
83
- - **Active task:** One-line description of the task that was in progress when this session closed.
85
+ - **Active task:** One-line description of the task that was in progress when this session closed. If incomplete, name where step 4b registered it (e.g. `TODO.md:NNN`).
84
86
  - **Last completed step:** The final concrete action taken — include file path or command text. If that action was async work step 1b classified as anything other than `succeeded`, do not describe it as done here — name the action in `dispatched`/in-progress terms (e.g. "Pushed the fix and opened PR #NN" is fine; "Merged PR #NN" is not, unless step 1b confirmed the merge) and let `Pending Verification` carry the actual state.
85
- - **Next concrete action:** The exact first thing to do at next session start. Be specific: file, command, or decision. Never write "continue work."
87
+ - **Next concrete action:** The exact first thing to do at next session start. Be specific: file, command, or decision. Never write "continue work." Name where step 4b registered it (e.g. `TODO.md:NNN`).
86
88
  - **Active files:** Files with uncommitted changes or the focus of the last edit (comma-separated).
87
89
  - **Branch:** Output of `git branch --show-current`.
88
90
  - **Blockers:** Known unresolved blockers or dependencies. Write "None" if clear.
89
91
  - **Pending Verification:** One line per non-`succeeded` item from step 1b: `<what> — <state> — <verification action>`. States: `dispatched`, `pending`, `failed`, `unverifiable` (never list a `succeeded` item here — it belongs in `Last completed step` / TODO.md / the journal instead, worded per the gating above). The verification action is required for `dispatched`, `pending`, and `unverifiable` — "N/A" is only valid for `failed`, where the state is already resolved and there is nothing left to check. Write "None" only if step 1b found every dispatched item resolved to `succeeded` or `failed` before this handoff was written.
90
- - **Notes:** Anything time-sensitive, fragile, or contextual that would be lost if not stated explicitly.
92
+ - **Notes:** Anything time-sensitive, fragile, or contextual that would be lost if not stated explicitly. Never the sole carrier of durable content (session handoff durability) — if it names unfinished work, that work must also be registered per step 4b; name its location here.
91
93
  ```
92
94
 
93
95
  Rules:
@@ -251,6 +253,7 @@ Route the user to the right next spell based on the end state:
251
253
  Rules:
252
254
 
253
255
  - Do not invent completions — only mark items done if verifiable from context. "Verifiable" means classified `succeeded` under step 1b's five-state vocabulary (`dispatched`/`pending`/`succeeded`/`failed`/`unverifiable`), not merely "I can see it was started" (EF-21).
256
+ - `Notes` is a pointer, never the sole carrier of durable content (session handoff durability) — if something needs to survive to next session, it must also live wherever step 4b registers it, not only in prose here.
254
257
  - Keep frontmatter date values in `YYYY-MM-DD`.
255
258
  - Preserve existing checklist and journal style.
256
259
  - Keep edits minimal and factual.
@@ -34,9 +34,9 @@ Use these files first:
34
34
 
35
35
  Check `ai-context/system-prompt-context.md` for a `## Next Session Handoff` section.
36
36
 
37
- - If present and **not yet marked consumed** (no `> ✓ Consumed:` line): surface it immediately as `## Picking Up From Last Session` at the very top of your output, before all other sections. Use the `Next concrete action` field as the first item in `## Next Session Plan`. Use the `Active task`, `Active files`, and `Branch` fields to pre-populate the State Snapshot.
37
+ - If present and **not yet marked consumed** (no `> ✓ Consumed:` line): surface it immediately as `## Picking Up From Last Session` at the very top of your output, before all other sections — include `Last completed step`, `Blockers`, and `Notes` verbatim alongside the rest (session handoff durability: these three are written by close-session but were previously never read back). Use the `Next concrete action` field as the first item in `## Next Session Plan`. Use the `Active task`, `Active files`, and `Branch` fields to pre-populate the State Snapshot.
38
38
  - **If the handoff's `Pending Verification` field lists anything other than "None" (EF-21):** surface each listed item explicitly, then actively re-check its current status (per the item's stated verification action) rather than treating the state recorded at close-session time as still current — a `dispatched`/`pending` item may have since succeeded, failed, or still be running, and carrying it forward as inert text would repeat the exact failure mode this field exists to prevent. Report what you found (resolved succeeded / resolved failed / still pending / still unverifiable) before relying on anything downstream that depended on it.
39
- - After surfacing it, apply the Mutation Guard below before appending `> ✓ Consumed: YYYY-MM-DD` (today's date). The marker write is a repository mutation.
39
+ - After surfacing it, apply the Mutation Guard below, then run the **Durability check** (session handoff durability, ARC-040): confirm that an incomplete `Active task`, the `Next concrete action`, and any task-bearing `Notes` content each name a durable location that genuinely exists (the cited `TODO.md` line, or tracker work item). If a named location is missing, or close-session's own step 4b was skipped when it shouldn't have been, register the missing content now — on this session's own branch — before proceeding. Only then append `> ✓ Consumed: YYYY-MM-DD` (today's date); the marker write is a repository mutation. If the Durability check cannot complete, leave the handoff unconsumed so the next open-session retries the same check idempotently, rather than silently losing the gap.
40
40
  - If the section is absent or already marked consumed: skip this step and proceed with the normal workspace scan.
41
41
 
42
42
  ## Mutation Guard (run lazily before the first repository write)
@@ -23,11 +23,17 @@
23
23
 
24
24
  ## Next Session Handoff
25
25
 
26
- **Active task:** None yet.
27
- **Last completed step:** Initial scaffold via `spell init`.
28
- **Next concrete action:** Begin work.
29
- **Active files:** —
30
- **Branch:** main
31
- **Blockers:** None.
32
- **Pending Verification:** None.
33
- **Notes:** —
26
+ > Auto-generated by spell-close-session. Consumed by spell-open-session. Do not edit manually.
27
+ > Generated: YYYY-MM-DD
28
+
29
+ - **Active task:** None yet.
30
+ - **Last completed step:** Initial scaffold via `spell init`.
31
+ - **Next concrete action:** Begin work.
32
+ - **Active files:** —
33
+ - **Branch:** main
34
+ - **Blockers:** None.
35
+ - **Pending Verification:** None.
36
+ - **Notes:** —
37
+
38
+ > ✓ Consumed: YYYY-MM-DD — scaffold placeholder, not a real session; ships pre-consumed so the first
39
+ > real spell-open-session run does not mistake this for live handoff content.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "arcane-cli",
3
- "version": "0.22.11",
3
+ "version": "0.22.12",
4
4
  "description": "Arcane framework CLI — scaffold and manage governance files in consuming repositories",
5
5
  "keywords": [
6
6
  "arcane",