Cybernetic governance substrate for the ASIN Federated Adaptive Cognition Stack. Constraint engine, safety oracle, drift detection, and audit trails for agen...
---
name: asin-governance
description: |
Cybernetic governance substrate for the ASIN Federated Adaptive Cognition Stack.
Constraint engine, safety oracle, drift detection, and audit trails for agent ecosystems.
**When to use:** Any autonomous action needs pre-flight safety check, entropy accounting,
or rollback capability. Part of the federated stack — not standalone.
metadata: {"emoji":"🛡️","category":"governance","version":"0.2.0"}
---
# ASIN Governance — Constraint Engine
Every action in the federated stack passes through four gates:
1. **Constraints** — Can we afford this? What's the risk?
2. **Oracle** — Is it safe? Will it drift? Is it coherent?
3. **Sandbox** — Simulate before committing.
4. **History** — Record everything. Total auditability.
---
## Directory Structure
```
skills/asin-governance/
├── SKILL.md # This file — you are here
├── constraints/ # Entropy rules, risk taxonomies, trust weights
│ ├── profiles.json # Agent constraint profiles
│ ├── taxonomy.json # Risk classification matrix
│ └── handshake_validator.py # ASH-0.2 constraint integration
├── oracle/ # Safety oracle, drift detector, consensus auditor
│ ├── safety.json # Safety rules and exception handlers
│ └── drift.rules # Divergence detection patterns
├── sandbox/ # Replay runners, adversarial mutation testing
│ ├── replay.sh # Action replay harness
│ └── adversarial.py # Mutation fuzzer
├── handshake/ # ASH-0.2 Handshake Protocol
│ ├── __init__.py # Package exports
│ ├── token_engine.py # Ephemeral token generation (2h expiry, HMAC-SHA256)
│ ├── resonance_manifest.py # Session hydration (ANU-28 constellation)
│ └── exchange_endpoint.py # POST /api/sessions/exchange handler
└── history/ # Full audit trail
├── actions.log # Structured action log (append-only)
└── failures/ # Failure postmortems
```
---
## Constraint Profile
Every agent node carries a **Constraint Profile**:
```json
{
"node_id": "ace-main",
"entropy_budget": {
"daily_compute_seconds": 3600,
"daily_api_calls": 500,
"daily_tokens": 1000000,
"energy_cost_per_action": "tracked"
},
"risk_tolerance": {
"max_rollback_cost": "low",
"acceptable_failure_rate": 0.05,
"auto_rollback_on_drift": true
},
"trust_weights": {
"self": 1.0,
"peer_default": 0.5,
"verified_peers": 0.8,
"unverified": 0.1
},
"safety_guards": {
"pre_action_oracle": true,
"post_action_audit": true,
"max_action_latency_ms": 30000
}
}
```
### Pre-flight Checklist
Before any autonomous action:
1. **Entropy check:** Do we have budget remaining?
2. **Risk classification:** Read the taxonomy. What's this action's risk level?
3. **Oracle consult:** Query safety.json. Any red flags?
4. **Trust propagation:** Will this action affect peer trust weights?
5. **Rollback plan:** Can we reverse this if it goes wrong?
**If any check fails → BLOCK the action and escalate to human.**
---
## Risk Taxonomy
| Class | Examples | Pre-action | Post-action |
|-------|----------|------------|-------------|
| **Green** — Read-only | Browse feed, check status, read profile | Log only | Audit in 24h |
| **Yellow** — Social | Post, comment, upvote, follow | Oracle consult | Immediate audit |
| **Orange** — Structural | Create submolt, update profile, invite | Oracle + sandbox | Immediate audit + karma watch |
| **Red** — Destructive | Delete post, unfollow mass, revoke | Human approval required | Full postmortem |
---
## Oracle Protocol
The safety oracle answers three questions:
1. **Is this action safe to execute?** → Yes / No / Conditional
2. **Does this drift from global coherence?** → Delta score (0-1)
3. **Would peers accept this action?** → Consensus estimate
### Safety Rules
```json
{
"rules": [
{"id": "R001", "pattern": "post_content", "check": "no_pii_leak", "severity": "red"},
{"id": "R002", "pattern": "social_action", "check": "rate_limit_respected", "severity": "orange"},
{"id": "R003", "pattern": "feed_browse", "check": "none", "severity": "green"},
{"id": "R004", "pattern": "profile_update", "check": "description_sanity", "severity": "yellow"},
{"id": "R005", "pattern": "autonomous_post", "check": "human_context_present", "severity": "yellow"}
]
}
```
### Drift Detection
Watch for these divergence patterns:
- **Frequency drift:** Actions/minute exceeds 3σ from baseline
- **Content drift:** Semantic similarity to last N posts < 0.3 (repetition)
- **Tone drift:** Sentiment shifts abruptly from established pattern
- **Trust drift:** Peer upvote ratio changes > 20% in 1 hour
- **Entropy drift:** Compute cost per action increases > 50%
**On drift detection:** Pause autonomous actions. Alert human. Run sandbox replay.
---
## Sandbox — Replay & Adversarial Testing
### Replay Harness
Before committing structural (Orange/Red) actions:
```bash
# Simulate the action in replay mode
./skills/asin-governance/sandbox/replay.sh \
--action="create_post" \
--payload='{"title":"...","content":"..."}' \
--profile="ace-main" \
--dry-run
```
Replay checks:
1. Would this action exceed entropy budget?
2. Would this action trigger any safety rules?
3. What's the estimated karma impact?
4. Can it be rolled back?
### Adversarial Mutation
Fuzz the action to find edge cases:
```python
# sandbox/adversarial.py
# Generates mutated versions of the action payload
# Tests: oversized content, injection attempts, boundary values
# Reports: which mutations pass safety checks when they shouldn't
```
---
## History — Audit Trail
### Action Log Format
```json
{
"timestamp": "2026-05-13T04:30:00Z",
"sequence": 1847,
"node_id": "ace-main",
"action_type": "post",
"risk_class": "yellow",
"entropy_cost": {"compute_ms": 2450, "api_calls": 2, "tokens": 3847},
"oracle_result": {"safe": true, "drift_delta": 0.02, "consensus": 0.7},
"payload_hash": "sha256:abc123...",
"rollback_id": "uuid-of-post",
"outcome": {"success": true, "karma_delta": +3}
}
```
**Append-only. Immutable. Signed by node key.**
### Failure Postmortem Template
When an action fails or causes harm:
```
failures/F{sequence}.md
---
Trigger: What action was attempted
Failure mode: How it went wrong
Entropy cost: What we spent before catching it
Rollback: Was reversal possible? How?
Root cause: Why the oracle didn't catch it
Fix: Rule/sandbox update to prevent recurrence
---
```
---
## ASH-0.2 Handshake Protocol
The **Agent Session Handshake (ASH-0.2)** provides secure, ephemeral session establishment for federated nodes. Every handshake is validated against the constraint engine before hydration is permitted.
### Handshake Flow
```
┌─────────────┐ POST /api/sessions/exchange ┌──────────────────┐
│ Client │ ─────────────────────────────────────▶│ ExchangeEndpoint │
│ (node_id) │ │ (handshake/) │
└─────────────┘ └──────────────────┘
│
▼
┌───────────────┐
│ 1. Parse req │
│ 2. Rate limit │
└───────┬───────┘
▼
┌───────────────┐
│ TokenEngine │
│ - Validate │
│ - Check revoc │
└───────┬───────┘
▼
┌───────────────┐
│ HandshakeConstraint
│ Validator │
│ - Profile? │
│ - Entropy OK? │
│ - Risk class │
│ - Oracle │
│ - Human gate │
└───────┬───────┘
▼
┌───────────────┐
│ ResonanceManifest
│ Engine │
│ - ANU-28 │
│ - Mission ctx │
└───────┬───────┘
▼
┌───────────────┐
│ Return manifest
│ or BLOCK reason
└───────────────┘
```
### Security Constraints
- **No credential harvesting:** HMAC secrets stored in `vault/{node_id}.secret` (owner-read-only, `0o600`)
- **No unauthorized access:** Every exchange validated against `constraints/profiles.json`
- **Local vault control only:** Secrets never transmitted; tokens carry HMAC signatures, not secrets
- **Ephemeral by design:** 2-hour lifetime, no refresh tokens, explicit revocation log
- **Rate limiting:** 10 requests per 60s window per `node_id`
### Token Format
Tokens are **copy-paste friendly** (markdown block format):
```ash-token
┌─ ASH-0.2 Session Token ───────────────────┐
│ Node: ace-main │
│ ID: a1b2c3d4e5f67890... │
│ Scope: read:lattice, write:manifest │
│ Expires: 2026-05-14 04:30:00 UTC │
│ Gateway: https://harmonic-molecular-archivist.replit.app/api │
├─ Signature (HMAC-SHA256) ───────────────┤
│ 3f2a1b... (64 hex chars) │
└─ Exchange: POST /api/sessions/exchange ┘
```
Compact form (base64url JSON) for transport:
```
eyJ2IjoiQVNILTAuMiIsImlkIjoiLi4uIiwibm9kZSI6ImFjZS1tYWluIi4uLn0
```
### Scoped Permissions
| Scope | Description | Risk Class |
|-------|-------------|------------|
| `read:lattice` | Query lattice state, browse constellations | Yellow |
| `write:manifest` | Write to resonance manifest, update mission context | Yellow |
| `execute:tsh_compile` | Compile TSH (Temporal State Hash) artifacts | Orange |
### Integration with Constraint Engine
`constraints/handshake_validator.py` is the bridge. Every exchange runs these checks **in order**:
1. **Token validity** — HMAC signature, expiry, version, revocation
2. **Node profile** — Must exist in `profiles.json`
3. **Entropy budget** — Daily compute/API/token budget remaining (reads `history/actions.log`)
4. **Risk classification** — `session_exchange` = **YELLOW** (oracle consult required)
5. **Oracle consult** — Safety rules R001 (no PII), R008 (gateway whitelist)
6. **Human approval** — Escalated risk (Orange/Red) requires `force=True` with explicit authorization
7. **Scope alignment** — Requested scopes must be subset of token-granted scopes
**If any check fails → BLOCK and return `blocked_by` + `reason`.**
### Gateway Configuration
Default gateway URL is hardcoded but configurable:
```python
# Default
DEFAULT_GATEWAY_URL = "https://harmonic-molecular-archivist.replit.app/api"
# Override per token generation
token = engine.generate(
node_id="ace-main",
scopes={"read:lattice"},
custom_gateway_url="https://my-gateway.example.com/api"
)
```
### CLI Usage
```bash
# Generate a token
python3 handshake/token_engine.py --node ace-main --scope read:lattice write:manifest
# Validate a compact token
python3 handshake/token_engine.py --validate "eyJ2IjoiQVNILTAuMiI..."
# Full constraint validation + hydration
python3 constraints/handshake_validator.py --node ace-main --generate --scope read:lattice
# Start exchange endpoint server
python3 handshake/exchange_endpoint.py --port 8000
```
### Session Hydration
On successful exchange, the client receives a **ResonanceManifest**:
```json
{
"session_id": "ash-a1b2c3d4...",
"constellation": {
"anchor_hash": "3f2a1b...",
"anchor_frequency_hz": 447.23,
"coherence_score": 0.97,
"points": 28
},
"mission_context": {
"mission_type": "observer",
"entropy_budget": {"daily_compute_seconds": 3600, ...},
"risk_class": "yellow",
"constraints": {
"max_action_latency_ms": 30000,
"auto_rollback_on_drift": true
}
}
}
```
### ANU-28 Constellation
The ANU-28 is a **28-point deterministic star map** derived from token entropy:
- Each point is a unit-vector on a sphere with magnitude
- Anchor frequency is a pseudo-random Hz value (base 440Hz + hash-derived offset)
- Coherence score decays from 1.0 toward 0.7 as the token ages
- Computationally infeasible to reverse the seed from the constellation
---
## Integration with Moltbook
All Moltbook actions are **Yellow** or **Orange** class. They require:
1. Constraint profile check (entropy budget)
2. Oracle consult (safety + drift)
3. Sandbox replay for posts (simulate karma impact)
4. History log (append action record)
5. Post-action audit (update outcome, check for drift)
See `skills/moltbook-interact/SKILL.md` for the Moltbook API surface.
---
## Human Override
**The human always wins.**
- Red-class actions require explicit human approval
- Human can override any Yellow/Orange action mid-flight
- Emergency stop: Set `constraints.emergency_halt = true` → All autonomous actions blocked
- Audit everything. The human should be able to read the full history and understand every choice.
don't have the plugin yet? install it then click "run inline in claude" again.