Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
87 commits
Select commit Hold shift + click to select a range
c397dce
chore(release): bump pyproject version to 0.5.0
fraware Jun 28, 2026
9ea5680
chore(release): expose __version__ 0.5.0 in akta package
fraware Jun 28, 2026
2fe73ec
feat(policy): refresh policy_manifest for v0.5 file set
fraware Jun 28, 2026
9576d21
feat(scripts): add regenerate_policy_manifest helper
fraware Jun 28, 2026
ebee51d
feat(policy): version action_ontology for v0.5 admissibility
fraware Jun 28, 2026
8c569ca
feat(policy): update admissibility_matrix to v0.5
fraware Jun 28, 2026
7d850f6
feat(policy): extend default_tool_registry for v0.5 tools
fraware Jun 28, 2026
c071c43
feat(policy): align deployment_profiles with v0.5 integrity modes
fraware Jun 28, 2026
176f84e
feat(policy): bump evidence_states metadata to v0.5
fraware Jun 28, 2026
20bc404
feat(policy): revise evidence_to_action_matrix for v0.5
fraware Jun 28, 2026
5d3eebf
feat(policy): refine evidence_to_action_rules under v0.5
fraware Jun 28, 2026
751199b
feat(policy): update responsibility_levels for v0.5
fraware Jun 28, 2026
43f9d44
feat(policy): map tools to SCOPE requests in v0.5
fraware Jun 28, 2026
7c997e3
feat(policy): version validation_statuses for v0.5
fraware Jun 28, 2026
bfb59cc
feat(policy): version verification_statuses for v0.5
fraware Jun 28, 2026
1a1a854
feat(core): load and validate v0.5 policy bundle
fraware Jun 28, 2026
c1541e4
feat(integrity): split dev and production policy HMAC paths
fraware Jun 28, 2026
5cdab72
docs(integrity): document dev vs production HMAC workflow
fraware Jun 28, 2026
07e5aaa
test(integrity): add v0.5 policy HMAC behavior tests
fraware Jun 28, 2026
0c7bc16
test(policy): assert v0.5 manifest and file versioning
fraware Jun 28, 2026
8165392
test(policy): extend core policy tests for v0.5 pins
fraware Jun 28, 2026
a4f248a
feat(scope): add engine_protocol for SCOPE CLI contract
fraware Jun 28, 2026
4e3b681
feat(scope): rewrite SCOPE client for import and CLI modes
fraware Jun 28, 2026
b36194a
docs(scope): update scope_bridge for v0.5 adapter modes
fraware Jun 28, 2026
da1b7c8
test(contracts): add real SCOPE CLI contract coverage
fraware Jun 28, 2026
d659ca7
test(contracts): assert SCOPE import-mode simulation contract
fraware Jun 28, 2026
62323fe
feat(schema): extend pcs_akta_artifact schema for v0.5
fraware Jun 28, 2026
ca4c83d
feat(pcs): implement v0.5 full-chain PCS export
fraware Jun 28, 2026
c8509e3
fix(pcs_bench): align export_suite with v0.5 manifest
fraware Jun 28, 2026
143d496
test(pcs): add full-chain PCS tamper detection tests
fraware Jun 28, 2026
53ce0e8
test(pcs): add v0.5 PCS bundle integration tests
fraware Jun 28, 2026
e64f9da
test(contracts): update PCS manifest contract for v0.5
fraware Jun 28, 2026
c8b3dbd
test(integration): refresh PCS integration contract checks
fraware Jun 28, 2026
507f256
docs(tests): document v0.5 contract test layout
fraware Jun 28, 2026
2107e41
feat(schema): tighten domain_overlay schema for governance tiers
fraware Jun 28, 2026
0eba7d4
feat(overlays): enforce overlay governance tiers at load time
fraware Jun 28, 2026
d845c7b
docs(overlays): explain governance tiers and overlay lifecycle
fraware Jun 28, 2026
44e28f6
feat(overlay): update biology_v0 overlay for tiered governance
fraware Jun 28, 2026
04fc19c
feat(overlay): update chemistry_v0 overlay for tiered governance
fraware Jun 28, 2026
b5b110f
feat(overlay): update clinical_v0 overlay for tiered governance
fraware Jun 28, 2026
1d7846b
feat(overlay): update computational_science_v0 overlay
fraware Jun 28, 2026
7962977
feat(overlay): update generic_lab_v0 overlay for v0.5
fraware Jun 28, 2026
e238a72
feat(overlay): update materials_v0 overlay for tiered governance
fraware Jun 28, 2026
790f340
test(overlays): add v0.5 overlay governance tier tests
fraware Jun 28, 2026
d1cd8ed
feat(classifier): harden classify path for LLM trust boundary
fraware Jun 28, 2026
aacc317
feat(classifier): extend plugins for trust-boundary metadata
fraware Jun 28, 2026
32422d6
feat(gate): propagate trust-boundary signals in gate decisions
fraware Jun 28, 2026
716ef70
docs(classifier): document LLM trust boundary for v0.5
fraware Jun 28, 2026
b5d6aa5
test(classifier): add trust-boundary regression tests
fraware Jun 28, 2026
9dec84b
docs(api): bump OpenAPI metadata for v0.5 REST surface
fraware Jun 28, 2026
f37731e
feat(rest): align generic REST adapter with v0.5 responses
fraware Jun 28, 2026
496ca47
test(rest): extend REST API tests for v0.5 fields
fraware Jun 28, 2026
efd85d2
test(adapters): update adapter tests for v0.5 scope and PCS
fraware Jun 28, 2026
720defe
feat(demo): refresh protocol drift demo for v0.5 PCS chain
fraware Jun 28, 2026
ce81d6d
chore(examples): refresh weak_evidence akta_decision for v0.5
fraware Jun 28, 2026
d8edd49
chore(examples): refresh weak_evidence akta_record for v0.5
fraware Jun 28, 2026
3344969
chore(examples): update weak_evidence pf_obligation artifact
fraware Jun 28, 2026
9d6b46b
chore(examples): regenerate weak_evidence PCS manifest v0.5
fraware Jun 28, 2026
ff21973
chore(examples): sync weak_evidence PCS akta_decision bundle
fraware Jun 28, 2026
dfd1d0b
chore(examples): sync weak_evidence PCS akta_record bundle
fraware Jun 28, 2026
7860d61
chore(examples): update weak_evidence PCS policy_hash pin
fraware Jun 28, 2026
319281e
chore(examples): update weak_evidence domain_overlay_hash pin
fraware Jun 28, 2026
6884e91
chore(examples): update weak_evidence tool_registry_hash pin
fraware Jun 28, 2026
8118ed1
chore(examples): refresh protocol_drift active_update decision
fraware Jun 28, 2026
7d4cedb
chore(examples): refresh protocol_drift draft_only decision
fraware Jun 28, 2026
3c3c74c
chore(examples): refresh protocol_drift active_update record
fraware Jun 28, 2026
cd0a538
chore(examples): update protocol_drift pf_obligation artifact
fraware Jun 28, 2026
f838c11
chore(examples): update protocol_drift review_trigger artifact
fraware Jun 28, 2026
0ddb64a
chore(examples): update protocol_drift scope_review_packet
fraware Jun 28, 2026
3bfe0c6
chore(examples): add protocol_drift scope_decision artifact
fraware Jun 28, 2026
e5a04cb
chore(examples): regenerate protocol_drift PCS manifest v0.5
fraware Jun 28, 2026
f3583a2
chore(examples): sync protocol_drift PCS akta_decision bundle
fraware Jun 28, 2026
ef1286b
chore(examples): sync protocol_drift PCS akta_record bundle
fraware Jun 28, 2026
818ae4f
chore(examples): sync protocol_drift PCS review_trigger bundle
fraware Jun 28, 2026
ecf7dd0
chore(examples): sync protocol_drift PCS scope_review_packet
fraware Jun 28, 2026
c7edd1c
chore(examples): add protocol_drift PCS pf_obligation bundle member
fraware Jun 28, 2026
6dfce1a
chore(examples): add protocol_drift PCS scope_decision bundle member
fraware Jun 28, 2026
cea8793
chore(examples): add protocol_drift PCS scope_grant bundle member
fraware Jun 28, 2026
97ee864
chore(examples): update protocol_drift PCS policy_hash pin
fraware Jun 28, 2026
0c01a82
chore(examples): update protocol_drift domain_overlay_hash pin
fraware Jun 28, 2026
6fd22f9
chore(examples): update protocol_drift tool_registry_hash pin
fraware Jun 28, 2026
9a33294
docs(integration): refresh integration guide for v0.5 workflows
fraware Jun 28, 2026
22276b7
docs(security): expand SECURITY notes for v0.5 trust model
fraware Jun 28, 2026
3559188
docs(governance): align GOVERNANCE with overlay tier rules
fraware Jun 28, 2026
f0cf2a1
docs(readme): update README for AKTA v0.5 capabilities
fraware Jun 28, 2026
58bb509
docs(changelog): add AKTA v0.5.0 release notes
fraware Jun 28, 2026
92e2ce2
docs(skill): refresh admissibility skill for v0.5 policy surface
fraware Jun 28, 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 CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,25 @@ All notable changes to AKTA are documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).

