← All features

Verify and reviewAvailable in v0.3.0

Landing after you confirm

oah land --check decides whether the exact reviewed head may land, printing one line each for lease, intent, review, gates, impact, required checks, fast-forward, secret scan and CI. oah land --merge runs every check again, asks you to confirm, and only then fast-forwards the remote default branch to exactly that head.

When you need it

Merging without a converged review, passing CI or a secret scan is easy to do by accident, and an agent should never push or merge on its own.

How it works

  1. oah land --check --task T prints one line per check: lease, intent, review, gates, impact, required-checks, fast-forward, scan and ci.
  2. gh reads HEAD's check runs and commit statuses; all latest results must be successful (check runs may also be neutral or skipped), with a result for every configured required check.
  3. oah land --merge --task T reruns every check, asks you to confirm by typing y, and fast-forwards the remote default branch to exactly HEAD only if it still equals the commit just checked.
  4. If someone else landed first, nothing is pushed: fetch, reassess and try again.
  5. Missing gh, no results or a missing required check makes CI unverified, which blocks by default (OAH_LAND_CI_UNVERIFIED). --accept-unverified-ci "<reason>" on both commands records a per-head exception, and CI stays unverified, never a pass.

Example

Check, then land after confirming (worked example, step 9).

oah land --check --task hello-name
oah land --merge --task hello-name

Requirements

  • gitleaks for the scan; without it the scan line fails with OAH_LAND_SCAN_REQUIRED and nothing is pushed.
  • gh, signed in, for reading CI results.
  • A remote with a URL or an absolute path; landing refuses a relative path.

Limits and recovery

  • Failed CI (OAH_LAND_CI_FAILED) or pending or unreadable CI (OAH_LAND_CI_PENDING) blocks landing, and no exception can bypass them or any other failed check.
  • A commit after the converged review needs a new round (OAH_LAND_REVIEW_REQUIRED).
  • The [land] policy comes from the target branch's committed .oah/config.toml; loosening it in the task head refuses with OAH_LAND_POLICY_LOOSENED.
  • GitHub branch rules are separate and still apply.

Original documents

Related