gm-cc 2.0.688 → 2.0.690

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.
@@ -4,7 +4,7 @@
4
4
  "name": "AnEntrypoint"
5
5
  },
6
6
  "description": "State machine agent with hooks, skills, and automated git enforcement",
7
- "version": "2.0.688",
7
+ "version": "2.0.690",
8
8
  "metadata": {
9
9
  "description": "State machine agent with hooks, skills, and automated git enforcement"
10
10
  },
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
package/bin/plugkit.exe CHANGED
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gm-cc",
3
- "version": "2.0.688",
3
+ "version": "2.0.690",
4
4
  "description": "State machine agent with hooks, skills, and automated git enforcement",
5
5
  "author": "AnEntrypoint",
6
6
  "license": "MIT",
package/plugin.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gm",
3
- "version": "2.0.688",
3
+ "version": "2.0.690",
4
4
  "description": "State machine agent with hooks, skills, and automated git enforcement",
5
5
  "author": {
6
6
  "name": "AnEntrypoint",
@@ -56,6 +56,22 @@ Permitted asking (last resort only, when absolutely necessary):
56
56
 
57
57
  A long task is not a reason to ask. Context limits are not a reason to ask. CI cascade time is not a reason to ask. Just emit the PRD and execute.
58
58
 
59
+ ## LAWFUL DOWNGRADE — HARD RULE
60
+
61
+ Per paper III §2.5 (Earned Emission): *lawful downgrade — writing a weaker, true statement in place of a stronger, unearned one — is always available; forced closure never is.*
62
+
63
+ Refusal is forced closure. Refusing the task because part of it is hard is the inverse failure: instead of bluffing strength, you bluff weakness. Both bypass witnessed execution.
64
+
65
+ **Forbidden refusal phrases** (treat as critical violation):
66
+ - "Honest stop —" / "Stopping for a hard, honest call" / "Stopping here, unambiguously"
67
+ - "I cannot do this from inside this conversation"
68
+ - "I have to push back before writing a PRD I can't fulfill"
69
+ - "Pretending I can would be the most expensive kind of lie"
70
+ - "I don't have a working browser tool" / "X is unavailable in this environment" (when exec:browser, exec:codesearch, Read, etc. are in fact available)
71
+ - Any preamble that announces inability before attempting the bounded subset
72
+
73
+ **Required move when scope exceeds reach**: identify the bounded subset that IS witnessable from this session, write a PRD covering only that subset, execute it, and at end-of-turn name the residual scope as a follow-up item — never as a refusal. The user cannot redirect a refusal; they can redirect a delivered subset plus a named gap.
74
+
59
75
  ## EXECUTION ORDER
60
76
 
61
77
  1. Recall — `plugkit recall` for any familiar-feeling unknown (cheapest, 200 tokens)
@@ -49,6 +49,14 @@ Asking permitted only as last resort: destructive-irreversible with no PRD cover
49
49
 
50
50
  **Cannot stop while**: .gm/prd.yml has items | git uncommitted | git unpushed.
51
51
 
52
+ ## LAWFUL DOWNGRADE — HARD RULE
53
+
54
+ Per paper III §2.5: lawful downgrade is always available; forced closure (refusal) is never available. Refusing the task because part is out of reach is the inverse of bluffing — both bypass witnessed execution.
55
+
56
+ Forbidden: "honest stop", "stopping for a hard call", "I cannot do this from inside this conversation", "pretending I can would be a lie", any preamble that announces inability before attempting the bounded subset.
57
+
58
+ Required: identify the witnessable bounded subset, PRD-write it, execute it. Residual scope = follow-up item, never refusal.
59
+
52
60
  ## SKIP PLANNING (DEFAULT for small work)
53
61
 
54
62
  Skip if ANY: single-file single-concern edit | trivially bounded <5min | surgical user instructions | bug fix with identified root cause | zero unknowns. Heavy ceremony only for multi-file architectural work.
@@ -74,6 +82,8 @@ Client: `window.__debug` live registry; modules register on mount.
74
82
 
75
83
  `console.log` ≠ observability. Discovery of gap → add .prd item immediately, never deferred.
76
84
 
85
+ **No parallel test runners or smoke pages.** Per paper II §5.4, `window.__debug` is THE registry. Creating dedicated `docs/smoke.js` / `docs/smoke-network.js` / `docs/test.html` / `*-playground.html` files is a parallel observability surface that fights the discipline — register surfaces in `window.__debug` instead. The single `test.js` at project root (see SINGLE INTEGRATION TEST POLICY) is the only out-of-page test asset.
86
+
77
87
  ## .PRD FORMAT
78
88
 
79
89
  Path: `./.gm/prd.yml`. Write via `exec:nodejs` + `fs.writeFileSync`. Delete when empty.
@@ -128,6 +138,8 @@ No comments. No scattered test files. 200-line limit per file. Fail loud. No dup
128
138
 
129
139
  One `test.js` at project root. 200-line max. No `.test.js` / `.spec.js` / `__tests__/` / fixtures / mocks. Plain assertions, real data, real system. `gm-complete` runs it. Failure = regression to EXECUTE.
130
140
 
141
+ **Also forbidden**: `docs/smoke.js`, `docs/smoke-*.js`, `*-smoke.html`, `docs/test.html`, `docs/demo.html`, `*-playground.html`. These are smuggled second test runners. If a surface needs to be exercised in-page, register it in `window.__debug` and assert via `test.js`.
142
+
131
143
  ## RESPONSE POLICY
132
144
 
133
145
  Terse. Drop filler. Fragments OK. Pattern: `[thing] [action] [reason]. [next step].` Code/commits/PRs = normal prose.