@momentiq/dark-factory-cli 3.0.1 → 3.0.2

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@momentiq/dark-factory-cli",
3
- "version": "3.0.1",
3
+ "version": "3.0.2",
4
4
  "description": "Dark Factory OSS CLI — multi-vendor adversarial critic orchestration (Cursor, Codex, Gemini, Grok) with min-complete-quorum aggregation and trusted-surface rebind",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://momentiq.ai/dark-factory",
@@ -27,18 +27,30 @@ unassigned; it prints the Issue URL. Link the relevant PR or issue with
27
27
 
28
28
  ```bash
29
29
  df handoff --link pr:<PR#> <<'EOF'
30
- <the composed, scrubbed note see structure below>
30
+ <the composed, scrubbed note from "Dual-register" below
31
+ INCLUDING its <!-- agent-context:v1 --> … <!-- /agent-context:v1 --> markers>
31
32
  EOF
32
33
  ```
33
34
 
35
+ The note **must** be wrapped in the `<!-- agent-context:v1 -->` …
36
+ `<!-- /agent-context:v1 -->` markers (they anchor the Issue-body upsert);
37
+ `df handoff` refuses a note that is missing them.
38
+
34
39
  ## Dual-register: two audiences, one artifact
35
40
 
36
41
  Write the note for the **engineer**, and speak a separate plain sentence to the
37
42
  **operator**.
38
43
 
39
- Engineer-facing note (structured, precise):
44
+ Engineer-facing note (structured, precise). Keep the `agent-context:v1` markers
45
+ around the whole note — copy this verbatim into the heredoc above:
40
46
 
41
47
  ```markdown
48
+ <!-- agent-context:v1 -->
49
+ > 🤖 **Handoff context** — transient working memory, not a source of truth.
50
+ > _Updated: <YYYY-MM-DD> by <your session>_
51
+
52
+ **Work-stream:** `<the ask, in one line>` · the handoff Issue's title.
53
+
42
54
  ## Intent
43
55
  What the operator asked for, in their words.
44
56
 
@@ -48,6 +60,7 @@ What is already built and where (branch or PR), and what is verified visually.
48
60
  ## Blocked — why
49
61
  The specific boundary: which scope, protected path, dependency, or gate — and
50
62
  what an engineer needs to decide or do next.
63
+ <!-- /agent-context:v1 -->
51
64
  ```
52
65
 
53
66
  Operator-facing sentence (plain, framed as progress):
@@ -18,12 +18,14 @@ The brief's **Done-when checkboxes are the acceptance criteria.** Before
18
18
  shipping, confirm each is satisfied and backed by the before/after screenshots
19
19
  from `/designer-build` — a Done-when item with no visible proof is not done.
20
20
 
21
- Make "done" proof-bound, not free text. Where the change has a
22
- `.darkfactory/objectives.yaml`, verify it and read the closeout proof with
23
- `df prove` (per-objective proven/pending/failed); see the `/objectives` skill
24
- for authoring and binding mechanics. (Automated derivation of objectives
25
- directly from a brief is a later Designer-Mode phase; today, treat the Done-when
26
- list as the contract and verify each item visually.)
21
+ Make "done" proof-bound, not free text. Derive an objectives contract straight
22
+ from the brief with **`df objectives derive --brief <brief-path> --apply`** — it
23
+ writes one objective per `## Done-when` checkbox to `.darkfactory/objectives.yaml`,
24
+ each text-hash-bound to its source line (id form `brief-<slug>#ac<k>`). Verify the
25
+ bindings and read the closeout proof with `df prove` (per-objective
26
+ proven/pending/failed); see the `/objectives` skill for authoring and binding
27
+ mechanics. Still confirm each Done-when item **visually** — the before/after
28
+ screenshots are the evidence behind the proof.
27
29
 
28
30
  ## 2. Run the gates locally first
29
31
 
@@ -42,14 +44,15 @@ Mode: designer
42
44
  Closes #<N>
43
45
  ```
44
46
 
45
- The `Mode: designer` trailer tags the PR as designer-driven. Today, scope is
46
- enforced live by the PreToolUse guard during the session, and the change still
47
- faces the full multi-vendor critic quorum + merge queue like any other PR. The
48
- deterministic mode-scope critic which reads this trailer to validate the diff
49
- against the catalog's writeScopes / protectedPaths / diffBudget and block an
50
- out-of-scope diff at merge time, even from a jailbroken local session — lands in
51
- a later Designer-Mode phase; the trailer is the label it will key on.
52
- `Closes #<N>` links the tracking issue.
47
+ The `Mode: designer` trailer is what the **deterministic mode-scope critic**
48
+ keys on: it reads the trailer, loads the catalog, and validates the diff against
49
+ the mode's `writeScopes` / `protectedPaths` / `diffBudget` / `dependencyPolicy`,
50
+ blocking an out-of-scope diff at merge time even from a jailbroken local
51
+ session, because CI re-derives scope from the *committed* trailer + catalog
52
+ independently of whatever happened locally. Scope is *also* enforced live
53
+ in-session by the PreToolUse guard, and the change still faces the full
54
+ multi-vendor critic quorum + merge queue like any other PR. `Closes #<N>` links
55
+ the tracking issue.
53
56
 
54
57
  Open the PR and embed the **before/after screenshots** in the body so the change
55
58
  is visible to reviewers and the operator: