Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
75 commits
Select commit Hold shift + click to select a range
e80d558
feat(scope): pin synthetic summary IAL0/SAL0 and origins
fraware Jun 29, 2026
a8d2409
test(contracts): assert synthetic summary assurance policy
fraware Jun 29, 2026
15b2191
docs(scope): document live synthetic summary assurance
fraware Jun 29, 2026
e005a07
test(fixtures): bump SCOPE fixtures to contract v0.8.1
fraware Jun 29, 2026
502ce28
feat(scope-contract): strict akta-scope-contract-v0.8.1 pins
fraware Jun 29, 2026
9569a07
feat(verify): add pilot-mode cross-repo reconstruction gate
fraware Jun 29, 2026
781edd6
test(integration): pilot-mode rejects simulated scope output
fraware Jun 29, 2026
237acab
feat(scripts): add generate_pilot_bundle orchestrator
fraware Jun 29, 2026
120323b
fix(demo): align reconstructable experiment with grant split
fraware Jun 29, 2026
498a58d
test(integration): assert pilot bundle artifact layout
fraware Jun 29, 2026
364f5e3
chore(make): add demo-pilot-bundle and verify-pilot-bundle
fraware Jun 29, 2026
7d0f6c1
chore(release): bump package version to 0.8.1
fraware Jun 29, 2026
62dbe4a
docs(changelog): add AKTA v0.8.1 release notes
fraware Jun 29, 2026
156d57e
docs(release): document v0.8.1 pilot release process
fraware Jun 29, 2026
b942ae0
docs(readme): mention pilot bundle verification for v0.8.1
fraware Jun 29, 2026
a897311
chore(evals): align canonical_5 after v0.8.1 CI run
fraware Jun 29, 2026
4d531c2
chore(evals): align public_100 after v0.8.1 CI run
fraware Jun 29, 2026
35e018e
chore(examples): CI-sync protocol_drift akta_decision_active_update.json
fraware Jun 29, 2026
c3e98d4
chore(examples): CI-sync protocol_drift akta_record_active_update.json
fraware Jun 29, 2026
d7e62ed
chore(examples): CI-sync protocol_drift pcs akta_decision.json
fraware Jun 29, 2026
2584dfc
chore(examples): CI-sync protocol_drift pcs akta_record.json
fraware Jun 29, 2026
b3cc771
chore(examples): CI-sync protocol_drift pcs manifest.json
fraware Jun 29, 2026
af47b00
chore(examples): CI-sync protocol_drift pcs pf_obligation.json
fraware Jun 29, 2026
5363607
chore(examples): CI-sync protocol_drift pcs review_trigger.json
fraware Jun 29, 2026
4e8ac06
chore(examples): CI-sync protocol_drift pcs scope_review_summary.json
fraware Jun 29, 2026
918e53f
chore(examples): CI-sync protocol_drift pf_obligation.json
fraware Jun 29, 2026
bb8d9df
chore(examples): CI-sync protocol_drift review_trigger.json
fraware Jun 29, 2026
0528555
chore(evals): post-CI sync canonical_5 baseline
fraware Jun 29, 2026
ed355f5
chore(evals): post-CI sync public_100 baseline
fraware Jun 29, 2026
511b357
chore(examples): post-CI sync protocol_drift akta_decision_active_upd…
fraware Jun 29, 2026
6e39b09
chore(examples): post-CI sync protocol_drift akta_record_active_updat…
fraware Jun 29, 2026
8497efa
chore(examples): post-CI sync protocol_drift akta_decision.json
fraware Jun 29, 2026
05ad901
chore(examples): post-CI sync protocol_drift akta_record.json
fraware Jun 29, 2026
b084d67
chore(examples): post-CI sync protocol_drift manifest.json
fraware Jun 29, 2026
5f80c63
chore(examples): post-CI sync protocol_drift pf_obligation.json
fraware Jun 29, 2026
4154112
chore(examples): post-CI sync protocol_drift review_trigger.json
fraware Jun 29, 2026
83af925
chore(examples): post-CI sync protocol_drift pf_obligation.json
fraware Jun 29, 2026
a529a0f
chore(examples): post-CI sync protocol_drift review_trigger.json
fraware Jun 29, 2026
e7f0841
Merge release/v0.8 baseline into release/v1.0
fraware Jun 29, 2026
eece168
Sync SCOPE contract fixtures from live sibling repo.
fraware Jun 29, 2026
d42cd89
Add explicit SCOPE grant override policy for re-gate.
fraware Jun 29, 2026
d7c50b9
Add mandatory SCOPE live CI gate and pilot bundle targets.
fraware Jun 29, 2026
5dec092
M2: Add sibling-repo live matrix demos and contract tests
fraware Jun 29, 2026
20d4224
M3: Expand AKTA-Bench v1 corpora and behavioral evals
fraware Jun 29, 2026
f5317a9
M4: Add session grant store and adapter observability baseline
fraware Jun 29, 2026
48d4f93
M5: Freeze policy bundle akta-core-v1.0 and protocol docs
fraware Jun 29, 2026
33c717c
M6: Add v1.0 release verifier and bump to 1.0.0
fraware Jun 29, 2026
fdec084
Align SCOPE contract fixtures with scope-core-v1.0 runtime
fraware Jun 29, 2026
e7ec381
Fix pilot-mode verifier for v1.0 artifact layout
fraware Jun 29, 2026
3fe8c8e
Add pilot bundle reference hash manifest from live generation
fraware Jun 29, 2026
224dab8
Add sibling repo discovery for live trust-stack validation.
fraware Jun 29, 2026
6dc9e64
Tag oracle-independent scenarios with explicit label provenance.
fraware Jun 29, 2026
33e31a4
Wire sibling path discovery into cross-repo contract helpers.
fraware Jun 29, 2026
9fb8d18
Run full v1.0 release orchestration with six trust-stack steps.
fraware Jun 29, 2026
98b579f
Integrate PF-Core trace validation and Memory round-trip with siblings.
fraware Jun 29, 2026
b81d63a
Normalize VSA report human_review for sibling schema validation.
fraware Jun 29, 2026
e08a96c
Add P7 production refusal tests and v1.0 Ed25519 ceremony docs.
fraware Jun 29, 2026
d56bdcc
Fail-closed release-gate with sibling clone composite action.
fraware Jun 29, 2026
b1b3a87
Wire PCS-Bench external harness and tighten PF sibling validation.
fraware Jun 29, 2026
d4d3e94
Enforce structured_action schema for unknown mutating tools.
fraware Jun 29, 2026
7116a9e
Expand behavioral middleware suite to 20 scenarios with wrap_tool tra…
fraware Jun 29, 2026
96d292f
Memory sibling round-trip writes temp store; PCS invalid bundle test.
fraware Jun 29, 2026
8f64ade
Separate public_gate_derived metrics and LabTrust source_file provena…
fraware Jun 29, 2026
6927fdb
Add v1.0 Ed25519 release manifest example and institutional overlay t…
fraware Jun 29, 2026
82a66fb
Sync protocol drift examples and document v1.0 release gates.
fraware Jun 29, 2026
9773db2
Refresh protocol drift root trust artifacts after live regen
fraware Jun 29, 2026
a2874ca
Sync integrated protocol drift PCS bundle manifest hashes
fraware Jun 29, 2026
89a0ca4
Pin verify_v1_release eval report from green CI run
fraware Jun 29, 2026
501c8d4
Add behavioral_v1 middleware eval report artifact
fraware Jun 29, 2026
e20d727
Add pcs_bench_live harness eval report for v1.0
fraware Jun 29, 2026
1ed64bf
Add public_gate_derived eval metrics report
fraware Jun 29, 2026
92527a7
Refresh public_100 eval report for v1.0 public gate
fraware Jun 29, 2026
999774b
Refresh canonical_5 eval report after v1.0 CI regen
fraware Jun 29, 2026
639fb98
Sync weak-evidence PCS bundle hashes for v1.0 pilots
fraware Jun 29, 2026
462c14f
Refresh weak-evidence integrated example trust artifacts
fraware Jun 29, 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
130 changes: 59 additions & 71 deletions .github/CROSS_REPO_CI.md
Original file line number Diff line number Diff line change
@@ -1,103 +1,91 @@
# Cross-repo CI configuration (v0.7.1)
# Cross-repo CI configuration (v1.0)

AKTA default CI runs entirely in-repo. Optional jobs validate live exports against sibling repositories when repository variables or secrets are configured.
AKTA default CI (`make ci`) runs entirely in-repo. The **release-gate** workflow runs on every PR to `main` and additionally exercises the live trust-stack when sibling clone URLs or repository variables are configured.

## Repository variables
## Repository variables (self-hosted / pre-checked-out siblings)

Set these under **Settings → Secrets and variables → Actions → Variables**:
Set under **Settings → Secrets and variables → Actions → Variables**:

| Variable | Purpose | Activates job |
|----------|---------|---------------|
| `PF_CORE_REPO_PATH` | Absolute path to a checked-out PF-Core repo on the runner | `cross-repo-pf-pcs` (PF step) |
| `PCS_CORE_REPO_PATH` | Absolute path to a checked-out PCS-Core repo | `cross-repo-pf-pcs` (PCS step) |
| `SCOPE_REPO_PATH` | Absolute path to a checked-out SCOPE repo | `cross-repo-scope` |
| `PCS_BENCH_REPO_PATH` | Absolute path to a checked-out PCS-Bench repo | `cross-repo-pcs-bench` |
| Variable | Purpose |
|----------|---------|
| `PF_CORE_REPO_PATH` | Absolute path to PF-Core checkout on the runner |
| `PCS_CORE_REPO_PATH` | Absolute path to PCS-Core checkout |
| `SCOPE_REPO_PATH` | Absolute path to SCOPE checkout (optional if clone secret set) |
| `PCS_BENCH_REPO_PATH` | Absolute path to PCS-Bench checkout |
| `VSA_REPO_PATH` | Absolute path to VSA checkout |
| `MEMORY_REPO_PATH` | Absolute path to Scientific Memory checkout |

