From ae4b9fdd9b3112f17153f63c2aad0ee785124022 Mon Sep 17 00:00:00 2001 From: garrytan Date: Tue, 27 Oct 2026 15:31:46 +0000 Subject: [PATCH] fix: pre-landing review fixes CHANGELOG [Unreleased]: end the Codex default-prompts sentence at "generator input only." so bin/gstack-prose-lint --unreleased --gate (main's new quality-gate step) passes, and restate the gate-integrity bullet's figures for the tree merged with 1f246e35: ship cap 1.7524 -> 1.7528 (329,005 / 187,706), modernize 9466 -> 3772 after the preamble hoist, alwaysOnTotal 7769 -> 7880, catalog 1,359 unchanged. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a1ed3c2e1..948fcf4fb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,7 @@ ### Added - **`/modernize`**: bring an aging pull request onto its current base and decide whether it should still exist. The skill reads the PR as a claim (the problem, the change, what must be true of the codebase), reads its title, body and comments only through `gstack-issue-guard`, reads what moved under it for conflicts in meaning as well as in text, and writes one of three verdicts before anything is pushed: **MODERNIZE** (rebase with the author's commits kept as theirs, `git range-diff` with a one-line reason per changed hunk, the repo's own tests, then `git push --force-with-lease=:`), **REWORK** (the problem stands, this diff does not; nothing pushed) or **CLOSE** (recommended with the superseding commit; the PR stays open until someone with the authority says so). The skill never closes a PR and never uses a bare `--force`; `/careful` already rates the lease push MEDIUM. Rows in README, AGENTS.md, `docs/skills.md` (with a deep dive), `docs/PROJECT_STRUCTURE.md`, the root router and `gstack/llms.txt`. -- **Per-skill Codex default prompts**: a template's `codex_default_prompt:` frontmatter key becomes that skill's `default_prompt` in `agents/openai.yaml`, the sentence Codex's picker inserts when a user chooses the skill; a template without the key keeps `Use for this task.`. `/ship`, `/review`, `/qa`, `/autoplan`, `/office-hours`, `/land-and-deploy` and `/modernize` carry one. The key is generator input only: no host's SKILL.md render carries it (Claude strips it; the allowlist hosts never copy it), so every pinned render is byte-identical. `bin/gstack-host-renders.sh`'s proof that a yaml file is gstack's accepts any `default_prompt` line. +- **Per-skill Codex default prompts**: a template's `codex_default_prompt:` frontmatter key becomes that skill's `default_prompt` in `agents/openai.yaml`, the sentence Codex's picker inserts when a user chooses the skill; a template without the key keeps `Use for this task.`. `/ship`, `/review`, `/qa`, `/autoplan`, `/office-hours`, `/land-and-deploy` and `/modernize` carry one. The key is generator input only. No host's SKILL.md render carries it (Claude strips it; the allowlist hosts never copy it), so every pinned render is byte-identical. `bin/gstack-host-renders.sh`'s proof that a yaml file is gstack's accepts any `default_prompt` line. - **`gstack-post --attribute " on behalf of "`** on `pr-comment`, `issue-comment` and `reply`: opt-in and off by default, it opens the comment with a `> [!NOTE]` callout (`🤖 ****`) naming who wrote it, then the body as written. The callout bytes are scanned and bound into the MEDIUM confirmation token with the body, so a changed attribution needs a new token (findings are reported at the body file's own line numbers, a finding in the callout as `PART: attribute`); the flag is refused (exit 64) on a PR body, a title or an issue body, and for empty, multi-line or over-200-character text. `review/greptile-triage.md` says when to add it to a reply. - **`docs/unattended.md` "What an unattended session may do"**: merge never (nor auto-merge, a merge queue or `gh pr ready` on a PR the run did not open); force-push only the run's own branch, after a rebase the plan or a `/modernize` disposition named, with `git range-diff` in the handoff and a lease pinned to the observed sha; tests only by the methods the repository's instructions name, no ask-first; proof is what the run observed itself. Anything outside the list is a pending approval item. `/ship`'s handoff section points at it (one line in the lazy section; this PR adds no skeleton bytes). - **CONTRIBUTING.md "Porting a contributor's PR"**: review and test the port head first (a fork's green checks prove nothing here), keep their commits as theirs with `Co-authored-by` on anything rewritten, your fixes on top as separate commits, the port names the original and its author, and the original closes with a specific thank-you linking the port; closing without landing is a maintainer's call. The repo-side home of the crew rule in `docs/captain.md`. @@ -17,7 +17,7 @@ - `test/gstack-post.test.ts`: no flag means the body is sent as written; the callout on all three comment operations and on GitLab; scan and token cover the callout; refusals on the other operations and bad text. ### Gate integrity -- The one threshold this PR moves is the ship union cap in `test/helpers/carve-guards.ts`, 1.7400 → 1.7405 under GStack Minder's grant: on the tree merged with f27a7605 the union is 326,691 / 187,706 = 1.7404 against #3487's 1.7400 (pinned at a measured 1.7391), the 87 bytes being the handoff pointer line. No timeout, trial count or case kind changed. `test/catalog-budget.test.ts` moves 1,314 → 1,359 token-equivalents for the new skill, re-measured on top of main's `/ubicloud` and `/design-motion` rows (pre-addition 5,249 bytes on d9b0d600, modernize adds 178, measured 5,427 = 1,357; 9 bytes left), and `test/fixtures/context-budget.json` is recaptured on the same base: `modernize: 9466` and `alwaysOnTotal` 7458 → 7880 (capture × 1.05). No pinned render in `test/fixtures/skill-md-size-allowlist.json` changed size (0 skeleton bytes added). +- The one threshold this PR moves is the ship union cap in `test/helpers/carve-guards.ts`, 1.7524 → 1.7528 under GStack Minder's grant. On the tree merged with 1f246e35 (v1.91.278.0, the shared-preamble hoist) the union is 329,005 / 187,706 = 1.7528 against main's 1.7524 (pinned at a measured 1.7523), the handoff pointer line being this PR's only ship bytes; the skeleton is main's 60,900 (0 skeleton bytes added). Earlier merges of this PR pinned 1.7405 on top of #3487's 1.7400 (326,691 bytes on the f27a7605 merge) the same way. No timeout, trial count or case kind changed. `test/catalog-budget.test.ts` moves 1,314 → 1,359 token-equivalents for the new skill, re-measured on top of main's `/ubicloud` and `/design-motion` rows (pre-addition 5,249 bytes on d9b0d600, modernize adds 178, measured 5,427 = 1,357 on the merged tree; 9 bytes left), and `test/fixtures/context-budget.json` is recaptured on the merged tree, where the hoist moved modernize's preamble into a lazy section (`modernize` 9466 → 3772) and `alwaysOnTotal` goes 7769 → 7880 (capture × 1.05). No pinned render in `test/fixtures/skill-md-size-allowlist.json` changed size. ## [1.91.278.0] - 2026-10-27