Skip to content

[Context Fabric governance] Protect and adopt main as the integration/default branch #1137

Description

@seonghobae

Current accepted topology

The Context Fabric program has converged on main as the intended protected integration/default branch for both ContextualWisdomLab/context-graph-contracts and ContextualWisdomLab/enterprise-architecture-core. Historical guidance that kept develop as the long-term default/integration branch is superseded.

Fresh 2026-09-01 repository evidence:

context-graph-contracts

  • repository default_branch=develop;
  • develop@99cb5468ba3c15c5e79688f53dee74724fae2d13, reported protected;
  • main@99cb5468ba3c15c5e79688f53dee74724fae2d13, unprotected;
  • current root/stack PRs explicitly require eventual protected main integration and prohibit merging the stack through the obsolete develop integration model;
  • no GitHub release exists yet.

enterprise-architecture-core

  • repository default_branch=develop;
  • develop@1c0fa8b15ceb9e72186274aeb255d6777eb84ef4, reported protected;
  • main@ca6889497728e1a3f09d68790a9096576e13a3ff is the active product line but is not the default/protected integration authority;
  • current root/stack PRs explicitly require eventual protected main integration and treat the historical main -> develop synchronization lane as superseded;
  • no GitHub release exists yet.

Organization ruleset 18156473 targets ~DEFAULT_BRANCH. While repository metadata still names develop, the organization rule therefore follows the wrong long-term integration ref. This is a central control-plane defect, not a product-repository decision and not a reason to weaken release contracts.

Required safe transition

Execute in this order for each Context Fabric repository, refetching live state between every step:

  1. Pre-protect main first. Apply the intended integration/release-grade controls to main before changing default metadata. Preserve deterministic required workflows/security/coverage/package/SBOM/provenance/thread-resolution/deletion/non-fast-forward controls and prohibit routine bypass.
  2. Preserve transition protection on develop only as needed. Do not create a window where either integration candidate is unprotected while stacks are being reconstructed.
  3. Change repository default branch to main only after its effective protection is proven.
  4. Re-read organization/repository rulesets after the switch. Verify ~DEFAULT_BRANCH now resolves to main and that no required control silently fell away.
  5. Rebuild Context Fabric stacks dependency-first from fresh protected main. No predecessor-head review/check/package/provenance evidence transfers across base/default movement.
  6. Reacquire exact-head gates under the new topology. Merge through ordinary protected governance only when the unchanged candidate satisfies then-live policy.
  7. Release only from an exact protected integrated main SHA. Version, package, SBOM, provenance, reproducibility, conformance/admission and release metadata must identify the same immutable source/artifact set.

Interaction with solo-maintainer review governance

.github#772 independently owns the scoped removal/replacement of the structurally impossible generic approving-review-count rule for the current solo-maintainer organization. Self-approval remains forbidden and bot/model output is not human approval. This issue must not wait for fictional reviewer provisioning; branch topology and deterministic protection are executable central governance work.

RED acceptance

  • Accepted integration/default intent is main.
  • Repository metadata still says develop.
  • Organization ruleset 18156473 follows ~DEFAULT_BRANCH, therefore follows develop.
  • main is not yet the coherent protected default integration authority.
  • Context Fabric PR stacks cannot safely integrate/release without either using the obsolete topology or targeting an unprotected branch.

GREEN acceptance

For both Context Fabric repositories:

  • main has integration/release-grade effective protection before the default switch;
  • repository default_branch=main;
  • ~DEFAULT_BRANCH organization rules resolve to main and required deterministic controls remain enforced;
  • any temporary develop transition protection is explicit and may later be retired without weakening main;
  • root PRs are rebuilt against fresh protected main, descendants are restacked dependency-first, and all moved heads reacquire exact-current-head checks/reviews/artifacts;
  • a protected-main post-integration workflow run proves repository CI/package/security evidence on the resulting exact merge SHA;
  • no routine administrator bypass or stale/predecessor evidence is used.

Non-goals

  • Retargeting current stacks to unprotected main before protection exists.
  • Merging through develop merely because it is currently default.
  • Recreating obsolete main -> develop synchronization work.
  • Weakening deterministic gates during migration.
  • Treating open Context Graph/EA PR heads as released production contracts.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: apiAPI, protocol, event, or external contractarea: ci-cdCI, GitHub Actions, checks, release, or supply chainarea: dependenciesDependency or lockfile maintenanceenhancementNew feature or requestpriority: criticalImmediate blocker, P0, urgent deadlock, or critical incidenttype: featureNew or expanded product capability

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions