Releases: nold-ai/specfact-cli
Releases · nold-ai/specfact-cli
v0.46.4
v0.46.2
Fixed
- Modules:
init0.1.29 — patch bump sodev→mainPRs satisfy--enforce-version-bump
againstorigin/mainwhenmainalready had 0.1.28 (addingintegrity.signaturealone is not
enough; the module version must increase when the manifest is in the diff).
Changed
- CI / modules:
pr-orchestrator.ymlverifies bundled modules without--require-signature
(checksum +--enforce-version-bump+--payload-from-filesystem), so PR heads and non-main
contexts are not blocked by missing signatures during implementation.sign-modules.ymlauto-signs
--changed-onlymanifests on push todevormainfor non-bot actors (requires
SPECFACT_MODULE_PRIVATE_SIGN_KEY), runs strict--require-signatureverification in the same job,
then commits and pusheschore(modules): auto-sign bundled manifests [skip ci]when needed; pushes from
github-actions[bot]skip signing and only run strict verify. Reproducibility resets to
origin/<branch>after verify so it targets the post-auto-sign tip.
v0.46.0
Added
- GitHub hierarchy cache sync (#492) for backlog metadata used in agent and automation workflows.
- Agent governance loading (#493): leaner, deterministic bootstrap for canonical rule documentation.
Fixed
- Tests / CI: marketplace install mocks accept
install_module(module_id, InstallModuleOptions(...));
dynamic script loaders register modules insys.modulesbeforeexec_module(doc frontmatter and
verify-bundle-published gates; Python 3.11 compatibility job). - Code review follow-ups: safer DevOps/source-tracking edge cases, stricter parsers and validators, and
reduced duplication in analysis and sync helpers (see commits ondev).
Changed
- Governance / OpenSpec: archived completed changes and aligned internal wiki maintenance notes.
v0.45.1
Changed
- Dependency install profiles: the default wheel is slimmer—CrossHair, Hypothesis, Ruff, Radon,
and unused pins (python-dotenv,cffi) are no longer in coredependencies. Use
pip install specfact-cli[contracts]for CrossHair + Hypothesis, orpip install specfact-cli[dev]
for contributors.packagingis pinned explicitly for module installer / PEP 440 use. - Smart-test baseline fallback: incremental smart-test runs now establish a full-suite baseline when
nolast_full_runcache exists (avoids a no-op incremental pass and misleading zero coverage). - Pre-commit single-invocation overwrite handling: staged Python files are passed to the code-review
helper in one batch so.specfact/code-review.jsonis not overwritten by multiplexargsprocesses.
Fixed
-
Missing bundle UX: when workflow bundles are not installed, the CLI now reports the
marketplace module (e.g.nold-ai/specfact-codebasefor thecodegroup) instead of
Command 'code' is not installed, which was easy to confuse with the VS CodecodeCLI. -
Generated GitHub workflow (
resources/templates/github-action.yml.j2): GitHub Actionsif
conditions now use${{ … }}so annotations, PR comment, and fail steps evaluate correctly
on GitHub (avoids mixedalways() &&/ raw expression parsing issues).
v0.44.0
Added
- Clean-code principle gates (
clean-code-01-principle-gates):.cursor/rules/clean-code-principles.mdcrestructured as a canonical alias for the
7-principle clean-code charter (naming,kiss,yagni,dry,solid) defined in
nold-ai/specfact-cli-modules(skills/specfact-code-review/SKILL.md).- Phase A KISS metric thresholds documented: LOC > 80 warning / > 120 error per function;
nesting-depth and parameter-count checks active. Phase B (> 40 / > 80) explicitly deferred. AGENTS.mdandCLAUDE.mdextended with a Clean-Code Review Gate section listing
the 5 expanded review categories and the Phase A thresholds that gate every PR..github/copilot-instructions.mdcreated as a lightweight alias surface that references
the canonical charter without duplicating it inline.- Unit tests:
tests/unit/specfact_cli/test_clean_code_principle_gates.pycovering all
three spec scenarios (charter references, compliance gate, LOC/nesting check).
v0.43.3
Fixed
- First-contact docs contract hardening:
- strengthened README /
docs/index.md/CONTRIBUTING.mdalignment tests - restored explicit clickable modules-docs landing link validation
- hardened docs parity checks against filtered Jekyll
site.*tokens and safer URL-host assertions
- strengthened README /
- Contract robustness for utility helpers under symbolic execution:
src/specfact_cli/utils/optional_deps.pynow fails closed on invalid import targetssrc/specfact_cli/utils/acceptance_criteria.pynow rejects pathological control-character inputs
without regex exceptionssrc/specfact_cli/utils/enrichment_parser.pynow uses safe regex helpers/guards so
hatch run contract-testpasses CrossHair exploration for enrichment parsing paths
- OpenSpec/docs review remediation:
- wrapped overlong proposal bullets and corrected list spacing in active change artifacts
- added cross-repo first-contact traceability guidance for the core and modules docs split
Changed
- Tests:
- added utility regression tests for invalid package names, pathological acceptance criteria, and
control-character enrichment blocks - converted docs entrypoint file presence checks from import-time assertions to a module-scoped
skip fixture for clearer test behavior in partial environments
- added utility regression tests for invalid package names, pathological acceptance criteria, and
v0.43.2
Added
- Documentation ownership frontmatter rollout:
scripts/check_doc_frontmatter.pydocs/.doc-frontmatter-enforced(rollout scope)hatch run doc-frontmatter-check- Pre-commit hook integration
- Guide:
docs/contributing/docs-sync.md - Sample pages include the extended schema; use
--all-docsfor a full-site check.
Fixed
- Tests: Register doc-frontmatter shared fixtures via root
tests/conftest.py
pytest_plugins(Pytest 8+ forbidspytest_pluginsin nested conftests); scope env/cache
isolation totest_doc_frontmatterpaths only. - OpenSpec (
openspec/config.yaml): SpecFact code review JSON dogfood tasks require a fresh
.specfact/code-review.json, remediation of review findings before merge, and TDD evidence.
Freshness excludesopenspec/changes/<change-id>/TDD_EVIDENCE.mdfrom the staleness
comparison so evidence-only edits there do not by themselves force a new review run. scripts/pre_commit_code_review.py: invoke review from repo root (cwd), emit JSON as above,
and enforce a 300s subprocess timeout withTimeoutExpiredhandling so the hook cannot hang
indefinitely.
Changed
- CI:
Docs ReviewGitHub Actions workflow runshatch run doc-frontmatter-check
and includes doc-frontmatter unit/integration tests alongsidetests/unit/docs/, with path
filters for frontmatter scripts and helpers. - Pre-commit
specfact-code-review-gate: switched fromspecfact code review runwith
--score-onlytospecfact code review run --json --out .specfact/code-review.json, writing
governedReviewReportJSON under gitignored.specfact/for IDE and Copilot workflows. The
hook now prints severity counts on stderr, a short summary with the report path (absolute path
hint), copy-paste prompts for Copilot/Cursor, and relies onverbose: trueso successful runs
still surface that feedback next to the nested CLI output. - Documentation:
docs/modules/code-review.mdupdated for the JSON report path and the pre-commit hook behavior. - Tests:
tests/unit/scripts/test_pre_commit_code_review.pyandtest_code_review_module_docs.pyupdated for
--json/--out, repo-rootcwd, and timeout handling. - Doc frontmatter validation now uses a Pydantic
DocFrontmattermodel, strictertracksglob checks
(fnmatch.translate+re.compileafter bracket/brace balance), and a reference page at
docs/contributing/frontmatter-schema.md.
v0.43.1
Changed
- Packaging: Workflow slash-command prompts (
specfact.*.md) are no longer duplicated in the core wheel; canonical copies live in specfact-cli-modules bundle packages under each bundle’sresources/prompts/. Install bundles (or use a dev repo checkout withresources/prompts/) forspecfact init ideprompt export. - IDE template drift checks on startup resolve source templates via the same installed-module discovery path as
specfact init ide, not a single coreresources/promptsdirectory inside the package.
v0.42.6
Fixed
specfact init idemulti-source export writes prompts to a flat layout under the IDE export root (for example.github/prompts/or.cursor/commands/) so editors and agents can discoverspecfact*.prompt.md(or equivalent) without per-source subfolders.- Prompt catalog: core omits template basenames already provided by an installed module, avoiding duplicate exports when both ship the same filename.
- Re-export removes legacy per-source segment directories and prunes stale flat
specfact*exports when the selected sources change. - Tests: import
pytestforMonkeyPatchannotations in init IDE prompt selection tests (Ruff F821).
v0.42.5
Added
specfact init idebuilds a prompt-source catalog from core (bundled or reporesources/prompts) plus installed modules across builtin, project, user, and marketplace roots; defaults to exporting all sources; supports--promptsfor non-interactive selection (all,core, comma-separated module ids) and an interactive multi-select when multiple sources exist.- IDE prompt exports are written under per-source subfolders (for example
.cursor/commands/core/,.cursor/commands/<owner>__<module>/) so filenames stay collision-safe. - Startup IDE template drift checks resolve exports under the namespaced layout (flat or nested).
Fixed
- VS Code / Copilot:
chat.promptFilesRecommendationslists only prompt sources actually exported byinit ide; selective--promptsno longer leaves stale.github/prompts/...entries from unexported modules. - Integration tests: restore module discovery / installer paths after the command-audit temp-home scenario so later unit tests do not observe leaked marketplace module roots.