Skip to content

feat: cross-repo alignment#489

Merged
djm81 merged 374 commits intomainfrom
dev
Apr 8, 2026
Merged

feat: cross-repo alignment#489
djm81 merged 374 commits intomainfrom
dev

Conversation

@djm81
Copy link
Copy Markdown
Collaborator

@djm81 djm81 commented Apr 8, 2026

Description

Cross-repo alignment - organizational change, no cli change.

Fixes #484

New Features #484

Contract References: List any contracts (@icontract decorators) that this change affects or implements.

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)
  • Type checking enforced (@beartype decorators applied)
  • CrossHair exploration completed: hatch run contract-test-exploration
  • Contract violations reviewed and addressed

Test Execution

  • Contract validation: hatch run contract-test-contracts
  • Contract exploration: hatch run contract-test-exploration
  • Scenario tests: hatch run contract-test-scenarios
  • Full test suite: hatch run contract-test-full

Test Quality

  • CLI commands tested with typer test client
  • Edge cases covered with Hypothesis property tests
  • Error handling tested with invalid inputs
  • Rich console output verified manually or with snapshots

How Has This Been Tested?

Contract-First Approach: Describe how contracts and scenario tests validate your changes.

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
  • Property-based tests cover edge cases
  • Scenario tests cover user workflows
  • All existing tests still pass

Test Environment

  • Python version: (e.g., 3.11, 3.12, 3.13)
  • OS: (e.g., Ubuntu 22.04, macOS 14, Windows 11)

Checklist

  • My code follows the style guidelines (PEP 8, ruff format, isort)
  • I have performed a self-review of my code
  • I have added/updated contracts (@icontract, @beartype)
  • I have added/updated docstrings (Google style)
  • I have made corresponding changes to documentation
  • My changes generate no new warnings (basedpyright, ruff, pylint)
  • All tests pass locally
  • I have added tests that prove my fix/feature works
  • Any dependent changes have been merged

Quality Gates Status

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

Screenshots/Recordings (if applicable)

Add screenshots or recordings of CLI output, especially for new commands or UI changes.

djm81 and others added 30 commits February 16, 2026 23:49
* feat: enhanced module manifest security and integrity (arch-06)

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix: remove duplicate ModulePackageMetadata import (ruff F811)

* Fix failed tests

* Fix type-check errors

---------

Co-authored-by: Dominikus Nold <djm81@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…rch-07) (#265)

* feat: add schema extension system for modular ProjectBundle extensions
  Enables modules to extend Feature and ProjectBundle with namespaced custom
  fields without modifying core models, supporting marketplace-ready
  interoperability.
  - Add extensions dict field to Feature and ProjectBundle models
  - Implement type-safe get/set extension accessors with namespace enforcement
  - Extend module manifest schema with schema_extensions declaration
  - Add ExtensionRegistry for collision detection and introspection
  - Extend module lifecycle registration to load and validate extensions
  OpenSpec Change: arch-07-schema-extension-system
  Resolves #213

* feat: schema extension system (arch-07) and quality gate fixes

- Add extensions field and get_extension/set_extension to Feature and ProjectBundle
- Add SchemaExtension model and schema_extensions to ModulePackageMetadata
- Add ExtensionRegistry with collision detection; integrate in module registration
- Parse schema_extensions in discover_package_metadata
- Docs: extending-projectbundle guide, architecture section, sidebar
- Version 0.32.0, CHANGELOG entry, TDD_EVIDENCE
- Format: E402 (imports at top in project.py), UP042 (StrEnum in backlog-core),
  RUF043/B017 in schema extension tests
- Type-check: pass schema_metadata/project_metadata in BundleManifest test calls

OpenSpec Change: arch-07-schema-extension-system
Resolves #213

Co-authored-by: Cursor <cursoragent@cursor.com>

* Update change progress

* Add docs guides and update changes

* Use v0.32.0 as version and combine arch-06/arch-07

* Update change order plan

---------

Co-authored-by: Dominikus Nold <djm81@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Signed-off-by: Dom <39115308+djm81@users.noreply.github.com>
* feat(workflow): standardize worktree-first development flow

* docs(openspec): mark workflow-01 delivery tasks complete

* Apply review finding

---------

Co-authored-by: Dominikus Nold <djm81@users.noreply.github.com>
* feat(policy-engine): implement unified policy framework

* docs(openspec): mark policy-engine-01 implemented in change order

* fix(policy-engine): make module io contract compliant

* feat(policy-engine): add policy init templates and docs coverage

* fix: refine grouped policy limit semantics and outputs

* docs: clarify policy engine value for new users

---------

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

- Use discover_all_package_metadata() in init so list-modules/enable/disable
  use same roots as registry (built-in + workspace modules + SPECFACT_MODULES_ROOTS)
- Extend backlog-core-01 OpenSpec: init-module-discovery-alignment spec,
  tasks 0.5.x, TDD evidence
- Bump version to 0.34.0; CHANGELOG

Fixes #116

Co-authored-by: Dominikus Nold <djm81@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
* feat: add thorough codebase validation (validation-01)
  - Add --crosshair-per-path-timeout to specfact repro and ReproChecker
  - Add docs/reference/thorough-codebase-validation.md (quick check, contract-full, sidecar, dogfooding)
  - Unit test and TDD evidence for CrossHair per-path timeout
  - OpenSpec validation-01-deep-validation tasks and TDD_EVIDENCE updated

* fix: reject non-positive CrossHair per-path timeout (review)

* docs: CHANGELOG v0.34.0 and doc updates for thorough codebase validation

---------

Signed-off-by: Dom <39115308+djm81@users.noreply.github.com>
Co-authored-by: Dominikus Nold <djm81@users.noreply.github.com>
* feat(patch-mode): add patch apply (local + --write with confirmation) [#177]

- Add patch_mode module: pipeline (generator, applier, idempotency), patch apply command
- specfact patch apply <file> (local + preflight), patch apply --write --yes (upstream, idempotent)
- OpenSpec patch-mode-01-preview-apply: proposal Source Tracking, tasks, TDD_EVIDENCE
- CHANGELOG [Unreleased] entry for v0.34.0 merge

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(patch-mode): sanitize idempotency keys, derive key from patch content [PR review]

* Fix errors and ensure module compatibility

---------

Co-authored-by: Dominikus Nold <djm81@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
* feat: add bundle-mapper module with confidence-based spec-to-bundle mapping

- BundleMapping model and BundleMapper engine (explicit label, historical, content similarity)
- Mapping history persistence and MappingRule (save_user_confirmed_mapping, load_bundle_mapping_config)
- Interactive UI (ask_bundle_mapping) with Rich confidence visualization
- Unit tests and TDD_EVIDENCE for bundle-mapper-01 (OpenSpec #121)

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(bundle-mapper): address PR review findings (P1/P2)

- P1 interactive: no default accept for low-confidence; use default only when conf >= 0.5
- P1 history: ignore empty key fields in item_keys_similar (only count non-empty matches)
- P2 engine: add historical weight only when hist_bundle == primary_bundle_id
- Add test_item_keys_similar_empty_fields_not_counted to lock empty-key behavior

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Dominikus Nold <djm81@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
* fix: implement verification-01 delta for bundle mapping, patch apply, and docs parity

* test: fix patch write yes scenario for real diff apply

* fix: keep bundle mapping history out of bundle manifest

---------

Co-authored-by: Dominikus Nold <djm81@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>
Signed-off-by: Dom <39115308+djm81@users.noreply.github.com>
* feat: launch module marketplace lifecycle and trust-first UX

Deliver the central module marketplace workflow with source-aware discovery, lifecycle management, and trust/publisher visibility so users can safely manage official vs local modules. This also aligns docs and OpenSpec artifacts with the shipped behavior, including command introspection and clearer install/uninstall guidance.

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix: respect explicit discovery roots in module tests

Disable implicit legacy/workspace roots when explicit roots are passed to module discovery so isolated test roots are honored and deterministic.

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix: enforce safe module extraction and upgrade reinstall

---------

Co-authored-by: Dominikus Nold <djm81@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
* feat: add bundle-mapper module with confidence-based spec-to-bundle mapping

- BundleMapping model and BundleMapper engine (explicit label, historical, content similarity)
- Mapping history persistence and MappingRule (save_user_confirmed_mapping, load_bundle_mapping_config)
- Interactive UI (ask_bundle_mapping) with Rich confidence visualization
- Unit tests and TDD_EVIDENCE for bundle-mapper-01 (OpenSpec #121)

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(bundle-mapper): address PR review findings (P1/P2)

- P1 interactive: no default accept for low-confidence; use default only when conf >= 0.5
- P1 history: ignore empty key fields in item_keys_similar (only count non-empty matches)
- P2 engine: add historical weight only when hist_bundle == primary_bundle_id
- Add test_item_keys_similar_empty_fields_not_counted to lock empty-key behavior

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix: address bundle-mapper review defects with tdd evidence

* test: make specmatic integration tests plugin-agnostic

---------

Signed-off-by: Dom <39115308+djm81@users.noreply.github.com>
Co-authored-by: Dominikus Nold <djm81@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
djm81 and others added 20 commits March 30, 2026 15:08
* fix: harden trustworthy green checks

* fix: restore contract-first ci repro command

* fix: apply CodeRabbit auto-fixes

Fixed 3 file(s) based on 3 unresolved review comments.

Co-authored-by: CodeRabbit <noreply@coderabbit.ai>

* fix: resolve CI failures for trustworthy green checks PR

- Use hatch run contract-test instead of specfact code repro in CI
  (CLI bundle not available in CI environment)
- Allow test_bundle_import.py in migration cleanup legacy-import check
  (_bundle_import is an internal helper, not a removed module package)
- Fix formatting in test_trustworthy_green_checks.py (CodeRabbit commit
  was unformatted)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: address CodeRabbit review findings

- Add trailing newline to TDD_EVIDENCE.md (MD047)
- Make _load_hooks() search for repo: local instead of assuming index 0
- Replace fragile multi-line string assertion in actionlint test with
  semantic line-by-line checks

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Dominikus Nold <djm81@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: CodeRabbit <noreply@coderabbit.ai>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
- Widen workflow_changed filter to include scripts/run_actionlint.sh
  and scripts/yaml-tools.sh so Workflow Lint triggers on script changes
- Pin actionlint default to v1.7.11 (matches CI) instead of latest
- Fix run_actionlint.sh conflating "not installed" with "lint failures"
  by separating availability check from execution
- Restore sys.path after test_bundle_import to avoid cross-test leakage
- Normalize CHANGE_ORDER.md status format to semicolon convention

Co-authored-by: Dominikus Nold <djm81@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
#472)

Simplify run_actionlint.sh control flow so both local and docker
execution paths propagate actionlint's exit code via `exit $?`. Previously
the docker path used `if run_with_docker; then exit 0; fi` which treated
lint errors as "docker unavailable" and fell through to install guidance.

Co-authored-by: Dominikus Nold <djm81@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
#473)

- Assert hook id == "specfact-smart-checks" to prevent silent renames
- cd to REPO_ROOT before running local actionlint so it finds workflows
  regardless of caller's cwd

Co-authored-by: Dominikus Nold <djm81@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…4.0 (#474)

* feat: clean-code-01-principle-gates — 7-principle charter gates, v0.44.0

Implements openspec/changes/clean-code-01-principle-gates:

- Rewrote .cursor/rules/clean-code-principles.mdc as a canonical alias
  surface for the 7-principle clean-code charter (naming, kiss, yagni,
  dry, solid) defined in nold-ai/specfact-cli-modules. Documents Phase A
  KISS thresholds (>80 warning / >120 error LOC), nesting-depth and
  parameter-count checks active, and Phase B (>40/80) explicitly deferred.
- Added Clean-Code Review Gate sections to AGENTS.md and CLAUDE.md listing
  all 5 expanded review categories and the Phase A thresholds.
- Created .github/copilot-instructions.md as a lightweight alias (< 30 lines)
  referencing the canonical charter without duplicating it inline.
- Added unit tests (test_clean_code_principle_gates.py) covering all three
  spec scenarios: charter references, compliance gate, LOC/nesting thresholds.
- TDD evidence recorded in openspec/changes/clean-code-01-principle-gates/TDD_EVIDENCE.md.
- Bumped version 0.43.3 → 0.44.0 (minor — feature branch).
- Updated CHANGELOG.md and openspec/CHANGE_ORDER.md.

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

* fix: clean-code-01-principle-gates review findings and broad exception handling\n\n- Fix coderabbitai review findings:\n  - Clarify T20 and W0718 are aspirational in clean-code-principles.mdc\n  - Add language specifier to TDD_EVIDENCE.md fenced code block\n  - Update test to check all 7 canonical principles\n  - Make LOC threshold assertion more specific\n- Improve exception handling throughout codebase:\n  - Replace broad except Exception with specific exceptions\n  - Apply SOLID principle for better error handling\n- Update tasks.md to reflect completion status\n\nFixes #434\n\nGenerated by Mistral Vibe.\nCo-Authored-By: Mistral Vibe <vibe@mistral.ai>

---------

Co-authored-by: Dominikus Nold <djm81@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Archive 11 completed OpenSpec changes:
- bugfix-02-ado-import-payload-slugging
- ci-02-trustworthy-green-checks
- clean-code-01-principle-gates
- code-review-zero-findings
- docs-04-docs-review-gate-and-link-integrity
- docs-05-core-site-ia-restructure
- docs-07-core-handoff-conversion
- docs-12-docs-validation-ci
- docs-13-core-nav-search-theme-roles
- docs-14-first-contact-story-and-onboarding
- init-ide-prompt-source-selection
- packaging-02-cross-platform-runtime-and-module-resources
- speckit-02-v04-adapter-alignment

Fix spec validation errors:
- Add proper delta headers (ADDED/MODIFIED/REMOVED/RENAMED)
- Use correct scenario format with GIVEN/WHEN/THEN bullets
- Ensure requirement headers match between delta and main specs
- Use correct operation type based on existing requirements

Update main specs with archived changes:
- backlog-adapter: various updates
- bridge-adapter: Spec-Kit v0.4.x capabilities
- bridge-registry: BridgeConfig preset updates
- code-review-module: new requirements
- debug-logging: enhancements
- devops-sync: improvements
- documentation-alignment: core vs modules separation
- review-cli-contracts: new contracts
- review-run-command: command updates

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
…w fixes (#477)

* Fix content for install, sync, uninstallä

* test(docs): align first-contact contracts and stabilize module CLI tests

- docs/index: restore Why does it exist?, tagline, OpenSpec, canonical core CLI story
- Update init profile tests for solo-developer + install all (code-review, six bundles)
- Lean help test accepts uvx init hint; upgrade/core_compatibility tests match runtime
- Autouse fixture re-bootstraps CommandRegistry after category-group tests
- Rebase tasks conflict resolved; TDD_EVIDENCE + tasks for gates 7.1/7.2/12.1/12.2

Made-with: Cursor

* fix(tools): smart-test baseline and pre-commit single code-review run

- Run full suite when smart-test cache has no last_full_run; force+auto falls back to full when incremental is a no-op
- Pre-commit: invoke pre_commit_code_review.py once (no xargs split) so .specfact/code-review.json is not clobbered
- Tests and OpenSpec tasks for docs-new-user-onboarding

Made-with: Cursor

* test: fix CI backlog copy assertions and module install test isolation

- Align backlog not-installed tests with solo-developer init guidance (no <profile> placeholder)
- Autouse: reset CommandRegistry, register_builtin_commands, rebuild_root_app_from_registry so module install tests work after registry-only clears

Made-with: Cursor

* docs: README wow path + tests locking entrypoint with docs

- README leads with uvx init + code review run --scope full; pip install secondary
- Unit contract tests: README and docs/index.md share canonical uvx strings and order
- E2E: init --profile solo-developer in temp git repo; registry ready for step two with mock bundles

Made-with: Cursor

* feat(init): solo-developer includes code-review bundle and marketplace install

- Add specfact-code-review to canonical bundles and solo-developer preset
- Install marketplace module nold-ai/specfact-code-review via install_bundles_for_init
- Docs index: core CLI story and default starting point copy for parity tests
- CLI: missing-module hint references solo-developer profile
- smart_test_coverage: icontract requires use (self, test_level) for method contracts
- Re-sign init and module_registry manifests; tests and registry updates

Made-with: Cursor

* fix(tools): align _run_changed_only with tuple return and baseline full run

- Return (success, ran_any) from _run_changed_only; run full suite when no last_full_run
- run_smart_tests(auto, force): fall back to full tests when incremental ran nothing
- Fix wow e2e fixture typing (Iterator[None]) for basedpyright

Unblocks PR #477 CI: type-check, tests, lint job.

Made-with: Cursor

* chore(release): bump to 0.45.1 and update OpenSpec tasks status

- Sync version across pyproject.toml, setup.py, and __init__ modules
- Changelog: 0.45.1 entry for dependency profiles, smart-test baseline, CI, UX
- openspec: rolling status snapshot and task checkboxes for PR verification
- Includes prior branch work: init/profile, module registry, docs entry path, workflows

Made-with: Cursor

---------

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

* fix: code-review gate (Typer params), typer<0.24 vs semgrep, module upgrade tests

- Split root/install Typer callbacks into merged param stubs (KISS param count).
- Patch typer.main via importlib; merge install param specs in module_registry.
- Cap typer<0.24 to stay compatible with semgrep click~=8.1.8.
- Invoke module_registry app directly in upgrade CLI tests (root app may lack module group).
- Refactors for first_run_selection, module_packages, registry tests, semgrep README.

Worktree: specfact-cli-worktrees/bugfix/code-review-cli-tests
Made-with: Cursor

* docs: use code import in examples (flat import removed from CLI)

Replace specfact [--flags] import from-code with specfact [--flags] code import
from-code so check-docs-commands matches the nested Typer path after removing
the flat import shim.

Made-with: Cursor

* Fix review findings

---------

Co-authored-by: Dom <djm81@users.noreply.github.com>
* docs: restructure readme for star conversion

Co-authored-by: Dom <djm81@users.noreply.github.com>

* docs: sync readme change tracking

Co-authored-by: Dom <djm81@users.noreply.github.com>

* docs: relocate readme support artifacts

Co-authored-by: Dom <djm81@users.noreply.github.com>

* docs: fix readme workflow snippet and pin demo capture

Co-authored-by: Dom <djm81@users.noreply.github.com>

* docs: address remaining readme review findings

Co-authored-by: Dom <djm81@users.noreply.github.com>

---------

Co-authored-by: Dom <djm81@users.noreply.github.com>
Signed-off-by: Dom <39115308+djm81@users.noreply.github.com>
@djm81 djm81 self-assigned this Apr 8, 2026
@djm81 djm81 added documentation Improvements or additions to documentation dependencies Dependency resolution and management labels Apr 8, 2026
@djm81 djm81 moved this from Todo to In Progress in SpecFact CLI Apr 8, 2026
@djm81 djm81 merged commit 24b9f94 into main Apr 8, 2026
20 of 21 checks passed
@github-project-automation github-project-automation bot moved this from In Progress to Done in SpecFact CLI Apr 8, 2026
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Apr 8, 2026

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 9fbae63e-22f4-4e91-8f5a-5ac445713149

📥 Commits

Reviewing files that changed from the base of the PR and between 436bde8 and e8c3848.

📒 Files selected for processing (132)
  • docs/architecture/discrepancies-report.md
  • docs/architecture/implementation-status.md
  • docs/architecture/overview.md
  • openspec/CHANGE_ORDER.md
  • openspec/changes/architecture-01-solution-layer/proposal.md
  • openspec/changes/archive/2026-04-05-ci-docs-sync-check/.openspec.yaml
  • openspec/changes/archive/2026-04-05-ci-docs-sync-check/design.md
  • openspec/changes/archive/2026-04-05-ci-docs-sync-check/proposal.md
  • openspec/changes/archive/2026-04-05-ci-docs-sync-check/specs/ci-integration/spec.md
  • openspec/changes/archive/2026-04-05-ci-docs-sync-check/specs/docs-sync-algorithm/spec.md
  • openspec/changes/archive/2026-04-05-ci-docs-sync-check/specs/github-workflow/spec.md
  • openspec/changes/archive/2026-04-05-ci-docs-sync-check/tasks.md
  • openspec/changes/archive/2026-04-05-docs-new-user-onboarding/.openspec.yaml
  • openspec/changes/archive/2026-04-05-docs-new-user-onboarding/TDD_EVIDENCE.md
  • openspec/changes/archive/2026-04-05-docs-new-user-onboarding/design.md
  • openspec/changes/archive/2026-04-05-docs-new-user-onboarding/proposal.md
  • openspec/changes/archive/2026-04-05-docs-new-user-onboarding/specs/dependency-resolution/spec.md
  • openspec/changes/archive/2026-04-05-docs-new-user-onboarding/specs/docs-aha-moment-entry/spec.md
  • openspec/changes/archive/2026-04-05-docs-new-user-onboarding/specs/docs-vibecoder-entry-path/spec.md
  • openspec/changes/archive/2026-04-05-docs-new-user-onboarding/specs/entrypoint-onboarding/spec.md
  • openspec/changes/archive/2026-04-05-docs-new-user-onboarding/specs/first-contact-story/spec.md
  • openspec/changes/archive/2026-04-05-docs-new-user-onboarding/specs/first-run-selection/spec.md
  • openspec/changes/archive/2026-04-05-docs-new-user-onboarding/specs/module-installation/spec.md
  • openspec/changes/archive/2026-04-05-docs-new-user-onboarding/specs/profile-presets/spec.md
  • openspec/changes/archive/2026-04-05-docs-new-user-onboarding/tasks.md
  • openspec/changes/archive/2026-04-05-module-migration-04-remove-flat-shims/CHANGE_VALIDATION.md
  • openspec/changes/archive/2026-04-05-module-migration-04-remove-flat-shims/proposal.md
  • openspec/changes/archive/2026-04-05-module-migration-04-remove-flat-shims/specs/category-command-groups/spec.md
  • openspec/changes/archive/2026-04-05-module-migration-04-remove-flat-shims/tasks.md
  • openspec/changes/archive/2026-04-05-module-migration-10-bundle-command-surface-alignment/TDD_EVIDENCE.md
  • openspec/changes/archive/2026-04-05-module-migration-10-bundle-command-surface-alignment/design.md
  • openspec/changes/archive/2026-04-05-module-migration-10-bundle-command-surface-alignment/proposal.md
  • openspec/changes/archive/2026-04-05-module-migration-10-bundle-command-surface-alignment/specs/bundle-command-surface-alignment/spec.md
  • openspec/changes/archive/2026-04-05-module-migration-10-bundle-command-surface-alignment/tasks.md
  • openspec/changes/archive/2026-04-05-readme-star-conversion-01/.openspec.yaml
  • openspec/changes/archive/2026-04-05-readme-star-conversion-01/TDD_EVIDENCE.md
  • openspec/changes/archive/2026-04-05-readme-star-conversion-01/proposal.md
  • openspec/changes/archive/2026-04-05-readme-star-conversion-01/specs/readme-first-contact/spec.md
  • openspec/changes/archive/2026-04-05-readme-star-conversion-01/tasks.md
  • openspec/changes/archive/2026-04-08-agile-01-feature-hierarchy/.openspec.yaml
  • openspec/changes/archive/2026-04-08-agile-01-feature-hierarchy/CHANGE_VALIDATION.md
  • openspec/changes/archive/2026-04-08-agile-01-feature-hierarchy/proposal.md
  • openspec/changes/archive/2026-04-08-agile-01-feature-hierarchy/specs/agile-feature-hierarchy/spec.md
  • openspec/changes/archive/2026-04-08-agile-01-feature-hierarchy/tasks.md
  • openspec/changes/archive/2026-04-08-cross-repo-issue-realignment/.openspec.yaml
  • openspec/changes/archive/2026-04-08-cross-repo-issue-realignment/analysis.md
  • openspec/changes/archive/2026-04-08-cross-repo-issue-realignment/design.md
  • openspec/changes/archive/2026-04-08-cross-repo-issue-realignment/proposal.md
  • openspec/changes/archive/2026-04-08-cross-repo-issue-realignment/specs/backlog-module-ownership/spec.md
  • openspec/changes/archive/2026-04-08-cross-repo-issue-realignment/specs/cross-repo-backlog-alignment/spec.md
  • openspec/changes/archive/2026-04-08-cross-repo-issue-realignment/specs/project-codebase-ownership/spec.md
  • openspec/changes/archive/2026-04-08-cross-repo-issue-realignment/tasks.md
  • openspec/changes/backlog-auth-01-backlog-auth-commands/.openspec.yaml
  • openspec/changes/backlog-auth-01-backlog-auth-commands/CHANGE_VALIDATION.md
  • openspec/changes/backlog-auth-01-backlog-auth-commands/proposal.md
  • openspec/changes/backlog-auth-01-backlog-auth-commands/specs/backlog-auth-commands/spec.md
  • openspec/changes/backlog-auth-01-backlog-auth-commands/tasks.md
  • openspec/changes/backlog-kanban-01-flow-metrics/CHANGE_VALIDATION.md
  • openspec/changes/backlog-kanban-01-flow-metrics/proposal.md
  • openspec/changes/backlog-kanban-01-flow-metrics/specs/kanban-flow/spec.md
  • openspec/changes/backlog-kanban-01-flow-metrics/tasks.md
  • openspec/changes/backlog-safe-01-pi-planning/CHANGE_VALIDATION.md
  • openspec/changes/backlog-safe-01-pi-planning/proposal.md
  • openspec/changes/backlog-safe-01-pi-planning/specs/safe-pi/spec.md
  • openspec/changes/backlog-safe-01-pi-planning/tasks.md
  • openspec/changes/backlog-safe-02-risk-rollups/CHANGE_VALIDATION.md
  • openspec/changes/backlog-safe-02-risk-rollups/proposal.md
  • openspec/changes/backlog-safe-02-risk-rollups/specs/risk-rollups/spec.md
  • openspec/changes/backlog-safe-02-risk-rollups/tasks.md
  • openspec/changes/backlog-scrum-02-sprint-planning/CHANGE_VALIDATION.md
  • openspec/changes/backlog-scrum-02-sprint-planning/design.md
  • openspec/changes/backlog-scrum-02-sprint-planning/proposal.md
  • openspec/changes/backlog-scrum-02-sprint-planning/specs/sprint-planning/spec.md
  • openspec/changes/backlog-scrum-02-sprint-planning/tasks.md
  • openspec/changes/backlog-scrum-03-story-complexity/CHANGE_VALIDATION.md
  • openspec/changes/backlog-scrum-03-story-complexity/design.md
  • openspec/changes/backlog-scrum-03-story-complexity/proposal.md
  • openspec/changes/backlog-scrum-03-story-complexity/specs/story-complexity/spec.md
  • openspec/changes/backlog-scrum-03-story-complexity/tasks.md
  • openspec/changes/backlog-scrum-04-definition-of-done/CHANGE_VALIDATION.md
  • openspec/changes/backlog-scrum-04-definition-of-done/design.md
  • openspec/changes/backlog-scrum-04-definition-of-done/proposal.md
  • openspec/changes/backlog-scrum-04-definition-of-done/specs/definition-of-done/spec.md
  • openspec/changes/backlog-scrum-04-definition-of-done/tasks.md
  • openspec/changes/ceremony-02-requirements-aware-output/CHANGE_VALIDATION.md
  • openspec/changes/ceremony-02-requirements-aware-output/design.md
  • openspec/changes/ceremony-02-requirements-aware-output/proposal.md
  • openspec/changes/ceremony-02-requirements-aware-output/specs/backlog-refinement/spec.md
  • openspec/changes/ceremony-02-requirements-aware-output/specs/ceremony-requirements-awareness/spec.md
  • openspec/changes/ceremony-02-requirements-aware-output/specs/daily-standup/spec.md
  • openspec/changes/ceremony-02-requirements-aware-output/tasks.md
  • openspec/changes/governance-01-evidence-output/proposal.md
  • openspec/changes/governance-02-exception-management/proposal.md
  • openspec/changes/module-migration-04-remove-flat-shims/specs/category-command-groups/spec.md
  • openspec/changes/module-migration-10-bundle-command-surface-alignment/tasks.md
  • openspec/changes/openspec-01-intent-trace/proposal.md
  • openspec/changes/policy-02-packs-and-modes/.openspec.yaml
  • openspec/changes/policy-02-packs-and-modes/CHANGE_VALIDATION.md
  • openspec/changes/policy-02-packs-and-modes/design.md
  • openspec/changes/policy-02-packs-and-modes/proposal.md
  • openspec/changes/policy-02-packs-and-modes/specs/policy-engine/spec.md
  • openspec/changes/policy-02-packs-and-modes/specs/policy-packs-and-modes/spec.md
  • openspec/changes/policy-02-packs-and-modes/tasks.md
  • openspec/changes/profile-01-config-layering/proposal.md
  • openspec/changes/requirements-02-module-commands/proposal.md
  • openspec/changes/requirements-03-backlog-sync/proposal.md
  • openspec/changes/sync-01-unified-kernel/.openspec.yaml
  • openspec/changes/sync-01-unified-kernel/CHANGE_VALIDATION.md
  • openspec/changes/sync-01-unified-kernel/design.md
  • openspec/changes/sync-01-unified-kernel/proposal.md
  • openspec/changes/sync-01-unified-kernel/specs/devops-sync/spec.md
  • openspec/changes/sync-01-unified-kernel/specs/sync-kernel/spec.md
  • openspec/changes/sync-01-unified-kernel/tasks.md
  • openspec/changes/traceability-01-index-and-orphans/proposal.md
  • openspec/changes/validation-02-full-chain-engine/proposal.md
  • openspec/specs/agile-feature-hierarchy/spec.md
  • openspec/specs/backlog-module-ownership/spec.md
  • openspec/specs/bundle-command-surface-alignment/spec.md
  • openspec/specs/ci-integration/spec.md
  • openspec/specs/cross-repo-backlog-alignment/spec.md
  • openspec/specs/dependency-resolution/spec.md
  • openspec/specs/docs-aha-moment-entry/spec.md
  • openspec/specs/docs-sync-algorithm/spec.md
  • openspec/specs/docs-vibecoder-entry-path/spec.md
  • openspec/specs/entrypoint-onboarding/spec.md
  • openspec/specs/first-contact-story/spec.md
  • openspec/specs/first-run-selection/spec.md
  • openspec/specs/github-workflow/spec.md
  • openspec/specs/module-installation/spec.md
  • openspec/specs/profile-presets/spec.md
  • openspec/specs/project-codebase-ownership/spec.md
  • openspec/specs/readme-first-contact/spec.md

📝 Walkthrough

Summary

This PR implements cross-repository alignment governance documentation for the SpecFact CLI project, formalizing rules for splitting work between the core specfact-cli repository and the bundle-owned specfact-cli-modules repository. No CLI behavior, API contracts, or runtime code changes are included—this is documentation-only.

OpenSpec Specifications Added

New specification documents in openspec/specs/:

  • cross-repo-backlog-alignment/spec.md: Defines five core requirements for realigning active OpenSpec changes and GitHub issues across repositories:
    1. All active changes must be classified as core, modules, or split/rescope against the canonical post-migration ownership model
    2. Module-owned issues must follow a deterministic reassignment path: transfer to specfact-cli-modules when possible, or close-and-recreate with cross-reference when transfer is unsuitable
    3. Target Epic/Feature hierarchy must exist in specfact-cli-modules before module-owned user stories are transferred
    4. Planning inventories (openspec/CHANGE_ORDER.md and module-repo equivalents) must be synchronized when ownership changes
    5. Active proposals must be updated to reflect current architecture and repository ownership, removing references to obsolete monolithic paths or incorrect in-repo modules/ layouts

Specification Updates

  • backlog-module-ownership/spec.md: Extended to explicitly include "active proposal backlog and GitHub planning artifacts" in specfact-backlog bundle ownership; adds requirement that pending OpenSpec changes describing backlog/ceremony command behavior be assigned to modules-repo planning hierarchy (not core-repo implementation).

  • project-codebase-ownership/spec.md: Extended "Pending Changes Must Align With The Ownership Decision" requirement to include "issue planning"; adds scenario requiring active proposals describing modules/<name>/ implementation in specfact-cli for bundle-owned capabilities be reconciled to correct repository/bundle ownership model.

Archival

  • Archived the active OpenSpec change cross-repo-issue-realignment to openspec/changes/archive/2026-04-08-cross-repo-issue-realignment/ after its specifications were promoted to permanent openspec/specs/ entries.

Impact Assessment

  • User-visible CLI behavior: None—no commands, options, or defaults changed
  • API/contract impact: None—no public functions, Pydantic models, or module package boundaries modified
  • Testing: No contract tests, hatch run configurations, or coverage implications—specifications define governance requirements only
  • Documentation: OpenSpec governance specifications now codify the cross-repo classification and reassignment framework; no CHANGELOG or version bumps required

Walkthrough

This PR reorganizes OpenSpec change ownership and governance across specfact-cli (core) and specfact-cli-modules (bundles). It archives obsolete proposals in core, adds "Ownership Alignment" sections to active rescoped changes, clarifies that flat command families are non-canonical, updates CHANGE_ORDER.md to track module-repo issue dependencies, and introduces new governance specs for cross-repo backlog alignment and bundle command surface validation.

Changes

Cohort / File(s) Summary
Architecture Documentation Clarity
docs/architecture/overview.md, docs/architecture/discrepancies-report.md, docs/architecture/implementation-status.md
Removes references to obsolete flat specfact architecture ..., specfact requirements ..., specfact trace ... command families; marks them as non-canonical; clarifies core owns schemas/contracts while runtime delivery belongs in specfact-cli-modules bundles under grouped command structure.
Active Proposals Rescoped with Ownership Alignment
openspec/changes/architecture-01-solution-layer/proposal.md, openspec/changes/governance-01-evidence-output/proposal.md, openspec/changes/governance-02-exception-management/proposal.md, openspec/changes/openspec-01-intent-trace/proposal.md, openspec/changes/profile-01-config-layering/proposal.md, openspec/changes/requirements-02-module-commands/proposal.md, openspec/changes/requirements-03-backlog-sync/proposal.md, openspec/changes/traceability-01-index-and-orphans/proposal.md, openspec/changes/validation-02-full-chain-engine/proposal.md
Adds explicit "Ownership Alignment (2026-04-08)" sections defining split/rescope decisions, core-retained scope (schemas, contracts, bridges), bundle-owned follow-up requirements, and paired modules-repo issue references to unblock runtime implementation.
Archived Core-to-Modules Reassignments
openspec/changes/archive/2026-04-05-docs-new-user-onboarding/*, openspec/changes/archive/2026-04-05-module-migration-04-remove-flat-shims/*, openspec/changes/archive/2026-04-05-module-migration-10-bundle-command-surface-alignment/*, openspec/changes/archive/2026-04-08-agile-01-feature-hierarchy/*, openspec/changes/backlog-auth-01-backlog-auth-commands/*, openspec/changes/backlog-kanban-01-flow-metrics/*, openspec/changes/backlog-safe-01-pi-planning/*, openspec/changes/backlog-safe-02-risk-rollups/*, openspec/changes/backlog-scrum-02-sprint-planning/*, openspec/changes/backlog-scrum-03-story-complexity/*, openspec/changes/backlog-scrum-04-definition-of-done/*, openspec/changes/ceremony-02-requirements-aware-output/*, openspec/changes/policy-02-packs-and-modes/*, openspec/changes/sync-01-unified-kernel/*
Removes/archives 14+ obsolete backlog, ceremony, policy, and sync proposals from active core scope; marks them implemented/moved to specfact-cli-modules with module-repo issue references; task completion checklists mark work as archived with 2026-04-05/04-08 dates.
OpenSpec Governance & Planning Realignment
openspec/CHANGE_ORDER.md, openspec/changes/archive/2026-04-08-cross-repo-issue-realignment/proposal.md, openspec/changes/archive/2026-04-08-cross-repo-issue-realignment/design.md, openspec/changes/archive/2026-04-08-cross-repo-issue-realignment/analysis.md, openspec/changes/archive/2026-04-08-cross-repo-issue-realignment/tasks.md
Centralizes cross-repository governance: updates CHANGE_ORDER.md to replace core backlog/integration item blockers with module-repo issue references; adds cross-repo-issue-realignment change with detailed proposal, design, analysis, and task instructions for issue reassignment workflow, canonical ownership classification, and Epic→Feature→User Story hierarchy creation in modules repo.
New Governance & Specification Documents
openspec/specs/agile-feature-hierarchy/spec.md, openspec/specs/backlog-module-ownership/spec.md, openspec/specs/bundle-command-surface-alignment/spec.md, openspec/specs/ci-integration/spec.md, openspec/specs/cross-repo-backlog-alignment/spec.md, openspec/specs/dependency-resolution/spec.md, openspec/specs/docs-aha-moment-entry/spec.md, openspec/specs/docs-sync-algorithm/spec.md, openspec/specs/docs-vibecoder-entry-path/spec.md, openspec/specs/entrypoint-onboarding/spec.md, openspec/specs/first-contact-story/spec.md, openspec/specs/first-run-selection/spec.md, openspec/specs/github-workflow/spec.md, openspec/specs/module-installation/spec.md, openspec/specs/profile-presets/spec.md, openspec/specs/project-codebase-ownership/spec.md, openspec/specs/readme-first-contact/spec.md
Defines new governance specs covering cross-repo backlog alignment (issue reassignment, ownership classification, planning hierarchy sync), bundle command surface validation/drift detection, agile feature hierarchy (Epic→Feature→User Story), module installation multi-target support (install/upgrade/uninstall with dependency resolution and major-version gating), profile preset bundle sets, docs homepage/aha-moment entry paths, and README first-contact value positioning; extends dependency-resolution spec with versioned bundle_dependencies, circular-dependency detection, and --dry-run support.

Estimated Code Review Effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Reasoning: This PR involves heterogeneous, interdependent changes across strategic ownership boundaries. While many individual files are documentation-only, the cumulative scope demands careful verification: (1) consistency of split/rescope decisions across 9+ rescoped proposals and 14+ archived changes, (2) correctness of paired modules-repo issue links (20+ cross-repo references), (3) alignment of new governance specs with existing contract-first boundaries and Typer/Rich CLI shape, (4) verification that removed proposals are truly redundant rather than orphaning critical requirements, and (5) confirmation that CHANGE_ORDER.md updates correctly reflect both repos' planning hierarchies. The lack of code changes paradoxically increases review complexity—architectural correctness depends entirely on governance documentation coherence.

Possibly Related Issues

Possibly Related PRs

Suggested Labels

openspec, architecture, module-system


Architectural Notes

This PR codifies a lean-core + modular-bundles ownership model through systematic rescoping. Key architectural decisions:

  1. Schema/Contract Retention in Core: Proposals rescoped to split/rescope retain schema definitions (e.g., governance-01 keeps evidence envelope semantics, requirements-03 keeps sync contracts) while delegating runtime command surfaces and emitters to specfact-cli-modules. This preserves @icontract boundaries and contract-first integration points.

  2. Canonical Grouped Command Ownership: Removes implicit assumption that flat specfact <noun> surfaces (e.g., specfact architecture, specfact trace) belong in core; explicitly mandates grouped command registration under canonical bundle owners (e.g., specfact backlog <subcommand> under backlog bundle, not core).

  3. Cross-Repo Planning Hierarchy: New agile-feature-hierarchy and cross-repo-backlog-alignment specs establish that specfact-cli-modules must mirror the Epic → Feature → User Story planning structure from specfact-cli, enabling issue transfer workflows and preventing orphaned stories.

  4. Dependency Resolution as Governance: dependency-resolution spec now covers versioned bundle_dependencies, circular-dependency detection, and major-version gating—mechanics that enforce correct bundle interdependencies across repos.

Recommend reviewers verify that no critical Typer CLI shapes are being deferred without explicit paired modules-repo issues, and that all rescoped proposals have valid GitHub issue cross-links to unblock implementation.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch dev

Copy link
Copy Markdown

@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: e8c3848624

ℹ️ 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".


## Sources Used

- [core-lean-package](/home/dom/git/nold-ai/specfact-cli/openspec/specs/core-lean-package/spec.md)
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Replace machine-local links with repository-relative links

This archived analysis introduces Markdown links that point to /home/dom/git/..., which only resolve on one local workstation and are broken for everyone else (including GitHub rendering and other clones). Because this document is used to justify cross-repo ownership moves, broken references make the decision trail unverifiable and can lead to incorrect reassignment follow-ups.

Useful? React with 👍 / 👎.

Comment thread openspec/CHANGE_ORDER.md

| Module | Order | Change folder | GitHub # | Blocked by |
|--------|-------|---------------|----------|------------|
| governance | 01 | cross-repo-issue-realignment | [#484](https://github.com/nold-ai/specfact-cli/issues/484) | agile-01 ✅; module-migration-11 [#408](https://github.com/nold-ai/specfact-cli/issues/408); backlog-module-ownership-cleanup |
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Mark archived cross-repo change as completed in CHANGE_ORDER

This row lists cross-repo-issue-realignment as an active governance change even though the same commit archives it under openspec/changes/archive/2026-04-08-cross-repo-issue-realignment/. Leaving the planning ledger in a non-complete state creates an inconsistent source of truth and can cause maintainers or workflow tooling to treat an already-archived change as still pending.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Dependency resolution and management documentation Improvements or additions to documentation

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant