Skip to content

Releases: nullhack/python-project-template

v6.3.20260419

20 Apr 01:13

Choose a tag to compare

Bump pytest-beehave to 3.3

v6.2.20260419 - Autonomous Stenella

19 Apr 20:46
dd9a6d6

Choose a tag to compare

v6.2.20260419 - Autonomous Stenella

"The workflow runs itself — IDs assigned, stubs generated, declarations enforced."

Changelog

Added

  • pytest-beehave integration: @id tags now auto-assigned to untagged Example: blocks on every pytest run; test stubs auto-generated from .feature files at Step 2 end — no manual ID generation or stub writing required (#78)
  • Self-declaration defense in depth: all 25 items numbered 1–25 in implementation/SKILL.md; verify/SKILL.md now hard-gates on completeness (count must equal 25, sequence must be gapless) before item audit begins (#78)

Changed

  • Naming convention: .feature paths use <feature-stem> (kebab); test dirs use <feature_slug> (underscore) — applied across all skills, AGENTS.md, and docs (#78)
  • conftest.py: removed manual deprecated skip hook — now owned by pytest-beehave (#78)
  • scope/SKILL.md: removed all manual @id generation instructions and uniqueness checklist items (#78)
  • product-owner.md: PO writes Example: blocks only — no @id authoring (#78)
  • README: added "Why this template?" section; pytest-beehave in tooling table; auto-generation illustrated (#78)
  • verify/SKILL.md report table: expanded Self-Declaration Audit from 21 to 25 numbered rows (#78)

Summary

This release makes the workflow autonomous at two key friction points: @id tag assignment and test stub generation now happen automatically when tests run, removing the most error-prone manual steps from the SE and PO roles. The numbered self-declaration with reviewer completeness enforcement closes the gap between a 21-item report table and the 25-item declaration template.

The name Autonomous Stenella (Stenella = spotted dolphin genus) reflects a workflow that navigates on its own.


SHA: dd9a6d6

v6.1.20260419 - Contextual Ambystoma

19 Apr 18:05
633e701

Choose a tag to compare

v6.1.20260419 - Contextual Ambystoma

"Living documentation, context-aware vocabulary, and a slimmer reviewer — all crystallised."

Changelog

Added

  • feat: living-docs skill — C4 diagrams and glossary now updated as part of the release process (#77)

Fixed

  • fix: correct stale Self-Declaration location references in verify skill (#77)

Changed

  • refactor: slim reviewer.md and verify skill to reduce token load (#77)

Summary

This hotfix ships three post-release improvements to v6.1.20260419: the living-docs skill is now integrated into the git-release process (step 5), the verify skill's Self-Declaration audit section references are corrected, and the reviewer agent has been trimmed to reduce context overhead.


SHA: 633e701

v6.0.20260419 - Declarative Nautilus

19 Apr 13:26
305c1b9

Choose a tag to compare

v6.0.20260419 - Declarative Nautilus

"Explicit accountability at every handoff — declarations before commits, stances before verdicts."

Changelog

Added

  • PO Self-Declaration (11 claims): mandatory checklist at end of Stage 2 Step B written into TODO.md; every DISAGREE is a hard blocker before criteria commit (#71)
  • Reviewer Stance Declaration (5 claims): inserted into verify/SKILL.md report template before APPROVED/REJECTED verdict; adversarial mindset, manual trace, boundary check, semantic read, independence (#71)
  • session-workflow: Step 1 Stage 2 Criteria TODO format section with Self-Declaration template; Rule 9 enforcing declaration before criteria commit (#71)
  • Three append-only project docs: docs/discovery_journal.md, docs/discovery.md, docs/architecture.md replace the old flat docs/features/discovery.md (#70)

Changed

  • Discovery model (breaking): Phase 1/2/3/4 replaced by 2-stage model — Stage 1 Discovery (iterative, PO + stakeholder) and Stage 2 Specification (PO alone, per BASELINED feature) (#70)
  • Feature file moves (breaking): PO is sole owner of all .feature file moves; SE and reviewer explicitly prohibited; escalation protocol when no in-progress feature found (#70)
  • Session protocol: journal sessions use Status: IN-PROGRESS/COMPLETE markers; real-time split rule for features; journal writes only answered Q&A in groups (#70)
  • Bug handling: PO adds @bug @id Example; SE writes both the @id test and a @given Hypothesis property test; both required (#70)
  • All agent files and skills updated to reflect new document model, terminology, and chain of responsibility (#70, #71)

Summary

v6.0 completes the accountability model for the full 5-step workflow. Every agent now declares their work before handing off: the PO signs off on spec quality (Stage 2 Step B), the software-engineer signs off on design correctness (Step 3), and the reviewer declares their adversarial stance (Step 4). The discovery model is simplified from a 4-phase structure to 2 stages, with clear file ownership and explicit escalation at every boundary.

The name reflects the nautilus — methodical, chambered, each compartment sealed before the next begins.


SHA: d8d6492

v5.0.20260418 - Structured Phascolarctos

18 Apr 08:50
d1b2d40

Choose a tag to compare

v5.0.20260418 - Structured Phascolarctos

"A methodical, highly specialised structure for every step of the workflow."

Changelog

Added

  • feat: design-patterns skill with GoF catalogue, smell-triggered patterns, SOLID, OC, Python Zen (#65)
  • feat: create-agent skill with research-backed design patterns (#65)
  • feat: software-engineer agent replacing developer.md (#65)
  • feat: 3-session discovery structure with template gates in scope skill (#65)
  • feat: architecture stubs protocol, feature-selection scoring, refactor skill with Fowler catalogue (#67)
  • feat: Core Heuristic — Procedural vs OOP section added to design-patterns skill

Changed

  • refactor: 5-step workflow — TDD loop merged to Step 3, Verify is Step 4, Accept is Step 5 (#65)
  • refactor: "Cluster" renamed to "behavior group" throughout for clearer AI focus (#65)
  • refactor: test stubs now use @pytest.mark.skip(reason="not yet implemented") instead of raise NotImplementedError (#65)
  • refactor: dropped @pytest.mark.unit and @pytest.mark.integration markers — only slow and deprecated remain (#65)
  • fix: BASELINED gate enforced — PO cannot move feature to in-progress without Status: BASELINED (#65)
  • fix: stale developer/developer.md role references replaced with software-engineer throughout (#68)
  • fix: agent-name placeholders corrected in session-workflow skill (#68)
  • fix: OC-8 instance variable limit clarified — applies to behavioural classes only; dataclasses, Pydantic models, value objects, and TypedDicts are exempt (#69)
  • fix: SELF-DECLARE phase added to Step 3 TDD loop diagram and Cycle State phase list in docs/workflow.md (#69)
  • chore: tdd skill and gen_test_stubs.py removed (#65)

Fixed

  • fix: pyproject.toml — removed broken gen-tests task, removed raise NotImplementedError from coverage exclusions (#65)
  • fix: all "6 steps" references updated to "5 steps" (#65)

Summary

This is a major version bump reflecting the breaking restructure of the entire workflow from 6 steps to 5 steps. The TDD loop is now a single step, and all agents, skills, and documentation have been updated to match. Test stub format changed from raise NotImplementedError to @pytest.mark.skip, and the unit/integration marker system has been removed in favour of folder-based test classification. Subsequent hotfixes clarified agent naming, the OC-8 instance variable rule (data models are exempt), and added the missing SELF-DECLARE phase to the workflow diagram. The name Structured Phascolarctos reflects the deliberate, specialised structure that this release brings to every phase of the workflow.


SHA: d1b2d40

v4.0.20260416 - Precise Tarsius

16 Apr 15:51
e1db40e

Choose a tag to compare

v4.0.20260416 - Precise Tarsius

"Verification that starts at the moment of writing, not at the end."

Changelog

Added

  • Per-test Design Self-Declaration: After REFACTOR, developer fills a 20-item checklist (YAGNI → KISS → DRY → SOLID-S/O/L/I/D → OC rules 1–9) with file:line evidence before requesting reviewer check; reviewer independently audits claims using an 11-row comparison table
  • Package Verification step: Mandatory before writing any code — read pyproject.toml → [tool.setuptools] packages, confirm directory exists on disk; hard stop if missing
  • SELF-DECLARE phase: New phase in the Red-Green-Refactor cycle; Cycle State now RED | GREEN | REFACTOR | SELF-DECLARE | REVIEWER(code-design) | COMMITTED
  • template-config.yaml: Declarative single source of truth for all setup-project substitutions — replaces project_defaults.json
  • Post-mortem docs: Two ping-pong-cli post-mortems documenting the systemic failures that drove this release

Fixed

  • gen_todo.py path: parents[5]parents[4] (was resolving above project root)
  • Stale Docker references: python_package_template.python_module_templateapp
  • Reviewer Step 4 protocol: clarified no commands during per-test reviews
  • session-workflow Cycle State: SELF-DECLARE phase added to documented phases

Breaking Changes

  • project_defaults.json deleted — use template-config.yaml
  • app/version.py deleted — template app simplified to minimal __main__.py

Summary

Precise Tarsius introduces per-test design accountability: the developer self-declares compliance with every design principle (with evidence) before asking the reviewer, and the reviewer independently audits those claims rather than reading code cold. This mirrors how a tarsier's outsized eyes give it exceptional precision in darkness — the workflow now surfaces violations at the exact moment they occur rather than accumulating them for a distant Step 5 review.

The release also fixes two systemic failures identified in ping-pong-cli post-mortems: code landing in the wrong package directory (fixed by mandatory Package Verification), and design principle violations not caught in review (fixed by the Self-Declaration + structured comparison table).


SHA: e1db40e

v3.2.20260415 - Vigilant Mantis

15 Apr 08:38
c823ffa

Choose a tag to compare

v3.2.20260415 - Vigilant Mantis

"Sharp eyes, patient method, adversarial by nature."

Changelog

Added

  • Adversarial verification mandate: Reviewer's default hypothesis is now "the code is broken despite green checks" — job is to find the failure mode, not confirm it works (#54)
  • Production-grade gate: New step 3 in verification — app must exit cleanly AND output must change when input changes; static output regardless of input = REJECTED (#54)
  • UUID Drift bash check: One-liner detects duplicate UUIDs across test functions; any duplicate = REJECTED with fix instructions (#54)
  • docs/academic_research.md: 15 cognitive and social science mechanisms with full citations grounding every workflow design decision (#54)
  • Design pattern decision table: Added to developer.md and implementation/SKILL.md; any detected anti-pattern = REJECTED (#54)
  • Architecture contradiction check: Developer must cross-check ADRs against ACs before writing production code (#54)
  • PO pre-mortem: Added at scope step and acceptance step (#54)
  • Semantic alignment rule: Tests must operate at same abstraction level as AC (#54)
  • Integration test requirement: Multi-component features require at least one integration test through the public entry point (#54)
  • Verification Philosophy section: Added to AGENTS.md (#54)

Changed

  • Verification order: Code review before automated commands; run app first as production-grade gate (#54)
  • All review sections converted to tables: Correctness, KISS, SOLID, ObjCal, Design Patterns, Tests, Versions/Build all have PASS/FAIL/Fix columns (#54)
  • UUID Uniqueness rule: If only Given varies it is a property — use Hypothesis @given + @example, not multiple test functions (#54)
  • Production-grade self-check in implementation: Developer must verify output changes with input before handoff (#54)
  • AGENTS.md: Research foundations reference removed — academic research doc is for stakeholders only, not agent context (#55)

Summary

This release hardens the verification workflow against the failure modes identified in the ping-pong incident: no adversarial review, rules as prose that LLMs can hedge, and tests that verify functions instead of user-observable behavior. The reviewer is now explicitly adversarial, all checklists are structured tables with PASS/FAIL/Fix columns, and a production-grade gate ensures the app produces real behavior before code review begins. The name reflects the release theme: a mantis is precise, patient, and adversarial by nature.


SHA: 8be1b47

v3.1.20260414 - Tidal Capybara

14 Apr 18:14
ea8b9a7

Choose a tag to compare

v3.1.20260414 - Tidal Capybara

A steady, methodical current of standards flowing into place.

Changelog

Added

  • extend-criteria skill: Any agent can now add acceptance criteria discovered mid-flight or post-merge, with decision rule, per-role procedures, and commit protocol
  • Source: field on acceptance criteria: Mandatory traceability field (stakeholder | po | developer | reviewer | bug) — records who originated each requirement

Changed

  • Test function naming: test_<short_title> replaces test_<condition>_should_<outcome>
  • Test docstring first line: UUID only, no trailing description
  • Commands: All skill/agent files use uv run task consistently
  • tests/ layout: Documented as flat (no unit/ or integration/ subdirs)
  • pytest.skip: Allowed with written justification in the docstring
  • TODO.md markers: [~] (in progress) and [-] (cancelled) documented
  • exit code wording: exit non-124 (was ambiguous exit 0 or 124)
  • README: uv sync --all-extras and uv run task throughout

Fixed

  • Removed stale auto-publish-docs.md from in-progress
  • Split compound acceptance criterion into two single-outcome criteria
  • Added @pytest.mark.slow to Hypothesis tests in reference implementation
  • Removed duplicate assertion from reference test
  • StringIO import moved to module level

SHA: ea8b9a7

Release v3.0.20260414 - Drifting Axolotl

14 Apr 10:28
cfd466f

Choose a tag to compare

Release v3.0.20260414 - Drifting Axolotl

"Like an axolotl drifting through clear water, this release simplifies everything — fewer roles, fewer skills, cleaner workflow."

Changelog

Breaking Changes

  • Workflow redesigned: 8-phase/6-role system replaced with 6-step/3-role (Product Owner, Developer, Reviewer)
  • Roles removed: architect, manager, repo-manager, requirements-gatherer, overseer agents deleted
  • Feature directories restructured: `docs/features/{business,architecture}/` replaced with flat `docs/features/{backlog,in-progress,completed}/`

Features

  • Add product-owner agent: defines scope, picks features, accepts deliveries (Steps 1+6)
  • Add reviewer agent: read+bash only, runs all commands, APPROVED/REJECTED report (Step 5)
  • Add scope skill: PO guide for user stories + UUID acceptance criteria
  • Add verify skill: reviewer guide for command verification and code review
  • Add unified docs site: `docs/index.html` landing page linking to API, Coverage, Tests
  • Add ghp-import: `task doc-publish` is now a one-liner

Refactoring

  • developer agent now owns all of Steps 2-4+6 including architecture, tests, code, and release
  • 9 skills rewritten lean (<150 lines each): session-workflow, tdd, implementation, code-quality, pr-management, git-release, create-skill
  • setup-project agent no longer uses setup_project.py — applies changes directly
  • CI workflow cleaned up to use `uv run task ` consistently
  • License check switched from allow-list to deny-list (avoids SPDX compound expression mismatch)

Documentation

  • Rewrite README for v3: 3 roles, 6 steps, correct commands, no stale references
  • Update CHANGELOG

Removed

  • 11 skills deleted (architectural-analysis, delegation-coordination, epic-workflow, feature-definition, qa-enforcement, requirements-management, signature-design, workflow-coordination, prototype-script, create-agent, reference/)
  • `setup_project.py` script and `.opencode/templates/` directory
  • Wrong `dotenv` dependency (unused and wrong package name)
  • `mutmut` dev dependency (YAGNI)

Summary

v3.0 is a ground-up simplification. The v2 system had 6 specialized roles, 8 development phases, 17 skills, and QA gates enforced by documents rather than commands. v3 reduces this to 3 roles, 6 steps, 9 skills, and a single rule: every quality check must be answerable by running a command.


SHA: `cfd466f`

Release v2.2.20260413 - Luminous Kestrel 🦅

13 Apr 20:26

Choose a tag to compare

Release v2.2.20260413 - Luminous Kestrel 🦅

"Like a kestrel hovering in clarity, this release streamlines and sharpens our tools"

Changelog

Added

  • Architecture-First Feature System - New directory structure separating business and architecture features
  • Architectural Analysis Skill - Systematic architecture documentation for each feature
  • 8-Phase Development Cycle - Expanded from 7-phase with dedicated Architecture Analysis phase

Changed

  • BDD → Acceptance Criteria - Renamed gherkin-validation to acceptance-criteria-validation for accurate terminology
  • Consistency Updates - Fixed phase numbering, cross-references, and documentation across all agents and skills
  • Epic-Workflow Refactor - Converted from epic-based to feature-selection with architecture-first priority
  • Manager Agent - Enhanced with test signature creation capabilities

Removed

  • detect-secrets tooling - Removed as overkill for this template's use case
  • Redundant template files - Cleaned up CI templates, CodeQL, dependency-review templates

Migration Notes

  • No breaking changes in this release
  • Projects can continue using existing workflow

SHA: c4c07e4