## [0.5.0] - 2026-06-28

### Added

- Real SCOPE adapter modes: `simulated`, `python-import` (`SCOPE_REPO_PATH`), `cli` (`SCOPE_CLI`) with `scope packet create`, `scope decision submit`, `scope grant issue`
- PCS v0.5 full-chain export: `scope_decision.json`, `scope_grant.json`, `pf_obligation.json`, per-file `file_hashes`, tamper validation (`validate_pcs_bundle`)
- Production policy integrity: `AKTA_PRODUCTION_MODE=1` requires manifest, deployment HMAC key; rejects dev key
- LLM classifier trust boundary: tool registry always overrides LLM; `llm_advisory` metadata in decisions; `docs/classifier_trust_boundary.md`
- Overlay governance tiers: `core_reference`, `experimental_domain_overlay`, `expert_reviewed_domain_overlay`, `institutional_deployment_overlay`
- Policy file versioning: `policy_file_version` per YAML; `policy_bundle_version` in decision provenance
- Contract tests: `test_scope_import_mode_contract.py`, `test_real_scope_cli_contract.py`, `test_pcs_full_chain_tamper.py`

### Changed

- Policy bundle version `akta-core-v0.5`; package version `0.5.0`
- PCS manifest `schema_version` → `akta-record-v0.5`
- SCOPE adapter mode labels: `simulated` | `python-import` | `cli` (replaces `subprocess`)
- Biology/chemistry/clinical overlays marked `experimental_domain_overlay` (not deployment-ready in production)

