arcane-cli 0.28.1 → 0.29.0

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
@@ -120,10 +120,10 @@ Arcane isn't a prompt snippet — it's a full framework. Everything installs int
120
120
 
121
121
  <!-- arcane:start -->
122
122
  <details>
123
- <summary><b>📜 The full spell catalogue (40)</b></summary>
123
+ <summary><b>📜 The full spell catalogue (41)</b></summary>
124
124
 
125
125
  **Session** — `open-session` · `close-session` · `commit-work` · `status` · `arcane-version`
126
- **Capture** — `save-idea` · `todo` · `feedback` · `suggest-feature` · `document` · `brainstorm` · `explain-concept`
126
+ **Capture** — `save-idea` · `todo` · `feedback` · `suggest-feature` · `document` · `verification-ledger` · `brainstorm` · `explain-concept`
127
127
  **Delivery** — `create-pull-request` · `sync-pull-request` · `address-review`
128
128
  **Review** — `review` · `review-batch`
129
129
  **Planning** — `plan` · `architect` · `scope` · `product-review`
@@ -0,0 +1,13 @@
1
+ ---
2
+ description: Use PROACTIVELY when a session had real verification events worth a structured record — especially a claim that didn't survive a check.
3
+ ---
4
+
5
+ # Verification Ledger
6
+
7
+ Invoke the Arcane `spell-verification-ledger` spell workflow.
8
+
9
+ See the full prompt at `.github/prompts/spell-verification-ledger.prompt.md` for the complete workflow definition.
10
+
11
+ ---
12
+
13
+ @.github/prompts/spell-verification-ledger.prompt.md
@@ -31,7 +31,7 @@ Workflow:
31
31
  - Decisions made (even implicit ones like naming choices, tool preferences, or workflow patterns).
32
32
  - Problems encountered and how they were resolved (troubleshooting).
33
33
  - Lessons learned (anything that cost time, surprised the user, or should prevent future mistakes).
34
- - **Capture tie-in tip:** If this session produced durable analysis worth formalizing (a design, an investigation, a research finding, a reusable explanation), suggest running `spell-document` before closing so it lands in the right doc — a research finding defaults to `docs/research/<topic-slug>.md` per `portable-bootstrap.md`'s Research Reports convention. For quick ideas worth keeping but not yet actionable, suggest `spell-save-idea`.
34
+ - **Capture tie-in tip:** If this session produced durable analysis worth formalizing (a design, an investigation, a research finding, a reusable explanation), suggest running `spell-document` before closing so it lands in the right doc — a research finding defaults to `docs/research/<topic-slug>.md` per `portable-bootstrap.md`'s Research Reports convention. For quick ideas worth keeping but not yet actionable, suggest `spell-save-idea`. If this session had a real verification event worth a structured record — especially a confidently stated claim that a check later contradicted — suggest `spell-verification-ledger` separately; it is not part of this close-session flow itself.
35
35
 
36
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
37
 
