All notable changes to the agent-bootstrap system are recorded here.
Formal versioning begins with this release (Milestone 13). Earlier milestones (1–12) are recorded below as pre-release development history for context.
The format follows Keep a Changelog. This project uses Semantic Versioning.
tests/test_bootstrap_doctor.py— 77 bounded contract tests covering all key target-repo diagnosis semantics inbootstrap_doctor.py: all six health state classifications, version comparison helpers (_semver_tuple,_is_materially_behind), marker status, required-files status, placeholder status, profile alignment classification, recommended next-action guidance for every health state, era classification alignment between doctor andbootstrap_core, andaudit()integration tests using real temporary directories.
scripts/validate_bootstrap.py: addedtests/test_bootstrap_doctor.pytoBOOTSTRAP_REPO_REQUIRED_FILES(42 required files, 47 total checks).bootstrap-manifest.yaml: addedtests/test_bootstrap_doctor.pytobootstrap_repo_required_files.AGENTS.md: expanded "Bootstrap doctor — advisory-only rules" section with anti-drift rules: diagnostic semantics are contract-tested and must not drift casually; changes to doctor/status/suggest shared meaning require test updates.README.md: updated repository layout tree; expanded "Contract tests" section to documenttest_bootstrap_doctor.pycoverage and the conservative-behavior guarantees that the tests prove.
scripts/bootstrap_core.py— small shared internal module centralising the bootstrap semantics reused across multiple scripts:PLACEHOLDER_RE,SEMVER_RE,read_version(),load_manifest(),get_supported_profiles(),resolve_profile(),get_bootstrap_marker_path(),parse_bootstrap_marker(),classify_marker_era(),is_placeholder(),has_placeholders(),find_placeholders(),resolve_template_mappings(), and the canonicalPROFILESdict.tests/test_bootstrap_core.py— 39 bounded contract tests covering all public helpers inbootstrap_core.py: regex constants, version parsing, manifest loading, profile enumeration/validation, template mapping resolution, marker parsing, era classification, and placeholder helpers.
scripts/apply_bootstrap.py: importsPROFILES,DEFAULT_PROFILE,read_version,resolve_template_mappings,get_supported_profilesfrombootstrap_core; removed duplicated definitions.scripts/refresh_bootstrap.py: importsPLACEHOLDER_RE,PROFILES,DEFAULT_PROFILE,read_version,resolve_template_mappings,get_bootstrap_marker_path,parse_bootstrap_marker,has_placeholdersfrombootstrap_core; removed duplicated definitions;classify_file()useshas_placeholders().scripts/bootstrap_status.py: importsSEMVER_RE,read_version,parse_bootstrap_marker,is_placeholder,classify_marker_erafrombootstrap_core; removed duplicatedparse_marker()/is_placeholder();report_target_status()usesclassify_marker_era()for era logic.scripts/bootstrap_doctor.py: importsPLACEHOLDER_RE,SEMVER_RE,parse_bootstrap_marker,is_placeholder,classify_marker_era,find_placeholdersfrombootstrap_core; removed duplicated definitions;classify_era()delegates toclassify_marker_era().scripts/validate_bootstrap.py: importsPLACEHOLDER_REfrombootstrap_core.scripts/run_fixture_selftest.py: importsPLACEHOLDER_REfrombootstrap_core.scripts/validate_bootstrap.py: addedscripts/bootstrap_core.pyandtests/test_bootstrap_core.pytoBOOTSTRAP_REPO_REQUIRED_FILES(41 required files, 46 total checks).bootstrap-manifest.yaml: addedscripts/bootstrap_core.pyandtests/test_bootstrap_core.pytobootstrap_repo_required_files..github/workflows/ci.yml: addedscripts/bootstrap_core.pyto py_compile check; addedpython -m unittest discover -s tests -p 'test_*.py' -vstep before fixture self-tests.README.md: added## Shared bootstrap coresection; updated repo layout; updated CI table; updated local-validation command block.AGENTS.md: added## Shared bootstrap core and contract testssection with anti-drift rules; updated CI commands; updated profile-expansion rule to referencebootstrap_core.pyas the authoritativePROFILESsource; updated forbidden actions to referencebootstrap_core.py.
scripts/suggest_profile.py— read-only profile suggestion tool. Inspects a target repository and suggests the most likely bootstrap profile using explicit file-system signals. Reports confidence (high/medium/low), matched signals, alternative candidates, and the recommendedapply_bootstrap.pycommand. Supports--verbose(shows all profile scores and alternative signal detail) and--json(machine-readable output). Exits 0 on successful suggestion; exits 1 only on true errors (missing target dir, unreadable path).
scripts/run_fixture_selftest.py: added State E (profile suggestion proof); both fixtures now prove their expected profile suggestion. Summary now shows E label. Mode line updated to reflect State E.scripts/validate_bootstrap.py: addedscripts/suggest_profile.pytoBOOTSTRAP_REPO_REQUIRED_FILES(38 required files, 43 total checks).scripts/bootstrap_status.py: addedscripts/suggest_profile.pytoCORE_SCRIPTS.bootstrap-manifest.yaml: addedscripts/suggest_profile.pytobootstrap_repo_required_files.README.md: added## Profile suggestion — choosing the right profilesection.AGENTS.md: added## Profile suggestion — advisory-only rulessection.
scripts/bootstrap_status.py— status/report tool for the bootstrap source repo and bootstrapped target repos. Reports version, revision, CHANGELOG state, core docs/scripts, supported profiles, and version/changelog coherence.docs/BOOTSTRAP_RELEASE_WORKFLOW.md— concise repeatable release checklist covering patch/minor/major decisions, required local checks, CI expectations, changelog conventions, and post-merge verification.- Changelog coherence check (
check_changelog_coherence()) inscripts/validate_bootstrap.py: verifies thatCHANGELOG.mdrepresents the current version as a release heading or has an[Unreleased]section.
scripts/validate_bootstrap.py:check_version_file()now returns the version string so the coherence check can use it; changelog coherence added as Check 4 in source repo validation (42 total checks); new required files added toBOOTSTRAP_REPO_REQUIRED_FILES.bootstrap-manifest.yaml: addeddocs/BOOTSTRAP_RELEASE_WORKFLOW.mdandscripts/bootstrap_status.pytobootstrap_repo_required_files..github/workflows/ci.yml: addedscripts/bootstrap_status.pyto thepy_compilesyntax-check step.README.md: added## Bootstrap status and release workflowsection.AGENTS.md: added## Release disciplinesection with release contract rules.
First formalized bootstrap release. Establishes the versioning and upgrade policy for the bootstrap system.
VERSIONfile as the single source of truth for the bootstrap version.CHANGELOG.md(this file) for recording changes across releases.docs/BOOTSTRAP_VERSIONING.mdwith the compatibility and upgrade policy: semver semantics, patch/minor/major definitions, refresh-safety expectations, and guidance for pre-version markers.Bootstrap source revisionrow intemplates/bootstrap/BOOTSTRAP_SOURCE.md.templateto record the git commit SHA separately from the semver version.BOOTSTRAP_SOURCE_REVISIONauto-filled placeholder in apply and refresh scripts.- Version comparison output in
refresh_bootstrap.py(current vs prior version). - Major-version drift warning in
refresh_bootstrap.pywhen the target's recorded version has a different major than the current bootstrap version. - Version readability check in
validate_bootstrap.pyfor theVERSIONfile.
BOOTSTRAP_SOURCE_VERSIONin the bootstrap marker now records the semver version from theVERSIONfile rather than a raw git SHA. The git SHA is now recorded separately asBOOTSTRAP_SOURCE_REVISION.apply_bootstrap.pyandrefresh_bootstrap.pyreadVERSIONfor the primary version and use git SHA only as supplemental revision metadata.validate_bootstrap.pyrequiresVERSION,CHANGELOG.md, anddocs/BOOTSTRAP_VERSIONING.mdas part of the bootstrap source repo.bootstrap-manifest.yamlupdated to reference new required files andBOOTSTRAP_SOURCE_REVISIONas an auto-filled placeholder.
- See
docs/BOOTSTRAP_VERSIONING.mdfor the full upgrade and compatibility policy.
The following milestones were completed before formal versioning was established. No release tags correspond to these entries; they are recorded for context only.
- Milestone 12 — Manifest-driven bootstrap profiles (generic, python-service, infra-repo, vscode-extension, kubernetes-platform).
- Milestone 11 — Safe refresh / upgrade lifecycle path (
refresh_bootstrap.py). - Milestone 10 — GitHub Actions CI regression gate.
- Milestone 9 — End-to-end fixture self-test harness.
- Milestone 8 — Target-repo scaffold apply path (
apply_bootstrap.py). - Milestone 7 — Target-repo validation mode in
validate_bootstrap.py. - Milestone 6 — Schemas for
repo_discovery.jsonandimplementation_tracker. - Milestone 5 — Prompts:
new-repo-bootstrap,existing-repo-discovery,resume-work,bounded-implementation,closeout-and-handoff. - Milestone 4 — Templates:
AGENTS.md,IMPLEMENTATION_TRACKER.md,REPO_MAP.md,SOURCE_REFRESH.md,AI_AGENT_VENDOR_KNOWLEDGE_BASE.md,BOOTSTRAP_SOURCE.md,repo_discovery.json. - Milestone 3 —
bootstrap-manifest.yamlcontrol plane established. - Milestones 1–2 — Initial repo structure,
AGENTS.md,IMPLEMENTATION_TRACKER.md,validate_bootstrap.py.