Skip to content

v10.0.0 — clean-slate methodology rebuild

Choose a tag to compare

@nullhack nullhack released this 07 Jul 08:35
· 4 commits to main since this release
b17707f

What changed

A clean-slate rebuild of the methodology layer, with five dogfood fixes that tighten the staged-contract pipeline, a test-driven narrative reset, and a release workflow with trusted PyPI publishing.

Pipeline fixes (dogfood)

  • model-data-schema state (plan entry) — the Data Architect authors data-model.md as a binding input to every downstream plan state. Workload is classified OLTP / OLAP / hybrid; every field is traced to a stakeholder need. No more "we built the contract surface, then discovered the schema was wrong."
  • simulate-contracts is now a compiler, not a ceremony. It walks the contract surface hop-by-hop, journals one observation per hop, runs a spec-diff (catches what two implementations could both satisfy), and surfaces build-implied gaps (effect-without-mechanism, side-effect-not-observed, model-disagreement) before any source .py exists.
  • review-test-stubs gate adds a vacuous-assertion sweep (five named smells: hasattr-only, no-op helper, lower-bound-only, constant-satisfiable, tautology) and an inverted-traceability (scope-minimal) check — every test maps to a finding, or it goes.
  • Simplicity is a traced requirement. Each interview funnel level asks a simplicity question (smallest surface, speculative vs grounded, load-bearing vs collapsible); consolidate-interview drops speculative items before they become contracts.
  • Replay is unambiguous. HTTP adapters replay through vcr.use_cassette(); CLI subprocess tests use pytester; library-boundary adapters (ddgs, primp) use monkeypatch. The skill layer names the kind and the fixture.
  • Journal template at .templates/cache/journal.md.template — first-pass emptiness is expected; three sections match the three writer triggers.

Template & narrative

  • Test-driven narrative. README, About, and pyproject.toml description reframed from spec-driven to test-driven ("Tests are the contract").
  • conftest.py moved to tests/ — the pending-marker hook is test-only; root placement was a template-portability holdover.
  • Branding assets (docs/assets/{banner,logo}.svg) pulled back into the template.
  • Explicit [build-system] (setuptools≥68) per PEP 517; [tool.setuptools] packages = [] (template ships no package; wheel is metadata-only for PyPI discoverability).
  • release.yml workflow — on release published, uv build + trusted-publishing to PyPI (OIDC, no token) + upload wheel/sdist to the release assets.

Internal

  • Plan flow v1.6.0 (new model-data-schema entry state).
  • New skill: model-data-schema. New knowledge: architecture/data-modeling.md, methodology/simplicity-discipline.md.
  • Gate evidence keys: vacuous-assertion-free, scope-minimal, spec-diff-clean.

Full diff: v9.4.0...v10.0.0