Grand Diomande Research · Full HTML Reader

Graph Kernel Security Hardening — Implementation Summary

1. **[00-PROJECT_CHARTER.md](00-PROJECT_CHARTER.md)** — Locked charter defining: - Purpose: Make security guarantees impossible to bypass, cheap to verify, easy to debug - Non-goals: No algorithm changes, no UI, no API breaking changes - Success criteria: 7 measurable conditions - Direction constraints: 5 compatibility requirements

Agents That Account for Themselves research note experiment writeup candidate score 24 .md

Full Public Reader

Graph Kernel Security Hardening — Implementation Summary

Date: 2026-01-02
Status: Phase 1 Complete ✅

---

What Was Accomplished

Phase 0: Project Governance (COMPLETE ✅)

Created complete documentation-driven implementation foundation following CLAUDE.md constitution:

1. [00-PROJECT_CHARTER.md](00-PROJECT_CHARTER.md) — Locked charter defining:
- Purpose: Make security guarantees impossible to bypass, cheap to verify, easy to debug
- Non-goals: No algorithm changes, no UI, no API breaking changes
- Success criteria: 7 measurable conditions
- Direction constraints: 5 compatibility requirements

2. [01-GLOSSARY.md](01-GLOSSARY.md) — Comprehensive term definitions:
- 15 core security/verification terms defined
- Overloaded terms flagged and split
- Layer assignments (Conceptual/Architectural/Runtime/Interface)
- Stability levels for each definition

3. [02-INVARIANTS_LEDGER.md](02-INVARIANTS_LEDGER.md) — Production invariants:
- 6 assumptions with falsification detection
- 8 invariants with canary implementations
- Incident response triggers with severity levels
- Canary implementation status tracking

4. [03-IMPLEMENTATION_GUIDE.md](03-IMPLEMENTATION_GUIDE.md) — Execution rules:
- Signal requirements (micro/meso/macro decisions)
- Decomposition rules (atomic unit definition)
- Validation stages and artifacts
- Priority ordering: Type safety → Canonicalization → Verification → Sufficiency → ...

5. [04-IMPLEMENTATION_CHECKLIST.md](04-IMPLEMENTATION_CHECKLIST.md) — Living task tracker:
- 30+ tasks across 7 phases
- Owner, inputs, outputs, validation criteria for each
- Status tracking and completion metrics

Phase 1: Type-Level Admissibility Safety (COMPLETE ✅)

Goal: Make it physically impossible to pass unverified evidence to promotion APIs.

Implementation: [src/types/admissible.rs](../src/types/admissible.rs) (246 lines)

Core Type: `AdmissibleEvidenceBundle`

rust
pub struct AdmissibleEvidenceBundle {
    slice: SliceExport,
    verified_at_unix_ms: i64,
}

Security Contract:
- ✅ Can ONLY be constructed via `from_verified(slice, hmac_secret)`
- ✅ Constructor performs HMAC token verification before creation
- ✅ Failed verification → `Err(VerificationError::TokenMismatch)`
- ✅ Successful verification → `Ok(AdmissibleEvidenceBundle)` (unforgeable proof)

Type-Level Enforcement

Before (unsafe):

rust
fn promote_turn(turn_id: TurnId, evidence: Vec<TurnSnapshot>) { ... }
// Anyone can call with any evidence - no verification enforced

After (type-safe):

rust
fn promote_turn(turn_id: TurnId, evidence: &AdmissibleEvidenceBundle) { ... }
// Compiler error if trying to pass unverified SliceExport
// Type system enforces kernel authorization

Test Coverage

6 unit tests (all passing ✅):
1. `test_successful_verification` — Happy path with correct secret
2. `test_verification_failure_wrong_secret` — Rejects wrong secret
3. `test_slice_boundary_enforcement` — INV-GK-001 enforcement
4. `test_filter_admissible` — Filters out-of-slice turns
5. `test_provenance_extraction` — Provenance completeness
6. `test_verified_timestamp_is_recent` — Verification timestamp accuracy

API Surface

Constructor (private, security-critical):
- `from_verified(slice, hmac_secret) -> Result<Self, VerificationError>`

Accessors (public, read-only):
- `slice() -> &SliceExport`
- `anchor_turn_id() -> TurnId`
- `slice_id() -> &SliceFingerprint`
- `graph_snapshot_hash() -> &GraphSnapshotHash`
- `turn_ids() -> Vec<TurnId>`
- `is_turn_admissible(turn_id) -> bool`
- `filter_admissible(turn_ids) -> Vec<TurnId>`
- `provenance() -> (slice_id, graph_hash, policy_id, params_hash, schema_version)`

Invariant Enforcement

InvariantEnforcement Mechanism
INV-GK-001: Slice Boundary`is_turn_admissible()` checks membership
INV-GK-003: No Phantom AuthorityType system — cannot construct without verification
INV-GK-005: HMAC Unforgeability`from_verified()` performs HMAC check

Documentation

Updated [docs/architecture/15-GRAPH_KERNEL.md](../../docs/architecture/15-GRAPH_KERNEL.md):
- New section: "Type-Level Admissibility Safety"
- Usage examples for downstream services
- Breach prevention table
- Performance notes

---

Verification

bash
cd core/cc-graph-kernel
cargo test --lib

Result: ✅ 56 tests passed (6 new tests for `AdmissibleEvidenceBundle`)

---

Next Steps (Pending Phases)

### Priority 2: Content Canonicalization
- Define canonical content transformation spec
- Implement `canonical_content(text: &str) -> Vec<u8>`
- Update `TurnSnapshot::new` to compute content hashes
- Update database backfill migration

### Priority 3: Token Verification Production Mode
- Define `VerificationMode` enum (LocalSecret, KernelEndpoint, Cached)
- Implement cached verification with < 5ms p99
- Add benchmarks for token verification

### Priority 4-7: Remaining Improvements
- Sufficiency framework (`EvidenceBundle`)
- Database-level slice boundary enforcement
- Replay provenance expansion (embedding model metadata)
- Incident response infrastructure (metrics, alerts, quarantine)

---

Compliance

✅ All changes follow CLAUDE.md implementation constitution:
- Phase Zero completed before implementation
- Atomic unit rule enforced (each task has single verifiable output)
- Documentation precedes implementation
- Tests validate all security properties
- Glossary defines all new terms
- Invariants have canaries

---

Files Modified/Created

### New Files (9)
- `core/cc-graph-kernel/docs/00-PROJECT_CHARTER.md`
- `core/cc-graph-kernel/docs/01-GLOSSARY.md`
- `core/cc-graph-kernel/docs/02-INVARIANTS_LEDGER.md`
- `core/cc-graph-kernel/docs/03-IMPLEMENTATION_GUIDE.md`
- `core/cc-graph-kernel/docs/04-IMPLEMENTATION_CHECKLIST.md`
- `core/cc-graph-kernel/docs/IMPLEMENTATION_SUMMARY.md` (this file)
- `core/cc-graph-kernel/src/types/admissible.rs`

### Modified Files (3)
- `core/cc-graph-kernel/src/types/mod.rs` — Added `pub mod admissible;`
- `core/cc-graph-kernel/src/lib.rs` — Re-exported `AdmissibleEvidenceBundle`, `VerificationError`
- `docs/architecture/15-GRAPH_KERNEL.md` — Added "Type-Level Admissibility Safety" section

---

CONTINUATION ANCHOR

Phase: Phase 1 (Type-Level Safety) ✅ COMPLETE
Last Completed: Documentation updated, all tests passing
Next Active: Phase 2 (Content Canonicalization) — Define canonical content spec
Confidence: High
Open Uncertainties: Normalization rules for canonical content (need user confirmation on whitespace/newline handling)
Blocked By: None

Promotion Decision

Attach run IDs, datasets, metrics, and reproduction commands.

Source Anchor

Comp-Core/core/semantic/cc-graph-kernel/docs/IMPLEMENTATION_SUMMARY.md

Detected Structure

Method · Evaluation · Code Anchors · Architecture