Skip to content

fix(grok): fix forward #284's Grok findings (#285) - #286

Merged
mergify[bot] merged 1 commit into
mainfrom
fix/285-grok-fix-forward
Nov 8, 2026
Merged

mergify[bot] merged 1 commit into
mainfrom
fix/285-grok-fix-forward

Conversation

@ericlitman

@ericlitman ericlitman commented Nov 8, 2026 •

Copy link
Copy Markdown
Owner

Summary

This is the fix-forward PR for the merged head of #284 (0d0c5d5). It fixes the four Unfret findings that babysit-pr classed verdict-changing.

 codex-tools.md › Reflect skill copies
 | Codex | .agents/skills/<skill>/ | $HOME/.agents/skills/<skill>/ |
+| Grok  | .grok/skills/<skill>/   | <config-home>/skills/<skill>/ |

 verify-open-pstack/scripts/core.ts › GROK_REACH['grok:dispatch']
+  grok-agents/{poteto-agent,comment-sicko}.md, poteto-mode/SKILL.md, model-catalog.md,
+  runner/types.ts, runner/registry/{index,render}.ts

 verify-open-pstack/scripts/{isolation,harness,grok}.ts
-  env.GROK_HOME ?? join(HOME, '.grok')
+  grokHome(env)   // env.GROK_HOME || join(HOME, '.grok'), matching setup's ${GROK_HOME:-$HOME/.grok}

Introduced by: #284. Closes #285.