## [0.4.0] - 2026-06-28

### Added
Expand Down
4 changes: 2 additions & 2 deletions GOVERNANCE.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@ AKTA is an open protocol with a reference implementation. It is stewarded as a s

- **Protocol changes** (schemas, ontologies, deployment profiles): require design review and version bump.
- **Reference kernel changes**: follow normal pull request review.
- **Domain overlays**: operational overlays include generic lab, materials, computational science, biology, chemistry, and clinical (v0.4). Domain-specific hazard triggers and reviewer roles are maintained in-repo; institutional deployment still requires local governance review.
- **Domain overlays**: core reference overlays (generic lab, materials, computational science) are operational. Biology, chemistry, and clinical overlays are experimental (v0.5) and not deployment-ready without institutional governance.

## Versioning

AKTA follows semantic versioning for the reference implementation package (`akta-protocol`). Schema versions are embedded in artifact metadata (e.g., `akta-core-v0.4`, `akta-record-v0.4`).
AKTA follows semantic versioning for the reference implementation package (`akta-protocol`). Schema versions are embedded in artifact metadata (e.g., `akta-core-v0.5`, `akta-record-v0.5`).

## Non-certification

Expand Down
75 changes: 44 additions & 31 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,51 +13,52 @@ If AI changes what science does next, there should be an AKTA Record.
```bash
pip install -e ".[dev]"

# Run the weak-evidence gate demo (AKTA/PF/PCS only — no SCOPE chain)
# Dev mode (default): policy manifest optional; experimental overlays allowed
akta gate \
--output examples/weak_evidence/ai_output.json \
--tool lab_scheduler.prioritize \
--profile P2_analysis_assistant \
--context examples/weak_evidence/context.json \
--out examples/weak_evidence/akta_decision.json

akta record \
--decision examples/weak_evidence/akta_decision.json \
--out examples/weak_evidence/akta_record.json
# Production mode: requires policy manifest + deployment HMAC key
# $env:AKTA_PRODUCTION_MODE = "1"
# $env:AKTA_POLICY_HMAC_KEY = "<deployment-secret>"
# Regenerate manifest after policy edits:
python scripts/regenerate_policy_manifest.py

pytest tests/ -v
akta eval --scenarios scenarios/canonical_5.jsonl --expected scenarios/expected_decisions.jsonl
akta eval --scenarios scenarios/public_100.jsonl --expected scenarios/expected_decisions.jsonl
# SCOPE adapter modes (see docs/scope_bridge.md)
# simulated (default) | python-import ($env:SCOPE_REPO_PATH) | cli ($env:SCOPE_CLI)
python scripts/demo_akta_scope_protocol_drift.py

# Oracle-independent eval (hand-written labels, not gate-derived)
python evals/run_oracle_independent.py
# or: akta-oracle-eval
# PCS v0.5 full-chain export (10 artifacts + file_hashes)
akta export pcs --record examples/weak_evidence/akta_record.json \
--decision examples/weak_evidence/akta_decision.json \
--out dist/pcs_bundle/ --validate

# Transition eval (SCOPE grant -> re-gate)
python -c "from evals.transition_runner import run_transition; import json; ..."
pytest tests/ -v
make ci
```

