Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
125 commits
Select commit Hold shift + click to select a range
d306d2a
docs: plan lean requirements evidence
djm81 Sep 20, 2026
1f85331
docs: resolve lean evidence plan review
djm81 Sep 20, 2026
0c55777
docs: clarify lean evidence transition
djm81 Sep 20, 2026
4aab2be
docs: preserve optional assurance after archive
djm81 Sep 20, 2026
0390441
docs: reopen C15 implementation readiness
djm81 Sep 20, 2026
97e30d4
docs: align schema transition and delivery order
djm81 Sep 20, 2026
1de5260
docs: date skill planning validation
djm81 Sep 20, 2026
00f13d0
docs: exclude XPASS from current acceptance
djm81 Sep 20, 2026
9c586cf
docs: align active delivery task order
djm81 Sep 20, 2026
f9e36dc
docs: plan bounded workflow adoption
djm81 Sep 20, 2026
9151124
docs: clarify rollout and result selection
djm81 Sep 20, 2026
6404b83
docs: preserve archival evidence boundaries
djm81 Sep 20, 2026
b846444
docs: separate workflow planning scope
djm81 Sep 20, 2026
c8635ed
docs: align lean consumer boundaries
djm81 Sep 20, 2026
aae5c6b
docs: replace inherited C14 green contract
djm81 Sep 20, 2026
d30b662
docs: select release version before validation
djm81 Sep 20, 2026
501c285
docs: map planned evidence for lean proposals
djm81 Sep 21, 2026
2fecee3
test: reproduce planned evidence selection failure
djm81 Sep 21, 2026
3e9a4ad
test: select actual planning regression failures
djm81 Sep 21, 2026
d29edee
fix: honor planning-only evidence across stages
djm81 Sep 21, 2026
fcd2a25
docs: retain helpers through rollback window
djm81 Sep 21, 2026
a539163
fix: honor planning-only evidence across workflow stages (#746)
djm81 Sep 21, 2026
aa209b9
chore: integrate planning evidence prerequisite
djm81 Sep 21, 2026
5db1f21
docs: plan lean requirements evidence (#741)
djm81 Sep 21, 2026
4edd185
docs: extend bounded workflow with risk-first execution
djm81 Oct 8, 2026
1151f88
docs: reconcile active workflow counts
djm81 Oct 8, 2026
29637d9
docs: identify planning validation snapshots
djm81 Oct 8, 2026
0f9d114
test: bind isolated delivery probes to test-only RED lineage
djm81 Oct 9, 2026
9ed6295
fix: publish focused security repair with isolated delivery proof
djm81 Oct 9, 2026
cb417b5
fix: repair frozen security graph and versioning fixture (#756)
djm81 Oct 9, 2026
881d115
docs: preserve merged baseline repair in workflow ordering
djm81 Oct 9, 2026
ef8bbc8
docs: separate workflow and baseline ordering anchors
djm81 Oct 9, 2026
cc801ce
Merge branch 'dev' into codex/plan-workflow-risk-first
djm81 Oct 9, 2026
68e9e7c
docs: record risk-first planning validation on merged repair baseline
djm81 Oct 9, 2026
553b46f
docs: reconcile bounded workflow and risk-first execution (#755)
djm81 Oct 9, 2026
0dbcc8e
test: define security stack gate regressions
djm81 Oct 10, 2026
198f432
fix: preserve security stack Requirements gates
djm81 Oct 10, 2026
aae6094
fix: use approved portable smoke dependencies
djm81 Oct 10, 2026
16c0825
fix(ci): isolate frozen smoke dependencies
djm81 Oct 11, 2026
aabcefe
fix(ci): authenticate staged module sources
djm81 Oct 11, 2026
e29b1a2
fix: preserve fork and root proof boundaries
djm81 Oct 11, 2026
7ce75de
fix: authenticate before trusting delivery verifier
djm81 Oct 11, 2026
809cd3d
test: isolate Git fixtures from caller state
djm81 Oct 11, 2026
30f98cc
fix(ci): preserve security stack proof and test isolation (#758)
djm81 Oct 11, 2026
4609ac2
test: reauthor complete security dependency stack
djm81 Oct 11, 2026
8cd2a30
test: retain fresh dependency stack baseline evidence
djm81 Oct 11, 2026
f8a4a4a
fix(deps): replay security updates for 0.55.6
djm81 Oct 11, 2026
936f0f2
docs: align active stack release references
djm81 Oct 11, 2026
2239060
fix(docs): retain compatible JSON security floor
djm81 Oct 11, 2026
c36753f
fix(docs): restack hash-reviewed redirect security fix
djm81 Oct 11, 2026
ecc676c
fix(docs): restack reviewed feed escaping fixes
djm81 Oct 11, 2026
53f531c
fix(docs): finish validated relative-link stack layer
djm81 Oct 11, 2026
4e7c38c
fix(docs): preserve relative links across builds (#753)
djm81 Oct 11, 2026
7aa2034
docs: specify trusted planning stack boundaries
djm81 Oct 11, 2026
684b8f9
test: isolate planning proof adversarial controls
djm81 Oct 11, 2026
2af0b8a
fix: authenticate inherited planning stack proof
djm81 Oct 11, 2026
142dca3
test: reject proof with stale protected controls
djm81 Oct 11, 2026
0c682d4
fix: bind reuse to current protected controls
djm81 Oct 11, 2026
9dd37b5
test: reject changed authority proof controls
djm81 Oct 11, 2026
11342fd
fix: protect both inherited proof workflows
djm81 Oct 11, 2026
1b02e58
test: require read-only root check permissions
djm81 Oct 11, 2026
aeaaaf8
fix: grant read-only inherited check access
djm81 Oct 11, 2026
2a20510
docs: wrap planning proof evidence paragraphs
djm81 Oct 11, 2026
c4ee5be
fix(requirements): authenticate planning stack proof reuse (#761)
djm81 Oct 12, 2026
6e5c7c6
docs: specify native planning lineage validation
djm81 Oct 12, 2026
064040e
test: reproduce native planning lineage failures
djm81 Oct 12, 2026
208f1a6
fix(ci): validate native planning ancestry
djm81 Oct 12, 2026
c6af68a
fix(requirements): validate native planning lineage (#767)
djm81 Oct 12, 2026
f7dc673
docs: restate workspace security proof boundary
djm81 Oct 12, 2026
ff91494
docs: refresh security proof on protected lineage
djm81 Oct 12, 2026
5ebcfd5
test: reprove security on protected native lineage
djm81 Oct 12, 2026
ee8d81f
fix(registry): preserve trusted command roots
djm81 Oct 12, 2026
34620aa
docs: specify authentic inherited review proof
djm81 Oct 12, 2026
57f5182
docs: identify superseded security baseline
djm81 Oct 12, 2026
97a05b0
docs: propose bounded workflow orchestration
djm81 Sep 20, 2026
f5a2370
docs: verify deferred workflow adoption readiness
djm81 Oct 11, 2026
d729462
docs: record protected workflow stack validation
djm81 Oct 12, 2026
d16ac8d
docs: record corrected native stack lineage
djm81 Oct 12, 2026
534326e
docs: clarify module contract ownership
djm81 Oct 12, 2026
4d1e742
docs: preserve review context boundary evidence
djm81 Oct 12, 2026
2557eb1
docs: retain approved final proof compatibility
djm81 Oct 12, 2026
908bc3a
test(requirements): bind trusted review core
djm81 Oct 12, 2026
2f1deb3
fix(requirements): preserve final review context
djm81 Oct 12, 2026
364dd78
docs: wrap final proof evidence
djm81 Oct 12, 2026
a692169
docs: describe root proof validation boundaries
djm81 Oct 12, 2026
daefe0c
fix(requirements): authenticate inherited final review context (#768)
djm81 Oct 13, 2026
1c399e2
docs: bind accepted path authority proof
djm81 Oct 15, 2026
35c6f13
test: author path authority regression proof
djm81 Oct 15, 2026
e4db779
fix: reject linked project authority paths
djm81 Oct 15, 2026
84e2d5c
docs: reconcile path100 proof and tasks
djm81 Oct 15, 2026
df68200
docs: sync workflow planning with security parent
djm81 Oct 15, 2026
859643f
ci: refresh native stack parent event
djm81 Oct 15, 2026
729a53b
docs: verify bounded workflow adoption planning (#743)
djm81 Oct 15, 2026
ab9bbc5
docs(code-review): plan ordinary local report adoption
djm81 Oct 16, 2026
03eaaae
docs(code-review): clarify consumer planning and release gates
djm81 Oct 16, 2026
efd625b
docs(code-review): complete consumer planning and schema boundaries
djm81 Oct 16, 2026
d332ebc
docs(code-review): require mapped test evidence and provisioned offli…
djm81 Oct 16, 2026
d1000b2
docs(code-review): require fresh final review after versioning
djm81 Oct 16, 2026
bacba02
docs(code-review): require capsule-free invocation and bounded delivery
djm81 Oct 16, 2026
58c5e42
docs(code-review): clarify candidate handoff and final repair gates
djm81 Oct 16, 2026
c618fe7
docs(code-review): clarify checklist formatting and finalization gates
djm81 Oct 16, 2026
db5b249
docs(code-review): plan ordinary local report adoption (#770)
djm81 Oct 20, 2026
5903249
docs(security): plan native scanner replacement
djm81 Oct 20, 2026
100fb41
docs(security): address scanner plan review
djm81 Oct 20, 2026
2f3930a
docs(security): gate scanner removal on review coverage
djm81 Oct 20, 2026
1a3af0c
docs(security): validate scanner commands at selection
djm81 Oct 20, 2026
1f2ed52
test(security): reject compromised certificate root
djm81 Oct 20, 2026
d6d8f90
test(security): use typed certificate resource API
djm81 Oct 20, 2026
66ee3d5
fix(deps): patch certificate trust for 0.55.11
djm81 Oct 20, 2026
b61774e
test(security): bind dependency artifact proof
djm81 Oct 20, 2026
e39d870
test(security): prove artifact hash rejection
djm81 Oct 20, 2026
5991c24
fix(security): prepare MCP-patched scanner candidate
djm81 Oct 20, 2026
46970dc
fix(ci): bind uv compiled wheel paths exactly
djm81 Oct 20, 2026
cb83950
fix(deps): retain official scanner with MCP exception
djm81 Oct 21, 2026
b3bf7cf
style(proof): align requirement sequence indentation
djm81 Oct 21, 2026
03423ac
fix(proof): map exact MCP parameter selectors
djm81 Oct 21, 2026
0262dbe
docs(planning): correct parking-lot inventory
djm81 Oct 21, 2026
3cf72e8
fix(deps): patch certifi and bound official MCP exception (#782)
djm81 Oct 21, 2026
131e2db
fix(ci): enforce scoped Requirements admission
djm81 Oct 21, 2026
89bf62e
test(ci): retain admission enforcement contracts
djm81 Oct 21, 2026
53d4b7b
fix(ci): scope native origin to admission subject
djm81 Oct 21, 2026
d88310d
docs(ci): clarify attester and rerun evidence
djm81 Oct 21, 2026
4b25241
fix(ci): restore evidence by exact artifact ID
djm81 Oct 21, 2026
c73a9d6
fix(ci): pin reviewed merge identity admission
djm81 Oct 21, 2026
9b5ad1e
fix(ci): enforce scoped late-cycle Requirements admission (#784)
djm81 Oct 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 36 additions & 0 deletions .github/actions/setup-runtime-smoke-fixture/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: Reviewed portable runtime smoke fixture
description: Authenticate the signed portable module snapshot without changing Requirements authority.
runs:
using: composite
steps:
- name: Read portable fixture identity
shell: bash
run: |
set -euo pipefail
python - <<'PYCODE'
import json
from pathlib import Path
expected = {
"repository": "nold-ai/specfact-cli-modules",
"commit": "046d366c190af7a188d6f48953a96edb65e766db",
"tree": "c5b44db3477d1c9ea8dae1dceab2af276d265353",
}
actual = json.loads(Path("ci/runtime-smoke-fixture.lock.json").read_text())
if actual != expected:
raise SystemExit("Unreviewed portable runtime fixture identity")
PYCODE
- name: Checkout portable runtime modules
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10
with:
repository: nold-ai/specfact-cli-modules
ref: 046d366c190af7a188d6f48953a96edb65e766db
path: runtime-smoke-modules
persist-credentials: false
- name: Verify and export portable runtime fixture
shell: bash
run: |
set -euo pipefail
test "$(git -C runtime-smoke-modules rev-parse HEAD)" = "046d366c190af7a188d6f48953a96edb65e766db"
test "$(git -C runtime-smoke-modules rev-parse 'HEAD^{tree}')" = "c5b44db3477d1c9ea8dae1dceab2af276d265353"
test -z "$(git -C runtime-smoke-modules status --porcelain)"
printf 'SPECFACT_SMOKE_MODULES_REPO=%s/runtime-smoke-modules\n' "$GITHUB_WORKSPACE" >> "$GITHUB_ENV"
34 changes: 34 additions & 0 deletions .github/review-notes/dependency-hotfix-admission.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Scoped dependency hotfix admission follow-up

This follow-up implements the Requirements admission requested after
[nold-ai/specfact-cli#782](https://github.com/nold-ai/specfact-cli/pull/782)
merged into dev. Its merge commit is
`3cf72e848a2b5a233d3f599898d6983319d375de`. The original three Requirements
checks remain failed. Security Audit passed with the exact temporary MCP
advisory exception. A merge does not convert the failed provenance into proof.

The companion protected-policy proposal is
[nold-ai/.github#4](https://github.com/nold-ai/.github/pull/4).
The implementation evaluates a separately approved HumanApprovedLateCycle
state at all three core CI boundaries. The original native report remains
failed and unchanged. Every boundary independently checks the exact source,
head/tree, policy revision, evidence, live human permission and expiry.
A previous decision sidecar grants no authority to another run.

The original eleven dependency cases remain required. Three new workflow
control cases cover native report preservation, enforced policy failures,
scoped routing and an isolated CI-only native evidence attester. Their real
pre-code workflow refusal is retained in the change's TDD evidence. The
admission implementation has independent technical review and local verification.
Protected deployment and live CI attestation verification remain pending.

This follow-up changes CI controls and their specification and tests. It does
not change application runtime, dependency pins, core version or signed module
assets. It does not supply historical native RED, suppress other findings or
authorize a protected deployment or merge. Signing is CI/CD-only. The owner
will review the exact deployment and grant payloads after implementation.

A later dependency-only package hotfix still starts from published v0.55.4
commit `d579970565530c3fd7b98bad4de90cf874c2a99d`, with a release payload check
that excludes unrelated unreleased dev runtime changes. This CI follow-up is
not a package release or a promotion of all dev commits.
66 changes: 66 additions & 0 deletions .github/workflows/docs-dependency-checks.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
name: Documentation Dependency Compatibility

on:
pull_request:
paths:
- "docs/**"
- "scripts/check_jekyll_dependencies.rb"
- ".github/workflows/docs-dependency-checks.yml"
workflow_dispatch:

permissions:
contents: read

jobs:
documentation-dependencies:
runs-on: ubuntu-latest
env:
BUNDLE_FROZEN: "true"
JEKYLL_ENV: production
steps:
- name: Checkout
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10
- name: Setup frozen Ruby bundle
uses: ruby/setup-ruby@e81a8fa391b11a595c1b7ed84177cc0fe02faf83
with:
ruby-version: "3.2"
bundler: "2.3.5"
bundler-cache: false
- name: Download hash-reviewed plugin artifacts
working-directory: docs
run: |
mkdir -p "${{ runner.temp }}/docs-bundle/ruby/3.2.0/cache"
cd "${{ runner.temp }}/docs-bundle/ruby/3.2.0/cache"
curl --fail --silent --show-error --location --proto '=https' --proto-redir '=https' \
'https://rubygems.org/gems/jekyll-redirect-from-0.17.0.gem' -o jekyll-redirect-from-0.17.0.gem
curl --fail --silent --show-error --location --proto '=https' --proto-redir '=https' \
'https://rubygems.org/gems/jekyll-feed-0.18.0.gem' -o jekyll-feed-0.18.0.gem
curl --fail --silent --show-error --location --proto '=https' --proto-redir '=https' \
'https://rubygems.org/gems/jekyll-relative-links-0.9.1.gem' -o jekyll-relative-links-0.9.1.gem
printf '%s\n' \
'703dab0428b20bb5d550ab83d3c28b65bb5ecc0f734c5e61ee680de391b3e897 jekyll-redirect-from-0.17.0.gem' \
'8e6829f455b8764a8fa1bbb198d0ebb3525128dacc6ffe9d15f4df7388bc3647 jekyll-feed-0.18.0.gem' \
'6d5d70578c669ef9ee4c67f617d91497e0506fe5c1a059e484a900e18efb202e jekyll-relative-links-0.9.1.gem' \
| sha256sum --check
- name: Install locked documentation dependencies
working-directory: docs
run: |
bundle config set --local path '${{ runner.temp }}/docs-bundle'
bundle install --jobs 1 --retry 3
- name: Verify dependency security and compatibility
working-directory: docs
run: bundle exec ruby ../scripts/check_jekyll_dependencies.rb redirect feed_language feed_cdata relative
- name: Build root and prefixed documentation
working-directory: docs
run: |
bundle exec jekyll build --baseurl '' --destination '${{ runner.temp }}/docs-root'
bundle exec jekyll build --baseurl '/preview' --destination '${{ runner.temp }}/docs-preview'
- name: Retain built documentation and frozen inputs
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
with:
name: documentation-dependency-evidence
path: |
docs/Gemfile
docs/Gemfile.lock
${{ runner.temp }}/docs-root
${{ runner.temp }}/docs-preview
34 changes: 31 additions & 3 deletions .github/workflows/pr-orchestrator.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@
- 'requirements/ci/locked.txt'
- 'requirements/code-review/requirements.in'
- 'requirements/code-review/locked.txt'
- 'requirements/runtime-smoke/**'
- 'modules/**/module-package.yaml'
- 'src/specfact_cli/modules/**/module-package.yaml'
- 'scripts/check_license_compliance.py'
Expand Down Expand Up @@ -287,6 +288,10 @@
if: needs.changes.outputs.skip_expensive_tests_dev_to_main != 'true'
uses: ./.github/actions/setup-frozen-python

- name: Set up reviewed portable runtime fixture
if: needs.changes.outputs.skip_expensive_tests_dev_to_main != 'true'
uses: ./.github/actions/setup-runtime-smoke-fixture

- name: Verify version strings are synchronized
if: needs.changes.outputs.skip_expensive_tests_dev_to_main != 'true'
shell: bash
Expand Down Expand Up @@ -442,7 +447,10 @@
python-version: "3.11"
- name: Set up frozen compatibility dependencies
uses: ./.github/actions/setup-frozen-python
- name: Set up reviewed portable runtime fixture
uses: ./.github/actions/setup-runtime-smoke-fixture

- name: Run Python 3.11 compatibility tests

Check failure

Code scanning / CodeQL

Cache Poisoning via execution of untrusted code High

Potential cache poisoning in the context of the default branch due to privilege checkout of untrusted code from
steps.modules-fixture.outputs.ref
. (
schedule
).
shell: bash
run: |
echo "🔁 Python 3.11 compatibility checks"
Expand Down Expand Up @@ -921,11 +929,14 @@
- name: Set up frozen smoke dependencies
uses: ./.github/actions/setup-frozen-python

- name: Set up reviewed portable runtime fixture
uses: ./.github/actions/setup-runtime-smoke-fixture

- name: Run macOS runtime discovery smoke

Check failure

Code scanning / CodeQL

Cache Poisoning via execution of untrusted code High

Potential cache poisoning in the context of the default branch due to privilege checkout of untrusted code from
steps.modules-fixture.outputs.ref
. (
schedule
).
shell: bash
run: |
mkdir -p logs/runtime-smoke/macos
python scripts/runtime_discovery_smoke.py --modules-repo specfact-cli-modules --launcher direct 2>&1 | tee logs/runtime-smoke/macos/runtime-discovery.log
python scripts/runtime_discovery_smoke.py --modules-repo "$SPECFACT_SMOKE_MODULES_REPO" --launcher direct 2>&1 | tee logs/runtime-smoke/macos/runtime-discovery.log

- name: Upload macOS runtime-smoke logs
if: always()
Expand Down Expand Up @@ -980,11 +991,14 @@
- name: Set up frozen smoke dependencies
uses: ./.github/actions/setup-frozen-python

- name: Set up reviewed portable runtime fixture
uses: ./.github/actions/setup-runtime-smoke-fixture

- name: Run Windows runtime discovery smoke

Check failure

Code scanning / CodeQL

Cache Poisoning via execution of untrusted code High

Potential cache poisoning in the context of the default branch due to privilege checkout of untrusted code from
steps.modules-fixture.outputs.ref
. (
schedule
).
shell: bash
run: |
mkdir -p logs/runtime-smoke/windows
python scripts/runtime_discovery_smoke.py --modules-repo specfact-cli-modules --launcher direct 2>&1 | tee logs/runtime-smoke/windows/runtime-discovery.log
python scripts/runtime_discovery_smoke.py --modules-repo "$SPECFACT_SMOKE_MODULES_REPO" --launcher direct 2>&1 | tee logs/runtime-smoke/windows/runtime-discovery.log

- name: Upload Windows runtime-smoke logs
if: always()
Expand Down Expand Up @@ -1163,10 +1177,23 @@
-r requirements/code-review/locked.txt
echo "REVIEW_TOOLS_PYTHON=${review_tools}/bin/python" >> "$GITHUB_ENV"

- name: Install frozen runtime smoke license scope
shell: bash
run: |
set -euo pipefail
python scripts/check_reproducible_delivery.py
smoke_tools="${RUNNER_TEMP}/specfact-runtime-smoke-license-scope"
uv venv --python "${pythonLocation}/bin/python" "$smoke_tools"
uv pip install \
--python "${smoke_tools}/bin/python" \
--require-hashes --no-deps --only-binary :all: \
-r requirements/runtime-smoke/locked.txt
echo "SMOKE_TOOLS_PYTHON=${smoke_tools}/bin/python" >> "$GITHUB_ENV"

- name: Run license compliance gate
run: |
echo "🔍 Running license compliance gate..."
python scripts/check_license_compliance.py --code-review-python "$REVIEW_TOOLS_PYTHON"
python scripts/check_license_compliance.py --code-review-python "$REVIEW_TOOLS_PYTHON" --additional-python "$SMOKE_TOOLS_PYTHON"

dependency-trust:
name: Dependency Trust Gate
Expand Down Expand Up @@ -1214,6 +1241,7 @@
echo "🔍 Running CVE security audit..."
python scripts/security_audit_gate.py
python scripts/security_audit_gate.py --requirement requirements/code-review/locked.txt
python scripts/security_audit_gate.py --requirement requirements/runtime-smoke/locked.txt

reproducible-delivery:
name: Reproducible Delivery Evidence
Expand Down
Loading
Loading