Repository navigation
jpdev codex, jpdev push, Go steps with -mod=readonly - #10
Conversation
jpdev codex run runs a Codex CLI build from a brief with the model, effort and sandbox explicit, stdin closed and the transcript in a log, then commits the tracked changes (signed off, message from msg.txt, Codex trailer), pushes and opens the pull request from pr.md. jpdev codex check-brief refuses a brief that holds a word of config/codex-words.txt (or of the file named by JPDEV_CODEX_WORDS) and suggests the neutral phrasing. jpdev codex brief-template prints the brief skeleton. jpdev push [BRANCH] runs the gh credential-helper push form and refuses --force and -f. templates/AGENTS.md (and CLAUDE.md) state the form. lib/wrap.sh runs Go steps with GOFLAGS=-mod=readonly, so a step no longer rewrites go.mod. docs/policy.md states the cross-vendor rule. Closes #9, #6, #7. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Signed-off-by: kikashy <kikashy@hotmail.com>
… every path check-brief matches the whole text, with whitespace and hyphens between the words of a term, so a wrapped or hyphenated term is found; the line reported is the one the match starts on. codex run calls the push in a subshell, so the failure message prints when the push dies through jpdev_die as well as when git push fails. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Signed-off-by: kikashy <kikashy@hotmail.com>
Narrow review record (same vendor, not a cross-vendor claim)Reviewer: a clean-room Claude Sonnet agent, read-only; the kit tests once and four stubbed probe groups; the real Review of judgment-pack-devkit PR 10, head 54faf09. One MEDIUM, one LOW, no HIGH. Findings
Questions 1-5: all pass
Question 6: hygiene. What I ran. Under the severity rule (the merge waits only for HIGHs), the MEDIUM is filed and fixed with the pre-release batch rather than blocking this PR. mergeable — head 54faf09 Disposition
Merged on green CI after the round. |
|
🎉 Thank you for your contribution to Judgment Pack! If you’d like another task, choose a path that interests you: |
Closes #9. Closes #6. Closes #7.
What it adds
jpdev codex run --brief FILE --model M --effort low|medium|high [--dir] [--repo] [--base] [--add PATH] [--no-commit] [--no-push] [--no-pr] [--sandbox] [--log](jpdev codex: run a Codex CLI build from a brief with the model, effort, sandbox and push form explicit; check a brief for filter-tripping words #9). It checks the brief, then runscodex execwith-m,-c model_reasoning_effort=,--sandbox(with-c sandbox_workspace_write.network_access=trueforworkspace-write),-C,-o, stdin from/dev/null, and a prompt of one line ("The rules are this repository's AGENTS.md; follow them.") plus the brief's text. The flag names were read fromcodex exec --helpof the installed binary. The transcript goes to the log; the final message and the exit code are printed, and Codex's own exit code is returned when it fails.workspace-writecannot write.git, so it does not commit. It writesmsg.txtandpr.md; after it returns, the command stages tracked changes (git add -u, plus paths named with--add; no other untracked file; nevermsg.txtorpr.md), commits with-sand the message ofmsg.txtplus theCo-Authored-By: Codex <noreply@openai.com>trailer when it is missing, pushes asjpdev pushdoes, and opens the pull request withgh pr create --repo ... --base ... --head ...(title: the subject ofmsg.txt; body:pr.md). No change to a tracked file, or nomsg.txt, means no commit and exit 1. A clone onmainis refused before the run.--sandbox danger-full-accessis an explicit option only.jpdev codex check-brief FILE: refuses a brief that holds a term ofconfig/codex-words.txt(the base list; a term is matched at the start of a word, so stems match) or of the file named byJPDEV_CODEX_WORDS, and prints the neutral phrasing for each.codex runruns it first.jpdev codex brief-templateprintstemplates/codex-brief.md, which tells Codex to writemsg.txtandpr.mdand not to commit.JPDEV_CODEX_MODEL_DEFAULT(none: the model is always passed),JPDEV_CODEX_SANDBOX(workspace-write),JPDEV_CODEX_WORDS.jpdev push [BRANCH](The agent docs and jpdev say how to push: the gh credential helper, never a stored credential #6) runsgit -c credential.helper= -c 'credential.helper=!gh auth git-credential' push -u origin BRANCHand refuses--force,-f,--force-*and a+refspec.templates/AGENTS.md(and sotemplates/CLAUDE.md, and the kit's ownAGENTS.md/CLAUDE.md) state the form and namejpdev push;docs/adopting.mdmentions it.lib/wrap.shruns Go steps withGOFLAGS=-mod=readonly(The Go wrapper runs with -mod=mod and can rewrite go.mod; use -mod=readonly #7);config/env.examplenotes it. A module the files lack now fails the step, as in CI.docs/policy.mdstates the cross-vendor rule and how a Codex build is run;README.mdlists the commands and settings.Public surface changed: new commands and settings,
templates/AGENTS.md, and the Go cap inlib/wrap.sh. Their tests and documentation are in this pull request.Checks
shellcheck ran as in CI (
shellcheck -x -P ".:SCRIPTDIR"over the same file list) with shellcheck 0.10.0 installed in a temporary virtual environment, because the machine has none.Tests went from 102 to 226. A stub
codex(and a stubgitandghfor the push and pull request calls) is first onPATHin every test; the real programs are not called. Each safeguard was broken in a scratch copy and the tests failed:-mod=readonlyback to-mod=mod(4 failures, including go.mod byte-identity), the force refusal (7),< /dev/null(1), the trailer (2),-son the commit (1), the brief check before the run (2),git add -uto-A(21), the network setting (1).Not in this PR
templates/AGENTS.md,CLAUDE.md) in a later row; none is touched here.--add; the command lists the untracked files it left out.🤖 Generated with Claude Code