Skip to content

fix(requirements): validate native planning lineage - #767

Merged
djm81 merged 3 commits into
devfrom
codex/bugfix-native-planning-lineage
Oct 12, 2026
Merged

djm81 merged 3 commits into
devfrom
codex/bugfix-native-planning-lineage

Conversation

@djm81

@djm81 djm81 commented Oct 12, 2026 •

Copy link
Copy Markdown
Collaborator

Description

Fix native-stack Requirements execution that rejects valid planning children before reconciliation. Native CI exposes dev as the review base even when the planning parent is newer. Anchor protected proof ancestry to the immutable review base, and independently require authenticated planning ancestry to reach the candidate. Validate both commit identities explicitly.

Refs #760

OpenSpec: fix-native-planning-lineage.

Contract References: Root identity, successful check/run authentication, protected control-object equality, signatures, member authority, closed planning scope and complete plan/context equality remain enforced. No provider pin, maturity rule, required gate or threshold is changed. The two direct ancestry checks keep distinct purposes explicit without introducing another helper or bypass path.

Type of Change

  • 🐛 Bug fix
  • 🧪 Test enhancement
  • 📚 Evidence and coherent bugfix metadata

Contract-First Testing Evidence

Protected baseline: c4ee5be8457f69848bf9bc2150ebc3df56b52d4f after #761. Signed spec 6e5c7c6f precedes signed authored 064040e0 and signed implementation 208f1a69.

Owner djm81 accepted exact two-selector mapping sha256:8f07b2b300326ff199daed499240b6875d947c6431518ececf52fec3b3a160a0; the genuine record is committed. Native authored RED, artifact 11769210296, has two real failures, zero errors/skips/findings, gate pass and red maturity. The wrong-job-key draft fixture is discarded. Workflow implementation follows retained native RED; test bytes, mapping and acceptance remain unchanged. The unchanged provenance validator passes for literal final SHA 208f1a69674031f7be986f2d332571f4b23157ac.

How Has This Been Tested?

  • Both actual workflow shell/Git controls pass, including ordinary/non-planning ancestry, valid native ancestry, unrelated trust, trust newer than review, malformed identity, unrelated planning and evidence newer than candidate.
  • Forty-one focused neighboring security/planning/native-stack/promotion tests pass in 10.31 seconds.
  • Full smart suite: 3,311 passed, 10 skipped, two existing dependency deprecation warnings, 212.73 seconds. Real JUnit independently has 3,321 cases and zero failures/errors. Console failure/timeout diagnostics are expected output of passing negative smart-test harness tests. Raw logs/JUnit are preserved. All 760 tracked verification inputs match before/after.
  • Format, canonical zero-error typing, lint, actual actionlint/workflow shell lint, contracts, documentation, strict OpenSpec and clean direct mapping YAML lint pass. Existing 1,522 type warnings and unrelated repository-wide mapping/archive YAML diagnostics are disclosed.
  • Three frozen Python audits, dependency trust, licenses, independent Semgrep, blocking Bandit, strict four-manifest signatures, lock/export parity, frozen delivery, version sources and strict PyPI-ahead pass. No module payload/manifest changes or dependency resolver churn.
  • Local SpecFact review has zero new findings. Three unchanged promotion-fixture naming/structure advisories match independently measured protected-base analysis and are explicitly retained; the new authored controls have zero findings.
  • 0.55.8 bugfix declarations, root lock version and generated promotion fixture are synchronized; frozen export payload matches the parent.

Test Environment

Dedicated frozen CPython 3.12 worktree and reviewed immutable module/documentation fixtures. Hosted Python 3.11–3.13 delivery and independent Requirements consumers remain mandatory on the final signed head.

Checklist

  • Verified protected baseline, actual native failure and issue metadata
  • Spec → tests → real native RED → implementation → local GREEN
  • Exact genuine owner acceptance, signed commits and authorized verified-head grants
  • Full local security, quality, review, signature and release-input gates
  • Final exact-head hosted Requirements, authority, all required CI and completed external review
  • Separate owner protected integration authorization after all required checks pass
  • Fresh sequential root/child validation after protected integration