## Repository secrets
When a `*_REPO_PATH` variable is set but the path is missing, release-gate **fails closed** (does not silently skip).

## Repository secrets (clone URLs)

Set under **Settings → Secrets and variables → Actions → Secrets**:

| Secret | Purpose |
|--------|---------|
| `SCOPE_REPO_URL` | Git clone URL for SCOPE; CI clones to `$GITHUB_WORKSPACE/scope-sibling` and sets `SCOPE_REPO_PATH` |
| `SCOPE_REPO_URL` | Git clone URL for SCOPE |
| `PF_CORE_REPO_URL` | Git clone URL for PF-Core |
| `PCS_CORE_REPO_URL` | Git clone URL for PCS-Core |
| `PCS_BENCH_REPO_URL` | Git clone URL for PCS-Bench |
| `VSA_REPO_URL` | Git clone URL for VSA |
| `MEMORY_REPO_URL` | Git clone URL for Scientific Memory |

## Manual sibling checkout pattern
Optional **public** fallbacks (repository variables) when secrets are unset:

Self-hosted or composite runners with sibling repos on disk:
| Variable | Default public URL |
|----------|-------------------|
| `SCOPE_PUBLIC_REPO_URL` | `https://github.com/fraware/SCOPE.git` |
| `PF_CORE_PUBLIC_REPO_URL` | `https://github.com/SentinelOps-CI/provability-fabric-core.git` |
| `PCS_CORE_PUBLIC_REPO_URL` | `https://github.com/SentinelOps-CI/pcs-core.git` |
| `PCS_BENCH_PUBLIC_REPO_URL` | `https://github.com/fraware/pcs-bench.git` |
| `VSA_PUBLIC_REPO_URL` | `https://github.com/fraware/verified-science-agent.git` |
| `MEMORY_PUBLIC_REPO_URL` | `https://github.com/fraware/scientific-memory.git` |

