mirror of
https://github.com/garrytan/gstack.git
synced 2026-10-31 14:06:50 +01:00
* fix(careful): check PowerShell tool commands and nested pwsh/cmd (#3067) /careful and /guard matched only the Bash tool, so on Windows, where Claude Code's PowerShell tool is the primary shell, the guard never ran. check-careful.sh also had no PowerShell or cmd patterns. - careful/guard register a PowerShell matcher beside Bash. - hook-extract.sh gains gstack_hook_extract_tool: one parser call reads tool_name with the field, so dispatch adds no fork. - check-careful.sh runs one PowerShell/cmd pattern table on PowerShell tool commands and on the tail of any Bash command that launches pwsh/powershell/cmd: Remove-Item and aliases with -Recurse/-Force prefixes, rd/rmdir/del/erase /s, Format-Volume, Clear-Disk, Clear-Content, [IO.Directory]/[IO.File]::Delete, and asks with an explanation for -EncodedCommand, iex, Start-Process of a shell and & $cmd. Command-position anchors keep Bash negative controls allowed. - /careful documents the coverage as best-effort and points to Claude Code permission deny rules. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * fix(freeze): NotebookEdit respects the freeze boundary (#3067) NotebookEdit was in no freeze/guard/investigate matcher, and check-freeze.sh read only file_path, so notebook edits ignored /freeze on every platform. NotebookEdit carries tool_input.notebook_path. - freeze, guard and investigate register a NotebookEdit matcher beside Edit and Write. - check-freeze.sh reads file_path, then notebook_path, through the shared extractor; denials name the tool, the field, the boundary and /unfreeze. A helper without the combined reader denies as out of date. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * test: run hook-scripts on the Windows lane (#3067) The careful/freeze hooks are Windows coverage, but test/hook-scripts.test.ts was excluded from windows-free-tests by the raw /tmp/ pattern; its /tmp/ literals are payload strings that are never opened. Admit it by name and gate the three cases Windows runners cannot host: a symlink (no Developer Mode), a newline in a directory name, and a POSIX ':' PATH prefix. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * chore(evals): check-careful.sh is free-only for PR selection No paid fixture copies or runs careful/bin/check-careful.sh (the investigate boundary fixture copies hook-extract.sh and check-freeze.sh only); test/hook-scripts.test.ts covers it. As an unknown dependency it restored the full paid gate on every /careful hook change. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * test(careful): pin the #3067 Invoke-Sqlcmd DROP TABLE example on the PowerShell tool Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * chore(evals): record the check-careful.sh selection change as non-behavioral Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * docs: /careful covers PowerShell (best-effort), /freeze covers NotebookEdit (#3067) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * chore: release v1.91.37.0 (CHANGELOG, TODOS for deferred hook follow-ups) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * chore: re-slot release to v1.91.39.0 (v1.91.37.0 and v1.91.38.0 claimed by #3075, #3076) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * chore: re-slot release to v1.91.41.0 (merge-queue reservation) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * fix(careful): hook payload reader survives Windows text-mode Python and backslash source paths windows-free-tests (run 37739845723) showed every PowerShell-tool case falling through: Python's text-mode stdout on Windows wrote tool_name as "PowerShell\r", so dispatch never matched, and freeze denials carried stray CRs. gstack_hook_extract_tool now reads and writes bytes. hook-extract.sh also located gstack-state-root.sh with ${BASH_SOURCE%/*}, which strips nothing when the file is sourced through a C:\... path, so gstack_hook_state_root vanished (state-root parity case on the same run). Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * fix(evals): PR lane selects office-hours-auto-mode by its real test name The PR paid lane filters audited files with -t built from CASE_TEST_NAMES[id] ?? id. office-hours-auto-mode's Bun test is named 'AskUserQuestion surfaces when --disallowedTools AskUserQuestion is set', so the filter matched 0 tests and the shard failed (#3077 eval-slices (6), run 37741434771). Map the label, and check every audited PR-profile case is addressable by name. Recorded as non-behavioral for HARNESS_VERSION. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * chore: CHANGELOG notes for the Windows CRLF and PR-lane name fixes Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * chore: re-slot release to v1.91.47.0 (merge-queue assignment) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> --------- Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
68 lines
1.9 KiB
JSON
68 lines
1.9 KiB
JSON
{
|
|
"_comment": "Context-budget ratchet ceilings (~tokens). Regenerate: bun test/helpers/capture-context-budget.ts. Headroom: alwaysOnTotal x1.05, eagerPerInvocation x1.1. Graded by test/context-budget-ratchet.test.ts via lib/context-bill.ts checkBudget.",
|
|
"alwaysOnTotal": 7273,
|
|
"eagerPerInvocation": {
|
|
"autoplan": 16511,
|
|
"benchmark": 7701,
|
|
"benchmark-models": 3825,
|
|
"browse": 8166,
|
|
"browser-skills/hackernews-frontpage": 371,
|
|
"canary": 13356,
|
|
"careful": 1328,
|
|
"codex": 15204,
|
|
"context-restore": 10531,
|
|
"context-save": 10376,
|
|
"cso": 4702,
|
|
"design-consultation": 15726,
|
|
"design-html": 14387,
|
|
"design-review": 34744,
|
|
"design-shotgun": 14419,
|
|
"deslop-shared-libs": 3448,
|
|
"devex-review": 19362,
|
|
"diagram": 4271,
|
|
"document-generate": 11696,
|
|
"document-release": 10059,
|
|
"freeze": 1194,
|
|
"gstack": 4151,
|
|
"gstack-upgrade": 5793,
|
|
"guard": 1082,
|
|
"health": 11408,
|
|
"investigate": 12130,
|
|
"ios-clean": 8167,
|
|
"ios-design-review": 8364,
|
|
"ios-fix": 8056,
|
|
"ios-qa": 10874,
|
|
"ios-sync": 8182,
|
|
"land-and-deploy": 18839,
|
|
"landing-report": 8879,
|
|
"learn": 8595,
|
|
"make-pdf": 5283,
|
|
"office-hours": 23436,
|
|
"open-gstack-browser": 4862,
|
|
"openclaw/skills/gstack-openclaw-ceo-review": 2764,
|
|
"openclaw/skills/gstack-openclaw-investigate": 1429,
|
|
"openclaw/skills/gstack-openclaw-office-hours": 4433,
|
|
"openclaw/skills/gstack-openclaw-retro": 2542,
|
|
"pair-agent": 10990,
|
|
"plan-ceo-review": 20421,
|
|
"plan-design-review": 21019,
|
|
"plan-devex-review": 17116,
|
|
"plan-eng-review": 12912,
|
|
"plan-tune": 14585,
|
|
"qa": 13281,
|
|
"qa-only": 11348,
|
|
"retro": 18694,
|
|
"review": 19317,
|
|
"scrape": 6901,
|
|
"setup-browser-cookies": 3510,
|
|
"setup-deploy": 11219,
|
|
"setup-gbrain": 15279,
|
|
"ship": 20459,
|
|
"skillify": 11535,
|
|
"spec": 14423,
|
|
"sync-gbrain": 14937,
|
|
"test-audit": 10138,
|
|
"unfreeze": 457
|
|
}
|
|
}
|