LearnNewsExamplesServices
Frontmatter
id14220
titleStacked PRs get lint-only CI → no cross-family review until dev-rebase
stateClosed
labels
enhancementaiarchitecturemodel-experience
assigneesneo-gpt
createdAtJun 27, 2026, 9:37 AM
updatedAtJun 27, 2026, 11:53 AM
githubUrlhttps://github.com/neomjs/neo/issues/14220
authorneo-opus-grace
commentsCount1
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAtJun 27, 2026, 11:53 AM

Stacked PRs get lint-only CI → no cross-family review until dev-rebase

Closed v13.1.0/archive-v13-1-0-chunk-7 enhancementaiarchitecturemodel-experience
neo-opus-grace
neo-opus-grace commented on Jun 27, 2026, 9:37 AM

Context

Surfaced by Euclid's (@neo-gpt, cross-family) review-deferral on PR #14210 (2026-06-27 07:27) during the live cross-family-review experiment (operator asked Euclid to /pr-review all open PRs). Euclid: "full CI missing on stacked read-path head." This is a process/workflow friction→gold, not a code bug.

The Problem

A stacked PR — base = another feature-branch, not dev — runs only the lint checks (lint-pr-body, lint-pr-review-body). The full CI (unit, integration-unified, CodeQL, check) is gated on a dev base, so a stacked head never gets it. Consequence: a stacked slice has no full CI to validate against, so the cross-family merge-gate review (ADR-0019) cannot proceed — a rigorous reviewer correctly defers.

Same-family reviewers can (and did) APPROVE a stacked slice on code-correctness (#14210 carried Ada + Vega approvals) without gating on CI-completeness; the cross-family reviewer held the stricter merge-readiness bar. So the gap silently lets same-family approval stand in for a gate the cross-family reviewer can't actually clear yet.

Verified (V-B-A):

  • gh pr checks 14210 (base ada/14206-singlesource-write) → only lint-pr-body + lint-pr-review-body green; no unit/integration.
  • gh pr checks 14202 (base dev) → full CI green (unit, integration-unified, CodeQL, check).

The Architectural Reality

The CI workflows (.github/workflows/*) gate the full-CI jobs on a dev target. Stacked / slice-based work is now common (the #14193 de-dup slices #14202#14207#14210, the lease-extract slices, etc.), so this recurs every time a slice awaits cross-family review while still stacked. The cross-family gate (ADR-0019, correlated-blind-spot defense) requires full CI to validate against.

The Fix (converge in review)

Option A — workflow NORM (recommended, KISS): same-family code review happens while stacked; the cross-family merge-gate review happens after the slice rebases onto dev (full CI on a non-stacked head). The stack merges bottom-up, with cross-family review at each dev-rebase. Encode the sequencing in the pull-request + pr-review skills (request cross-family review post-rebase; a reviewer seeing a stacked lint-only head defers + requests the rebase). Cheap, no extra CI minutes.

Option B — run full CI on stacked heads too: a CI-config change so stacked PRs get the full suite. Costs CI-minutes on intermediate heads that aren't merging yet.

Recommendation: A. Intermediate stacked heads don't need full CI — only the about-to-merge dev-rebased head does. A is a discipline/doc change; B spends CI on throwaway intermediate states.

Decision Record impact

aligned-with ADR-0019 (cross-family review gate / correlated-blind-spot defense). Closes a workflow gap that currently lets the gate be bypassed for stacked work; does not amend or challenge the ADR.

Acceptance Criteria

  • The stacked-PR review-sequencing norm is documented in pull-request + pr-review skills: cross-family merge-gate review is requested after a slice rebases onto dev (a non-stacked, full-CI head), not while stacked.
  • A reviewer encountering a stacked PR (base ≠ dev) with lint-only CI has a clear protocol: defer + request the author rebase onto dev, rather than approve on partial CI.
  • (If Option B is chosen instead) full CI runs on stacked heads — decided + implemented + the norm above is moot.

Out of Scope

  • The de-dup stack's actual bottom-up merge (that's #14193 execution, not this norm).
  • Changing the full-CI dev-gate for ordinary (non-stacked) PRs.

Avoided Traps

  • Don't run full CI on every intermediate stacked head reflexively (Option B's cost) — only the merge-candidate dev-rebased head needs it.
  • Don't let same-family approval substitute for the cross-family gate on stacked work — the gate genuinely can't clear without full CI; the deferral is correct rigor, not friction to route around.

Related

  • #14210 (the deferral instance), #14193 / #14079 (the de-dup stack that exposed it), ADR-0019 (cross-family review gate).

Live latest-open sweep: checked latest 20 open issues at 2026-06-27 ~07:33; no equivalent found.

Origin Session ID: 090a68e6-1a28-4b20-a5fd-842ebac3e729 Retrieval Hint: "stacked PR lint-only CI cross-family review deferral" / "review-after-rebase norm"

tobiu referenced in commit f784c21 - "docs(agentos): codify stacked PR review-after-rebase norm (#14220) (#14221)" on Jun 27, 2026, 11:53 AM
tobiu closed this issue on Jun 27, 2026, 11:53 AM