base120

Governance Change Classification Decision Tree

Quick reference for determining your change class and requirements.

🌳 Decision Tree

Start here and follow the branches:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  What files are you changing?       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
               β”‚
               β–Ό
       β”Œβ”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”
       β”‚ Only *.md     β”‚ YES β†’ ┐
       β”‚ files?        β”‚       β”‚
       β””β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜       β”‚
               β”‚ NO            β”‚
               β–Ό               β”‚
       β”Œβ”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”       β”‚
       β”‚ registries/   β”‚       β”‚
       β”‚ *.json?       β”‚ YES β†’ [FM - Level 5]
       β””β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜       β”‚
               β”‚ NO            β”‚
               β–Ό               β”‚
       β”Œβ”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”       β”‚
       β”‚ schemas/ or   β”‚       β”‚
       β”‚ schema.py?    β”‚ YES β†’ [Schema - Level 4]
       β””β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜       β”‚
               β”‚ NO            β”‚
               β–Ό               β”‚
       β”Œβ”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”       β”‚
       β”‚ tests/corpus/ β”‚ YES β†’ [Corpus - Level 3]
       β”‚               β”‚       β”‚
       β””β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜       β”‚
               β”‚ NO            β”‚
               β–Ό               β”‚
       β”Œβ”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”       β”‚
       β”‚ base120/      β”‚       β”‚
       β”‚ validators/   β”‚ YES β†’ [FM - Level 5]
       β”‚ (not schema)  β”‚       β”‚
       β””β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜       β”‚
               β”‚ NO            β”‚
               β–Ό               β”‚
       β”Œβ”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”       β”‚
       β”‚ Breaking any  β”‚ YES β†’ [Breaking - Level 5+]
       β”‚ tests?        β”‚       β”‚
       β””β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜       β”‚
               β”‚ NO            β”‚
               β–Ό               β”‚
       β”Œβ”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”       β”‚
       β”‚ Other files   β”‚       β”‚
       β”‚ (CI, docs,    β”‚ YES β†’ [Editorial - Level 2]
       β”‚ examples)     β”‚       β”‚
       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β”‚
                               β”‚
               β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
               β–Ό
       β”Œβ”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”
       β”‚ Only typos/   β”‚
       β”‚ formatting?   β”‚ YES β†’ [Trivial - Level 1]
       β””β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜
               β”‚ NO
               β–Ό
       [Editorial - Level 2]

πŸ“Š Quick Classification Matrix