@@ -0,0 +1,101 @@
1
+ ---
2
+ name: Spell — Verification Ledger
3
+ description: Extract a structured record of claims that were checked this session and what the check showed — especially the ones that didn't survive. Separate from spell-close-session; run on demand, not every session.
4
+ argument-hint: Optional focus (e.g., "just the corrections", "since the last commit")
5
+ agent: agent
6
+ ---
7
+
8
+ ## Executive Summary
9
+
10
+ - The highest-value output of a working session is often the corrections — claims that were checked and
11
+ did not survive. `spell-close-session` captures what happened and sanitized lessons learned; it does
12
+ not capture what was asserted, what was checked, what the check showed, or what changed as a result.
13
+ This spell extracts exactly that, separately.
14
+ - **Run on demand, not every session.** Most sessions have nothing worth a ledger entry; this spell says
15
+ so plainly and stops rather than manufacturing content to fill one (same discipline as
16
+ `spell-document`).
17
+ - **A `corrected` result is the point, not a failure to hide.** A ledger showing three confirmed claims
18
+ and one correction is more valuable than one showing four confirmed claims and nothing else — the
19
+ correction is evidence the verification step actually did something, not theater.
20
+ - Appends to a single running file, [`docs/verification-ledger.md`](../../docs/verification-ledger.md),
21
+ so a calibration rate (how often a checked claim survives) is computable across sessions without
22
+ reading scattered journal entries.
23
+
24
+ ---
25
+
26
+ ## What counts as a ledger-worthy event
27
+
28
+ Only an assertion that was actually **checked against an independent source** counts — not every
29
+ statement made during the session. The check has to have been capable of coming back either way:
30
+
31
+ - A confident claim, followed by a real verification step (a tool call, a live read, re-running
32
+ something, checking a second source), whose result **confirmed** the claim.
33
+ - A confident claim, followed by the same kind of check, whose result **contradicted** it —
34
+ a **correction**.
35
+ - A check that was attempted but couldn't produce a definitive answer (no access, an ambiguous result)
36
+ — **unverifiable**. Distinct from never having been checked at all, which isn't ledger-worthy at all.
37
+
38
+ Not ledger-worthy: a claim nobody checked, a preference or judgment call with no verifiable fact behind
39
+ it, or a check whose outcome was never in doubt (confirming something already directly observed moments
40
+ earlier is not a verification event).
41
+
42
+ ## Workflow
43
+
44
+ 1. **Scan the session for ledger-worthy events**, per the definition above. Look specifically for
45
+ moments where a check contradicted an initial assertion — a count that was off, a file path that
46
+ didn't exist, a "should be done" that direct inspection showed wasn't, a citation that pointed at the
47
+ wrong content. These are usually more memorable than confirmations; do not let them get lost among
48
+ routine, expected-to-pass checks.
49
+
50
+ 2. **Stop here if nothing qualifies.** If the session had no real verification events — no claim was
51
+ both asserted with confidence and independently checked — say so plainly and do not proceed. A quiet,
52
+ uneventful session with nothing to report is a valid outcome, not a gap to paper over.
53
+
54
+ 3. **Classify each event:**
55
+
56
+ | Field | What it captures |
57
+ | --- | --- |
58
+ | Claim | The assertion as originally stated, in the speaker's own words at the time — not softened in hindsight. |
59
+ | Verification method | What was actually done to check it (a specific command, a specific file read, a specific re-fetch) — not "verified," which asserts nothing checkable itself. |
60
+ | Result | `confirmed` / `corrected` / `unverifiable`. |
61
+ | Correction | For `corrected` only: what the check actually showed, and what changed as a result (a claim retracted, a decision reversed, a fix applied). |
62
+
63
+ 4. **Present the extracted ledger for approval** before writing — the same approval gate
64
+ `spell-document` uses, since this is also durable content leaving the conversation:
65
+
66
+ ```text
67
+ ## Verification Ledger Proposal — [session topic]
68
+
69
+ | Claim | Verification method | Result | Correction |
70
+ | --- | --- | --- | --- |
71
+ | ... | ... | confirmed | — |
72
+ | ... | ... | corrected | ... |
73
+
74
+ Approve? (yes / edit / skip)
75
+ ```
76
+
77
+ 5. **Append, don't rewrite.** After approval, append a new `## YYYY-MM-DD — <session topic>` section
78
+ with the approved table to `docs/verification-ledger.md`. Get the real date from the system rather
79
+ than guessing. If the file doesn't exist yet, create it with a short header explaining its purpose
80
+ and schema, then the first section — never insert a section anywhere but the end.
81
+
82
+ ## Rules
83
+
84
+ - Never fabricate a ledger-worthy event to fill a report — an empty result from step 2 is a complete,
85
+ valid run of this spell.
86
+ - Quote the claim as it was actually stated, not a cleaned-up paraphrase that makes the miss look
87
+ smaller (or larger) than it was.
88
+ - Do not editorialize about fault or blame in the ledger itself — the value is the calibration signal
89
+ (how often checks confirm vs. correct), not a record of who was wrong.
90
+ - Do not commit the changes — that is `spell-commit-work`'s job.
91
+
92
+ ## Related
93
+
94
+ - **Complements, does not replace:** `spell-close-session`'s narrative record and sanitized lessons
95
+ learned. Run this spell separately when a session had real verification events worth a structured
96
+ record, not as a mandatory step of every close.
97
+ - `spell-document` — the general-purpose formalization spell this one borrows its
98
+ extract-then-approve-then-write shape from, narrowed to one specific, structured record type.
99
+
100
+ > **Tip:** Run `spell-close-session` afterward to log the session, or `spell-commit-work` to commit the
101
+ > ledger update.
package/dist/index.js CHANGED
@@ -505,6 +505,8 @@ var COMPONENTS = [
505
505
  ".claude/commands/spell-suggest-feature.md",
506
506
  ".github/prompts/spell-document.prompt.md",
507
507
  ".claude/commands/spell-document.md",
508
+ ".github/prompts/spell-verification-ledger.prompt.md",
509
+ ".claude/commands/spell-verification-ledger.md",
508
510
  ".github/prompts/spell-brainstorm.prompt.md",
509
511
  ".claude/commands/spell-brainstorm.md",
510
512
  ".github/prompts/spell-explain-concept.prompt.md",
@@ -4640,7 +4642,10 @@ program.command("unblock-push").description("Lift this repository's push block (
4640
4642
  program.command("doctor").description("Check your environment for Arcane prerequisites").option("--fix", "Automatically create missing session continuity files").action(async (opts) => {
4641
4643
  await runDoctor(process.cwd(), { fix: opts.fix }, ASSETS_DIR);
4642
4644
  });
4643
- program.command("ward").description("Scan the repo for leaked third-party identifiers and trademarks (T18)").option("--terms <terms>", "Comma-separated denylist terms, in addition to the built-in vendor-identifier list").option("--gate", "Exit non-zero if any leak is found (for CI)").action(async (opts) => {
4645
+ program.command("ward").description("Scan the repo for leaked identifiers -- third-party trademarks and the operator's own personal identifiers alike (T18)").option(
4646
+ "--terms <terms>",
4647
+ "Comma-separated denylist terms, in addition to the built-in vendor-identifier list. Seed this from your OWN identity too, not just org/venture names -- usernames, machine names, and personal handles leak the same way a private venture name does (I1)"
4648
+ ).option("--gate", "Exit non-zero if any leak is found (for CI)").action(async (opts) => {
4644
4649
  await runWardCli(process.cwd(), opts);
4645
4650
  });
4646
4651
  var agentsCommand = program.command("agents").description("Manage the portable agent system (init, sync, list)");