Quality Gates Status

Current signed head: 208f1a69674031f7be986f2d332571f4b23157ac. Normal hooks and exact-SHA retained-proof provenance pass. No fabricated acceptance, rewritten report, disabled analyzer, relaxed trust boundary or skipped required gate. All required current-head checks pass. Native final run 38299339592 reports verified maturity with no findings; authority run 38299339668 passes. CodeRabbit explicitly covers 208f1a6 and reports no actionable findings. GitHub reports CLEAN/MERGEABLE, with zero unresolved threads. Mapping/grant approval does not authorize merging.

Stack

Unblocks native stack #759: dev ← #719 security implementation ← #743 workflow planning ← #751 roadmap planning. Leave all three unmerged. Protected workflow object equality intentionally blocks stale parent controls; after reviewed integration, re-author current-base #719 proof and restack both planning children. Synchronize pending #719 to the next available patch if this protected 0.55.8 metadata merges. Deferred module/runtime proposals remain planning.

Rollback retains captured target heads and genuine proof, restores the coherent workflow/version patch, and uses exact force-with-lease protection for any branch restoration. Archive completed OpenSpec only after merge and follow-up validation.

@coderabbitai

coderabbitai Bot commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Repository: nold-ai/specfact-cli/.coderabbit.yaml
  • Review profile: CHILL
  • Plan: Essentials
  • Run ID: 30f58efa-3698-4ebb-ab64-a8a3fd3c2b71

📥 Commits

Reviewing files that changed from the base of the PR and between c4ee5be and 208f1a6.


