Skip to content

Latest commit

 

History

History
164 lines (116 loc) · 4.04 KB

File metadata and controls

164 lines (116 loc) · 4.04 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog and this project adheres to Semantic Versioning.



0.1.0 - 2026-05-23

Added

  • Established se-contract-kit as the generic contract loading, resolution, and validation engine for Structural Explainability contract repositories.
  • Added staged source layout:
    • base
    • declarations
    • resolution
    • validation
  • Added repository declaration loading for MANIFEST.toml and SE_MANIFEST.toml.
  • Added contract configuration loading for contract.toml.
  • Added dependency reference parsing.
  • Added artifact and authority resolution primitives.
  • Added lockfile data structures and JSON read/write support.
  • Added immutable validation check registry for kit defaults and repository-specific extensions.
  • Added validation result model using the shared check status vocabulary.
  • Added validation runner with strict-mode support.
  • Added initial generic validation checks.
  • Added se-contract-kit command-line entry point.
  • Added repository manifest, citation metadata, documentation, tests, and release configuration.

Changed

  • Separated generic contract-engine machinery from Accountable Record contract content.

Notes on Versioning and Releases

This project follows Semantic Versioning.

  • MAJOR versions indicate breaking changes.
  • MINOR versions indicate backward-compatible additions or clarifications.
  • PATCH versions indicate editorial fixes, documentation updates, or non-normative changes.

Versions are defined by git tags of the form vX.Y.Z. Tagged releases are the authoritative source of version state.

Release Procedure (Required)

Follow these steps exactly when creating a new release.

Task 1. Update release metadata (manual edits)

1.1. CITATION.cff - update version and date-released 1.2. CHANGELOG.md: add section, move unreleased entries, update links 1.3. Confirm pyproject.toml fallback version matches CITATION.cff

Task 2. Validate

uv self update
uv python pin 3.14
uv sync --extra dev --extra docs --upgrade

uvx pre-commit install

git add -A
uvx pre-commit run --all-files
# repeat if changes were made
git add -A
uvx pre-commit run --all-files

# validate manifest
uv run se-manifest validate-manifest --path MANIFEST.toml --strict

# run contract-kit checks
uv run se-contract-kit check --strict

# types, tests, docs
uv run python -m pyright
uv run python -m pytest
uv run python -m zensical build
uvx pre-commit run --all-files

Task 3. Build and check artifacts locally

rm -rf dist
uv build

uvx twine check dist/*

For this repo, also confirm the wheel contains the packaged manifest:

python - <<'PY'
import pathlib
import zipfile

wheels = list(pathlib.Path("dist").glob("*.whl"))
assert wheels, "No wheel found"

wheel = wheels[-1]
names = zipfile.ZipFile(wheel).namelist()
expected = "se_contract_kit/_contract/MANIFEST.toml"

print([name for name in names if name.endswith("MANIFEST.toml")])

assert expected in names, f"Wheel is missing {expected}"
PY

Task 4. Commit, push, tag

git add -A
git commit -m "Prepare X.Y.Z"
git push -u origin main

Verify GitHub Actions pass on main. After success:

git tag vX.Y.Z -m "X.Y.Z"
git push origin vX.Y.Z

Task 5. Verify tag consistency

uv run se-manifest check-version --require-tag

Confirms CITATION.cff version matches the pushed git tag. Run this after git push origin vX.Y.Z; it will fail before that point.

Only As Needed (delete a tag)

git tag -d vX.Z.Y
git push origin :refs/tags/vX.Z.Y

Links