Fix dev promotion review findings#300
Conversation
|
Strix is installed on this repository, but we could not run this PR security review because this workspace does not have an active plan. If you'd like to continue receiving code reviews, you can add a payment method or manage billing here. |
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (7)
📝 WalkthroughBundle and Module Surface ChangesCommands and AI Instruction Layer
Cleanup Forecast and Schema Evolution
Parse Result Caching
Test Classification Logic
Manifest and Integrity UpdatesVersion and Registry Synchronization
OpenSpec and Schema GovernanceProposal Specification Update
Documentation and Consumer ContractOutput Path Canonicalization
Test Coverage AdditionsTest Layer Enhancements
Total affected files: 58 (primarily registry sidecar updates, with 10 material code/test changes) WalkthroughRefactors cleanup-forecast report refresh to use Pydantic model_copy and set schema_version "1.3"; adds per-guidance-kind weight to forecasts; caches AST parsing for preserve-reason detection; broadens test-directory detection; updates simplify workflow docs/CLI to write canonical ChangesCleanup Forecast Handoff and Release
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related issues
Possibly related PRs
Focus: verify package integrity metadata (signatures/checksums), confirm registry index and .sha256 files match released artifacts, and ensure tests exercise the migration to schema "1.3" and canonical 🚥 Pre-merge checks | ✅ 3 | ❌ 2❌ Failed checks (2 warnings)
✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: cf6170a7cf
ℹ️ 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".
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@packages/specfact-code-review/src/specfact_code_review/run/forecast.py`:
- Line 82: The test-path check currently only matches exact directory names
"test"/"tests"; update the conditional that inspects file_path.parts so it flags
any path segment containing "test" (case-insensitive) instead of exact equality.
Locate the expression using file_path.parts (the if any(part in {"test",
"tests"} for part in file_path.parts):) and change the predicate to check for
"test" as a substring on the lowercased segment (e.g., any("test" in
part.lower() for part in file_path.parts)) so segments like "unit_tests" or
"integration-test" are classified as tests.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: c0351ccc-82eb-41ba-ac25-db919057f94f
⛔ Files ignored due to path filters (1)
registry/modules/specfact-code-review-0.47.31.tar.gzis excluded by!**/*.gz
📒 Files selected for processing (94)
docs/bundles/code-review/run.mdopenspec/changes/code-review-13-cleanup-forecast-agent-handoff/proposal.mdpackages/specfact-code-review/module-package.yamlpackages/specfact-code-review/src/specfact_code_review/review/commands.pypackages/specfact-code-review/src/specfact_code_review/run/cleanup_evidence.pypackages/specfact-code-review/src/specfact_code_review/run/findings.pypackages/specfact-code-review/src/specfact_code_review/run/forecast.pypackages/specfact-code-review/src/specfact_code_review/run/runner.pyregistry/index.jsonregistry/modules/specfact-backlog-0.39.0.tar.gz.sha256registry/modules/specfact-backlog-0.40.0.tar.gz.sha256registry/modules/specfact-backlog-0.40.1.tar.gz.sha256registry/modules/specfact-backlog-0.40.10.tar.gz.sha256registry/modules/specfact-backlog-0.40.11.tar.gz.sha256registry/modules/specfact-backlog-0.40.13.tar.gz.sha256registry/modules/specfact-backlog-0.40.14.tar.gz.sha256registry/modules/specfact-backlog-0.40.15.tar.gz.sha256registry/modules/specfact-backlog-0.40.2.tar.gz.sha256registry/modules/specfact-backlog-0.40.3.tar.gz.sha256registry/modules/specfact-backlog-0.40.4.tar.gz.sha256registry/modules/specfact-backlog-0.40.5.tar.gz.sha256registry/modules/specfact-backlog-0.40.6.tar.gz.sha256registry/modules/specfact-backlog-0.40.7.tar.gz.sha256registry/modules/specfact-backlog-0.40.8.tar.gz.sha256registry/modules/specfact-backlog-0.40.9.tar.gz.sha256registry/modules/specfact-code-review-0.47.31.tar.gz.sha256registry/modules/specfact-codebase-0.39.0.tar.gz.sha256registry/modules/specfact-codebase-0.40.0.tar.gz.sha256registry/modules/specfact-codebase-0.40.1.tar.gz.sha256registry/modules/specfact-codebase-0.40.10.tar.gz.sha256registry/modules/specfact-codebase-0.40.11.tar.gz.sha256registry/modules/specfact-codebase-0.40.12.tar.gz.sha256registry/modules/specfact-codebase-0.40.13.tar.gz.sha256registry/modules/specfact-codebase-0.40.14.tar.gz.sha256registry/modules/specfact-codebase-0.40.2.tar.gz.sha256registry/modules/specfact-codebase-0.40.3.tar.gz.sha256registry/modules/specfact-codebase-0.40.4.tar.gz.sha256registry/modules/specfact-codebase-0.40.5.tar.gz.sha256registry/modules/specfact-codebase-0.40.6.tar.gz.sha256registry/modules/specfact-codebase-0.40.7.tar.gz.sha256registry/modules/specfact-codebase-0.40.8.tar.gz.sha256registry/modules/specfact-codebase-0.40.9.tar.gz.sha256registry/modules/specfact-codebase-0.41.0.tar.gz.sha256registry/modules/specfact-govern-0.39.0.tar.gz.sha256registry/modules/specfact-govern-0.40.0.tar.gz.sha256registry/modules/specfact-govern-0.40.1.tar.gz.sha256registry/modules/specfact-govern-0.40.10.tar.gz.sha256registry/modules/specfact-govern-0.40.11.tar.gz.sha256registry/modules/specfact-govern-0.40.12.tar.gz.sha256registry/modules/specfact-govern-0.40.13.tar.gz.sha256registry/modules/specfact-govern-0.40.2.tar.gz.sha256registry/modules/specfact-govern-0.40.3.tar.gz.sha256registry/modules/specfact-govern-0.40.4.tar.gz.sha256registry/modules/specfact-govern-0.40.5.tar.gz.sha256registry/modules/specfact-govern-0.40.6.tar.gz.sha256registry/modules/specfact-govern-0.40.7.tar.gz.sha256registry/modules/specfact-govern-0.40.8.tar.gz.sha256registry/modules/specfact-govern-0.40.9.tar.gz.sha256registry/modules/specfact-project-0.39.0.tar.gz.sha256registry/modules/specfact-project-0.40.0.tar.gz.sha256registry/modules/specfact-project-0.40.1.tar.gz.sha256registry/modules/specfact-project-0.40.11.tar.gz.sha256registry/modules/specfact-project-0.40.12.tar.gz.sha256registry/modules/specfact-project-0.40.13.tar.gz.sha256registry/modules/specfact-project-0.40.14.tar.gz.sha256registry/modules/specfact-project-0.40.15.tar.gz.sha256registry/modules/specfact-project-0.40.2.tar.gz.sha256registry/modules/specfact-project-0.40.20.tar.gz.sha256registry/modules/specfact-project-0.40.3.tar.gz.sha256registry/modules/specfact-project-0.40.4.tar.gz.sha256registry/modules/specfact-project-0.40.5.tar.gz.sha256registry/modules/specfact-project-0.40.6.tar.gz.sha256registry/modules/specfact-project-0.40.7.tar.gz.sha256registry/modules/specfact-project-0.40.8.tar.gz.sha256registry/modules/specfact-project-0.40.9.tar.gz.sha256registry/modules/specfact-spec-0.39.0.tar.gz.sha256registry/modules/specfact-spec-0.40.0.tar.gz.sha256registry/modules/specfact-spec-0.40.1.tar.gz.sha256registry/modules/specfact-spec-0.40.10.tar.gz.sha256registry/modules/specfact-spec-0.40.11.tar.gz.sha256registry/modules/specfact-spec-0.40.12.tar.gz.sha256registry/modules/specfact-spec-0.40.13.tar.gz.sha256registry/modules/specfact-spec-0.40.2.tar.gz.sha256registry/modules/specfact-spec-0.40.3.tar.gz.sha256registry/modules/specfact-spec-0.40.4.tar.gz.sha256registry/modules/specfact-spec-0.40.5.tar.gz.sha256registry/modules/specfact-spec-0.40.6.tar.gz.sha256registry/modules/specfact-spec-0.40.7.tar.gz.sha256registry/modules/specfact-spec-0.40.8.tar.gz.sha256registry/modules/specfact-spec-0.40.9.tar.gz.sha256tests/unit/specfact_code_review/run/test_cleanup_evidence.pytests/unit/specfact_code_review/run/test_commands.pytests/unit/specfact_code_review/run/test_findings.pytests/unit/specfact_code_review/run/test_forecast.py
📜 Review details
🧰 Additional context used
📓 Path-based instructions (7)
registry/**
⚙️ CodeRabbit configuration file
registry/**: Registry and index consistency: bundle listings, version pins, and compatibility with
published module artifacts.
Files:
registry/modules/specfact-codebase-0.40.1.tar.gz.sha256registry/modules/specfact-project-0.40.5.tar.gz.sha256registry/modules/specfact-codebase-0.40.12.tar.gz.sha256registry/modules/specfact-codebase-0.40.11.tar.gz.sha256registry/modules/specfact-backlog-0.40.0.tar.gz.sha256registry/modules/specfact-codebase-0.40.6.tar.gz.sha256registry/modules/specfact-backlog-0.40.14.tar.gz.sha256registry/modules/specfact-project-0.40.20.tar.gz.sha256registry/modules/specfact-backlog-0.40.6.tar.gz.sha256registry/modules/specfact-backlog-0.40.4.tar.gz.sha256registry/modules/specfact-backlog-0.39.0.tar.gz.sha256registry/modules/specfact-codebase-0.40.7.tar.gz.sha256registry/modules/specfact-codebase-0.40.0.tar.gz.sha256registry/modules/specfact-project-0.39.0.tar.gz.sha256registry/modules/specfact-govern-0.40.1.tar.gz.sha256registry/modules/specfact-project-0.40.15.tar.gz.sha256registry/modules/specfact-spec-0.40.13.tar.gz.sha256registry/modules/specfact-spec-0.40.4.tar.gz.sha256registry/modules/specfact-codebase-0.40.2.tar.gz.sha256registry/modules/specfact-spec-0.40.10.tar.gz.sha256registry/modules/specfact-project-0.40.12.tar.gz.sha256registry/modules/specfact-project-0.40.13.tar.gz.sha256registry/modules/specfact-govern-0.40.7.tar.gz.sha256registry/modules/specfact-project-0.40.2.tar.gz.sha256registry/modules/specfact-spec-0.40.1.tar.gz.sha256registry/modules/specfact-codebase-0.40.14.tar.gz.sha256registry/modules/specfact-codebase-0.40.5.tar.gz.sha256registry/modules/specfact-backlog-0.40.1.tar.gz.sha256registry/modules/specfact-code-review-0.47.31.tar.gz.sha256registry/modules/specfact-backlog-0.40.9.tar.gz.sha256registry/modules/specfact-codebase-0.40.3.tar.gz.sha256registry/modules/specfact-codebase-0.39.0.tar.gz.sha256registry/modules/specfact-govern-0.40.3.tar.gz.sha256registry/modules/specfact-project-0.40.1.tar.gz.sha256registry/index.jsonregistry/modules/specfact-backlog-0.40.11.tar.gz.sha256registry/modules/specfact-backlog-0.40.7.tar.gz.sha256registry/modules/specfact-govern-0.40.5.tar.gz.sha256registry/modules/specfact-spec-0.40.3.tar.gz.sha256registry/modules/specfact-govern-0.40.13.tar.gz.sha256registry/modules/specfact-project-0.40.4.tar.gz.sha256registry/modules/specfact-govern-0.40.0.tar.gz.sha256registry/modules/specfact-backlog-0.40.10.tar.gz.sha256registry/modules/specfact-codebase-0.40.10.tar.gz.sha256registry/modules/specfact-govern-0.40.9.tar.gz.sha256registry/modules/specfact-govern-0.40.6.tar.gz.sha256registry/modules/specfact-govern-0.40.4.tar.gz.sha256registry/modules/specfact-project-0.40.8.tar.gz.sha256registry/modules/specfact-spec-0.40.2.tar.gz.sha256registry/modules/specfact-codebase-0.40.13.tar.gz.sha256registry/modules/specfact-spec-0.40.5.tar.gz.sha256registry/modules/specfact-govern-0.39.0.tar.gz.sha256registry/modules/specfact-backlog-0.40.8.tar.gz.sha256registry/modules/specfact-codebase-0.40.9.tar.gz.sha256registry/modules/specfact-govern-0.40.2.tar.gz.sha256registry/modules/specfact-backlog-0.40.2.tar.gz.sha256registry/modules/specfact-spec-0.40.9.tar.gz.sha256registry/modules/specfact-codebase-0.40.4.tar.gz.sha256registry/modules/specfact-govern-0.40.11.tar.gz.sha256registry/modules/specfact-project-0.40.0.tar.gz.sha256registry/modules/specfact-spec-0.39.0.tar.gz.sha256registry/modules/specfact-spec-0.40.6.tar.gz.sha256registry/modules/specfact-codebase-0.41.0.tar.gz.sha256registry/modules/specfact-backlog-0.40.3.tar.gz.sha256registry/modules/specfact-govern-0.40.12.tar.gz.sha256registry/modules/specfact-spec-0.40.12.tar.gz.sha256registry/modules/specfact-spec-0.40.0.tar.gz.sha256registry/modules/specfact-project-0.40.3.tar.gz.sha256registry/modules/specfact-project-0.40.9.tar.gz.sha256registry/modules/specfact-backlog-0.40.15.tar.gz.sha256registry/modules/specfact-backlog-0.40.13.tar.gz.sha256registry/modules/specfact-project-0.40.14.tar.gz.sha256registry/modules/specfact-govern-0.40.8.tar.gz.sha256registry/modules/specfact-spec-0.40.7.tar.gz.sha256registry/modules/specfact-govern-0.40.10.tar.gz.sha256registry/modules/specfact-project-0.40.11.tar.gz.sha256registry/modules/specfact-spec-0.40.11.tar.gz.sha256registry/modules/specfact-project-0.40.7.tar.gz.sha256registry/modules/specfact-backlog-0.40.5.tar.gz.sha256registry/modules/specfact-project-0.40.6.tar.gz.sha256registry/modules/specfact-spec-0.40.8.tar.gz.sha256registry/modules/specfact-codebase-0.40.8.tar.gz.sha256
packages/**/module-package.yaml
⚙️ CodeRabbit configuration file
packages/**/module-package.yaml: Validate metadata: name, version, commands, dependencies, and parity with packaged src.
Call out semver and signing implications when manifests or payloads change.
Files:
packages/specfact-code-review/module-package.yaml
**/*.{js,ts,tsx,jsx,py,java,cs,go,rb,php,cpp,c,h}
📄 CodeRabbit inference engine (CLAUDE.md)
Preserve the clean-code compliance gate and its category references (naming, kiss, yagni, dry, and solid)
Files:
packages/specfact-code-review/src/specfact_code_review/review/commands.pypackages/specfact-code-review/src/specfact_code_review/run/cleanup_evidence.pypackages/specfact-code-review/src/specfact_code_review/run/runner.pytests/unit/specfact_code_review/run/test_findings.pypackages/specfact-code-review/src/specfact_code_review/run/findings.pytests/unit/specfact_code_review/run/test_commands.pypackages/specfact-code-review/src/specfact_code_review/run/forecast.pytests/unit/specfact_code_review/run/test_forecast.pytests/unit/specfact_code_review/run/test_cleanup_evidence.py
packages/**/src/**/*.py
⚙️ CodeRabbit configuration file
packages/**/src/**/*.py: Focus on adapter and bridge patterns: imports from specfact_cli (models, runtime, validators),
Typer/Rich command surfaces, and clear boundaries so core upgrades do not silently break bundles.
Flag breaking assumptions about registry loading, lazy imports, and environment/mode behavior.
Files:
packages/specfact-code-review/src/specfact_code_review/review/commands.pypackages/specfact-code-review/src/specfact_code_review/run/cleanup_evidence.pypackages/specfact-code-review/src/specfact_code_review/run/runner.pypackages/specfact-code-review/src/specfact_code_review/run/findings.pypackages/specfact-code-review/src/specfact_code_review/run/forecast.py
docs/**/*.md
⚙️ CodeRabbit configuration file
docs/**/*.md: User-facing and cross-site accuracy: Jekyll front matter, links per documentation-url-contract,
CLI examples matching bundled commands.
Files:
docs/bundles/code-review/run.md
openspec/**/*.md
⚙️ CodeRabbit configuration file
openspec/**/*.md: Specification truth: proposal/tasks/spec deltas vs. bundle behavior, CHANGE_ORDER, and
drift vs. shipped modules or docs.
Files:
openspec/changes/code-review-13-cleanup-forecast-agent-handoff/proposal.md
tests/**/*.py
⚙️ CodeRabbit configuration file
tests/**/*.py: Contract-first and integration tests: migration suites, bundle validation, and flakiness.
Ensure changes to adapters or bridges have targeted coverage.
Files:
tests/unit/specfact_code_review/run/test_findings.pytests/unit/specfact_code_review/run/test_commands.pytests/unit/specfact_code_review/run/test_forecast.pytests/unit/specfact_code_review/run/test_cleanup_evidence.py
🔀 Multi-repo context nold-ai/specfact-cli
Findings (nold-ai/specfact-cli)
-
Many consumers expect the canonical review JSON path ".specfact/code-review.json":
- tests/unit/scripts/test_pre_commit_code_review.py (calls/asser ts expecting ".specfact/code-review.json") [::nold-ai/specfact-cli::tests/unit/scripts/test_pre_commit_code_review.py:86,126,146,197]
- tests/unit/scripts/test_code_review_module_docs.py (asserts presence of ".specfact/code-review.json") [::nold-ai/specfact-cli::tests/unit/scripts/test_code_review_module_docs.py:15]
- scripts/pre_commit_code_review.py (REVIEW_JSON_OUT constant) [::nold-ai/specfact-cli::scripts/pre_commit_code_review.py:31]
- scripts/pre-commit-quality-checks.sh (help text referencing .specfact/code-review.json) [::nold-ai/specfact-cli::scripts/pre-commit-quality-checks.sh:398]
- Documentation and OpenSpec configs referencing the canonical path in many places (examples: openspec/config.yaml, docs/modules/code-review.md, README.md, docs/getting-started/quickstart.md) [::nold-ai/specfact-cli::openspec/config.yaml:64][::nold-ai/specfact-cli::docs/modules/code-review.md:43][::nold-ai/specfact-cli::README.md:62][::nold-ai/specfact-cli::docs/getting-started/quickstart.md:51]
-
schema_version usage and expectations:
- Numerous places validate/check schema_version (tests and code): e.g. tests/integration/test_specmatic_integration.py, src/specfact_cli/migrations/plan_migrator.py, src/specfact_cli/registry/module_packages.py, model fields for schema_version [::nold-ai/specfact-cli::tests/integration/test_specmatic_integration.py:85][::nold-ai/specfact-cli::src/specfact_cli/migrations/plan_migrator.py:33][::nold-ai/specfact-cli::src/specfact_cli/registry/module_packages.py:389-408][::nold-ai/specfact-cli::src/specfact_cli/models/module_package.py:127]
- Docs/specs require schema_version on emitted review reports (review-report-model spec and related files) [::nold-ai/specfact-cli::openspec/specs/review-report-model/spec.md:11]
Implication summary
- The PR’s change to produce/document simplify reports under the canonical ".specfact/code-review.json" aligns with numerous consumers in this repository (tests, scripts, docs). Any schema bump to 1.3 or added optional fields in that JSON should be compatible with these consumers or they must be updated to accept the new optional fields/schema.
- Consumers that read the report by that canonical path will see the new fields (e.g., cleanup_forecast additions, guidance kind weight) in the same file; tests or scripts that parse the report may need no path changes but could need schema-aware parsing if new fields are present.
🔇 Additional comments (82)
packages/specfact-code-review/src/specfact_code_review/run/runner.py (1)
15-15: LGTM!Also applies to: 430-433, 489-496
packages/specfact-code-review/module-package.yaml (1)
2-2: LGTM!Also applies to: 26-27
registry/index.json (1)
81-83: LGTM!registry/modules/specfact-backlog-0.39.0.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-backlog-0.40.0.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-backlog-0.40.1.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-backlog-0.40.10.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-backlog-0.40.11.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-backlog-0.40.13.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-backlog-0.40.14.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-backlog-0.40.15.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-backlog-0.40.2.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-backlog-0.40.3.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-backlog-0.40.4.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-backlog-0.40.5.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-backlog-0.40.6.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-backlog-0.40.7.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-backlog-0.40.8.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-backlog-0.40.9.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-code-review-0.47.31.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-codebase-0.39.0.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-codebase-0.40.0.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-codebase-0.40.1.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-codebase-0.40.10.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-codebase-0.40.11.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-codebase-0.40.12.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-codebase-0.40.13.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-codebase-0.40.14.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-codebase-0.40.2.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-codebase-0.40.3.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-codebase-0.40.4.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-codebase-0.40.5.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-codebase-0.40.6.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-codebase-0.40.7.tar.gz.sha256 (1)
1-1: Verify release integrity forspecfact-codebase-0.40.7sha256 sidecar
registry/modules/specfact-codebase-0.40.7.tar.gz.sha256contains a syntactically valid 64-hex SHA-256 digest, but the essential parity check against the correspondingregistry/modules/specfact-codebase-0.40.7.tar.gzbytes and theregistry/index.jsonreference for this artifact still need to be run (the current environment lackssha256sum, so the parity/index spot-check couldn’t complete).registry/modules/specfact-govern-0.40.11.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-govern-0.40.12.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-govern-0.40.13.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-govern-0.40.2.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-govern-0.40.3.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-govern-0.40.4.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-govern-0.40.5.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-govern-0.40.6.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-govern-0.40.7.tar.gz.sha256 (1)
1-1: 🏗️ Heavy liftNo checksum-sidecar replacement in this PR, so the release-integrity concern doesn’t apply.
git diffshows no changes toregistry/modules/*.tar.gz.sha256, so there’s no checksum/provenance replacement forspecfact-govern-0.40.7introduced by this PR.registry/modules/specfact-project-0.40.13.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-project-0.40.14.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-project-0.40.15.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-project-0.40.2.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-project-0.40.20.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-project-0.40.3.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-project-0.40.4.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-project-0.40.5.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-project-0.40.6.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-project-0.40.7.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-project-0.40.8.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-project-0.40.9.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-spec-0.39.0.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-spec-0.40.0.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-spec-0.40.1.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-spec-0.40.10.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-spec-0.40.11.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-spec-0.40.12.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-spec-0.40.13.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-spec-0.40.2.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-spec-0.40.3.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-spec-0.40.4.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-spec-0.40.5.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-spec-0.40.6.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-spec-0.40.7.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-spec-0.40.8.tar.gz.sha256 (1)
1-1: LGTM!registry/modules/specfact-spec-0.40.9.tar.gz.sha256 (1)
1-1: LGTM!packages/specfact-code-review/src/specfact_code_review/run/findings.py (1)
190-190: LGTM!packages/specfact-code-review/src/specfact_code_review/run/forecast.py (1)
107-111: LGTM!Also applies to: 115-115
tests/unit/specfact_code_review/run/test_forecast.py (1)
47-48: LGTM!Also applies to: 57-65, 67-75
packages/specfact-code-review/src/specfact_code_review/run/cleanup_evidence.py (1)
54-59: LGTM!tests/unit/specfact_code_review/run/test_cleanup_evidence.py (1)
7-12: LGTM!Also applies to: 42-77, 99-136, 150-158
docs/bundles/code-review/run.md (1)
104-105: LGTM!Also applies to: 108-109, 148-148
openspec/changes/code-review-13-cleanup-forecast-agent-handoff/proposal.md (1)
35-35: LGTM!packages/specfact-code-review/src/specfact_code_review/review/commands.py (1)
34-37: LGTM!Also applies to: 56-57
tests/unit/specfact_code_review/run/test_commands.py (3)
3-4: LGTM!Also applies to: 28-32
337-348: LGTM!Also applies to: 357-357
414-466: LGTM!tests/unit/specfact_code_review/run/test_findings.py (1)
83-119: LGTM!Also applies to: 526-539
Summary
Unblocks dev-to-main promotion PR #299.
Validation