```yaml
env:
PF_CORE_REPO_PATH: /opt/siblings/PF-Core
PCS_CORE_REPO_PATH: /opt/siblings/PCS-Core
SCOPE_REPO_PATH: /opt/siblings/SCOPE
PCS_BENCH_REPO_PATH: /opt/siblings/PCS-Bench
```
The composite action `.github/actions/clone-siblings` clones configured siblings and exports `SCOPE_REPO_PATH`, `PF_CORE_REPO_PATH`, etc. to `GITHUB_ENV`.

Run locally:
**SCOPE is mandatory on release-gate:** if clone fails, the workflow fails. Default public SCOPE URL is used when no secret is configured.

## Manual sibling checkout pattern

```bash
export PF_CORE_REPO_PATH=/path/to/PF-Core
export PCS_CORE_REPO_PATH=/path/to/PCS-Core
export SCOPE_REPO_PATH=/path/to/SCOPE
export PCS_BENCH_REPO_PATH=/path/to/PCS-Bench
export VSA_REPO_PATH=/path/to/verified-science-agent
export MEMORY_REPO_PATH=/path/to/scientific-memory
pytest tests/contracts/ -v -m integration
python scripts/verify_v1_release.py
```

PowerShell:

```powershell
$env:PF_CORE_REPO_PATH = "C:\path\to\PF-Core"
$env:PCS_CORE_REPO_PATH = "C:\path\to\PCS-Core"
$env:SCOPE_REPO_PATH = "C:\path\to\SCOPE"
$env:PCS_BENCH_REPO_PATH = "C:\path\to\PCS-Bench"
pytest tests/contracts/ -v -m integration
```

## Live SCOPE verification (v0.7)

After configuring a SCOPE sibling:

```bash
export SCOPE_REPO_PATH=/path/to/SCOPE
python scripts/verify_scope_live_chain.py --mode python-import

export SCOPE_CLI=scope
python scripts/verify_scope_live_chain.py --mode cli

export SCOPE_CLI_MODE=akta-review
python scripts/verify_scope_live_chain.py --mode akta-review
```

The verifier fails when the adapter falls back to `simulated` mode or when PCS export accepts an overbroad grant. See [docs/scope_live_conformance.md](../docs/scope_live_conformance.md).

## Job behavior

### `cross-repo-pf-pcs`
## Release-gate jobs

Runs when `PF_CORE_REPO_PATH` or `PCS_CORE_REPO_PATH` is non-empty. Exports AKTA artifacts and validates against sibling PF-Core / PCS-Core validators via `tests/contracts/cross_repo_helpers.py`.
| Job | Runs on PR | Purpose |
|-----|------------|---------|
| `scope-live-gate` | Yes | Live SCOPE (python-import mandatory), pilot bundle, strict contract |
| `sibling-live-matrix` | Yes | PF runtime proof, PCS ingest, PCS-Bench harness, VSA, Memory |
| `eval-bench-v1` | Yes | Oracle-independent, holdout, adversarial, behavioral, gate-derived metrics |

### `cross-repo-scope`

Runs when `SCOPE_REPO_PATH` is set or `SCOPE_REPO_URL` secret is present. Clones SCOPE when only the secret is configured, then runs SCOPE python-import contract tests and optional live chain verification.

### `cross-repo-pcs-bench`
## External PCS-Bench integration

Runs when `PCS_BENCH_REPO_PATH` is set. Invokes external PCS-Bench runner when available; contract tests verify in-repo fallback when the path is unset.
When `PCS_BENCH_REPO_PATH` is set, `adapters.pcs_bench.external_harness.run_external_harness()` shells to the sibling PCS-Bench CLI or falls back to `adapters.pcs_bench.runner.run_pcs_bench_suite()`.

## External PCS-Bench integration
## Fail-closed defaults

