main and development have diverged
main is not an ancestor of development: 1 commit(s) on main are
missing from development.
10c4d24 Merge pull request #480 from views-platform/development
Fix with the back-merge, as a merge commit — never a squash, which creates yet another
commit that is not main, so this would reopen:
gh pr create --base development --head main --title "chore: sync main back into development"
Every release promotion leaves one merge commit on main that development has not
seen. Expected immediately after a release; a problem if it persists.
See docs/guides/publishing_to_pypi.md §C.5 and #402.
A deploy gate failed
"See publishing_to_pypi.md §C.5. Detection also runs daily "
"via .github/workflows/release-topology.yml."
)
E AssertionError: main is not an ancestor of development. Normal right after a release, and healed by the back-merge: gh pr create --base development --head main, merged as a MERGE COMMIT (a squash recreates the divergence). See publishing_to_pypi.md §C.5. Detection also runs daily via .github/workflows/release-topology.yml.
E assert 1 == 0
E + where 1 = CompletedProcess(args=['git', 'merge-base', '--is-ancestor', 'main', 'development'], returncode=1, stdout=b'', stderr=b'').returncode
tests/test_falsification_deploy_v160.py:159: AssertionError
____________ TestDF1MergeTopology.test_main_ancestor_of_development ____________
self = <test_falsification_deploy_v160_r2.TestDF1MergeTopology object at 0x7f181c7de9d0>
def test_main_ancestor_of_development(self) -> None:
result = subprocess.run(
["git", "merge-base", "--is-ancestor", "main", "development"],
capture_output=True,
)
# 0 = ancestor, 1 = not; other codes mean refs/history missing
# (CI shallow checkout) — local pre-deploy gate, skip there (C-320).
if result.returncode not in (0, 1):
pytest.skip(
"main/development refs unavailable (shallow CI "
"checkout) — deploy gate runs locally"
)
> assert result.returncode == 0, (
"main is not an ancestor of development. Expected right "
"after a release: promotion leaves a merge commit on main "
"that development has not seen. Fix with the back-merge — "
"gh pr create --base development --head main — merged as a "
"MERGE COMMIT, never a squash (a squash creates yet another "
"commit that is not main). See publishing_to_pypi.md §C.5."
)
E AssertionError: main is not an ancestor of development. Expected right after a release: promotion leaves a merge commit on main that development has not seen. Fix with the back-merge — gh pr create --base development --head main — merged as a MERGE COMMIT, never a squash (a squash creates yet another commit that is not main). See publishing_to_pypi.md §C.5.
E assert 1 == 0
E + where 1 = CompletedProcess(args=['git', 'merge-base', '--is-ancestor', 'main', 'development'], returncode=1, stdout=b'', stderr=b'').returncode
tests/test_falsification_deploy_v160_r2.py:50: AssertionError
=========================== short test summary info ============================
SKIPPED [1] tests/test_falsification_deploy_v160.py:275: local-clone hygiene is not answerable on a fresh CI runner — actions/checkout leaves one local branch, so this would pass without inspecting anything. The remote half of this class DOES run in CI.
2 failed, 3 passed, 1 skipped in 1.97s
These gates used to run only where someone typed pytest (C-341). Reproduce locally with:
uv run pytest tests/test_falsification_deploy_v160.py tests/test_falsification_deploy_v160_r2.py
Note the local run checks more than this one: the local-clone branch hygiene gate skips
on CI by design, because a fresh runner has one local branch and would pass without
inspecting anything.
Detected by release-hygiene. This issue is reused rather than duplicated,
and closes itself once every check passes again.
main and development have diverged
mainis not an ancestor ofdevelopment: 1 commit(s) onmainaremissing from
development.Fix with the back-merge, as a merge commit — never a squash, which creates yet another
commit that is not
main, so this would reopen:gh pr create --base development --head main --title "chore: sync main back into development"Every release promotion leaves one merge commit on
mainthatdevelopmenthas notseen. Expected immediately after a release; a problem if it persists.
See
docs/guides/publishing_to_pypi.md§C.5 and #402.A deploy gate failed
These gates used to run only where someone typed
pytest(C-341). Reproduce locally with:Note the local run checks more than this one: the local-clone branch hygiene gate skips
on CI by design, because a fresh runner has one local branch and would pass without
inspecting anything.
Detected by release-hygiene. This issue is reused rather than duplicated,
and closes itself once every check passes again.