arcane-cli 0.16.3 → 0.16.4
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.
|
@@ -33,16 +33,28 @@ Workflow:
|
|
|
33
33
|
- Lessons learned (anything that cost time, surprised the user, or should prevent future mistakes).
|
|
34
34
|
- **Capture tie-in tip:** If this session produced durable analysis worth formalizing (a design, an investigation, a reusable explanation), suggest running `spell-document` before closing so it lands in the right doc. For quick ideas worth keeping but not yet actionable, suggest `spell-save-idea`.
|
|
35
35
|
|
|
36
|
+
1b. **Verify in-flight async work before writing any output artifact (EF-21). Enforcement: structured spell gate (ARC-023) — this workflow requires the observable state of every dispatched item before proceeding to step 2.** "I started it" is not "it worked." Before the journal, TODO.md, or the handoff are written, enumerate every piece of asynchronous work dispatched during this session that could still be running or could have failed after being kicked off — CI/CD runs, deployments, package publishes, long-running background tasks, PR checks. For each, **actively check** its current status through whatever means is available (CI provider API/CLI, deployment dashboard, `gh run view`, `az pipelines runs show`, etc.) — attempt the check before reaching for `unverifiable`; that state exists for genuine access limits (no CLI/API access, no credentials, provider outage), not for skipping a check that was merely inconvenient to run. Then classify into exactly one state:
|
|
37
|
+
|
|
38
|
+
- **succeeded** — confirmed complete and correct. Only this state may be described as "done," "completed," or "shipped" anywhere in the journal, TODO.md, or the handoff.
|
|
39
|
+
- **failed** — confirmed to have failed. Record as a blocker or carry-forward item, never as done.
|
|
40
|
+
- **pending** — still running at last check. Record as in-flight; do not describe as complete.
|
|
41
|
+
- **dispatched** — kicked off, but no result has been observed at all (the letter was handed to the post office — you know it was sent, not whether it arrived).
|
|
42
|
+
- **unverifiable** — only after genuinely attempting the check above and finding this environment cannot query the target system. State the exact command, URL, or action the operator must run to check it themselves — a bare "unverifiable" with no next step is barely better than silence, and reaching for this state without attempting the check first defeats the purpose of this step as surely as skipping it entirely.
|
|
43
|
+
|
|
44
|
+
A commit succeeding, code being pushed, or a build being triggered are all **dispatched**, not **succeeded** — do not write any of them as complete until independently confirmed. Carry every non-succeeded item into the handoff's `Pending Verification` field (step 5b), and into `Last completed step` worded as not-yet-complete (also step 5b).
|
|
45
|
+
|
|
46
|
+
Step 10's existing PR-merge check ("Verify through the detected provider that the PR is merged before changing branches") is this same requirement applied to one specific, already-shipped case — the close-session's own PR. Running step 10 does not substitute for step 1b's sweep of everything else dispatched this session, and step 1b does not substitute for step 10's specific merge check; both apply.
|
|
47
|
+
|
|
36
48
|
2. **Update today's journal file** at `journal/YYYY-MM-DD-topic-slug.md`.
|
|
37
49
|
- If it exists and already has a session section from this chat, **update that section in place** (do not create a duplicate).
|
|
38
50
|
- If it exists but has no section for this session, **append** a new `## Session: <title>` section.
|
|
39
51
|
- If it does not exist, **create** it using the existing journal frontmatter style.
|
|
40
52
|
- Journal entries must include:
|
|
41
53
|
- `### Prompt Context` — original prompt text or a faithful paraphrase of the multi-turn request when the session began from a substantive user ask. Include follow-up scope inputs if they materially changed the direction of the work.
|
|
42
|
-
- `### What Got Done` — numbered list of concrete outcomes with file/ADR references.
|
|
54
|
+
- `### What Got Done` — numbered list of concrete outcomes with file/ADR references. Only list an outcome here if step 1b classified it `succeeded` (or it never involved async work at all, e.g. a local file edit). A `pending`/`dispatched`/`unverifiable` item belongs in Open Items Carried Forward, not here — do not let this section imply completion step 1b couldn't confirm.
|
|
43
55
|
- `### Decisions Made` — table of ADR number, decision, and rationale. If no decisions were made, omit this section.
|
|
44
56
|
- `### Lessons Learned` — one heading per lesson with enough context to prevent the mistake again. Use narrative, not bullet fragments.
|
|
45
|
-
- `### Open Items Carried Forward` — items that remain undone from this session.
|
|
57
|
+
- `### Open Items Carried Forward` — items that remain undone from this session, including every `pending`/`dispatched`/`failed`/`unverifiable` item from step 1b.
|
|
46
58
|
|
|
47
59
|
3. **Update [DECISIONS.md](../../DECISIONS.md).**
|
|
48
60
|
- Add ADRs for any decisions made during the session (naming choices, tool preferences, workflow standards, security policies, etc.).
|
|
@@ -50,7 +62,7 @@ Workflow:
|
|
|
50
62
|
- Follow the existing format: Date, Status, Context, Decision, Reasoning, Rejected alternatives.
|
|
51
63
|
|
|
52
64
|
4. **Update [TODO.md](../../TODO.md).**
|
|
53
|
-
- Mark
|
|
65
|
+
- Mark an item done with date only if step 1b classified its outcome `succeeded` (or it required no async verification at all). A `pending`, `dispatched`, `failed`, or `unverifiable` item stays open, regardless of how confident the session felt about it.
|
|
54
66
|
- Keep unresolved items open.
|
|
55
67
|
- Remove completed checklist items only when completion is documented in the correct source-of-truth file.
|
|
56
68
|
|
|
@@ -69,11 +81,12 @@ In `ai-context/system-prompt-context.md`, replace the existing `## Next Session
|
|
|
69
81
|
> Generated: YYYY-MM-DD
|
|
70
82
|
|
|
71
83
|
- **Active task:** One-line description of the task that was in progress when this session closed.
|
|
72
|
-
- **Last completed step:** The final concrete action taken — include file path or command text.
|
|
84
|
+
- **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.
|
|
73
85
|
- **Next concrete action:** The exact first thing to do at next session start. Be specific: file, command, or decision. Never write "continue work."
|
|
74
86
|
- **Active files:** Files with uncommitted changes or the focus of the last edit (comma-separated).
|
|
75
87
|
- **Branch:** Output of `git branch --show-current`.
|
|
76
88
|
- **Blockers:** Known unresolved blockers or dependencies. Write "None" if clear.
|
|
89
|
+
- **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.
|
|
77
90
|
- **Notes:** Anything time-sensitive, fragile, or contextual that would be lost if not stated explicitly.
|
|
78
91
|
```
|
|
79
92
|
|
|
@@ -197,7 +210,7 @@ Route the user to the right next spell based on the end state:
|
|
|
197
210
|
|
|
198
211
|
Rules:
|
|
199
212
|
|
|
200
|
-
- Do not invent completions — only mark items done if verifiable from context.
|
|
213
|
+
- 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).
|
|
201
214
|
- Keep frontmatter date values in `YYYY-MM-DD`.
|
|
202
215
|
- Preserve existing checklist and journal style.
|
|
203
216
|
- Keep edits minimal and factual.
|
|
@@ -35,6 +35,7 @@ Use these files first:
|
|
|
35
35
|
Check `ai-context/system-prompt-context.md` for a `## Next Session Handoff` section.
|
|
36
36
|
|
|
37
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.
|
|
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.
|
|
38
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
40
|
- If the section is absent or already marked consumed: skip this step and proceed with the normal workspace scan.
|
|
40
41
|
|