From 41941bb994955a7e1abae9fb8eaa4f06131b98a4 Mon Sep 17 00:00:00 2001 From: Cameron Date: Mon, 3 Aug 2026 20:35:51 -0700 Subject: [PATCH] Make landing the last step of the work, not a question. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Both entry points already said to land completed work without waiting for routine permission, but neither said the failure mode out loud, so a session could satisfy the letter of the rule and still stall on "committed on a branch, want me to land it?" — which is the permission request restated. Names the two mechanical facts that turn a landing into an ask when they are not known in advance: task.sh finish requires a heartbeat run owning the worktree plus AGENT_ID, and a shared checkout dirtied by a concurrent session cannot fast-forward. Pushing worktree-:main straight from the task worktree lands without touching that work, and the site scripts run from the worktree because they resolve their root from their own path. Records that site-smoke normally needs SITE_SMOKE_ATTEMPTS=12. Defense: process doorway only. No simulation rule, save format, or player surface changes, so no law or spec page owns this text; AGENT.md's Landing section and the CLAUDE.md guardrail list are its owners. --- AGENT.md | 15 ++++++++++++++- CLAUDE.md | 11 +++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/AGENT.md b/AGENT.md index ce13815d..bf16ebb3 100644 --- a/AGENT.md +++ b/AGENT.md @@ -122,6 +122,11 @@ no unique law and does not satisfy this rule. ## Landing +Landing is not a separate errand you propose — it is the last step of the work +order, and it happens in the same session without asking. "Committed on a +branch, want me to land it?" is the permission request this section already +removed. Ask about the work; never about the merge. + Rebase the task branch onto current `origin/main`, rerun the appropriate scoped verification, merge and push to main directly, then remove the worktree and delete the task branch. The PR rule was removed 2026-07-07. Prefer @@ -129,4 +134,12 @@ and delete the task branch. The PR rule was removed 2026-07-07. Prefer it builds the exact landed revision and publishes the public corpus to the orphan `pages` branch. A manual landing must run `./tools/site-deploy.sh` after the `main` push. Use `./tools/site-smoke.sh` to prove the public edge names the -landed source revision before reporting a public-site change complete. +landed source revision before reporting a public-site change complete; the edge +lags the push by minutes, so `SITE_SMOKE_ATTEMPTS=12` is the normal invocation. + +`task.sh finish` needs a `tools/heartbeat.sh` run that owns the worktree plus +`AGENT_ID`; a session without one lands manually rather than skipping the step. +A shared checkout dirtied by another session cannot fast-forward — pushing +`worktree-:main` straight from the task worktree lands without touching +that work, and the site scripts run there too since they resolve their root +from their own path. diff --git a/CLAUDE.md b/CLAUDE.md index 5fdb23d5..29bec7e6 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -17,6 +17,17 @@ afterward. ## Current guardrails +- **Finish means landed.** Completed work whose checks pass gets rebased onto + current `origin/main`, pushed to `main`, published with + `tools/site-deploy.sh` + `tools/site-smoke.sh`, and its worktree removed — + in the same session, without asking. Do not stop at "committed on a branch, + want me to land it?"; that is the ask, restated. If the shared checkout is + dirty with another session's work, `git merge --ff-only` there aborts: push + straight from the task worktree (`git push origin worktree-:main`) and + run the site scripts from the worktree, which resolve their root from their + own path. `site-smoke.sh` usually needs `SITE_SMOKE_ATTEMPTS=12`; the public + edge lags the push by minutes. Ask only when the *work itself* is genuinely + undecided — never about the merge. - Start repository work with the [tick](wiki/process/tick.md): `tools/tick-brief.sh` is the intake (commits, activity, status, decision labels, findings queue, stalest coverage in one shot); work the queues -- 2.51.2