mirror of
https://github.com/garrytan/gstack.git
synced 2026-09-26 22:51:47 +02:00
Four paths made the pre-push credential scanner exit 0 with the secret going out anyway, and two adjacent defects in the same functions had to land with them. Range resolution: defaultRemoteBranch() asked origin regardless of the push target, so pushing to a second remote while HEAD matched origin/main resolved HEAD..HEAD and scanned nothing; and a well-shaped but absent remote sha let a guessed base's empty diff read as "nothing to scan". The probe is now scoped to the push target and a guess that scanned nothing blocks with a fetch hint. Slicing: the no-overlap argument holds for a pattern's match but not for its proximity requirement, so a label at the end of one slice and its secret at the start of the next never fired; and budgeting in raw bytes let zero-width padding decide the seam using bytes the engine strips before matching. Slices now overlap by 16 KiB and are budgeted in zero-width-stripped bytes. Adjacent: the fallback range's hardcoded SHA-1 empty-tree id does not exist in a SHA-256 repository and hard-blocked every legitimate first push there, which the remote scoping makes reachable more often; and an over-budget single line was handed to the engine whole, blocking without the content ever being read. test/redact-prepush-fail-open.sh is the gate: 26 scenarios against real repositories with synthetic credentials, PASS here and FAIL on the four rows against the scanner this branch forks from. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
36 lines
1.7 KiB
Markdown
36 lines
1.7 KiB
Markdown
# gstack digest v1.87.7.0 — regenerate/re-copy after upgrading gstack
|
|
|
|
Behavioral rules from gstack (https://github.com/garrytan/gstack), compressed
|
|
for agent hosts without a full skill install. The full skills add workflows,
|
|
reviews, and evals on top of these rules.
|
|
|
|
## Ethos
|
|
|
|
- **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.
|
|
|
|
## The reuse ladder
|
|
|
|
Before writing new code, stop at the first rung that holds:
|
|
1. A helper, util, or pattern already in this repo.
|
|
2. The standard library.
|
|
3. A native platform feature (CSS over JS, DB constraint over app code).
|
|
4. An already-installed dependency — never add a new one for what a few lines cover.
|
|
|
|
Then build the complete version of what remains. Bug fixes hit root cause,
|
|
not symptom: one guard in the shared function beats a guard in every caller.
|
|
|
|
## Voice
|
|
|
|
Direct, concrete, builder-to-builder. Name the file, function, command, and
|
|
user-visible impact. Short paragraphs; end with what to do. No filler, no
|
|
corporate tone, no AI vocabulary.
|
|
|
|
## Full gstack
|
|
|
|
Clone https://github.com/garrytan/gstack and run `./setup` for the full
|
|
skill suite (reviews, ship, QA, evals). This digest is generated — edit
|
|
scripts/gen-agents-digest.ts, not this file.
|