mirror of
https://github.com/garrytan/gstack.git
synced 2026-11-01 22:45:02 +01:00
Review pass 1 (6 specialists + red team) on the standing-approval and gate-cost change: - the standing lookup resolves the approvals record of the repository the run's plan lives in, never the caller's cwd (red team: project A's row answered project B's gate) - standingAnswer refuses a gate that `recommend` edited (rec_rev > 0 or recommended_by), a missing or unreadable findings.jsonl, and an outside-plan finding; the STANDING line flattens control characters so a crew-writable row cannot forge a protocol line - coversAutoplanRec matches the recommendation words in the owner's words only and rejects negations; STANDING_APPROVAL_ABSENT's fix names every required gstack-approvals flag - recReopens is the upper bound of the answer/revise rules (a plan change counts every phase, a round grant its phase plus Eng); gate_cost rides the JSON payloads, `run` prints the lines at its final gate, and `gstack-owner-brief render --captain` appends a ### Cost section - locate keeps the other mirror roots as read_also so rows mirrored under an earlier rule stay visible; gstack-approvals path prints READ_ALSO - the Eng phase edit is size-neutral: five nearby phrases shortened so every host's autoplan SKILL.md stays at its size-guard pin - tests: isolated fixtures, the run's plan inside its own git repo, cross-project refusal, amend_pending vs complete, recommend-then-standing, injection, gate_cost JSON, Captain brief Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>