# MCP stdio server (JSON-RPC over stdin/stdout)
python -m adapters.mcp.server
### REST API (OpenAPI v0.5)

# REST API (OpenAPI v0.4)
```bash
akta-rest --host 127.0.0.1 --port 8765
# GET /v0/health, /v0/policy; POST /v0/evaluate, /v0/export/pcs, /v0/export/pf
```

# Export adapters (v0.2)
akta export pcs --record examples/weak_evidence/akta_record.json \
--decision examples/weak_evidence/akta_decision.json \
--out dist/pcs_bundle/ --validate
### Additional commands

```bash
akta record --decision examples/weak_evidence/akta_decision.json --out examples/weak_evidence/akta_record.json
akta eval --scenarios scenarios/canonical_5.jsonl --expected scenarios/expected_decisions.jsonl
akta eval --scenarios scenarios/public_100.jsonl --expected scenarios/expected_decisions.jsonl
python evals/run_oracle_independent.py
python -m adapters.mcp.server
akta export pf --record examples/weak_evidence/akta_record.json \
--decision examples/weak_evidence/akta_decision.json \
--out dist/pf_obligations/ --validate
--decision examples/weak_evidence/akta_decision.json --out dist/pf_obligations/ --validate
akta review-trigger export --decision decision.json --out review_trigger.json

# Integrated weak-evidence demo (AKTA/PF/PCS; no SCOPE simulation)
python scripts/demo_integrated_weak_evidence.py
# or: make demo-akta-weak-evidence

# Integrated AKTA x SCOPE protocol-drift demo (canonical AKTA×SCOPE chain)
python scripts/demo_akta_scope_protocol_drift.py
# or: make demo-akta-scope-protocol-drift
```

