gm-cc 2.0.720 → 2.0.721
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.
|
|
7
|
+
"version": "2.0.721",
|
|
8
8
|
"metadata": {
|
|
9
9
|
"description": "State machine agent with hooks, skills, and automated git enforcement"
|
|
10
10
|
},
|
package/package.json
CHANGED
package/plugin.json
CHANGED
|
@@ -21,6 +21,7 @@ Failure triage: broken output → EMIT | wrong logic → EXECUTE | new unknown
|
|
|
21
21
|
## MUTABLES — ALL MUST RESOLVE BEFORE COMPLETE
|
|
22
22
|
|
|
23
23
|
- `witnessed_e2e` — real end-to-end run with witnessed output
|
|
24
|
+
- `browser_validated` — MANDATORY for any change touching client/UI/browser-facing code (anything served to a browser, rendered, or whose output is visible to a user). Must invoke `browser` skill, navigate the live page, and witness the change in `window` / DOM / scene state. test.js + node-side imports DO NOT satisfy this gate. See BROWSER VALIDATION GATE below.
|
|
24
25
|
- `git_clean` — `git status --porcelain` returns empty
|
|
25
26
|
- `git_pushed` — `git log origin/main..HEAD --oneline` returns empty
|
|
26
27
|
- `ci_passed` — all GitHub Actions runs reach `conclusion: success`
|
|
@@ -40,6 +41,26 @@ console.log(await fn(realInput));
|
|
|
40
41
|
|
|
41
42
|
Browser/UI: invoke `browser` skill. After every success: enumerate what remains — never stop at first green.
|
|
42
43
|
|
|
44
|
+
## BROWSER VALIDATION GATE — MANDATORY FOR CLIENT WORK
|
|
45
|
+
|
|
46
|
+
If this session changed any code that runs in a browser — anything under client/, UI components, shaders, page-loaded JS, served HTML, gh-pages assets, dev-server endpoints, or any module imported into the page bundle — `browser_validated` MUST resolve before COMPLETE. Skipping it because "node tests pass" or "test.js is green" is a forced-closure refusal of witnessed verification.
|
|
47
|
+
|
|
48
|
+
Trigger detection (any one suffices):
|
|
49
|
+
- `git diff --name-only origin/main..HEAD` includes paths under `client/`, `apps/*/index.js` with client export, `docs/`, `*.html`, shader files, or any file imported by a browser entry.
|
|
50
|
+
- New/changed export consumed by `window.*` or rendered in DOM/canvas/WebGL.
|
|
51
|
+
- Visual, layout, animation, input, network-on-page, or shader behavior altered.
|
|
52
|
+
|
|
53
|
+
Required protocol:
|
|
54
|
+
1. Boot the real server (or open the static page) on a known URL — witness HTTP 200.
|
|
55
|
+
2. `exec:browser` → `page.goto(url)` → wait for app init (poll for the global the change affects, e.g. `window.__app.<system>`).
|
|
56
|
+
3. Probe via `page.evaluate(() => …)` — assert the specific invariant the change was supposed to establish (instance counts, scene meshes, DOM nodes, render stats, network frames, etc.).
|
|
57
|
+
4. Capture the witnessed numbers in the response. "Looks fine" is not a witness.
|
|
58
|
+
5. Failures → regress to `gm-execute` (logic) or `gm-emit` (output) — never paper over.
|
|
59
|
+
|
|
60
|
+
Long-running probes: split into navigate-call → `exec:wait N` → probe-call to stay under the per-call budget. Do not stack multi-second `setTimeout` inside one `exec:browser` invocation.
|
|
61
|
+
|
|
62
|
+
Exempt only when: change is server-only with zero browser-facing surface, OR repository has no browser surface at all (pure CLI/library). Tag the exemption in the response with the reason; do not silently skip.
|
|
63
|
+
|
|
43
64
|
## INTEGRATION TEST GATE
|
|
44
65
|
|
|
45
66
|
```
|
|
@@ -97,6 +118,6 @@ One per fact, parallel, same turn resolved. End-of-turn self-check mandatory.
|
|
|
97
118
|
|
|
98
119
|
## COMPLETION DEFINITION
|
|
99
120
|
|
|
100
|
-
All: witnessed e2e | failure paths exercised | test.js passes | .prd deleted | git clean+pushed | CI green | hygiene sweep clean | TODO.md gone | CHANGELOG.md updated
|
|
121
|
+
All: witnessed e2e | browser_validated (when client work touched) | failure paths exercised | test.js passes | .prd deleted | git clean+pushed | CI green | hygiene sweep clean | TODO.md gone | CHANGELOG.md updated
|
|
101
122
|
|
|
102
|
-
**Never**: claim done without witnessed output | stop while .prd has items | skip hygiene | skip test.js | uncommitted/unpushed work | stop at first green
|
|
123
|
+
**Never**: claim done without witnessed output | claim done on a client change without browser-validation witness | stop while .prd has items | skip hygiene | skip test.js | uncommitted/unpushed work | stop at first green
|
package/skills/gm-emit/SKILL.md
CHANGED
|
@@ -58,6 +58,7 @@ console.log(await fn(realInput));
|
|
|
58
58
|
- Hot reloadable; errors throw with context (no fallbacks, `|| default`, `catch { return null }`)
|
|
59
59
|
- No mocks/fakes/stubs/scattered test files (delete on discovery)
|
|
60
60
|
- Behavior change in this emit = a corresponding assertion in test.js (a change no test would catch is a change you cannot prove)
|
|
61
|
+
- If this emit changes any browser-facing code (client/, served HTML/JS, shaders, page-bundle imports, gh-pages assets), the post-emit verify MUST include a live browser witness via `exec:browser` (boot server → page.goto → page.evaluate asserting the invariant the change established). Node-side import + test.js does NOT satisfy this — see `gm-complete` BROWSER VALIDATION GATE.
|
|
61
62
|
- Files ≤200 lines
|
|
62
63
|
- No duplicate concern (run exec:codesearch for primary concern after writing; any overlap → `planning`)
|
|
63
64
|
- No comments; no hardcoded values; no adjectives in identifiers; no unnecessary files
|