Files Changed Semantic Impact Classification Level
Only *.md (typos) None Trivial 1
docs/, README.md Structure only Editorial 2
tests/corpus/valid/ (add) New test Corpus 3
tests/corpus/valid/ (modify) Test change Corpus (needs review) 3
schemas/*.json Validation rules Schema 4
registries/*.json FM mappings FM 5
base120/validators/*.py Core logic FM 5
Any (breaks tests) API change Breaking 5+

βœ… Requirements Checklist

Once you’ve identified your change class, use this checklist:

Level 1: Trivial

β–‘ Only *.md files changed
β–‘ Only typos/formatting/comments
β–‘ No semantic changes
β–‘ CODEOWNER approval only

Level 2: Editorial

β–‘ Documentation structure changes
β–‘ Examples added/improved
β–‘ No code changes
β–‘ CODEOWNER approval only
β–‘ Documentation builds (if applicable)

Level 3: Corpus (Additions)

β–‘ Added new test in tests/corpus/
β–‘ All existing tests pass
β–‘ New test passes
β–‘ Justification in commit/PR
β–‘ CODEOWNER approval
β–‘ Audit update (commit message OK)

Level 3: Corpus (Modifications)

β–‘ Modified existing test in tests/corpus/
β–‘ Clear justification (why was old test wrong?)
β–‘ All tests pass
β–‘ PR description explains impact
β–‘ CODEOWNER + 1 reviewer approval
β–‘ Audit update in GOVERNANCE.md

Level 4: Schema

β–‘ Full test suite passes
β–‘ Corpus diff reviewed
β–‘ Backward compatibility analysis provided
β–‘ Audit update in GOVERNANCE.md
β–‘ CODEOWNER + 1 reviewer approval
β–‘ Mathematical soundness justification
β–‘ v1.0.x: PROHIBITED (unless security fix)

Level 5: FM

β–‘ Full test suite passes
β–‘ Mathematical soundness proof provided
β–‘ Impact analysis on all corpus cases
β–‘ Audit update in GOVERNANCE.md with rationale
β–‘ CODEOWNER + 2 reviewers approval
β–‘ Formal proof or detailed justification
β–‘ v1.0.x: PROHIBITED (unless security fix)

Level 5+: Breaking

β–‘ Full test suite passes with updated expectations
β–‘ Migration guide for users
β–‘ Deprecation warnings (if phased)
β–‘ Audit update in GOVERNANCE.md
β–‘ Version bump justification
β–‘ CODEOWNER + 3 reviewers approval
β–‘ Governance board approval
β–‘ v1.0.x: PROHIBITED (defer to v1.1.0)

🚦 v1.0.x Special Rules

If pyproject.toml version starts with 1.0.:

βœ… PERMITTED

❌ PROHIBITED

πŸ”“ Override Process

  1. Create issue with β€œgovernance-override” label
  2. Provide detailed justification
  3. Tag @hummbl-dev
  4. Wait for governance decision
  5. Document override in GOVERNANCE.md

πŸ€” Edge Cases

β€œI changed multiple types of files”

Classification: Highest impact level wins

Example:

β€œI only added comments to Python code”

Classification: Should be Trivial, but classifier may flag as FM

Action:

  1. Note in PR description: β€œComments only, no semantic changes”
  2. CODEOWNER will review and confirm
  3. CI warnings OK to ignore in this case

β€œMy change is permitted in v1.0.x but CI blocks it”

Classification: Likely a security fix or CI hardening

Action:

  1. Verify change is truly permitted (check GOVERNANCE.md)
  2. Add β€œv1.0.x exception: [security/ci]” to PR title
  3. Provide justification in PR description
  4. Add audit entry to GOVERNANCE.md
  5. Request CODEOWNER review

β€œI’m fixing a bug, is that breaking?”

Classification: Depends on test impact

Decision:

β€œI’m adding a new feature in v1.0.x”

Classification: Breaking (prohibited in v1.0.x)

Action:

  1. Create issue with β€œv1.1.0” milestone
  2. Describe feature
  3. Wait for v1.1.0 planning
  4. Defer implementation

πŸ“ž Quick Help

Fast Classification

# Run this in your branch:
git diff --name-only main | sort

# Count files by type:
git diff --name-only main | grep '\.md$' | wc -l  # Docs
git diff --name-only main | grep 'registries/' | wc -l  # Registries
git diff --name-only main | grep 'corpus/' | wc -l  # Corpus

# If 100% docs β†’ Trivial/Editorial
# If any registries β†’ FM
# If any corpus β†’ Corpus
# If any base120/*.py β†’ FM or Schema

Fast Evidence Check

# Required for Level 3+:
pytest tests/test_corpus.py -v  # Must pass

# Required for Level 4+:
pytest -v  # Full suite must pass

# Check for audit update:
git diff main GOVERNANCE.md  # Should show changes

Fast v1.0.x Check

# Check version:
grep '^version' pyproject.toml

# Check prohibited files:
git diff --name-only main | grep -E 'schemas/v1.0.0/|registries/'

# If any matches β†’ PROHIBITED in v1.0.x

🎯 Examples by Scenario

Scenario: β€œFix typo in README”

Scenario: β€œAdd new valid corpus test”

Scenario: β€œFix bug in validator logic”

Scenario: β€œUpdate documentation examples”



Document Version: 1.0.0
Last Updated: 2026-01-03
Related: GOVERNANCE.md v2.0.0
Status: Reference Guide