Skip to content

release: merge dev into main (v0.42.6, #443–#449)#450

Merged
djm81 merged 327 commits intomainfrom
dev
Mar 26, 2026
Merged

release: merge dev into main (v0.42.6, #443–#449)#450
djm81 merged 327 commits intomainfrom
dev

Conversation

@djm81
Copy link
Collaborator

@djm81 djm81 commented Mar 26, 2026

Description

Promote dev to main for release alignment and PyPI publishing. This merge brings origin/main current with origin/dev at version 0.42.6.

Notable merged work since the last dev→main promotion (#447) includes, among others:

PR #449 status: Already merged into dev (no further merge action required).

Fixes #(n/a — release promotion)

New Features #(see linked PRs above; shipped via dev)

Contract References: No new public API contract surface required for this promotion PR itself; included changes follow normal @icontract / @beartype rules where applicable in merged PRs.

Type of Change

Please check all that apply:

  • 🐛 Bug fix (non-breaking change which fixes an issue)
  • ✨ New feature (non-breaking change which adds functionality)
  • 💥 Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • 📚 Documentation update
  • 🔒 Contract enforcement (adding/updating @icontract decorators)
  • 🧪 Test enhancement (scenario tests, property-based tests)
  • 🔧 Refactoring (code improvement without functionality change)

Contract-First Testing Evidence

Required for all changes affecting CLI commands or public APIs:

Contract Validation

  • Runtime contracts added/updated (@icontract decorators on public APIs) — covered in individual feature PRs merged to dev
  • Type checking enforced (@beartype decorators applied) — same
  • CrossHair exploration completed: hatch run contract-test-exploration
  • Contract violations reviewed and addressed

Test Execution

  • Runtime contracts added/updated — N/A for this meta-PR
  • Type checking enforced — N/A for this meta-PR
  • Contract validation: hatch run contract-test-contracts ✅ — expected green on CI for dev at merge
  • Contract exploration: hatch run contract-test-exploration
  • Scenario tests: hatch run contract-test-scenarios
  • Full test suite: CI on dev / merge queue ✅

Test Quality

  • CLI commands tested with typer test client (where applicable in merged work)
  • Edge cases covered with Hypothesis property tests (where applicable)
  • Error handling tested with invalid inputs (where applicable)
  • Rich console output verified manually or with snapshots

How Has This Been Tested?

Contract-First Approach: Individual changes were validated under their PRs; this promotion assumes dev branch CI is green before merge to main.

Manual Testing

  • Tested CLI commands manually
  • Verified rich console output
  • Tested with different input scenarios
  • Checked error messages for clarity

Automated Testing

  • Contract validation passes (on dev pre-merge)
  • Property-based tests cover edge cases (where merged)
  • Scenario tests cover user workflows (where merged)
  • All existing tests still pass (CI expectation)

Test Environment

  • Python version: 3.11+ (per pyproject.toml)
  • OS: Linux (CI); contributors also use macOS/Windows

Checklist

  • My code follows the style guidelines (PEP 8, ruff format, isort) — enforced on dev
  • I have performed a self-review of my code — via PR reviews on dev
  • I have added/updated contracts (@icontract, @beartype) — N/A for promotion PR
  • I have added/updated docstrings (Google style) — in merged PRs
  • I have made corresponding changes to documentation — in merged PRs
  • My changes generate no new warnings (basedpyright, ruff, pylint) — CI expectation
  • All tests pass locally / in CI on dev
  • I have added tests that prove my fix/feature works — in merged PRs
  • Any dependent changes have been merged — this PR is the batch promotion

Quality Gates Status

  • Type checking ✅ (hatch run type-check) — CI
  • Linting ✅ (hatch run lint) — CI
  • Contract validation ✅ (hatch run contract-test-contracts) — CI
  • Contract exploration ✅ (hatch run contract-test-exploration)
  • Scenario tests ✅ (hatch run contract-test-scenarios)

Screenshots/Recordings (if applicable)

N/A for branch promotion.

djm81 and others added 30 commits February 8, 2026 23:53
* feat: add ModuleIOContract protocol and core-module isolation

- Create ModuleIOContract protocol with four core operations

- Add static analysis enforcement preventing core->module imports

- Add ProjectBundle schema versioning (schema_version field)

- Update 5 modules to implement ModuleIOContract

- Add protocol compliance tracking in module discovery

- Create docs for ProjectBundle schema and module contracts

- Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* chore: update arch-04 task tracking after implementation and PR

* test: fix flaky help assertions and typing warnings

---------

Co-authored-by: Dominikus Nold <djm81@users.noreply.github.com>
Co-authored-by: Dominikus Nold <djm81@users.noreply.github.com>
Add three OpenSpec changes from Module Marketplace Decoupling Plan:
- arch-07-schema-extension-system: Schema extension mechanism for ProjectBundle
- marketplace-01-central-module-registry: Central registry MVP with module discovery
- marketplace-02-advanced-marketplace-features: Dependency resolution and custom registries

All changes include:
- Proposal, design, specs, tasks, and validation artifacts
- Source tracking linked to GitHub issues #213, #214, #215
- TDD/SDD ordering with contract-first development
- Backward compatibility guarantees

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
* docs: add openspec change arch-05 bridge registry

* feat: apply arch-05 bridge registry workflow

* docs: update arch-05 apply task execution state

* fix: resolve arch-05 protocol reporting and duplicate lifecycle logs

* fix: close arch-05 review gaps for protocol reporting

* docs: mark arch-05 PR task complete

* fix: complete arch-05 module io contract migration

* fix: make module protocol startup reporting user-friendly

* fix: make debug logging work for eager cli flags

* fix: print active debug log path on debug startup

* fix: harden repro output and telemetry fallback behavior

* test: fix service bridge metadata typing in unit tests

* fix: add strict crosshair mode and clearer repro diagnostics

* fix: remove contracts import side-effects for crosshair

* fix: make crosshair exploration output specific and deduplicated

* fix: make crosshair exploration skip noisy signature-limited files

* ci: reduce specfact workflow env setup overhead

* ci: avoid hatch env sync in specfact validation workflow

* fix: stabilize crosshair exploration for side-effectful modules

* fix: improve crosshair compatibility for backlog converters

* ci: require crosshair in specfact repro workflows

* Apply fixes on crosshair tests

* ci: speed up workflow setup with cache and lean hatch installs

* ci: pin contract scenario test env to py3.12

* ci: improve contract test progress logging

* ci: increase and expose smart test timeout for scenario runs

* Fix test failure logic

* Fix test failure logic

* Reformat files

* Fix contract test findings

* Update docs integrity

---------

Co-authored-by: Dominikus Nold <djm81@users.noreply.github.com>
Corrects three broken spec-delta references flagged in PR #221 review:
- backlog-core-02: add-backlog-add-interactive-issue-creation → backlog-core-02-interactive-issue-creation
- backlog-scrum-02: sprint-planning-capacity-commitment-support → backlog-scrum-02-sprint-planning
- backlog-scrum-03: story-complexity-splitting-hints-support → backlog-scrum-03-story-complexity

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
…ndency graph

- Replace old flat backlog-01..09 naming with module-scoped groups:
  backlog-core, backlog-scrum, backlog-kanban, backlog-safe,
  policy-engine, patch-mode, bundle-mapper, ceremony-cockpit
- Add arch-06/07 and marketplace-01/02 as pending changes
- Mark arch-01 through arch-05 as implemented (archived 2026-02-04..10)
- Update all GitHub issue numbers to current (incl. new #208, #213, #214,
  #215, #220 from recent changes)
- Clarify hard vs optional dependencies; optional deps are graceful no-ops
  and not set as GitHub blockers
- Update implementation waves to reflect current unblocked state (Wave 0 done)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
…ing, and filter parity (#222)

* feat(backlog): finalize daily/refine comment context, interactive posting, and docs parity

* docs(openspec): mark backlog-scrum-01 standup change checklist complete

* fix(openspec): mark backlog-refinement delta as ADDED for archive apply

* Archived completed change backlog-scrum-01

* fix(backlog): make map-fields exit cleanly under CliRunner

* Fix format

* fix(backlog): stabilize map-fields tests in non-interactive env

* docs(agents): enforce signed-commit handoff flow

---------

Co-authored-by: Dominikus Nold <djm81@users.noreply.github.com>
#224)

* fix: parse backlog refine writeback fields and refactor refine command

* fix: preserve heading-style narrative sections in refine parser

* chore: sync OpenSpec change to GitHub issue tracking

---------

Co-authored-by: Dominikus Nold <djm81@users.noreply.github.com>
…228)

* fix: harden backlog refine prompt scaffold and parsing

* fix: normalize mixed notes parsing and boundary flushing

---------

Co-authored-by: Dominikus Nold <djm81@users.noreply.github.com>
djm81 and others added 16 commits March 24, 2026 23:06
…445)

* feat(init): IDE prompt source catalog, --prompts, namespaced exports

Implement init-ide-prompt-source-selection: discover core + module prompts,
default export all sources, interactive multi-select, non-interactive --prompts,
source-namespaced IDE paths. Fix project module roots to use metadata source
project. Extend discovery roots with user/marketplace. Update startup_checks
for nested exports. Bump init module to 0.1.14 with signed manifest.

Made-with: Cursor

* fix(init): scope VS Code prompt recommendations to exported sources

- Pass prompts_by_source into create_vscode_settings from copy_prompts_by_source_to_ide
- Strip prior .github/prompts/* recommendations on selective export to avoid stale paths
- Extract helpers for catalog paths and fallbacks; keep code review clean

Made-with: Cursor

---------

Co-authored-by: Dominikus Nold <djm81@users.noreply.github.com>
- Remove [Unreleased] sections; fold historical arch-08 notes under [0.34.0]
- Document init ide catalog, VS Code recommendations, integration test isolation

Made-with: Cursor
…ation strip

- Prune stale exports and unselected catalog segments in copy_prompts_by_source_to_ide
- Strip only specfact*.prompt.md under .github/prompts/ when merging VS Code settings
- Tighten e2e missing-templates assertions to match CLI output
- Add unit tests for prompt path helper and selective export behavior

Made-with: Cursor
* docs: add core vs modules URL contract and OpenSpec alignment

Document cross-site permalink rules in docs/reference, extend documentation-alignment
and module-docs-ownership specs, update docs-07 and openspec config, and note the
dependency on modules URL policy in CHANGE_ORDER.

Made-with: Cursor

* docs: convert core handoff pages to modules canonical links (docs-07)

- Replace 20 duplicate guides/tutorials with thin summaries, prerequisites,
  and links to modules.specfact.io per URL contract
- Add docs/reference/core-to-modules-handoff-urls.md mapping table
- Align OpenSpec documentation-alignment spec delta with ADDED Requirements
- Complete docs-07-core-handoff-conversion tasks checklist

Refs: #439
Made-with: Cursor

---------

Co-authored-by: Dominikus Nold <djm81@users.noreply.github.com>
* feat(docs-12): docs command validation and cross-site link checks

- Add check-docs-commands (Typer CliRunner prefix + --help) and exclusions for migration/illustrative pages
- Add check-cross-site-links with robust URL extraction; warn-only in docs-validate and CI while live site may lag
- Extend docs-review: Hatch env, validation steps, pytest tests/unit/docs/
- Opt-in handoff map HTTP test (SPECFACT_RUN_HANDOFF_URL_CHECK=1)
- OpenSpec deltas, TDD_EVIDENCE, tasks complete; CHANGELOG [Unreleased]

Made-with: Cursor

* fix(docs-validate): strip leading global flags before command path

- Parse --mode/--input-format/--output-format + value, then other root flags
- Add test for specfact --mode copilot import from-code …
- Fix showcase docs: hatch run contract-test-exploration (not specfact)

Made-with: Cursor

* fix(docs-12): harden link/command validators and spec wording

- Capitalize Markdown in cross-site link spec requirement
- Cross-site: redirect-only HTTP success, UTF-8 read failures, URL delimiter/trim fixes
- Docs commands: catch Typer exceptions on --help, UTF-8 read failures
- Tests: shared loader for check-cross-site-links module

Made-with: Cursor

---------

Co-authored-by: Dominikus Nold <djm81@users.noreply.github.com>
@coderabbitai
Copy link

coderabbitai bot commented Mar 26, 2026

Warning

Rate limit exceeded

@djm81 has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 8 minutes and 3 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 300d152f-32b5-4dfa-a17a-a1892e5aeef9

📥 Commits

Reviewing files that changed from the base of the PR and between 21f5557 and 7ccb122.

📒 Files selected for processing (46)
  • .github/workflows/docs-review.yml
  • CHANGELOG.md
  • docs/README.md
  • docs/_layouts/default.html
  • docs/examples/integration-showcases/integration-showcases-quick-reference.md
  • docs/examples/integration-showcases/integration-showcases-testing-guide.md
  • docs/getting-started/tutorial-backlog-quickstart-demo.md
  • docs/getting-started/tutorial-backlog-refine-ai-ide.md
  • docs/getting-started/tutorial-daily-standup-sprint-review.md
  • docs/guides/agile-scrum-workflows.md
  • docs/guides/backlog-delta-commands.md
  • docs/guides/backlog-dependency-analysis.md
  • docs/guides/backlog-refinement.md
  • docs/guides/brownfield-engineer.md
  • docs/guides/brownfield-faq.md
  • docs/guides/brownfield-journey.md
  • docs/guides/brownfield-roi.md
  • docs/guides/contract-testing-workflow.md
  • docs/guides/custom-field-mapping.md
  • docs/guides/devops-adapter-integration.md
  • docs/guides/import-features.md
  • docs/guides/policy-engine-commands.md
  • docs/guides/project-devops-flow.md
  • docs/guides/sidecar-validation.md
  • docs/guides/specmatic-integration.md
  • docs/guides/team-collaboration-workflow.md
  • docs/reference/README.md
  • docs/reference/core-to-modules-handoff-urls.md
  • docs/reference/documentation-url-contract.md
  • openspec/CHANGE_ORDER.md
  • openspec/changes/docs-07-core-handoff-conversion/proposal.md
  • openspec/changes/docs-07-core-handoff-conversion/specs/documentation-alignment/spec.md
  • openspec/changes/docs-07-core-handoff-conversion/tasks.md
  • openspec/changes/docs-12-docs-validation-ci/TDD_EVIDENCE.md
  • openspec/changes/docs-12-docs-validation-ci/specs/docs-command-validation/spec.md
  • openspec/changes/docs-12-docs-validation-ci/specs/docs-cross-site-link-check/spec.md
  • openspec/changes/docs-12-docs-validation-ci/tasks.md
  • openspec/config.yaml
  • openspec/specs/documentation-alignment/spec.md
  • openspec/specs/module-docs-ownership/spec.md
  • pyproject.toml
  • scripts/check-cross-site-links.py
  • scripts/check-docs-commands.py
  • src/specfact_cli/registry/module_lifecycle.py
  • tests/unit/docs/test_docs_validation_scripts.py
  • tests/unit/docs/test_handoff_migration_map_urls.py
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch dev

Comment @coderabbitai help to get the list of available commands and usage tips.

@djm81 djm81 self-assigned this Mar 26, 2026
@djm81 djm81 added documentation Improvements or additions to documentation enhancement New feature or request labels Mar 26, 2026
@djm81 djm81 moved this from Todo to In Progress in SpecFact CLI Mar 26, 2026
Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 96f35d728c

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

djm81 and others added 2 commits March 27, 2026 00:19
…ty (#451)

Default CliRunner() merges stderr into stdout; read stdout only so
accessing result.stderr does not raise when streams are combined.

Made-with: Cursor

Co-authored-by: Dominikus Nold <djm81@users.noreply.github.com>
…pes) (#452)

* fix: satisfy review gates for docs scripts and module_lifecycle typing

- Replace print() with Rich Console in docs validation scripts (semgrep)
- Split HTTP URL checks and doc scans to reduce cyclomatic complexity (radon)
- Add icontract require/ensure on public helpers; use CliRunner() without mix_stderr
- Cast questionary API for basedpyright reportUnknownMemberType

Made-with: Cursor

* fix(scripts): address #452 review (HTTP helpers, icontract, CLI streams)

- _http_success_code: use int directly after None guard
- _response_status: safe getcode via getattr/callable
- check-docs: drop @require preconditions duplicated by beartype
- _cli_invoke_streams_text: merge stdout + stderr for not-installed detection

Made-with: Cursor

---------

Co-authored-by: Dominikus Nold <djm81@users.noreply.github.com>
@djm81 djm81 merged commit 753f9f4 into main Mar 26, 2026
34 checks passed
@github-project-automation github-project-automation bot moved this from In Progress to Done in SpecFact CLI Mar 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation enhancement New feature or request

Projects

Status: Done

1 participant