When `PCS_BENCH_REPO_PATH` points to a sibling checkout, `adapters/pcs_bench/runner.run_pcs_bench_suite()` attempts, in order:
- SCOPE live gate never skips all verification steps on PRs (public clone URL fallback).
- Sibling steps fail when repository `*_REPO_PATH` variables are set but paths are missing.
- Invalid sibling paths for PCS-Bench fall back to in-repo runner only when the variable is unset.

1. Python import: `pcs_bench.runners.akta.run_akta_suite`
2. CLI script: `scripts/run_akta_suite.py`
3. In-repo `AKTABenchScenario` runner (default)
## Branch protection (required checks)

## Fail-closed defaults
Configure on `main`:

- Jobs are skipped when variables are unset; default CI remains green without siblings.
- Invalid `PCS_BENCH_REPO_PATH` values fall back to the in-repo runner rather than silently passing external validation.
- SCOPE python-import and CLI modes do not fall back to simulated grants when `SCOPE_REPO_PATH` or `SCOPE_CLI` is set.
- `CI` (`.github/workflows/ci.yml`) — `make ci`
- `Release Gate / scope-live-gate`
- `Release Gate / eval-bench-v1`

## Release acceptance
Optional but recommended when sibling secrets are configured:

Default release gate: `make ci` (see [docs/RELEASE.md](../docs/RELEASE.md)). Cross-repo jobs are optional enhancements, not required for public release.
- `Release Gate / sibling-live-matrix`

See also [tests/contracts/README.md](../tests/contracts/README.md).
See [docs/RELEASE.md](../docs/RELEASE.md).
65 changes: 65 additions & 0 deletions .github/actions/clone-siblings/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
name: Clone AKTA sibling repositories
description: >-
Clone trust-stack sibling repos when clone URLs or secrets are set.
Exports SCOPE_REPO_PATH, PF_CORE_REPO_PATH, PCS_CORE_REPO_PATH,
PCS_BENCH_REPO_PATH, VSA_REPO_PATH, and MEMORY_REPO_PATH to GITHUB_ENV.
inputs:
workspace:
description: GitHub workspace directory
required: true
scope_repo_url:
description: SCOPE clone URL (secret or public default)
required: false
default: https://github.com/fraware/SCOPE.git
pf_core_repo_url:
description: PF-Core clone URL
required: false
default: ""
pcs_core_repo_url:
description: PCS-Core clone URL
required: false
default: ""
pcs_bench_repo_url:
description: PCS-Bench clone URL
required: false
default: ""
vsa_repo_url:
description: VSA clone URL
required: false
default: ""
memory_repo_url:
description: Scientific Memory clone URL
required: false
default: ""
runs:
using: composite
steps:
- name: Clone sibling repositories
shell: bash
run: |
set -euo pipefail
WS="${{ inputs.workspace }}"

clone_repo() {
local name="$1"
local url="$2"
local env_var="$3"
if [ -z "$url" ]; then
return 0
fi
local dest="$WS/${name}-sibling"
echo "Cloning ${name} from ${url} -> ${dest}"
git clone --depth 1 "$url" "$dest"
echo "${env_var}=${dest}" >> "$GITHUB_ENV"
}

SCOPE_URL="${{ inputs.scope_repo_url }}"
if [ -z "$SCOPE_URL" ]; then
SCOPE_URL="https://github.com/fraware/SCOPE.git"
fi
clone_repo "scope" "$SCOPE_URL" "SCOPE_REPO_PATH"
clone_repo "pf-core" "${{ inputs.pf_core_repo_url }}" "PF_CORE_REPO_PATH"
clone_repo "pcs-core" "${{ inputs.pcs_core_repo_url }}" "PCS_CORE_REPO_PATH"
clone_repo "pcs-bench" "${{ inputs.pcs_bench_repo_url }}" "PCS_BENCH_REPO_PATH"
clone_repo "vsa" "${{ inputs.vsa_repo_url }}" "VSA_REPO_PATH"
clone_repo "memory" "${{ inputs.memory_repo_url }}" "MEMORY_REPO_PATH"
Loading