Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/fork-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ on:
- t3-discord/f7d37879-desktop-deeplinks
- fork/discord
- fork/vscode
- fork/identity

concurrency:
group: ci-${{ github.event.pull_request.number || github.ref }}
Expand Down
12 changes: 6 additions & 6 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ When implementation work for a user request is done (code, docs, config — not
`fork/changes`), or `pnpm fork:stack overlay-start <pr> <branch>` for overlay-owned work.
2. **Open or update a PR** against the correct base before handing off:
- Ordinary features → **`fork/changes`** (never `main`, never `fork/integration`).
- Client overlay work → the **registered overlay branch** (`fork/discord`, `fork/vscode`, or
- Client overlay work → the **registered overlay branch** (`fork/discord`, `fork/vscode`, `fork/identity`, or
`t3-discord/f7d37879-desktop-deeplinks`), not a duplicate of that work in `fork/changes`.
3. **Keep the PR mergeable** before saying “updated the PR” or finishing:
- **Mandatory pre-push gate** (see Task Completion Requirements): run **locally every job Fork
Expand Down Expand Up @@ -213,11 +213,11 @@ Prefer the thread starter’s Discord id/display name from turn context. Do not
**Whatever Fork CI runs for this tip, the agent must run locally first.** Fork CI is a safety net,
not the first formatter, linter, or typechecker. This applies to **every** implementation base:

| PR base | Local gate required before ready / merge? | GitHub required checks |
| --------------------------------------------------------------------- | ----------------------------------------- | --------------------------------------------------------- |
| `fork/changes` | **Yes** — full gate below | Check, Test, Mobile Native Static Analysis, Release Smoke |
| Registered overlay (`fork/discord`, `fork/vscode`, desktop deeplinks) | **Yes — identical** | Same as `fork/changes` |
| Dependent feature based on another feature branch | **Yes** on the child tip after rebase | Same when retargeted to a protected base |
| PR base | Local gate required before ready / merge? | GitHub required checks |
| -------------------------------------------------------------------------------------- | ----------------------------------------- | --------------------------------------------------------- |
| `fork/changes` | **Yes** — full gate below | Check, Test, Mobile Native Static Analysis, Release Smoke |
| Registered overlay (`fork/discord`, `fork/vscode`, `fork/identity`, desktop deeplinks) | **Yes — identical** | Same as `fork/changes` |
| Dependent feature based on another feature branch | **Yes** on the child tip after rebase | Same when retargeted to a protected base |

**Before every `git push` that is intended as ready work, `fork:stack update --push`, non-draft PR
open, ready-for-review conversion, merge / merge-request, or “handoff / done” claim**, the agent
Expand Down
12 changes: 6 additions & 6 deletions docs/fork-stack.md
Original file line number Diff line number Diff line change
Expand Up @@ -108,12 +108,12 @@ reuse it. Prefer per-layer green gates even when using the script; stop the line
Repository rulesets gate **long-lived stack branches**. Ordinary feature branches (`feat/**`,
`import/**`, …) are not covered, so agents and humans can still force-push them freely.

| Ruleset | Branches | Enforced | Bypass (always) |
| ----------------------------------------- | -------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- |
| Protect upstream main | `main` | No delete, no force-push, linear history, **PR required**, **Fork CI checks** | `patroza`, `omegabot`, deploy key (`FORK_STACK_DEPLOY_KEY`); Admin role may bypass via PR only |
| Protect fork/changes (PR + CI) | `fork/changes` | No delete, no force-push, linear history, **PR required** (squash/rebase), **strict Fork CI** (Check, Test, Mobile Native Static Analysis, Release Smoke) | `patroza`, `omegabot`, deploy key |
| Protect integration overlays (PR + CI) | `fork/discord`, `fork/vscode`, `t3-discord/f7d37879-desktop-deeplinks` (registered overlays) | Same as `fork/changes`: **PR required** (squash/rebase), **strict Fork CI** (Check, Test, Mobile Native Static Analysis, Release Smoke) | `patroza`, `omegabot`, deploy key (overlay auto-rebase / stack rewrites) |
| Protect fork/tim, candidates, integration | `fork/tim`, `fork/candidates`, `fork/integration` | No delete, no force-push, linear history (no PR requirement — stack rebuilds these tips) | `patroza`, `omegabot`, deploy key |
| Ruleset | Branches | Enforced | Bypass (always) |
| ----------------------------------------- | ------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- |
| Protect upstream main | `main` | No delete, no force-push, linear history, **PR required**, **Fork CI checks** | `patroza`, `omegabot`, deploy key (`FORK_STACK_DEPLOY_KEY`); Admin role may bypass via PR only |
| Protect fork/changes (PR + CI) | `fork/changes` | No delete, no force-push, linear history, **PR required** (squash/rebase), **strict Fork CI** (Check, Test, Mobile Native Static Analysis, Release Smoke) | `patroza`, `omegabot`, deploy key |
| Protect integration overlays (PR + CI) | `fork/discord`, `fork/vscode`, `fork/identity`, `t3-discord/f7d37879-desktop-deeplinks` (registered overlays) | Same as `fork/changes`: **PR required** (squash/rebase), **strict Fork CI** (Check, Test, Mobile Native Static Analysis, Release Smoke) | `patroza`, `omegabot`, deploy key (overlay auto-rebase / stack rewrites) |
| Protect fork/tim, candidates, integration | `fork/tim`, `fork/candidates`, `fork/integration` | No delete, no force-push, linear history (no PR requirement — stack rebuilds these tips) | `patroza`, `omegabot`, deploy key |

**Overlay child PRs are not a free pass.** A PR whose base is a registered overlay (for example
`feat/…` → `fork/discord`) is subject to the same required checks as a PR into `fork/changes`.
Expand Down
Loading