Evidence

  • Before: classify() gave no Grok feature for runner/types.ts, model-catalog.md, poteto-mode/SKILL.md or grok-agents/*, and core.test.ts asserted that. With GROK_HOME="", snapshotSetup() resolved the Grok sheet under the current directory.
    After: core.test.ts asserts that each of those paths reaches grok:dispatch. The new isolation.test.ts case "an empty GROK_HOME snapshots the default Grok sheet, as setup resolves it" restores $HOME/.grok/rules/pstack-models.md byte for byte. Verifier suite: 219 pass, 0 fail.
  • Reflect's Apply step (reflect/SKILL.md:44) names the destination for "this harness". The table now has a Grok row, using Grok's own skill folders (Grok user guide, 08-skills).

Merge Danger

Door: two-way

Blast Radius: verifier-only

  • The wider reach only lets a PR name grok:dispatch. It never adds a Grok session to a run.
  • The GROK_HOME change matters only when GROK_HOME is set and empty.

Acceptance criteria (#285)

  1. Reflect has a Grok destination. codex-tools.md "Reflect skill copies" has the Grok row. Documentation only.
  2. Grok verification reaches Grok's runtime paths. GROK_REACH['grok:dispatch'] lists all seven paths. The core.test.ts reach test asserts each one.
  3. An empty GROK_HOME resolves to the default in isolation.ts, harness.ts and grok.ts, through grokHome(). The new isolation.test.ts case covers it.

Gate results (head e4537f0)

Check Exit
bun run test 0
bun run typecheck 0
bun run static 0
claude plugin validate plugins/pstack 0
grok plugin validate plugins/pstack 0

Not verified

  • live-gate comes from grok:setup with --self-test, run from this candidate head because the PR changes the verifier. grok:setup runs grokHome() in the snapshot, the case config home and the Grok session records.
  • The Reflect Grok row is not exercised live, because the verifier has no Grok Reflect recipe.

🤖 Generated with Claude Code

…h, default an empty GROK_HOME

Fix-forward for the merged head of #284 (Unfret findings v1:1c735e4d,
v1:1f3cdb66, v1:ccdebf5c, v1:21c02ebc).

Closes #285

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@mergify

mergify Bot commented Nov 8, 2026 •

Copy link
Copy Markdown
Contributor

Merge Protections

🟢 All 2 merge protections satisfied — ready to merge.

Show 2 satisfied protections

🟢 Queue ready pull requests

Automatically queue non-draft pull requests targeting main after verify and live-gate pass on the head and every review thread is resolved.

  • #review-threads-unresolved = 0
  • -draft
  • check-success=live-gate
  • check-success=verify

🟢 🚦 Auto-queue

When all merge protections are satisfied and these conditions match, this pull request will be queued automatically.

  • -files~=^\.github/
  • base = main

@ericlitman

Copy link
Copy Markdown
Owner Author

Live evidence: Open Pstack

  • Candidate SHA: e4537f00b203889ba81550496ecf9fdb4c143a07
  • Base SHA: eda73cc1c9642b7b8539a10cb78b40596fabbe61
  • Result: PASSED — named features verified
  • Self-test: completed in both harnesses
  • Planned sessions: 3 (limit 12)
  • Publisher revision: e4537f00b203889ba81550496ecf9fdb4c143a07
  • Evidence-set SHA-256: bfcf872e3249a7e9a4fbbdd35334f7862946d377f4890d4337b9dcef1c5457ad
  • Installation (claude): CLI 2.1.319 (Claude Code), plugin 1.20.0, candidate e4537f00b203889ba81550496ecf9fdb4c143a07, tree 367d0e808e4e3a1df50dc5c2cbf472630ff9f4adc6eca5d00c6ce3f51669599c.
  • Installation (codex): CLI codex-cli 0.167.0, plugin 1.20.0, candidate e4537f00b203889ba81550496ecf9fdb4c143a07, tree 367d0e808e4e3a1df50dc5c2cbf472630ff9f4adc6eca5d00c6ce3f51669599c.
  • Installation (grok): CLI grok 1.0.77 (50ca579fa996) [stable], plugin 1.20.0, candidate e4537f00b203889ba81550496ecf9fdb4c143a07, tree 367d0e808e4e3a1df50dc5c2cbf472630ff9f4adc6eca5d00c6ce3f51669599c.
  • Observation (claude / project-skill): surface claude -p stream-json with the candidate plugin-dir; action recipe project-skill: doctor; result passed: doctor:exit-0 doctor:skill-loaded doctor:doctor-ran doctor:doctor-canonical-pass; 4 assertions machine-checked; transcript SHA-256 bc2fedce0ae53887fad99ea48544a5e6a87051029bcb249126155ab7cf1fbf0f; artifact-set SHA-256 6e8287678df653eeff9747adec596df97127b812dee074ac3ee3798ca7807dc7.
  • Observation (codex / project-skill): surface codex exec --json with the run-owned candidate installation; action recipe project-skill: doctor; result passed: doctor:exit-0 doctor:skill-loaded doctor:doctor-ran doctor:doctor-canonical-pass; 4 assertions machine-checked; transcript SHA-256 0fae1b1e74bbab0908848a3daee2d9b451a54f2ee84ed2ced16c148c13d2824e; artifact-set SHA-256 4ec562bc5cb8cd5a6f870e303ecc537aa2b2005a40e18dcac456664fd9613f36.
  • Observation (grok / setup): surface grok agent stdio (ACP) with the candidate plugin-dir; action recipe setup: configure; result passed: configure:exit-0 configure:skill-loaded-from-candidate configure:file:pstack-models.md configure:sheet:grok:grok-4.7@low configure:no-full-access; 5 assertions machine-checked; transcript SHA-256 9eab5e6a56d8f90970c8ad287df4f19626f29da2f5eaec51b61b3871356e41ec; artifact-set SHA-256 51af633abc3b8e7966f2fc6038039c72f186cd6f763c5ae676563b493cb501bc.
  • Policy: every new head requires a fresh run; this verifier does not change PR state, queue, or merge.

@ericlitman
ericlitman marked this pull request as ready for review November 8, 2026 19:40
@mergify
mergify Bot merged commit d1766d5 into main Nov 8, 2026
5 of 6 checks passed
@mergify

mergify Bot commented Nov 8, 2026

Copy link
Copy Markdown
Contributor

✅ Merged into main as d1766d5 at 19:40 UTC

Less than a minute in the queue, with no time running CI.

So far

  • ✅ Entered the queue Sun 8 Nov, 19:40 · rule default · triggered by merge protections
  • ✅ Checks skipped · PR is already up-to-date
  • ✅ Merged 19:40 · d1766d5 · merge
8 merge conditions met
  • github-review-approved · required by GitHub repository ruleset rule Protect main
  • #review-threads-unresolved = 0 · required by Merge Protections rule Queue ready pull requests
  • -draft · required by Merge Protections rule Queue ready pull requests
  • check-success=live-gate · required by Merge Protections rule Queue ready pull requests
  • check-success=verify · required by Merge Protections rule Queue ready pull requests
  • any of · required by GitHub repository ruleset rule Protect main:
    • check-success = @github-actions/verify
    • check-neutral = @github-actions/verify
    • check-skipped = @github-actions/verify
  • any of · required by GitHub repository ruleset rule Protect main:
    • check-success = live-gate
    • check-neutral = live-gate
    • check-skipped = live-gate
  • any of · required by GitHub repository ruleset rule Review gate:
    • check-success = @mergify/Mergify Merge Protections
    • check-neutral = @mergify/Mergify Merge Protections
    • check-skipped = @mergify/Mergify Merge Protections

Times in UTC · dashboard · how the merge queue works

@unfret-eal

unfret-eal Bot commented Nov 8, 2026 •

Copy link
Copy Markdown

🛑 1 blocking finding

🔴 High · New Grok home resolver is omitted from feature selection

Walkthrough

This follow-up to #284 fixes several gaps in Grok support. Changes to the Grok agent copies, `poteto-mode/SKILL.md`, `model-catalog.md`, and the runner's `types.ts`/`registry` files now select the `grok:dispatch` verification. It also adds a shared `grokHome()` helper, so an empty `GROK_HOME` falls back to `$HOME/.grok` the same way setup does, instead of resolving under the current directory. On the docs side, it adds a Grok row to Reflect's skill-copy destination table and adds tests for the wider Grok reach and the empty-`GROK_HOME` snapshot/restore case. One review note: `grokHome()` lives in `io.ts`, which is not in the Grok reach list, so changes to the new resolver would not select Grok verification.

Area What changes Review notes
Verifier feature selection `GROK_REACH\['grok:dispatch'\]` now includes the Grok agent copies, `poteto-mode/SKILL.md`, `model-catalog.md`, and the runner `types.ts`, `registry/index.ts` and `registry/render.ts`. `core.test.ts` and the `grok.md` feature doc are updated to match. The new resolver in `io.ts` is not included in this list. New Grok home resolver is omitted from feature selection
Grok home resolution `isolation.ts`, `harness.ts` and `grok.ts` now use `grokHome(env)`, which treats an empty `GROK_HOME` as unset. `isolatedEnv` no longer passes an empty `GROK_HOME` through. A new `isolation.test.ts` case covers snapshotting and restoring the default sheet.
Reflect docs `codex-tools.md` adds a Grok row (`.grok/skills/&lt;skill&gt;/` / `&lt;config-home&gt;/skills/&lt;skill&gt;/`) to the Reflect skill-copy table. This is documentation only and has no live recipe.
Since the last review
  • New: New Grok home resolver is omitted from feature selection
Repair prompt

Read the Unfret check run for ericlitman/open-pstack#286 at head e4537f00b203889ba81550496ecf9fdb4c143a07 (run panel:e4537f00b203889ba81550496ecf9fdb4c143a07:py8apbLTUh_:TEnEqknLnmc, check). Use the check's App id and GET /repos/ericlitman/open-pstack/check-runs/128839614761; its output.text contains the structured result. Compare it with the current code and head, verify that each listed mandatory finding still applies, repair only those that do, honor the repository constraints, and validate the changes. Leave advisories and accepted risks alone. A manually resolved thread is not a waiver.

Details
Lane / stage Model Effort Outcome Duration
broad-gpt-5.6-sol-xhigh / review openai/gpt-5.6-sol → gpt-5.6-sol · primary xhigh succeeded 2 min 7 s
broad-opus-5.5-max / review anthropic/claude-opus-5-5 → claude-opus-5-5 · primary max succeeded 5 min 57 s
focal-gpt-5.6-sol-xhigh copy / review openai/gpt-6.1-sol → gpt-6.1-sol · primary xhigh succeeded 7 min 56 s
focal-gpt-5.6-sol-xhigh copy 2 / review openai/gpt-6.1-sol → gpt-6.1-sol · primary xhigh succeeded 6 min 15 s
judge / judge openai/gpt-6-astra → gpt-6-astra · primary high succeeded 51 s

First review of this pull request.
4 reviewers finished.
Commit e4537f0.
Check run.
Run: GET /unfret/run/panel:e4537f00b203889ba81550496ecf9fdb4c143a07:py8apbLTUh_:TEnEqknLnmc.

@unfret review · @unfret status · @unfret help

@unfret-eal unfret-eal Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛑 1 blocking finding
🔴 High · New Grok home resolver is omitted from feature selection
Check

@ericlitman
ericlitman deleted the fix/285-grok-fix-forward branch November 8, 2026 20:25
danpal35 pushed a commit to danpal35/open-pstack that referenced this pull request Nov 9, 2026
Replace the exact-path GROK_REACH list with permission granted in each
runtime ownership branch of classify(). Assets, version-only manifests
and non-runtime paths stay narrow; unmapped paths still fail. Decided in
the step-back exchange after two verdicts found paths missing from the
list (ericlitman#284, ericlitman#286).

Closes ericlitman#287

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Fix forward #284: Grok reflect destination, Grok live-gate reach, empty GROK_HOME

1 participant