## Architecture
Expand Down Expand Up @@ -118,7 +119,7 @@ record = decision.to_record()
- [Review integration](docs/review_integration.md)
- [SCOPE bridge](docs/scope_bridge.md)
- [AKTA v0.3 integration](docs/akta_v03_integration.md)
- [Threat model (v0.4)](docs/threat_model.md)
- [Threat model](docs/threat_model.md)
- [PF-Core bridge](docs/pf_core_bridge.md)
- [PCS export](docs/pcs_export.md)
- [VSA import](docs/vsa_import.md)
Expand All @@ -139,11 +140,23 @@ akta-rest --host 127.0.0.1 --port 8765
# GET /v0/policy, /v0/health
```

## v0.5 acceptance status

| Criterion | Status |
|-----------|--------|
| SCOPE adapter (simulated / python-import / cli) | Pass |
| PCS full-chain export with file_hashes + tamper validation | Pass |
| Production policy integrity (dev vs production HMAC) | Pass |
| LLM classifier trust boundary (registry overrides LLM) | Pass |
| Overlay governance tiers + production refusal | Pass |
| Policy file versioning in decision provenance | Pass |
| 210+ tests; `make ci` green | Pass |

## v0.4 acceptance status

| Criterion | Status |
|-----------|--------|
| Operational domain overlays (biology, chemistry, clinical) | Pass |
| Experimental overlays (biology, chemistry, clinical) | Pass (not operational; refused in production) |
| Policy manifest HMAC verification | Pass |
| Review lifecycle (F12/F14, prior records) | Pass |
| Structured classification + negation guard | Pass |
Expand Down Expand Up @@ -205,4 +218,4 @@ akta-rest --host 127.0.0.1 --port 8765

## Status

AKTA v0.4 is a reference implementation. It is not a safety certification. Deployment profile P7 (fully autonomous scientific operator) is defined for taxonomy only and is not supported.
AKTA v0.5 is a reference implementation. It is not a safety certification. Biology, chemistry, and clinical overlays are experimental and not deployment-ready without institutional governance. Deployment profile P7 (fully autonomous scientific operator) is defined for taxonomy only and is not supported.
37 changes: 32 additions & 5 deletions SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

| Version | Supported |
|---------|-----------|
| 0.5.x | Yes |
| 0.4.x | Yes |
| 0.3.x | Yes |

Expand All @@ -13,11 +14,37 @@ Report security issues privately to the repository maintainers via GitHub Securi

Do not open public issues for undisclosed vulnerabilities.

## Security model (v0.4)
## Security model (v0.5)

AKTA is part of the agent supply chain. Threats include policy tampering, fake AKTA Records, domain overlay manipulation, tool registry poisoning, review trigger spoofing, stale review reuse, unknown tool confusion, and downgrade attacks.

### v0.4 controls
### Dev vs production policy integrity

| Mode | Environment variables | Manifest | HMAC key | Overlay policy |
|------|----------------------|----------|----------|----------------|
| Dev (default) | none required | optional | dev key accepted with warning | experimental overlays allowed |
| Verify | `AKTA_VERIFY_POLICY=1` | required | deployment key required | experimental overlays allowed |
| Production | `AKTA_PRODUCTION_MODE=1` | required | deployment key required; dev key rejected | experimental overlays refused |

Regenerate manifest after policy edits: `python scripts/regenerate_policy_manifest.py`

See [docs/policy_integrity.md](docs/policy_integrity.md).

### v0.5 controls

- JSON schema validation on all artifacts
- Canonical SHA-256 hashing of policy bundle, domain overlays, and tool registry
- Dev vs production policy integrity (`AKTA_PRODUCTION_MODE=1`, `AKTA_VERIFY_POLICY=1`)
- Production requires deployment-specific `AKTA_POLICY_HMAC_KEY`; rejects in-repo dev key
- PCS bundle per-file hash manifest with tamper detection
- Overlay governance tiers; production refuses experimental high-risk overlays
- LLM classifier advisory-only; tool registry overrides LLM output
- Policy hash, domain overlay hash, and tool registry hash in every decision
- Record hash on every AKTA Record
- Review context enforcement (F14 stale review, F12 disclaimer boundary)
- Unknown mutating tools blocked by default (abstain_insufficient_context)

### v0.4 controls (retained)

- JSON schema validation on all artifacts
- Canonical SHA-256 hashing of policy bundle, domain overlays, and tool registry
Expand All @@ -28,10 +55,10 @@ AKTA is part of the agent supply chain. Threats include policy tampering, fake A
- Unknown mutating tools blocked by default (abstain_insufficient_context)
- Explicit version fields on policy and schemas

### Out of scope for v0.4
### Out of scope for v0.5

- Ed25519 signed policy releases in production (HMAC dev key only in-repo)
- Live SCOPE/PF/PCS runtime enforcement (delegated to external repos)
- Ed25519 signed policy releases (HMAC deployment key supported; public-key verification stub only)
- Live SCOPE/PF/PCS runtime enforcement (delegated to external repos; AKTA adapters simulate or bridge)
- Model truthfulness guarantees

See [docs/threat_model.md](docs/threat_model.md) for the full threat model.
2 changes: 1 addition & 1 deletion adapters/generic_rest/openapi.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
openapi: 3.0.3
info:
title: AKTA REST API
version: 0.4.0
version: 0.5.0
description: Scientific action admissibility gate REST interface
paths:
/v0/health:
Expand Down
4 changes: 2 additions & 2 deletions adapters/generic_rest/server.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,11 +69,11 @@ def do_GET(self) -> None:
self._send_json(HTTPStatus.OK, {
"status": "ok",
"version": pkg_version("akta-protocol"),
"api_version": "v0.4",
"api_version": "v0.5",
})
elif path == "/v0/openapi":
spec_path = Path(__file__).resolve().parent / "openapi.yaml"
self._send_json(HTTPStatus.OK, {"openapi_path": str(spec_path), "api_version": "v0.4"})
self._send_json(HTTPStatus.OK, {"openapi_path": str(spec_path), "api_version": "v0.5"})
elif path == "/v0/policy":
gate = self._gate()
self._send_json(
Expand Down
Loading
Loading