Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
4bd76c5
Ignore verifier dist, CertifyEdge tools, and Hypothesis cache.
fraware Jul 23, 2026
8c59177
Add containment-checked path resolution for untrusted refs.
fraware Jul 23, 2026
e0162b5
Fix Trace.ofEvents to preserve chronological event order.
fraware Jul 23, 2026
addf176
Add ArtifactIntegrity and FormatAssertionProbe schemas.
fraware Jul 23, 2026
5399d83
Add projection and release-bundle manifest schemas.
fraware Jul 23, 2026
7889fde
Add ExternalAttestation.v0 schema for CertifyEdge-bound evidence.
fraware Jul 23, 2026
9db2ec2
Harden shared schema defs and certificate-related formats.
fraware Jul 23, 2026
d47d4b9
Document JSON Schema format policy with negative fixtures.
fraware Jul 23, 2026
d9b53ae
Strengthen canonical JSON hashing and document edge cases.
fraware Jul 23, 2026
46e6dea
Align Rust canonical JSON hashing with Phase 1 vectors.
fraware Jul 23, 2026
89f2057
Align TypeScript canonical JSON hashing with Phase 1 vectors.
fraware Jul 23, 2026
c38caf9
Add canonical_json_v1 shared hash vector corpus and generator.
fraware Jul 23, 2026
59ddf1a
Refresh normative hash vectors after canonicalization updates.
fraware Jul 23, 2026
6aff1cb
Require declared computation witness hashes and reject extras.
fraware Jul 23, 2026
66b930a
Extend computation fixture materialization for new invalid cases.
fraware Jul 23, 2026
414167d
Add invalid computation-release fixtures for declared-hash failures.
fraware Jul 23, 2026
b384f54
Refresh valid and legacy computation fixtures for declared hashes.
fraware Jul 23, 2026
2b376c3
Add honest runtime capability detection for install profiles.
fraware Jul 23, 2026
f239988
Pin CertifyEdge, elan, and GitHub Actions dependency versions.
fraware Jul 23, 2026
c5e4806
Add SECURITY policy and security-governance documentation.
fraware Jul 23, 2026
5cff135
Add CODEOWNERS, Dependabot, and CodeQL workflow scaffolding.
fraware Jul 23, 2026
e171389
Add Phase 1 protocol-hardening tests for formats and integrity.
fraware Jul 23, 2026
3492c74
Add typed fail-closed errors for obligation extraction.
fraware Jul 23, 2026
c50ce3f
Add PCSProjectionManifest binding for extracted proof fields.
fraware Jul 23, 2026
6bfdcdf
Add PF-Core semantic projection extraction and documentation.
fraware Jul 23, 2026
79fb612
Add declarative release-profile engine for multi-domain chains.
fraware Jul 23, 2026
def79c4
Add Phase 3 envelope-binding tests for projection and profiles.
fraware Jul 23, 2026
b254556
Add Lean Hash helpers and Effect refinements for observed paths.
fraware Jul 23, 2026
5e48c3c
Model observed effects from trusted instrumentation.
fraware Jul 23, 2026
896fab3
Add optional EventSafeDenyClosed refinement for deny paths.
fraware Jul 23, 2026
27c81fd
Add paired-execution vocabulary as research scaffolding only.
fraware Jul 23, 2026
10082e2
Strengthen TenantProjectionIsolation observational statements.
fraware Jul 23, 2026
d2eb771
Wire new PF-Core Lean modules and update catalog/action maps.
fraware Jul 23, 2026
24ee79b
Add Phase 4 differential and TCB boundary tests.
fraware Jul 23, 2026
c4aed5b
Add Phase 5 observed-effect tests and runtime-semantics docs.
fraware Jul 23, 2026
6c61b2a
Add certificate-mode invalid fixtures for empty and unresolved traces.
fraware Jul 23, 2026
110eb19
Add external attestation artifacts bound to release bundles.
fraware Jul 23, 2026
ec697aa
Add CertifyEdge pin verification and provision helper scripts.
fraware Jul 23, 2026
2890c13
Add verifier packaging, SBOM, and release-gate helper scripts.
fraware Jul 23, 2026
5a95fbe
Tighten CI and release workflows with provenance and pin checks.
fraware Jul 23, 2026
7eaa753
Update local PF-Core release-grade scripts for new gates.
fraware Jul 23, 2026
d896298
Update PF-Core catalog generation for theorem status fields.
fraware Jul 23, 2026
adfe770
Fail closed in Lean codegen and proof-binding paths.
fraware Jul 23, 2026
a06f312
Integrate semantic projection and attestation into PF-Core runtime.
fraware Jul 23, 2026
316c3c1
Extend registry and validators for new artifact kinds.
fraware Jul 23, 2026
190c484
Route domain release chains through the profile engine.
fraware Jul 23, 2026
bb5174b
Export new modules and CLI entry points for Phase 0-7 features.
fraware Jul 23, 2026
b4ec8af
Update Lean codegen and catalog tests for fail-closed evidence.
fraware Jul 23, 2026
1ce4fc6
Update bundle, observational, and cross-language PF-Core tests.
fraware Jul 23, 2026
5dede49
Refresh research-grade and stage PF-Core regression suites.
fraware Jul 23, 2026
dd5aa5a
Add property-based tests and tighten Python quality tooling.
fraware Jul 23, 2026
58c2951
Document mutation testing and verification-quality expectations.
fraware Jul 23, 2026
bb11765
Update Rust PF-Core validation and catalog surfaces.
fraware Jul 23, 2026
c78ede7
Add Rust fuzzing scaffold and document harness expectations.
fraware Jul 23, 2026
fbb950e
Update TypeScript PF-Core validation and catalog parity.
fraware Jul 23, 2026
de349a3
Regenerate PCS release Lean catalogs for updated proof bindings.
fraware Jul 23, 2026
57948e8
Update threat model and trusted-boundary docs for new assumptions.
fraware Jul 23, 2026
4721ee6
Clarify non-interference and theorem-sheet status wording.
fraware Jul 23, 2026
fd852bb
Sync gap audit, merge-readiness, and CertifyEdge CI docs.
fraware Jul 23, 2026
04ce163
Update top-level README and docs index for Phase 0-7 work.
fraware Jul 23, 2026
c18321d
Refresh benchmark run fixtures after witness and catalog updates.
fraware Jul 23, 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
19 changes: 19 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# CODEOWNERS — security-sensitive paths require maintainer review.
# See SECURITY.md and docs/security-governance.md.

* @SentinelOps-CI/dev-team

/lean/ @SentinelOps-CI/dev-team
/lean/PFCore/ @SentinelOps-CI/dev-team
/lean/PCS/ @SentinelOps-CI/dev-team
/schemas/ @SentinelOps-CI/dev-team
/pins/ @SentinelOps-CI/dev-team
/.github/ @SentinelOps-CI/dev-team
/docker/ @SentinelOps-CI/dev-team
/python/pcs_core/hash.py @SentinelOps-CI/dev-team
/python/pcs_core/release_chain.py @SentinelOps-CI/dev-team
/python/pcs_core/release_chain_checks.py @SentinelOps-CI/dev-team
/python/pcs_core/pf_core_bundle.py @SentinelOps-CI/dev-team
/docs/trust-model.md @SentinelOps-CI/dev-team
/docs/hash-canonicalization.md @SentinelOps-CI/dev-team
/SECURITY.md @SentinelOps-CI/dev-team
25 changes: 25 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
version: 2
updates:
- package-ecosystem: "pip"
directory: "/python"
schedule:
interval: "weekly"
open-pull-requests-limit: 5

- package-ecosystem: "cargo"
directory: "/rust"
schedule:
interval: "weekly"
open-pull-requests-limit: 5

- package-ecosystem: "npm"
directory: "/typescript"
schedule:
interval: "weekly"
open-pull-requests-limit: 5

- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
72 changes: 48 additions & 24 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,15 @@ jobs:
python:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
with:
python-version: "3.12"
- name: Install and test Python
run: |
cd python
pip install -e ".[dev]"
pip install -c requirements.lock -e ".[dev]"
pcs capabilities
pytest -q tests/test_pf_core_tier1.py tests/test_pf_core_cross_language.py
pytest -q tests/test_pf_core_stage1.py tests/test_pf_core_stage2.py tests/test_pf_core_stage3.py
pytest -q tests/test_pf_core_phase_f.py
Expand Down Expand Up @@ -76,10 +77,19 @@ jobs:
pytest -q tests/test_multidomain_workflows.py
ruff check pcs_core tests
ruff format --check pcs_core tests
- name: Phase 7 quality — hypothesis + pyright + pin check
run: |
cd python
pip install -c requirements.lock -e ".[dev,quality]"
python ../scripts/verify-certifyedge-pin.py --mode preview
pyright pcs_core/external_attestation.py pcs_core/safe_paths.py pcs_core/pf_core_certifyedge.py
pytest -q tests/test_external_attestation.py tests/test_property_based.py
coverage run -m pytest -q tests/test_external_attestation.py tests/test_safe_paths.py
coverage report --include='pcs_core/external_attestation.py,pcs_core/safe_paths.py' --fail-under=70
- name: PF-Core fixture validation
run: |
cd python
pip install -e .
pip install -c requirements.lock -e .
pcs validate ../examples/pf-core-valid/tool_use_trace_compiled/pfcore_trace.json
pcs pf-core validate-trace ../examples/pf-core-valid/tool_use_trace_compiled/pfcore_trace.json
# Dev CI policy: live CertifyEdge when available; mock fallback for format validation.
Expand All @@ -88,7 +98,7 @@ jobs:
- name: PF-Core CertifyEdge check (live or mock)
run: |
cd python
pip install -e .
pip install -c requirements.lock -e .
if command -v certifyedge >/dev/null 2>&1; then
echo "CertifyEdge CLI found: $(command -v certifyedge)"
certifyedge --version || true
Expand Down Expand Up @@ -123,6 +133,19 @@ jobs:
../lean/PFCore/Catalog.lean \
../rust/crates/pcs-core/src/pf_core_catalog.rs \
../typescript/packages/core/src/pfCoreCatalog.ts
# Fail if hand-maintained Lean effect/role catalogs reappear outside Catalog.lean.
if grep -n '("cap:file-read", Effect.read)' ../lean/PFCore/Action.lean; then
echo "hand-maintained knownCapabilityEffectCatalog entries found in Action.lean" >&2
exit 1
fi
if grep -n '("file_reader", \["cap:file-read"\])' ../lean/PFCore/RoleMap.lean; then
echo "hand-maintained runtimeRoleMap entries found in RoleMap.lean" >&2
exit 1
fi
if grep -n 'EFFECT_KIND_TO_LEAN: dict\[str, str\] = {' ../python/pcs_core/pf_core_lean_codegen.py; then
echo "manual EFFECT_KIND_TO_LEAN table found in pf_core_lean_codegen.py" >&2
exit 1
fi
- name: PF-Core adapter parity (provability-fabric-core pin)
run: bash scripts/run-pf-core-adapter-ci.sh
- name: LabTrust release fixtures
Expand All @@ -133,21 +156,21 @@ jobs:
lean:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
with:
python-version: "3.12"
- name: Install elan
run: curl -sSfL https://github.com/leanprover/elan/releases/download/v4.0.0/elan-x86_64-unknown-linux-gnu.tar.gz | tar xz && ./elan-init -y --default-toolchain none
- name: Install elan (checksum verified)
run: bash scripts/install-elan-verified.sh
- name: Build Lean libraries and PF-Core lean-check
run: |
export PATH="$HOME/.elan/bin:$PATH"
cd lean
elan default leanprover/lean4:v4.14.0
lake build PCS
lake build PFCore
cd ../python
pip install -e .
pip install -c requirements.lock -e .
pcs capabilities
pcs pf-core lean-check --trace ../examples/pf-core-valid/tool_use_trace_compiled/pfcore_trace.json --out /tmp/pfcore-ci-cert.json
pcs pf-core verify-proof-binding \
--certificate /tmp/pfcore-ci-cert.json \
Expand All @@ -160,8 +183,8 @@ jobs:
runs-on: ubuntu-latest
continue-on-error: ${{ github.ref != 'refs/heads/main' && github.ref != 'refs/heads/master' }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
with:
python-version: "3.12"
- name: PF-Core provability-fabric-core adapter parity
Expand All @@ -170,30 +193,30 @@ jobs:
rust:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@1.86
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- uses: dtolnay/rust-toolchain@4d407b29186a635f0cc27475ef0bc0ae605a8866 # 1.86
with:
components: rustfmt, clippy
- name: Test Rust
run: |
cd rust
cargo fmt --check
rustup component add clippy
cargo clippy --all-targets -- -D warnings
cargo test
cargo test hash_vectors
cargo clippy --locked --all-targets -- -D warnings
cargo test --locked
cargo test --locked hash_vectors

typescript:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: "22"
- name: Test TypeScript
run: |
cd typescript
npm install
npm ci
npm test
npm run test:hash-vectors -w @pcs/core
npm run lint
Expand All @@ -202,14 +225,15 @@ jobs:
runs-on: ubuntu-latest
needs: python
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
with:
python-version: "3.12"
- name: Required CLI commands
run: |
cd python
pip install -e .
pip install -c requirements.lock -e .
pcs capabilities
pcs validate ../examples/science_claim_bundle.certified.valid.json
pcs validate ../examples/signed_science_claim_bundle.valid.json
pcs validate ../examples/labtrust/signed_science_claim_bundle.valid.json
Expand Down
30 changes: 30 additions & 0 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
name: CodeQL

on:
push:
branches: [main, master]
pull_request:
schedule:
- cron: "17 7 * * 1"

permissions:
contents: read
security-events: write

jobs:
analyze:
name: analyze
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
language: [python, javascript-typescript]
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- uses: github/codeql-action/init@48ab28a6f5dbc2a99bf1e0131198dd8f1df78169 # v3.28.0
with:
languages: ${{ matrix.language }}
- uses: github/codeql-action/autobuild@48ab28a6f5dbc2a99bf1e0131198dd8f1df78169 # v3.28.0
- uses: github/codeql-action/analyze@48ab28a6f5dbc2a99bf1e0131198dd8f1df78169 # v3.28.0
with:
category: "/language:${{ matrix.language }}"
Loading
Loading