⛔ Files ignored due to path filters (1)
  • uv.lock is excluded by !**/*.lock

📒 Files selected for processing (17)
  • .github/workflows/requirements-evidence.yml
  • CHANGELOG.md
  • openspec/CHANGE_ORDER.md
  • openspec/changes/fix-native-planning-lineage/CHANGE_VALIDATION.md
  • openspec/changes/fix-native-planning-lineage/TDD_EVIDENCE.md
  • openspec/changes/fix-native-planning-lineage/design.md
  • openspec/changes/fix-native-planning-lineage/proposal.md
  • openspec/changes/fix-native-planning-lineage/requirements-evidence.yaml
  • openspec/changes/fix-native-planning-lineage/requirements-proof/review-evidence.json
  • openspec/changes/fix-native-planning-lineage/specs/requirements-native-stack-lineage/spec.md
  • openspec/changes/fix-native-planning-lineage/tasks.md
  • pyproject.toml
  • setup.py
  • src/__init__.py
  • src/specfact_cli/__init__.py
  • tests/unit/security/test_native_planning_lineage.py
  • tests/unit/security/test_release_promotion_security_gates.py

🔗 Linked repositories identified

CodeRabbit considers these linked repositories for cross-repo context during reviews:


Included review availability: This review used your included allowance. 0 included reviews remain after this review. Your included PR review attempts over the past 7 days set your current allowance at 3 reviews per hour.


📜 Recent review details
⏰ Context from checks skipped due to timeout. (4)
  • GitHub Check: Requirements evidence
  • GitHub Check: Runtime Discovery Smoke (macOS)
  • GitHub Check: Compatibility (Python 3.11)
  • GitHub Check: Tests (Python 3.12)

🧰 Additional context used
📚 Code guidelines (9)
.cursor/rules/automatic-openspec-workflow.mdc — auto-discovered
.cursor/rules/testing-and-build-guide.mdc — auto-discovered
.cursor/rules/python-github-rules.mdc — auto-discovered
.cursor/rules/yaml-and-workflows.md — auto-discovered
.cursorrules — auto-discovered
.cursor/rules/spec-fact-cli-rules.mdc — auto-discovered
.cursor/rules/clean-code-principles.mdc — auto-discovered
.cursor/rules/markdown-rules.mdc — auto-discovered
.github/copilot-instructions.md — auto-discovered

📓 Path-based instructions (32)
Focus on modular CLI architecture: lazy module loading, registry/bootstrap patterns, and dependency direction.

⚙️ CodeRabbit configuration file

Files:

  • src/specfact_cli/__init__.py

CI safety: secrets usage, workflow dependencies, alignment with hatch test / contract-test gates, and action versions.

⚙️ CodeRabbit configuration file

Files:

  • .github/workflows/requirements-evidence.yml

Treat as specification source of truth: proposal/tasks/spec deltas vs.

⚙️ CodeRabbit configuration file

Files:

  • openspec/changes/fix-native-planning-lineage/CHANGE_VALIDATION.md
  • openspec/CHANGE_ORDER.md
  • openspec/changes/fix-native-planning-lineage/specs/requirements-native-stack-lineage/spec.md
  • openspec/changes/fix-native-planning-lineage/proposal.md
  • openspec/changes/fix-native-planning-lineage/tasks.md
  • openspec/changes/fix-native-planning-lineage/TDD_EVIDENCE.md
  • openspec/changes/fix-native-planning-lineage/design.md

Contract-first testing: meaningful scenarios, not redundant assertions already covered by contracts.

⚙️ CodeRabbit configuration file

Files:

  • tests/unit/security/test_release_promotion_security_gates.py
  • tests/unit/security/test_native_planning_lineage.py

Apply `openspec/config.yaml` project context and per-artifact rules (for proposal, specs, design, tasks) when creating or updating any OpenSpec change artifact in the specfact-cli codebase After implementation, validate the change with `ope...

📄 CodeRabbit inference engine (.cursor/rules/automatic-openspec-workflow.mdc)

Files:

  • openspec/changes/fix-native-planning-lineage/specs/requirements-native-stack-lineage/spec.md
  • openspec/changes/fix-native-planning-lineage/proposal.md
  • openspec/changes/fix-native-planning-lineage/tasks.md
  • openspec/changes/fix-native-planning-lineage/design.md

Manually update version numbers in pyproject.toml, setup.py, and src/__init__.py when making a formal version change

📄 CodeRabbit inference engine (.cursor/rules/testing-and-build-guide.mdc)

Files:

  • setup.py
  • pyproject.toml
  • src/__init__.py

Update src/__init__.py first as primary source of truth for package version, then pyproject.toml and setup.py Maintain version synchronization across src/__init__.py, pyproject.toml, and setup.py

📄 CodeRabbit inference engine (.cursor/rules/python-github-rules.mdc)

Files:

  • setup.py
  • pyproject.toml
  • src/__init__.py

Do not re-run the full test suite in other CI workflows; tests are enforced only in the dedicated Tests workflow (.github/workflows/tests.yml)

📄 CodeRabbit inference engine (.cursor/rules/testing-and-build-guide.mdc)

Files:

  • .github/workflows/requirements-evidence.yml

Use actionlint for semantic validation of GitHub Actions workflows Format GitHub Actions workflows using `hatch run workflows-fmt` and lint them with `hatch run workflows-lint` after editing

📄 CodeRabbit inference engine (.cursor/rules/yaml-and-workflows.md)

Files:

  • .github/workflows/requirements-evidence.yml

Validate GitHub workflow files using `hatch run lint-workflows` before committing

📄 CodeRabbit inference engine (.cursor/rules/testing-and-build-guide.mdc)

Files:

  • .github/workflows/requirements-evidence.yml

For `/opsx:archive` (Archive change): Include module signing and cleanup in final tasks.

📄 CodeRabbit inference engine (.cursorrules)

Files:

  • openspec/changes/fix-native-planning-lineage/CHANGE_VALIDATION.md
  • openspec/changes/fix-native-planning-lineage/specs/requirements-native-stack-lineage/spec.md
  • openspec/changes/fix-native-planning-lineage/proposal.md
  • openspec/changes/fix-native-planning-lineage/tasks.md
  • openspec/changes/fix-native-planning-lineage/TDD_EVIDENCE.md
  • openspec/changes/fix-native-planning-lineage/design.md

Linting must pass with no errors using: pylint src tests

📄 CodeRabbit inference engine (.cursor/rules/spec-fact-cli-rules.mdc)

Files:

  • src/specfact_cli/__init__.py
  • src/__init__.py
  • tests/unit/security/test_release_promotion_security_gates.py
  • tests/unit/security/test_native_planning_lineage.py

When updating the version in `pyproject.toml`, ensure it's newer than the latest PyPI version.

📄 CodeRabbit inference engine (.cursorrules)

Files:

  • pyproject.toml

Include new version entries at the top of CHANGELOG.md when updating versions

📄 CodeRabbit inference engine (.cursor/rules/python-github-rules.mdc)

Files:

  • CHANGELOG.md

Update CHANGELOG.md to document all significant changes under Added, Fixed, Changed, or Removed sections when making a version change

📄 CodeRabbit inference engine (.cursor/rules/testing-and-build-guide.mdc)

Files:

  • CHANGELOG.md

Update CHANGELOG.md with all code changes as part of version control requirements.

📄 CodeRabbit inference engine (.cursor/rules/spec-fact-cli-rules.mdc)

Files:

  • CHANGELOG.md

Secret redaction via `LoggerSetup.redact_secrets` must be covered by unit tests

📄 CodeRabbit inference engine (.cursor/rules/clean-code-principles.mdc)

Files:

  • tests/unit/security/test_release_promotion_security_gates.py
  • tests/unit/security/test_native_planning_lineage.py

Tests must be meaningful and test actual functionality, cover both success and failure cases, be independent and repeatable, and have clear, descriptive names.

📄 CodeRabbit inference engine (.cursor/rules/spec-fact-cli-rules.mdc)

Files:

  • tests/unit/security/test_release_promotion_security_gates.py
  • tests/unit/security/test_native_planning_lineage.py

Trim low-value unit tests when a contract covers the same assertion (type/shape/raises on negative checks) Delete tests that only assert input validation, datatype/shape enforcement, or raises on negative conditions now guarded by contracts...

📄 CodeRabbit inference engine (.cursor/rules/testing-and-build-guide.mdc)

Files:

  • tests/unit/security/test_release_promotion_security_gates.py
  • tests/unit/security/test_native_planning_lineage.py

Format all YAML and workflow files using `hatch run yaml-fix-all` before committing Use Prettier to fix whitespace, indentation, and final newline across YAML files Use yamllint with the repo .yamllint configuration (line-length 140, traili...

📄 CodeRabbit inference engine (.cursor/rules/yaml-and-workflows.md)

Files:

  • openspec/changes/fix-native-planning-lineage/requirements-evidence.yaml

Validate YAML configuration files locally using `hatch run yaml-lint` before committing

📄 CodeRabbit inference engine (.cursor/rules/testing-and-build-guide.mdc)

Files:

  • openspec/changes/fix-native-planning-lineage/requirements-evidence.yaml

Write tests first in test-driven development (TDD) using the Red-Green-Refactor cycle Ensure each test is independent and repeatable with no shared state between tests Organize Python imports in tests using unittest.mock for Mock and patch...

📄 CodeRabbit inference engine (.cursor/rules/python-github-rules.mdc)

Files:

  • tests/unit/security/test_release_promotion_security_gates.py
  • tests/unit/security/test_native_planning_lineage.py

Add/update contracts on new or modified public APIs, stateful classes and adapters using `icontract` decorators and `beartype` runtime type checks

📄 CodeRabbit inference engine (.cursor/rules/testing-and-build-guide.mdc)

Files:

  • src/specfact_cli/__init__.py
  • src/__init__.py

All code changes must be followed by running the full test suite using the smart test system.

📄 CodeRabbit inference engine (.cursor/rules/spec-fact-cli-rules.mdc)

Files:

  • src/specfact_cli/__init__.py
  • src/__init__.py

Meaningful Naming — identifiers reveal intent; avoid abbreviations.

📄 CodeRabbit inference engine (.cursor/rules/clean-code-principles.mdc)

Files:

  • src/specfact_cli/__init__.py
  • src/__init__.py

Do not use more than one consecutive blank line anywhere in the document (MD012: No Multiple Consecutive Blank Lines) Fenced code blocks should be surrounded by blank lines (MD031: Fenced Code Blocks) Lists should be surrounded by blank lin...

📄 CodeRabbit inference engine (.cursor/rules/markdown-rules.mdc)

Files:

  • openspec/changes/fix-native-planning-lineage/CHANGE_VALIDATION.md
  • openspec/CHANGE_ORDER.md
  • CHANGELOG.md
  • openspec/changes/fix-native-planning-lineage/specs/requirements-native-stack-lineage/spec.md
  • openspec/changes/fix-native-planning-lineage/proposal.md
  • openspec/changes/fix-native-planning-lineage/tasks.md
  • openspec/changes/fix-native-planning-lineage/TDD_EVIDENCE.md
  • openspec/changes/fix-native-planning-lineage/design.md

After any code changes, follow these steps in order: (1) Apply linting and formatting to ensure code quality: `hatch run format`, (2) Type checking: `hatch run type-check` (basedpyright), (3) Contract-first approach: Run `hatch run contract...

📄 CodeRabbit inference engine (.cursorrules)

Files:

  • setup.py
  • src/specfact_cli/__init__.py
  • src/__init__.py
  • tests/unit/security/test_release_promotion_security_gates.py
  • tests/unit/security/test_native_planning_lineage.py

YAML files must pass linting using: hatch run yaml-lint with relaxed policy.

📄 CodeRabbit inference engine (.cursor/rules/spec-fact-cli-rules.mdc)

Files:

  • openspec/changes/fix-native-planning-lineage/requirements-evidence.yaml

Avoid markdown linting errors (refer to markdown-rules)

📄 CodeRabbit inference engine (.cursorrules)

Files:

  • openspec/changes/fix-native-planning-lineage/CHANGE_VALIDATION.md
  • openspec/CHANGE_ORDER.md
  • CHANGELOG.md
  • openspec/changes/fix-native-planning-lineage/specs/requirements-native-stack-lineage/spec.md
  • openspec/changes/fix-native-planning-lineage/proposal.md
  • openspec/changes/fix-native-planning-lineage/tasks.md
  • openspec/changes/fix-native-planning-lineage/TDD_EVIDENCE.md
  • openspec/changes/fix-native-planning-lineage/design.md

Code must be formatted with black and isort: black .

📄 CodeRabbit inference engine (.cursor/rules/spec-fact-cli-rules.mdc)

Files:

  • setup.py
  • src/specfact_cli/__init__.py
  • src/__init__.py
  • tests/unit/security/test_release_promotion_security_gates.py
  • tests/unit/security/test_native_planning_lineage.py

Maintain minimum 80% test coverage, with 100% coverage for critical paths in Python code Use clear naming and self-documenting code, preferring clear names over comments Ensure each function/class has a single clear purpose (Single Responsi...

📄 CodeRabbit inference engine (.cursor/rules/python-github-rules.mdc)

Files:

  • setup.py
  • src/specfact_cli/__init__.py
  • src/__init__.py
  • tests/unit/security/test_release_promotion_security_gates.py
  • tests/unit/security/test_native_planning_lineage.py

Public APIs require `@icontract` and `@beartype` decorators

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

Files:

  • setup.py
  • src/specfact_cli/__init__.py
  • src/__init__.py
  • tests/unit/security/test_release_promotion_security_gates.py
  • tests/unit/security/test_native_planning_lineage.py

🪛 ast-grep (0.45.3)
tests/unit/security/test_native_planning_lineage.py

[error] 16-21: Command coming from incoming request
Context: subprocess.run(
["git", "-C", str(repo), *arguments],
check=True,
capture_output=True,
text=True,
)
Note: [CWE-78] Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection').

(subprocess-from-request)


[error] 56-63: Command coming from incoming request
Context: subprocess.run(
["bash", "--noprofile", "--norc", "-e", "-o", "pipefail", "-c", preflight],
cwd=repo,
env=env,
capture_output=True,
text=True,
check=False,
)
Note: [CWE-78] Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection').

(subprocess-from-request)


🪛 LanguageTool
openspec/changes/fix-native-planning-lineage/design.md

[uncategorized] ~7-~7: The official name of this software platform is spelled with a capital “H”.
Context: ...validator trust boundary. Native stack github.base_ref is dev even when the REST chil...

(GITHUB)


🔀 Multi-repo context nold-ai/specfact-cli-modules

Linked repositories findings

nold-ai/specfact-cli-modules

  • The companion workflow checks out and installs the paired CLI, then runs its own evidence adapter with only --base-ref; it has no references to the new proof/planning/evidence commit variables. .github/workflows/requirements-evidence.yml:28-85, scripts/requirements_evidence_gate.py:13-24 [::nold-ai/specfact-cli-modules::]
  • The requirements module supports CLI >=0.53.1,<1.0.0, so CLI version 0.55.8 requires no compatibility-range or module-signature update. packages/specfact-requirements/module-package.yaml:1-22 [::nold-ai/specfact-cli-modules::]
  • Existing workflow tests cover paired-core checkout, artifact handling, and adapter invocation, but do not assert native planning-lineage controls. tests/unit/workflows/test_requirements_evidence_workflow.py:45-93 [::nold-ai/specfact-cli-modules::]

🔇 Additional comments (16)
openspec/changes/fix-native-planning-lineage/proposal.md (1)

1-41: LGTM!


openspec/changes/fix-native-planning-lineage/design.md (1)

1-15: LGTM!


openspec/changes/fix-native-planning-lineage/specs/requirements-native-stack-lineage/spec.md (1)

1-28: LGTM!


openspec/changes/fix-native-planning-lineage/requirements-evidence.yaml (1)

1-37: LGTM!


openspec/changes/fix-native-planning-lineage/tasks.md (1)

1-23: LGTM!


openspec/changes/fix-native-planning-lineage/requirements-proof/review-evidence.json (1)

1-8: LGTM!


openspec/CHANGE_ORDER.md (1)

403-409: LGTM!


.github/workflows/requirements-evidence.yml (1)

1609-1612: LGTM!


openspec/changes/fix-native-planning-lineage/CHANGE_VALIDATION.md (1)

1-8: LGTM!


openspec/changes/fix-native-planning-lineage/TDD_EVIDENCE.md (1)

1-56: LGTM!


CHANGELOG.md (1)

13-26: LGTM!


pyproject.toml (1)

7-7: LGTM!


setup.py (1)

10-10: LGTM!


src/__init__.py (1)

6-6: LGTM!


src/specfact_cli/__init__.py (1)

79-79: LGTM!


tests/unit/security/test_release_promotion_security_gates.py (1)

567-567: LGTM!



📝 Summary

Behavior and workflow

The Requirements workflow now separates protected proof ancestry from planning ancestry. It requires PROOF_BASE_COMMIT to be an ancestor of the review base, and the planning evidence base to be an ancestor of the candidate source. When no planning base is supplied, the workflow uses the proof base.

This allows valid native-stack planning children to reach reconciliation when CI uses dev as the review base. The workflow still validates commit identities and retains the existing proof, authority, scope, and reconciliation checks. No CLI command, option, or default changed.

Contract and package impact

No public functions, Pydantic models, or package boundaries changed. The change adds OpenSpec change fix-native-planning-lineage and updates its requirements, design, evidence, and task records. The 0.55.8 version is recorded in CHANGELOG.md and package metadata.

No module-signing change or cross-repository module change is identified in the supplied evidence.

Tests and quality gates

New isolated-Git tests exercise the workflow preflight, including valid ancestry and rejection cases for unrelated or malformed trust and planning identities. The PR description reports 41 focused tests and 3,311 passed with 10 skipped in the full smart suite. These results were reported by the author; they were not run or independently verified here.

The supplied evidence does not establish results for hatch run contract-test or coverage impact. Hosted final-head checks, external review, protected integration authorization, and post-integration validation remain pending.

📝 Summary

Walkthrough

The Requirements workflow now checks protected proof-base ancestry against the review base and planning/evidence-base ancestry against the candidate source. New isolated Git tests cover valid and rejected lineage cases. OpenSpec records the requirements and validation status, and release metadata is updated to 0.55.8.

Changes

Native planning lineage

Layer / File(s) Summary
Lineage contract and requirements
openspec/changes/fix-native-planning-lineage/*, openspec/CHANGE_ORDER.md
OpenSpec defines the separate ancestry checks, records test requirements and review evidence, and tracks implementation and integration tasks.
Workflow preflight and validation
.github/workflows/requirements-evidence.yml, tests/unit/security/test_native_planning_lineage.py, openspec/changes/fix-native-planning-lineage/CHANGE_VALIDATION.md, openspec/changes/fix-native-planning-lineage/TDD_EVIDENCE.md
The preflight validates commit identities and ancestry. Tests cover ordinary and native planning histories, invalid trust and planning ancestry, and evidence newer than the candidate. Validation records capture results and remaining gates.
Release notes and version metadata
CHANGELOG.md, pyproject.toml, setup.py, src/__init__.py, src/specfact_cli/__init__.py, tests/unit/security/test_release_promotion_security_gates.py
The changelog describes the lineage checks and related fixes. Version declarations and the promotion security-gate test now use 0.55.8.

Priority: ➖ Normal

Estimated code review effort: 3 (Moderate) | ~25 minutes

Change: Bug fix


Merge Risk: ⚪ Minimal · up to 208f1

No actionable issue remains from this review. Complete the pending hosted checks and integration authorization before merging.

Pre-merge checks · Passed 4 · Failed 1

Failed Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage Warning Docstring coverage is 16.67% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 6 functions across 5 files. (12 skipped: … Write docstrings for the functions missing them to satisfy the coverage threshold.
Passed Passed checks (4 passed)
Check name Status Explanation
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Title check Passed The title uses the preferred Conventional Commits prefix fix: and accurately summarizes the native planning lineage validation change.
Description check Passed The description is detailed and covers the problem, issue reference, OpenSpec traceability, contract impact, testing evidence, environment, quality gates, pending integration work, and rollback contex…

Full details: Docstring Coverage

Explanation

Docstring coverage is 16.67% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 6 functions across 5 files. (12 skipped: 12 unsupported.)


  • Fix all pre-merge checks with AI
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Commit to this branch
  • Create a new PR

🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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

@github-actions

Copy link
Copy Markdown
Contributor

SpecFact CLI Validation Report

✅ All validations passed!
Duration: 25.73s
Checks: 4 total (3 passed) (1 skipped)

@djm81

djm81 commented Oct 12, 2026

Copy link
Copy Markdown
Collaborator Author

SPECFACT_TRUSTED_REQUIREMENTS_AUTHORITY_V1
{"authority_version":1,"base_ref":"dev","capability":"trusted-requirements-authority","expires_at":"2026-10-14T19:26:42Z","head_branch":"codex/bugfix-native-planning-lineage","head_commit":"064040e0500ca9802ed4e5be4ed9a3f462f73d09","head_tree":"89fac598bebc06343313f7cddb583a5c27c60d54","pull_request":767,"repository":"nold-ai/specfact-cli","signer_login":"djm81"}

@github-actions

Copy link
Copy Markdown
Contributor

SpecFact CLI Validation Report

✅ All validations passed!
Duration: 25.85s
Checks: 4 total (3 passed) (1 skipped)

Keep protected proof ancestry anchored to the review base.
Validate authenticated planning ancestry against the candidate instead.
Native stacks project dev as the review base, so the former assertion
blocked valid planning before independent reconciliation.

Both real workflow controls fail before this patch and pass afterward.
Preserve root authentication, source authority and every required gate.

Refs #760
@djm81

djm81 commented Oct 12, 2026

Copy link
Copy Markdown
Collaborator Author

SPECFACT_TRUSTED_REQUIREMENTS_AUTHORITY_V1
{"authority_version":1,"base_ref":"dev","capability":"trusted-requirements-authority","expires_at":"2026-10-14T19:41:40Z","head_branch":"codex/bugfix-native-planning-lineage","head_commit":"208f1a69674031f7be986f2d332571f4b23157ac","head_tree":"7c04e773bbe0f8eef9db72ab6a0b2cb8351d65cb","pull_request":767,"repository":"nold-ai/specfact-cli","signer_login":"djm81"}

@github-actions

Copy link
Copy Markdown
Contributor

SpecFact CLI Validation Report

✅ All validations passed!
Duration: 24.72s
Checks: 4 total (3 passed) (1 skipped)

@djm81
djm81 marked this pull request as ready for review October 12, 2026 19:43
@strix-security

Copy link
Copy Markdown

Strix is installed on this repository, but we couldn't run this PR security review because this workspace's trial has ended. Add a card to resume code reviews here.

So far, Strix has reviewed 48 pull requests across this workspace.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 12, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-12T19:45:26.523645Z 208f1a6 Draft marked ready
🔒 Security Review ✅ Completed 2026-10-12T19:47:01.855154Z 208f1a6 Draft marked ready
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@djm81 djm81 self-assigned this Oct 12, 2026
@djm81 djm81 added the dependencies Dependency resolution and management label Oct 12, 2026
@djm81 djm81 moved this from Todo to In Progress in SpecFact CLI Oct 12, 2026
@djm81
djm81 merged commit c6af68a into dev Oct 12, 2026
43 checks passed
@github-project-automation github-project-automation Bot moved this from In Progress to Done in SpecFact CLI Oct 12, 2026
djm81 added a commit that referenced this pull request Oct 12, 2026
Keep historical #761 evidence distinct from current protected #767 proof.
Refs #718
djm81 added a commit that referenced this pull request Oct 15, 2026
# Description

Module #481 remains In Progress, while paired #483 remains Todo as
checked on 12 October 2026. Preserve the newer proposal already on dev
and defer core runtime adoption until its signed module contract is
implemented.

**Refs** #742

**Contract References**: Planning-only contract research and dependency
reconciliation. No future runtime execution or delivery completion is
claimed.

## Type of Change

- [x] 📚 Documentation update

## Contract-First Testing Evidence

Strict OpenSpec and local planned Requirements validate the proposal.
Existing completed evidence is preserved with its original scope.
Runtime adoption requires its own spec, actual failing-first tests,
implementation and passing exact-head evidence.

## How Has This Been Tested?

Validate source proposals, current repository contents and paired
implementation readiness. Prerequisites
[#761](#761) and
[#767](#767) are merged at
protected dev `c6af68a0`. Signed #743 head `4d1e7429` follows signed
security parent `57f51829`, whose [native
Requirements](https://github.com/nold-ai/specfact-cli/actions/runs/38306990823)
is verified with no findings and whose exact-head authority passes.
Strict selected OpenSpec, documentation validation and
unchanged-provider planned Requirements pass locally: one source,
planned maturity, no findings. Hosted producer/execution/final verdict
must independently authenticate inherited root proof with scoped tokens;
those current-head checks remain pending.

## Checklist

- [x] Verify planning scope and preserve completed work
- [x] Keep deferred runtime tasks unchecked
- [x] Signed branch history and owner-authorized exact-head grants
- [x] Protected prerequisite integration and signed restacking onto the
validated root
- [ ] Final exact-head Requirements, required CI and review closure

## Quality Gates Status

Current signed head: `4d1e7429c2dfb69e9d33a93bf554aed8aae6affd`. Normal
applicable hooks passed and GitHub signature verification precedes the
authorized new djm81 grant. No required execution, signature, authority,
review or security gate is bypassed. Final current-head checks and
review remain required.

## Stack

Native [stack #759](https://github.com/nold-ai/specfact-cli/pull/759):
`dev ← #719 security implementation ← #743 workflow planning ← #751
roadmap planning`. Leave all three stack PRs unmerged for owner review.

The earlier planning consumer ancestry failure is corrected by protected
#767. Current hosted consumers must independently validate that
correction with the fresh root proof; no gate or trust boundary is
weakened.

Independent Code Review correctly rejected the planned receipt as
non-final execution proof (run 38303860784). The reviewed local
protective follow-up preserves full protected-dev review and authentic
finalized root proof; exact acceptance, native proof and protected
integration remain pending. Current inherited review gates stay
enforced; this PR is not yet ready to merge.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Dependency resolution and management

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant