Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
c7f0820
feat(ids): add globally unique UUID4 artifact ID helpers
fraware Jul 22, 2026
9feb1da
feat(authz): add AuthorizationEnvelope capability partial order
fraware Jul 22, 2026
aa607c7
feat(authz): bridge legacy approval scopes to envelopes
fraware Jul 22, 2026
27e7e3a
feat(ledger): add Merkle inclusion proof helpers
fraware Jul 22, 2026
70086e0
feat(verify): require VerifiedDecision before grant issuance
fraware Jul 22, 2026
324e237
feat(sal): verify signing assurance levels and strengthen KMS signing
fraware Jul 22, 2026
b357282
feat(kms): add KMS/HSM attestation for SAL4 claims
fraware Jul 22, 2026
f8efa11
feat(ial): enforce minimum identity assurance fail-closed
fraware Jul 22, 2026
bdee6f4
feat(grants): issue only from VerifiedDecision with issuer signatures
fraware Jul 22, 2026
6ccb762
feat(ledger): rename LocalAppendSink and add Object Lock WORM
fraware Jul 22, 2026
7e0114a
feat(ledger): add SQLite transactional event ledger
fraware Jul 22, 2026
24ca1dd
feat(ledger): add Postgres transactional ledger with tenant RLS
fraware Jul 22, 2026
436387d
feat(rest): lock down API auth to verified principals
fraware Jul 22, 2026
b37c16b
feat(session): export completed review packs with provenance checks
fraware Jul 22, 2026
3f9dc18
feat(trust): build complete effective authorization trust manifest
fraware Jul 22, 2026
4a0f9f0
feat(policy): add JSON schemas and semantic bundle validation
fraware Jul 22, 2026
e02f73c
refactor(ids): migrate packets, decisions, and ledger to global IDs
fraware Jul 22, 2026
0c848d3
feat(engine): wire transactional ledgers and production REST readiness
fraware Jul 22, 2026
4478954
feat(api): integrate VerifiedDecision, export packs, and ledger backends
fraware Jul 22, 2026
ed65da7
feat(contracts): expand live Akta/PCS contract validation hooks
fraware Jul 22, 2026
9dc3f2c
feat(pilot): add chain reconstruction script and sequence docs
fraware Jul 22, 2026
37f599e
test(property): add Hypothesis invariants for authorization and hashing
fraware Jul 22, 2026
e4c03b6
ci: harden workflow with SHA pins, CodeQL, SBOM, and Hypothesis
fraware Jul 22, 2026
b415a8d
docs: add 2.0 migration, DoD, limitations, and release manifest
fraware Jul 22, 2026
9314407
fix(akta): align session-complete and evals with 2.0 verification
fraware Jul 22, 2026
27cd8e9
fix(quality): align ledger analysis with 2.0 event shapes
fraware Jul 22, 2026
695866f
test: update trust root and registry fixtures for 2.0 manifests
fraware Jul 22, 2026
ea9be5c
chore(examples): bump protocol review fixture contexts for 2.0
fraware Jul 22, 2026
99c2394
release: bump package version to 2.0.0
fraware Jul 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
61 changes: 55 additions & 6 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,28 +14,77 @@ jobs:
matrix:
python-version: ["3.10", "3.11", "3.12"]
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Set up Python
uses: actions/setup-python@v5
uses: actions/setup-python@42375524e23c412d93fb67b49958b491fce71c38 # v5.4.0
with:
python-version: ${{ matrix.python-version }}
- name: Run CI (install, lint, typecheck, tests, evals)
run: bash scripts/ci.sh

live-ecosystem:
runs-on: ubuntu-latest
if: vars.PF_CORE_REPO_PATH != '' || vars.PCS_CORE_REPO_PATH != '' || vars.AKTA_REPO_PATH != ''
if: vars.PF_CORE_REPO_PATH != '' || vars.PCS_CORE_REPO_PATH != '' || vars.AKTA_REPO_PATH != '' || vars.SCOPE_REQUIRE_LIVE_CONTRACTS == 'true'
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Set up Python
uses: actions/setup-python@v5
uses: actions/setup-python@42375524e23c412d93fb67b49958b491fce71c38 # v5.4.0
with:
python-version: "3.12"
- name: Install SCOPE
run: pip install -e ".[dev]"
- name: Enforce institutional live-contract profile
if: vars.SCOPE_REQUIRE_LIVE_CONTRACTS == 'true'
env:
SCOPE_REQUIRE_LIVE_CONTRACTS: "true"
PF_CORE_REPO_PATH: ${{ vars.PF_CORE_REPO_PATH }}
PCS_CORE_REPO_PATH: ${{ vars.PCS_CORE_REPO_PATH }}
AKTA_REPO_PATH: ${{ vars.AKTA_REPO_PATH }}
run: |
set -euo pipefail
for var in PF_CORE_REPO_PATH PCS_CORE_REPO_PATH AKTA_REPO_PATH; do
if [ -z "${!var}" ]; then
echo "Institutional profile requires $var" >&2
exit 1
fi
done
- name: Live contract tests
env:
PF_CORE_REPO_PATH: ${{ vars.PF_CORE_REPO_PATH }}
PCS_CORE_REPO_PATH: ${{ vars.PCS_CORE_REPO_PATH }}
AKTA_REPO_PATH: ${{ vars.AKTA_REPO_PATH }}
run: pytest tests/test_live_contracts.py -m live_contract -v
SCOPE_REQUIRE_LIVE_CONTRACTS: ${{ vars.SCOPE_REQUIRE_LIVE_CONTRACTS }}
run: pytest tests/test_live_contracts.py -m live_contract -v

codeql:
runs-on: ubuntu-latest
permissions:
security-events: write
contents: read
actions: read
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Initialize CodeQL
uses: github/codeql-action/init@a65a038433a26f4363cf9f029e3b9ceac831ad5d # v3.28.10
with:
languages: python
- name: Autobuild
uses: github/codeql-action/autobuild@a65a038433a26f4363cf9f029e3b9ceac831ad5d # v3.28.10
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@a65a038433a26f4363cf9f029e3b9ceac831ad5d # v3.28.10

sbom:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Generate SBOM
uses: anchore/sbom-action@f325610c9f50a54015d37c8d16cb3b0e2c8f4de0 # v0.18.0
with:
path: .
format: spdx-json
output-file: sbom.spdx.json
- name: Upload SBOM artifact
uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0
with:
name: sbom-spdx
path: sbom.spdx.json
22 changes: 22 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,27 @@
# Changelog

## v2.0.0 (2026-07-22)

Breaking authorization redesign and security hardening (release candidate toward institutional DoD):

- **AuthorizationEnvelope**: total-order hierarchy retired for comparisons; capability families with partial-order containment (`envelope_contains`, `envelope_intersection`, `envelope_is_narrower`, `envelope_difference`)
- **VerifiedDecision**: mandatory `scope/decision_verification.py` 12-step pipeline; grant issuer rejects plain dicts with `decision_signature`
- **Grant issuer signatures**: grants signed by SCOPE auth / institutional issuer fields; decision signatures referenced, not copied as grant authority
- **Trust manifest**: `scope_trust_root_hash` digests the complete effective authorization manifest
- **Identity fail-closed**: no default `domain_scientist`; `policy/minimum_identity_assurance.yaml`; SAML assertions require verifier + attestation (not labeled OIDC)
- **REST lockdown**: authenticated principals; spoofable `X-Scope-*` path/tenant/caller headers non-authoritative; filesystem path request fields removed
- **Transactional ledger**: SQLite `BEGIN IMMEDIATE` reference (`SqliteScopeLedger`); `LocalAppendSink` replaces false WORM naming; `S3ObjectLockWormSink` for real object-lock
- **IDs**: full UUID4 hex artifact IDs (no 6-char fragments)
- **KMS verify**: local signature verification required (placeholder `verify() -> False` removed)
- Docs: `docs/migration_2.0.md`, `docs/pilot_sequence.md`, `docs/definition_of_done.md`

Institutional readiness is **not** claimed. See Definition of Done.

## v1.0.0 (release candidate)

Treated as a release-candidate artifact contract, not production-ready infrastructure.
Superseded for authorization model by 2.0.

## v0.8.1 (2026-06-29)

Contract hardening and verifiable pilot fixtures:
Expand Down
Loading
Loading