Framework Release, Versioning, and Deprecation Model¶
This guide is for maintainers releasing changes to Brain Factory's shared framework (its core layer). It lets you evolve the framework like a reusable product without heavy release bureaucracy. Throughout, an adopter is a project whose brain inherits the core layer; new to these terms? See Brain Factory: how it works.
Purpose¶
The framework already includes broad operational guidance (continuity, governance, queueing, portability, maturity, reporting, and checks), but its release lifecycle was left implicit.
This model makes that lifecycle explicit, covering how to:
- classify a framework change by its impact
- communicate meaningful changes to adopters
- represent framework version milestones
- deprecate and retire artifacts without silent breakage
- signal compatibility risk, migration burden, and required operator action
Design principles¶
- Keep GitHub artifacts as the durable system of record.
- Keep lifecycle rules lightweight and practical for a docs/governance-first framework.
- Make adopter impact explicit before merge.
- Avoid silent expectation shifts in templates, checks, workflows, or core guidance.
Versioning model (lightweight SemVer for framework guidance)¶
Version the framework with Semantic Versioning in vMAJOR.MINOR.PATCH form: bump MAJOR for breaking changes, MINOR for backward-compatible additions, and PATCH for fixes that change nothing operational. The rules below adapt those levels to a docs- and governance-first framework.
Change classification rules¶
| Level | Use when | Typical examples | Adopter impact |
|---|---|---|---|
PATCH |
Clarifies existing behavior without changing expected operating contract | wording fixes, typo fixes, stronger examples, non-semantic cross-link cleanup | Usually no adopter action |
MINOR |
Adds or improves capabilities in a backward-compatible way | new optional guidance/runbook/template, additive check guidance, new review packet templates | Selective adoption encouraged |
MAJOR |
Changes required operating expectations or retires previously valid paths | required field changes, required validation/gating changes, removed canonical artifact, changed invariant/policy semantics | Planned upgrade action required |
Guardrails for classification¶
- If maintainers or adopters must change how they operate to stay compliant, treat as
MAJOR. - If behavior is additive and existing adoption remains valid, treat as
MINOR. - If uncertainty exists between
MINORandMAJOR, chooseMAJORor document rationale explicitly in the PR.
Compatibility signaling expectations¶
Every meaningful change (MINOR/MAJOR, and any non-trivial PATCH) should
carry an explicit compatibility signal in the release summary:
- Backward compatible — existing adopters can continue without immediate changes.
- Backward compatible with migration — old behavior remains valid short-term, but migration is needed before a stated future boundary.
- Not backward compatible — required operating expectations changed now.
Pair this with:
- a migration-burden estimate (
Low/Medium/High) - explicit operator action level (
Informational/Recommended/Required)
Release communication model¶
Durable release artifacts¶
For meaningful framework updates (MINOR/MAJOR), publish one durable release artifact:
- a GitHub Release entry, or
- a release-summary issue/discussion linked from the merge PR(s).
PATCH changes may be batched into the next MINOR release note unless they fix urgent ambiguity.
Use framework-release-notes.md as the durable quick-scan
index and
framework-change-summary-template.md for
consistent summary packets.
For detailed release-summary rules (including action levels and profile/maturity
applicability), use
framework-release-notes-and-upgrade-summaries.md.
Required release note sections¶
Each MINOR/MAJOR release note should include:
- What changed (new/changed/retired framework artifacts)
- Change level (
MINORorMAJOR) with rationale - Adopter impact (
no action,recommended action, orrequired action) - Compatibility signal (
backward compatible,backward compatible with migration, ornot backward compatible) - Migration burden (
low,medium,high) with rationale - Deprecations and timelines (if any)
- Upgrade steps (bounded checklist)
- Applicability scope (
universal,profile-specific,maturity-gated,optional) - Related artifacts (issue, PR, ADR, runbook, health/governance updates)
Deprecation lifecycle¶
Use this state model for docs/templates/scripts/workflows/process conventions:
- Active — current recommended path.
- Deprecated — still usable, but replacement exists and retirement is planned.
- Removed — no longer supported as a current path; retained history remains traceable in Git.
Deprecation rules¶
When marking an artifact or practice as deprecated:
- Open or link a durable issue/PR that explains why.
- Name the replacement path (or explicit rationale if none).
- Add a deprecation notice at the top of the deprecated artifact when practical.
- Record expected removal target as a version milestone or explicit follow-up issue.
- Update discoverability links so new contributors land on the replacement first.
- Include the deprecation/removal linkage in release communication so policy state and adopter upgrade expectations stay traceable together.
Minimum notice expectation¶
- Do not remove deprecated canonical artifacts in the same PR that first deprecates them, except for urgent security/safety reasons.
- Keep at least one review cycle (and preferably one
MINORrelease boundary) between deprecation and removal.
Maintainer workflow¶
For framework-change PRs with lifecycle impact:
- Classify change level (
PATCH/MINOR/MAJOR) in issue + PR packet. - Add compatibility signal, migration burden estimate, and operator action level.
- Confirm deprecation handling if any artifact/practice is being retired.
- Update cross-links (
README.md,docs/README.md,AGENTS.md) when new canonical lifecycle guidance appears. - Update governance/health/continuity references when lifecycle expectations change.
- Capture validation evidence in the PR and include release communication links.
If the change redefines framework policy semantics, open or update an ADR.
Adopter workflow¶
When consuming framework updates:
- Identify your currently adopted framework version snapshot.
- Read all
MINOR/MAJORrelease notes since that snapshot. - Open one bounded upgrade issue with:
- impacted artifacts in your repo
- required vs optional changes
- validation expectations
- Apply updates in bounded PRs and preserve invariant checks.
- Record deferred lifecycle work as explicit follow-up issues.
Anti-patterns to avoid¶
- Silent required-field or required-check changes with no release communication.
- Immediate removal of artifacts with no replacement path or transition window.
- Treating all framework updates as equal-impact.
- Storing lifecycle decisions only in chat without issue/PR/ADR writeback.
Mobile quick action¶
- Use when: you need to quickly classify framework change impact or confirm deprecation status from mobile.
- Do from mobile:
- confirm whether the active change is
PATCH,MINOR, orMAJOR - verify deprecations include replacement path and target removal note
- capture missing lifecycle details in the active issue/PR
- Do not do from mobile:
- redesign release/versioning policy without coordinated review
- remove deprecated canonical artifacts without desktop validation
- Escalate to desktop/cloud when:
- release note updates span multiple docs/templates/workflows
- lifecycle changes require governance/health/continuity cross-document updates
- Primary artifact to update:
- the framework-change issue or pull request carrying the lifecycle decision.
Related docs¶
- Framework upgrade and adoption maintenance
- Framework change governance and deprecation policy
- Framework release notes and upgrade summaries
- Framework release notes index
- Framework change summary template
- Maintain framework alignment
- Framework continuity and memory
- Framework setup intent schema and application model
- Governance checklist
- Framework health
- Framework portability and adoption
- Framework adoption maturity model
- Framework starter kit / bootstrap pack
- Framework roadmap: next GitHub agent prompts
- Start a framework change