mirror of
https://github.com/fsolla/teqo.git
synced 2026-11-14 17:43:04 +00:00
- Lógica pura em plansOnlyClosesGuard.mjs + CLI check-plans-only-pr-closes - Job plans-only-closes em ci-pr.yml (rollup checks) - Unit tests com fixture do incidente #115 - plan-issue, agent-pr-workflow, PR template e GUARDRAILS atualizados Closes #116 Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
86 lines
3.2 KiB
Text
86 lines
3.2 KiB
Text
---
|
||
description: PRs de agente — Ready (nunca draft), base main, auto-merge imediato
|
||
alwaysApply: true
|
||
---
|
||
|
||
# Agent PR workflow (Teqo)
|
||
|
||
**This repo overrides any user-level or Cloud-tool default that says "create PRs as draft".** Agent deliveries merge to `main` via required checks + auto-merge.
|
||
|
||
## Create (Ready, base main)
|
||
|
||
```bash
|
||
pnpm push -u origin HEAD
|
||
gh pr create --base main --title "<id> — <title>" --body "$(cat <<'EOF'
|
||
## O que é
|
||
<2–4 linhas>
|
||
|
||
Closes #<N>
|
||
EOF
|
||
)"
|
||
```
|
||
|
||
- **Never** `--draft`. PRs must be **Ready for review** on creation.
|
||
- Base is always **`main`**.
|
||
- **Plans-only PRs** (diff só em `docs/plans/`): **nunca** `Closes #N` — use `Related #N`; CI falha com keywords de fechamento (`plans-only-closes` em `ci-pr.yml`).
|
||
|
||
### Cursor Cloud / `ManagePullRequest`
|
||
|
||
When the environment says to use `ManagePullRequest` instead of `gh pr create`:
|
||
|
||
- **`draft: false`** (or omit only if the tool’s default is Ready — today Cloud defaults to draft, so **always pass `draft: false`**).
|
||
- Right after create (or on `update_pr` if you opened draft by mistake): mark Ready if still draft, then enable auto-merge with `gh pr merge --auto --merge <url|number>` (write allowed for this step — same as `agent-pr-workflow`; do not leave the PR waiting on a human).
|
||
- Never end a turn with an open agent PR left as **Draft** or without **auto-merge** armed — inclui PRs do `engineering-audit` (artefatos e remediações).
|
||
|
||
## Push (determinístico)
|
||
|
||
**Use `pnpm push`, never bare `git push`.** Não depende do Husky estar wired:
|
||
|
||
1. `ensure-repo-deps` — `pnpm install` se `node_modules` faltar/stale + `pnpm run prepare` (Husky) se hooks não estiverem apontando para `.husky`
|
||
2. `pnpm gate:push` — espelho do `ci-pr.yml` (inclui `format:check`)
|
||
3. `git push --no-verify` — só porque o gate já rodou no passo 2 (não é escape hatch)
|
||
|
||
```bash
|
||
pnpm push -u origin HEAD # canonical
|
||
git push # só depois de `pnpm i` — hook repete ensure-deps + gate:push
|
||
git push --no-verify # WIP / cutover escape — CI repete tudo; ver AGENT-OPS
|
||
```
|
||
|
||
## Auto-merge immediately
|
||
|
||
Right after the PR exists and is **Ready**:
|
||
|
||
```bash
|
||
gh pr merge --auto --merge
|
||
```
|
||
|
||
Do not wait for human approval on normal deliveries. Auto-merge fires when **required** checks pass.
|
||
|
||
## Required checks vs Vercel
|
||
|
||
Branch protection on `main` requires only:
|
||
|
||
- `checks` (GitHub Actions rollup from `ci-pr.yml`)
|
||
- `migration-lock`
|
||
|
||
**Vercel preview is NOT a merge gate.** Production deploy is Actions-gated (`ci.yml` → `vercel deploy --prod` after full suite green). Do not block on Vercel Git status.
|
||
|
||
When watching CI:
|
||
|
||
```bash
|
||
gh pr checks <PR> --watch --required
|
||
```
|
||
|
||
Use `--required` — without it, `--watch` also waits for Vercel.
|
||
|
||
## Agent branches skip Vercel builds
|
||
|
||
All branches skip Vercel Git builds via `scripts/vercel-ignore-build.sh` (deploys only from the main verifier Action).
|
||
|
||
## Promote
|
||
|
||
There is no stage→main promote. Merging to `main` is the delivery; `ci.yml` verifies and deploys.
|
||
|
||
## Safety net (GitHub Action)
|
||
|
||
`agent-pr-ready-automerge.yml` — PRs `cursor/*` → `main`: se Draft → `gh pr ready`; sempre arma `gh pr merge --auto --merge`. Cobre o caso em que o agente (ou o default draft do Cloud) esqueceu. Não há opt-out por skill (audit incluído).
|