mirror of
https://github.com/garrytan/gstack.git
synced 2026-11-01 06:24:41 +01:00
revert(digest): keep the agents digest at main's bytes; an unstamped head cannot change a release output (GSTA-96)
CI 'Check VERSION is not stale vs queue' classified #3434 as stamped because it touched agents-digest/gstack-AGENTS.md (a release_outputs path), while regenerating only the generator fails the digest freshness test. The first-run intro rewording stays. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
This commit is contained in:
1 parent
47dc19fa52
commit
4da2eba959
4 files changed
+4
-18
No files matched your search
+2
-2
@@ -27,13 +27,13 @@
|
||||
- **`scripts/resolvers/preamble/generate-completeness-section.ts`**: the default section reads "Complete coverage, minimal code": recommend full coverage of the requirement (tests, edge cases, error paths) and no code beyond it, prefer the smaller diff at equal coverage, and add no checks for impossible states. Unrelated work stays separate scope. The `Completeness: X/10` scoring rule and the GPT-5.6 Sol variant are unchanged. The section is 3 characters shorter, so every regenerated skill shrinks and 89 size pins go down.
|
||||
- **`ETHOS.md`**: "Completeness is cheap ... always prefer A" becomes "Complete coverage, minimal code": completeness is measured in coverage, not lines; at equal coverage choose the smaller diff; no speculative abstractions, impossible-state checks or unneeded refactors. A new anti-pattern names the impossible-state fallback. Section 1's opener now says "When covering the whole requirement costs minutes more than the shortcut, cover it. Every time. Complete means complete coverage, not more code.", and "How They Work Together" says Boil the Ocean means "cover the whole requirement with the least code" instead of "do the complete thing".
|
||||
- **`plan-ceo-review/SKILL.md.tmpl`**: the Philosophy bullet "COMPLETENESS IS CHEAP: AI makes 70 LOC seconds. Prefer complete ~150 LOC over 90% ~80 LOC. Boil the ocean." becomes "COMPLETENESS IS COVERAGE": cover the whole requirement (tests, edge cases, error paths) rather than a 90% shortcut, add no code beyond the accepted scope (so SCOPE EXPANSION and SELECTIVE EXPANSION still build what the user accepted), and choose the smaller diff at equal coverage. plan-ceo-review is under the 100,000-character limit on every host and has no size pin, so it grows about 100 characters without a pin change.
|
||||
- **Agents digest and first-run intro**: the digest's Boil the Ocean bullet (`scripts/gen-agents-digest.ts`, regenerated into `agents-digest/gstack-AGENTS.md`) and the one-time Boil the Ocean intro in `bin/gstack-skill-start` say "complete coverage, minimal code" instead of "AI makes completeness cheap, so do the complete thing", so hosts without a full skill install get the same rule.
|
||||
- **First-run intro**: the one-time Boil the Ocean intro in `bin/gstack-skill-start` says "complete coverage, minimal code" instead of "do the complete thing when AI makes marginal cost near-zero". The agents digest's bullet (`scripts/gen-agents-digest.ts`) keeps the old wording for now: the digest is a release output, so an unstamped head cannot change it without the version gate treating the head as stamped, and changing the generator alone fails the digest freshness test.
|
||||
- `review/specialists/simplification.md` quotes the new house rule instead of "If A is 70 lines more, choose A", and `CLAUDE.md` restates it in place of "Completeness is cheap ... the complete thing is the goal".
|
||||
|
||||
### Tests
|
||||
- `test/model-overlays.test.ts` asserts the new default wording ("Complete coverage, minimal code.", "prefer the smaller diff") and checks, one sentence per rule, that the section still states full coverage of the requirement with no code beyond it, the smaller diff only at equal coverage, no checks for impossible states, and that unrelated work is separate scope that never excuses a gap.
|
||||
- `test/ceo-workflow-clarity.test.ts` checks that the plan-ceo-review Philosophy bullet still asks for the whole requirement over a 90% shortcut, no code beyond the accepted scope and the smaller diff at equal coverage, and that "COMPLETENESS IS CHEAP" and "~150 LOC" stay gone.
|
||||
- `test/gen-skill-docs.test.ts` checks that the house rule `review/specialists/simplification.md` quotes is still stated in ETHOS.md. `test/agents-digest.test.ts` and `test/gstack-skill-start.test.ts` check that the digest's Boil the Ocean bullet and the first-run intro say complete coverage, minimal code and never "do the complete thing".
|
||||
- `test/gen-skill-docs.test.ts` checks that the house rule `review/specialists/simplification.md` quotes is still stated in ETHOS.md. `test/gstack-skill-start.test.ts` checks that the first-run intro says complete coverage, minimal code and never "do the complete thing".
|
||||
- `test/fixtures/skill-md-size-allowlist.json`: 89 pins lowered by 3 characters each. None raised; the plan-ceo-review rewording touches no pinned skill.
|
||||
|
||||
### Gate integrity
|
||||
|
||||
@@ -6,7 +6,7 @@ reviews, and evals on top of these rules.
|
||||
|
||||
## Ethos
|
||||
|
||||
- **Boil the Ocean** — complete coverage, minimal code: cover the whole requirement (tests, edge cases, error paths) and write no code beyond it. Shortcuts need an explicit, recorded decision.
|
||||
- **Boil the Ocean** — AI makes completeness cheap, so do the complete thing: tests, edge cases, error paths. Shortcuts need an explicit, recorded decision.
|
||||
- **Search Before Building** — know what exists before deciding what to build. Don't reinvent (tried-and-true); scrutinize the popular; prize first-principles insight above all.
|
||||
- **User Sovereignty** — models recommend, the user decides. Cross-model agreement is signal, never permission. Ask before changing the user's stated direction.
|
||||
- **Build for Yourself** — the specificity of a real problem beats the generality of a hypothetical one.
|
||||
|
||||
@@ -46,7 +46,7 @@ reviews, and evals on top of these rules.
|
||||
|
||||
## Ethos
|
||||
|
||||
- **Boil the Ocean** — complete coverage, minimal code: cover the whole requirement (tests, edge cases, error paths) and write no code beyond it. Shortcuts need an explicit, recorded decision.
|
||||
- **Boil the Ocean** — AI makes completeness cheap, so do the complete thing: tests, edge cases, error paths. Shortcuts need an explicit, recorded decision.
|
||||
- **Search Before Building** — know what exists before deciding what to build. Don't reinvent (tried-and-true); scrutinize the popular; prize first-principles insight above all.
|
||||
- **User Sovereignty** — models recommend, the user decides. Cross-model agreement is signal, never permission. Ask before changing the user's stated direction.
|
||||
- **Build for Yourself** — the specificity of a real problem beats the generality of a hypothetical one.
|
||||
|
||||
@@ -14,7 +14,6 @@ import {
|
||||
DIGEST_RELPATH,
|
||||
DIGEST_BYTE_BUDGET,
|
||||
} from '../scripts/gen-agents-digest';
|
||||
import { expectAbsent, expectMentions } from './helpers/prompt-structure';
|
||||
|
||||
const ROOT = path.resolve(import.meta.dir, '..');
|
||||
const digestPath = path.join(ROOT, DIGEST_RELPATH);
|
||||
@@ -54,19 +53,6 @@ describe('agents-digest', () => {
|
||||
// The ladder must keep the completeness reconciliation clause.
|
||||
});
|
||||
|
||||
// Generated by /ship Step 7 coverage audit (GSTA-96).
|
||||
// Value: protects=the digest's Boil the Ocean bullet says complete coverage, minimal code: the whole requirement and no code beyond it;
|
||||
// fails_when=the generator's Ethos bullet returns to "do the complete thing" or drops the no-code-beyond half;
|
||||
// why_new=the freshness and section tests above pass for any Ethos wording;
|
||||
// seam=none; no_claim=that agents reading the digest act on it (an eval question)
|
||||
test('the Ethos bullet measures completeness in coverage, not code', () => {
|
||||
const ethos = fs.readFileSync(digestPath, 'utf-8').split('## Ethos')[1]!.split('\n## ')[0]!;
|
||||
const bullet = ethos.split('\n').find(line => line.startsWith('- **Boil the Ocean**'));
|
||||
expect(bullet).toBeDefined();
|
||||
expectMentions(bullet!, [['complete coverage', 'minimal code'], ['whole requirement', 'no code beyond']], 'digest Boil the Ocean bullet');
|
||||
expectAbsent(bullet!, ['do the complete thing', 'completeness cheap'], 'digest Boil the Ocean bullet');
|
||||
});
|
||||
|
||||
test('setup never copies the digest onto a user AGENTS.md (print-path only)', () => {
|
||||
const setup = fs.readFileSync(path.join(ROOT, 'setup'), 'utf-8');
|
||||
// The explainer arms print the digest path, anchored to the script's own
|
||||
|
||||
Reference in new issue
Block a user