gm-codex 2.0.944 → 2.0.946
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/.codex-plugin/plugin.json +1 -1
- package/gm.json +1 -1
- package/package.json +1 -1
- package/plugin.json +1 -1
- package/skills/gm-complete/SKILL.md +1 -0
- package/skills/gm-emit/SKILL.md +5 -0
- package/skills/gm-execute/SKILL.md +2 -0
- package/skills/planning/SKILL.md +14 -0
package/gm.json
CHANGED
package/package.json
CHANGED
package/plugin.json
CHANGED
|
@@ -26,6 +26,7 @@ Failure triage: broken output to EMIT, wrong logic to EXECUTE, new unknown to PL
|
|
|
26
26
|
- `git_clean` — `git status --porcelain` returns empty
|
|
27
27
|
- `git_pushed` — `git log origin/main..HEAD --oneline` returns empty
|
|
28
28
|
- `ci_passed` — every GitHub Actions run reaches `conclusion: success`
|
|
29
|
+
- `mutables_resolved` — `.gm/mutables.yml` deleted OR every entry `status: witnessed`. Stop hook hard-blocks turn-stop while any entry is `status: unknown`.
|
|
29
30
|
- `prd_empty` — `.gm/prd.yml` deleted AFTER residual scan: enumerate every in-spirit reachable residual surfaced this session; any hit re-enters `planning`, appends PRD items, executes. Empty PRD is necessary, not sufficient — done = empty PRD AND zero reachable in-spirit residuals. Out-of-spirit-or-unreachable residuals are named in the response and skipped; everything else is this turn's work.
|
|
30
31
|
- `stress_suite_clear` — change walked through M1–D1 (governance), none flunked
|
|
31
32
|
- `hidden_decision_posture` — open → down_weighted → closed only when CI is green AND stress suite is clear
|
package/skills/gm-emit/SKILL.md
CHANGED
|
@@ -48,8 +48,13 @@ Import the actual module from disk to witness current behavior as the baseline.
|
|
|
48
48
|
|
|
49
49
|
Re-import from disk — in-memory state is stale and inadmissible. Run identical inputs as pre-emit; output must match the baseline exactly. Known variance → fix and re-verify (self-loop). Unknown variance → `planning`.
|
|
50
50
|
|
|
51
|
+
## Mutables gate
|
|
52
|
+
|
|
53
|
+
Before pre-emit run, read `.gm/mutables.yml`. Any entry with `status: unknown` → regress to `gm-execute`. The pre-tool-use hook hard-blocks Write/Edit/NotebookEdit while unresolved entries exist; trying to emit anyway returns deny. Zero unresolved is the precondition for every legitimacy question below.
|
|
54
|
+
|
|
51
55
|
## Gate (all true at once)
|
|
52
56
|
|
|
57
|
+
- `.gm/mutables.yml` empty/absent OR every entry `status: witnessed` with filled `witness_evidence`
|
|
53
58
|
- Legitimacy gate passed; no refused collapse
|
|
54
59
|
- Pre-emit passed with real inputs and real error inputs
|
|
55
60
|
- Post-emit matches pre-emit exactly
|
|
@@ -30,6 +30,8 @@ Resolves to KNOWN only when all four pass:
|
|
|
30
30
|
|
|
31
31
|
Unresolved after 2 passes regresses to `planning`. Never narrate past an unresolved mutable.
|
|
32
32
|
|
|
33
|
+
Every witness that resolves a mutable writes back to `.gm/mutables.yml` the same step: set `status: witnessed` and fill `witness_evidence` with concrete proof (file:line, codesearch hit, exec output snippet). No write-back = the mutable stays unknown and the EMIT-gate stays closed. The hook reads this file; the agent's memory of "I resolved it" does not unblock anything.
|
|
34
|
+
|
|
33
35
|
Route candidates from PLAN are `weak_prior` only. Plausibility is the right to test, not the right to believe. A claim with no witness in the current session is a hypothesis — say so when stating it, and say what would settle it. The next reader (you, next turn) needs to know which lines were earned and which were carried forward.
|
|
34
36
|
|
|
35
37
|
## Verification budget
|
package/skills/planning/SKILL.md
CHANGED
|
@@ -37,6 +37,20 @@ Tag every item with a route family (grounding | reasoning | state | execution |
|
|
|
37
37
|
|
|
38
38
|
Plan exits when zero new unknowns surfaced last pass AND every item has acceptance criteria AND deps are mapped.
|
|
39
39
|
|
|
40
|
+
## .gm/mutables.yml — co-equal with .gm/prd.yml
|
|
41
|
+
|
|
42
|
+
Every unknown surfaced during PLAN lands as an entry in `.gm/mutables.yml` the same pass. Live during work, deleted when empty. Hook-gated: Write/Edit/NotebookEdit and `git commit`/`git push` are hard-blocked while any entry has `status: unknown`; turn-stop is hard-blocked the same way.
|
|
43
|
+
|
|
44
|
+
```yaml
|
|
45
|
+
- id: kebab-id
|
|
46
|
+
claim: One-line statement of what is assumed
|
|
47
|
+
witness_method: exec:codesearch <query> | exec:nodejs import | exec:recall <query> | Read <path>
|
|
48
|
+
witness_evidence: ""
|
|
49
|
+
status: unknown
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
`status: unknown` → `witnessed` only when `witness_evidence` is filled with concrete proof (file:line, codesearch hit, dispatched test output). Resolution lives in gm-execute. PRD items reference mutables via optional `mutables: [id1, id2]` field; an item is blocked while any referenced mutable is unresolved.
|
|
53
|
+
|
|
40
54
|
## .prd format
|
|
41
55
|
|
|
42
56
|
Path: `./.gm/prd.yml`. Write via `exec:nodejs` + `fs.writeFileSync`. Delete the file when empty.
|