From b4e8d5287d7aa7e6171ecdbd5e36430649ad6e2e Mon Sep 17 00:00:00 2001 From: ZeroPoint95 <329227198+ZeroPoint95@users.noreply.github.com> Date: Mon, 12 Oct 2026 21:45:25 -0400 Subject: [PATCH 1/2] fix: keep senior-dev help within eighty columns --- .github/workflows/ci.yml | 3 +++ Makefile | 9 +++++++-- docs/rules/ci.md | 7 ++++++- internal/seniordev/seniordev.go | 6 +++--- 4 files changed, 19 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 12f2a78f50..82ba8dc39f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -188,6 +188,9 @@ jobs: go test ./internal/manual/ go test -run 'Manual' ./internal/tui3/ ./internal/session/ + - name: Carried program help fits eighty columns + run: make test-carried-help + # THE LAWS HOLD. Every test that reads the tree itself — the endings # ratchet, the guard, the taxonomy, the words the e2e suite waits for — # found by what it does (scripts/laws.sh) and run as one target, about diff --git a/Makefile b/Makefile index 87c42b913d..b122e04013 100644 --- a/Makefile +++ b/Makefile @@ -2,7 +2,7 @@ # anywhere else — so a stale copy can't shadow a fresh one. BINARY := bin/codeaf -.PHONY: all build build-check build-cross debug demo-home clean-run embed manual-pack-law furrow test test-focus test-report test-quick test-tooling test-touched test-touched-preflight pr-ready test-laws fmt-check test-packed-manual manual-gates test-remote test-e2e test-e2e-tui vet check size clean \ +.PHONY: all build build-check build-cross debug demo-home clean-run embed manual-pack-law furrow test test-focus test-report test-quick test-tooling test-touched test-touched-preflight pr-ready test-laws test-carried-help fmt-check test-packed-manual manual-gates test-remote test-e2e test-e2e-tui vet check size clean \ changelog changelog-new changelog-check changelog-preview # What the shipped binary is allowed to weigh, in bytes, checked in beside the @@ -189,7 +189,7 @@ test-report: build-check: go build ./... -test-quick: build-check vet fmt-check test-packed-manual changelog-check manual-gates test-laws +test-quick: build-check vet fmt-check test-packed-manual changelog-check manual-gates test-laws test-carried-help # The shell runners are executable infrastructure that Go's package walk cannot # discover, so their acceptance scripts are named here. The benchmark clone @@ -269,6 +269,11 @@ pr-ready: test-touched-preflight test-laws: ./scripts/laws.sh +# Carried help spans the registered programs, so testing only a changed program +# package misses a description that no longer fits the shared eighty-cell page. +test-carried-help: + go test ./internal/delegate/builtin -run '^TestEveryCarriedProgramsHelpFitsEightyColumns$$' -count=1 + # gofmt is not a preference here. A file gofmt would rewrite is a file the next # editor's save rewrites, and that diff lands in somebody else's pull request. fmt-check: diff --git a/docs/rules/ci.md b/docs/rules/ci.md index bc39345a2a..6cea851643 100644 --- a/docs/rules/ci.md +++ b/docs/rules/ci.md @@ -35,7 +35,7 @@ one required name, is green only when both halves are. ## What the light gate actually checks -Seven things in `ci.yml`, job name `light gate`, then the touched packages, then `check`: +Eight things in `ci.yml`, job name `light gate`, then the touched packages, then `check`: - **`go build ./...`** — several sessions work this tree at once and a half-finished file breaks the build for everybody. Cheapest possible answer to @@ -66,6 +66,11 @@ Seven things in `ci.yml`, job name `light gate`, then the touched packages, then after the link. Every test in a file that carries the marker runs, so a file whose behavioural half is slow should move its laws out rather than argue with the script. +- **Carried program help fits eighty columns.** `make test-carried-help` runs + the existing width test against every registered program and command, with + the shared flags included. It runs on every light gate and in `test-quick`, + because the touched-package selector does not follow reverse dependencies + from a program's flags to the registry's help test. **`touched packages`** is the aggregate job: the full suite of every package this change touched runs with `-count=1` in concurrent tui3, session, codeaf and diff --git a/internal/seniordev/seniordev.go b/internal/seniordev/seniordev.go index 3fea3fd38a..f5d1d14be9 100644 --- a/internal/seniordev/seniordev.go +++ b/internal/seniordev/seniordev.go @@ -192,12 +192,12 @@ func bindRun(fs *flag.FlagSet) delegate.Body { asked := fs.Bool("asked", false, "the --high models were asked for by name; none is skipped") // The project's own check, named by whoever started the run, for a project // whose build or test discovery cannot find (fullverification/declared.go). - verifyBuild := fs.String("verify-build", "", "the project's build command, run on the frozen tree in place of the one discovered") - verifyTest := fs.String("verify-test", "", "the project's test command, run on the frozen tree in place of the one discovered") + verifyBuild := fs.String("verify-build", "", "build command on the frozen tree; replaces discovery") + verifyTest := fs.String("verify-test", "", "test command on the frozen tree; replaces discovery") // Where the session store lives when the folder's own .senior-dev is not // safe to keep it in: a rig that resets the folder, or one that collects the // store after the run (app/state_dir.go). - stateDir := fs.String("state-dir", "", "keep the session database and conversation here, outside the folder (default: $"+app.StateDirEnv+", else .senior-dev)") + stateDir := fs.String("state-dir", "", "session store path (see manual for defaults)") return func(ctx context.Context, host delegate.Host, args []string) error { run(ctx, host, app.Options{ Goal: strings.Join(args, " "), From 98d7d83b0c1ace0e6ba1a4643fa74ec28cc9f9e9 Mon Sep 17 00:00:00 2001 From: ZeroPoint95 <329227198+ZeroPoint95@users.noreply.github.com> Date: Mon, 12 Oct 2026 22:02:57 -0400 Subject: [PATCH 2/2] changelog: record senior-dev help width repair (#1810) --- docs/changes/unreleased/1810-senior-dev-help-width.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 docs/changes/unreleased/1810-senior-dev-help-width.md diff --git a/docs/changes/unreleased/1810-senior-dev-help-width.md b/docs/changes/unreleased/1810-senior-dev-help-width.md new file mode 100644 index 0000000000..95d0b36054 --- /dev/null +++ b/docs/changes/unreleased/1810-senior-dev-help-width.md @@ -0,0 +1,9 @@ +--- +kind: fixed +title: senior-dev help fits eighty columns and is checked before merging +pr: 1810 +surface: [engine, build, docs] +invalidates: + - "The senior-dev run help printed --state-dir, --verify-build and --verify-test beyond eighty columns. Their descriptions now fit, and the state-dir line points to the manual's record-folder and environment defaults." + - "A change to a carried program's flags could pass the PR gate without running the registry's help-width test. The light gate and make test-quick now run that test for every carried program and command." +---