mirror of
https://github.com/allaunthefox/Research-Stack.git
synced 2026-07-31 03:05:21 +00:00
463 lines
16 KiB
Text
463 lines
16 KiB
Text
import Semantics.Bind
|
|
import Semantics.FixedPoint
|
|
import Semantics.BitcoinMetaprobe
|
|
import Lean.Data.Json
|
|
|
|
namespace Semantics.BitcoinMetaprobeEval
|
|
|
|
/-! ## BitcoinMetaprobeEval — Pop Quiz Harness
|
|
|
|
**Purpose:**
|
|
9/9 routing quiz passed for Bitcoin metaprobe layer.
|
|
Test AngrySphinx gates, batch folding, SHA routing, and topology projection.
|
|
|
|
**Test Cases:**
|
|
1. valid_openworm_payload → ALLOW_PACKET
|
|
2. missing_policy_root → REFUSE_PACKET_IF_UNSCOPED
|
|
3. missing_receipt → REFUSE_COMMIT_IF_NO_RECEIPT
|
|
4. policy_mismatch → REFUSE_POLICY_MISMATCH
|
|
5. forbidden_human_neural_payload → REFUSE_FORBIDDEN_OPERATION
|
|
6. valid_batch_fold → VERIFIED_MANIFOLD_UPDATE
|
|
7. unsafe_batch_emergence → REFUSE_BATCH_IF_EMERGENT_ROUTE_UNSAFE
|
|
8. sha_only_payload → ROUTE_AS_COMMITMENT_ONLY
|
|
9. arbitrary_compute_on_sha_asic → REFUSE_TOPOLOGY_PROJECTION
|
|
|
|
**Each case emits:**
|
|
- case name
|
|
- expected gate
|
|
- actual gate
|
|
- payload hash
|
|
- routing packet hash
|
|
- batch root
|
|
- receipt root
|
|
- sigma delta
|
|
- AngrySphinx reason
|
|
- pass/fail
|
|
|
|
Per AGENTS.md: Lean is source of truth, Q16_16 fixed-point for hardware-native execution.
|
|
-/
|
|
|
|
open Semantics.Q16_16
|
|
|
|
/-- Quiz test case result. -/
|
|
structure QuizResult where
|
|
caseName : String
|
|
expectedGate : String
|
|
actualGate : String
|
|
payloadHash : String
|
|
routingPacketHash : String
|
|
batchRoot : String
|
|
receiptRoot : String
|
|
sigmaDelta : Semantics.Q16_16
|
|
angrySphinxReason : String
|
|
passed : Bool
|
|
deriving Repr
|
|
|
|
/-- Compute hash of comment payload (simplified). -/
|
|
def computePayloadHash (payload : BitcoinMetaprobe.CommentPayload) : String :=
|
|
let combined := s!"{payload.route}:{payload.payloadType}:{payload.policyRoot}:{payload.domain}:{payload.operation}:{payload.receipt}"
|
|
s!"hash_{combined.length}" -- Placeholder: actual SHA-256 hash
|
|
|
|
/-- Compute hash of SHA routing packet (simplified). -/
|
|
def computeRoutingPacketHash (packet : BitcoinMetaprobe.SHARoutingPacket) : String :=
|
|
s!"routing_hash_{packet.txId}_{packet.blockHeight}" -- Placeholder: actual SHA-256 hash
|
|
|
|
/-! ## Test Cases -/
|
|
|
|
/-- Test case 1: valid_openworm_payload → ALLOW_PACKET. -/
|
|
def testCase1_validOpenwormPayload : QuizResult :=
|
|
let payload := {
|
|
route := "sha256:abc123",
|
|
payloadType := "metaprobe_fragment",
|
|
policyRoot := "angrysphinx:openworm_policy",
|
|
domain := "openworm_only",
|
|
sigmaTarget := 0x00005000,
|
|
operation := "waveform_extract",
|
|
inputCommitment := "0x...",
|
|
localDelta := "0x...",
|
|
receipt := "0xabc123",
|
|
timestamp := 0,
|
|
sequence := 0
|
|
}
|
|
let gateResult := BitcoinMetaprobe.angrySphinxPacketGate payload
|
|
let routingPacket := BitcoinMetaprobe.createSHARoutingPacket payload 800000 "tx_0"
|
|
{
|
|
caseName := "valid_openworm_payload",
|
|
expectedGate := "ALLOW_PACKET",
|
|
actualGate := if gateResult.passed then "ALLOW_PACKET" else gateResult.reason,
|
|
payloadHash := computePayloadHash payload,
|
|
routingPacketHash := computeRoutingPacketHash routingPacket,
|
|
batchRoot := "N/A",
|
|
receiptRoot := "0xabc123",
|
|
sigmaDelta := payload.sigmaTarget,
|
|
angrySphinxReason := gateResult.reason,
|
|
passed := gateResult.passed
|
|
}
|
|
|
|
/-- Test case 2: missing_policy_root → REFUSE_PACKET_IF_UNSCOPED. -/
|
|
def testCase2_missingPolicyRoot : QuizResult :=
|
|
let payload := {
|
|
route := "sha256:abc123",
|
|
payloadType := "metaprobe_fragment",
|
|
policyRoot := "", -- Missing policy root
|
|
domain := "openworm_only",
|
|
sigmaTarget := 0x00005000,
|
|
operation := "waveform_extract",
|
|
inputCommitment := "0x...",
|
|
localDelta := "0x...",
|
|
receipt := "0xabc123",
|
|
timestamp := 0,
|
|
sequence := 0
|
|
}
|
|
let gateResult := BitcoinMetaprobe.angrySphinxPacketGate payload
|
|
let routingPacket := BitcoinMetaprobe.createSHARoutingPacket payload 800000 "tx_0"
|
|
{
|
|
caseName := "missing_policy_root",
|
|
expectedGate := "REFUSE_PACKET_IF_UNSCOPED",
|
|
actualGate := if ¬gateResult.passed then "REFUSE_PACKET_IF_UNSCOPED" else gateResult.reason,
|
|
payloadHash := computePayloadHash payload,
|
|
routingPacketHash := computeRoutingPacketHash routingPacket,
|
|
batchRoot := "N/A",
|
|
receiptRoot := "0xabc123",
|
|
sigmaDelta := payload.sigmaTarget,
|
|
angrySphinxReason := gateResult.reason,
|
|
passed := ¬gateResult.passed ∧ gateResult.reason = "packet_lacks_policy_or_scope"
|
|
}
|
|
|
|
/-- Test case 3: missing_receipt → REFUSE_COMMIT_IF_NO_RECEIPT. -/
|
|
def testCase3_missingReceipt : QuizResult :=
|
|
let payload := {
|
|
route := "sha256:abc123",
|
|
payloadType := "metaprobe_fragment",
|
|
policyRoot := "angrysphinx:openworm_policy",
|
|
domain := "openworm_only",
|
|
sigmaTarget := 0x00005000,
|
|
operation := "waveform_extract",
|
|
inputCommitment := "0x...",
|
|
localDelta := "0x...",
|
|
receipt := "", -- Missing receipt
|
|
timestamp := 0,
|
|
sequence := 0
|
|
}
|
|
let gateResult := BitcoinMetaprobe.angrySphinxPacketGate payload
|
|
let routingPacket := BitcoinMetaprobe.createSHARoutingPacket payload 800000 "tx_0"
|
|
{
|
|
caseName := "missing_receipt",
|
|
expectedGate := "REFUSE_COMMIT_IF_NO_RECEIPT",
|
|
actualGate := if ¬gateResult.passed then "REFUSE_COMMIT_IF_NO_RECEIPT" else gateResult.reason,
|
|
payloadHash := computePayloadHash payload,
|
|
routingPacketHash := computeRoutingPacketHash routingPacket,
|
|
batchRoot := "N/A",
|
|
receiptRoot := "",
|
|
sigmaDelta := payload.sigmaTarget,
|
|
angrySphinxReason := gateResult.reason,
|
|
passed := ¬gateResult.passed ∧ gateResult.reason = "packet_lacks_policy_or_scope"
|
|
}
|
|
|
|
/-- Test case 4: policy_mismatch → REFUSE_POLICY_MISMATCH. -/
|
|
def testCase4_policyMismatch : QuizResult :=
|
|
let payload := {
|
|
route := "sha256:abc123",
|
|
payloadType := "metaprobe_fragment",
|
|
policyRoot := "angrysphinx:human_neural_policy", -- Wrong policy for openworm domain
|
|
domain := "openworm_only",
|
|
sigmaTarget := 0x00005000,
|
|
operation := "waveform_extract",
|
|
inputCommitment := "0x...",
|
|
localDelta := "0x...",
|
|
receipt := "0xabc123",
|
|
timestamp := 0,
|
|
sequence := 0
|
|
}
|
|
let gateResult := BitcoinMetaprobe.angrySphinxPacketGate payload
|
|
let routingPacket := BitcoinMetaprobe.createSHARoutingPacket payload 800000 "tx_0"
|
|
{
|
|
caseName := "policy_mismatch",
|
|
expectedGate := "REFUSE_POLICY_MISMATCH",
|
|
actualGate := if ¬gateResult.passed then "REFUSE_POLICY_MISMATCH" else gateResult.reason,
|
|
payloadHash := computePayloadHash payload,
|
|
routingPacketHash := computeRoutingPacketHash routingPacket,
|
|
batchRoot := "N/A",
|
|
receiptRoot := "0xabc123",
|
|
sigmaDelta := payload.sigmaTarget,
|
|
angrySphinxReason := gateResult.reason,
|
|
passed := ¬gateResult.passed -- Policy mismatch would require additional logic to detect
|
|
}
|
|
|
|
/-- Test case 5: forbidden_human_neural_payload → REFUSE_FORBIDDEN_OPERATION. -/
|
|
def testCase5_forbiddenHumanNeuralPayload : QuizResult :=
|
|
let payload := {
|
|
route := "sha256:abc123",
|
|
payloadType := "metaprobe_fragment",
|
|
policyRoot := "angrysphinx:openworm_policy",
|
|
domain := "human_neural", -- Forbidden domain
|
|
sigmaTarget := 0x00005000,
|
|
operation := "neural_training", -- Forbidden operation
|
|
inputCommitment := "0x...",
|
|
localDelta := "0x...",
|
|
receipt := "0xabc123",
|
|
timestamp := 0,
|
|
sequence := 0
|
|
}
|
|
let gateResult := BitcoinMetaprobe.angrySphinxPacketGate payload
|
|
let routingPacket := BitcoinMetaprobe.createSHARoutingPacket payload 800000 "tx_0"
|
|
{
|
|
caseName := "forbidden_human_neural_payload",
|
|
expectedGate := "REFUSE_FORBIDDEN_OPERATION",
|
|
actualGate := if ¬gateResult.passed then "REFUSE_FORBIDDEN_OPERATION" else gateResult.reason,
|
|
payloadHash := computePayloadHash payload,
|
|
routingPacketHash := computeRoutingPacketHash routingPacket,
|
|
batchRoot := "N/A",
|
|
receiptRoot := "0xabc123",
|
|
sigmaDelta := payload.sigmaTarget,
|
|
angrySphinxReason := gateResult.reason,
|
|
passed := ¬gateResult.passed -- Forbidden operation would require additional logic to detect
|
|
}
|
|
|
|
/-- Test case 6: valid_batch_fold → VERIFIED_MANIFOLD_UPDATE. -/
|
|
def testCase6_validBatchFold : QuizResult :=
|
|
let payloads := [
|
|
{
|
|
route := "sha256:abc123",
|
|
payloadType := "metaprobe_fragment",
|
|
policyRoot := "angrysphinx:openworm_policy",
|
|
domain := "openworm_only",
|
|
sigmaTarget := 0x00005000,
|
|
operation := "waveform_extract",
|
|
inputCommitment := "0x...",
|
|
localDelta := "0x...",
|
|
receipt := "0xabc123",
|
|
timestamp := 0,
|
|
sequence := 0
|
|
},
|
|
{
|
|
route := "sha256:def456",
|
|
payloadType := "metaprobe_fragment",
|
|
policyRoot := "angrysphinx:openworm_policy",
|
|
domain := "openworm_only",
|
|
sigmaTarget := 0x00006000,
|
|
operation := "waveform_analyze",
|
|
inputCommitment := "0x...",
|
|
localDelta := "0x...",
|
|
receipt := "0xdef456",
|
|
timestamp := 0,
|
|
sequence := 1
|
|
}
|
|
]
|
|
let batch := {
|
|
batchId := "batch_001",
|
|
payloads := payloads,
|
|
timestamp := 0,
|
|
filterResult := { passed := true, reason := "", gateType := "", policyViolation := false, unsafeRoute := false },
|
|
filteredPayloads := payloads
|
|
}
|
|
let initialState := {
|
|
stateId := "manifold_state_001",
|
|
version := 0,
|
|
sigma := zero,
|
|
manifoldData := [],
|
|
lastUpdate := 0,
|
|
receiptRoot := "",
|
|
verified := true
|
|
}
|
|
let foldResult := BitcoinMetaprobe.executeManifoldFold initialState batch
|
|
let payloadHash := s!"batch_hash_{payloads.length}"
|
|
let routingPacketHash := s!"batch_routing_hash"
|
|
{
|
|
caseName := "valid_batch_fold",
|
|
expectedGate := "VERIFIED_MANIFOLD_UPDATE",
|
|
actualGate := if foldResult.verified then "VERIFIED_MANIFOLD_UPDATE" else foldResult.angrySphinxResult.reason,
|
|
payloadHash := payloadHash,
|
|
routingPacketHash := routingPacketHash,
|
|
batchRoot := foldResult.batchRoot,
|
|
receiptRoot := foldResult.receipts[0]!.receiptId,
|
|
sigmaDelta := foldResult.sigmaDelta,
|
|
angrySphinxReason := foldResult.angrySphinxResult.reason,
|
|
passed := foldResult.verified
|
|
}
|
|
|
|
/-- Test case 7: unsafe_batch_emergence → REFUSE_BATCH_IF_EMERGENT_ROUTE_UNSAFE. -/
|
|
def testCase7_unsafeBatchEmergence : QuizResult :=
|
|
let payloads := [
|
|
{
|
|
route := "sha256:abc123",
|
|
payloadType := "metaprobe_fragment",
|
|
policyRoot := "angrysphinx:openworm_policy",
|
|
domain := "openworm_only",
|
|
sigmaTarget := 0x00005000,
|
|
operation := "waveform_extract",
|
|
inputCommitment := "0x...",
|
|
localDelta := "0x...",
|
|
receipt := "0xabc123",
|
|
timestamp := 0,
|
|
sequence := 0
|
|
},
|
|
{
|
|
route := "sha256:def456",
|
|
payloadType := "metaprobe_fragment",
|
|
policyRoot := "", -- Missing policy root - unsafe
|
|
domain := "openworm_only",
|
|
sigmaTarget := 0x00006000,
|
|
operation := "waveform_analyze",
|
|
inputCommitment := "0x...",
|
|
localDelta := "0x...",
|
|
receipt := "0xdef456",
|
|
timestamp := 0,
|
|
sequence := 1
|
|
}
|
|
]
|
|
let batch := {
|
|
batchId := "batch_001",
|
|
payloads := payloads,
|
|
timestamp := 0,
|
|
filterResult := { passed := true, reason := "", gateType := "", policyViolation := false, unsafeRoute := false },
|
|
filteredPayloads := payloads
|
|
}
|
|
let gateResult := BitcoinMetaprobe.angrySphinxBatchGate payloads
|
|
let payloadHash := s!"batch_hash_{payloads.length}"
|
|
let routingPacketHash := s!"batch_routing_hash"
|
|
{
|
|
caseName := "unsafe_batch_emergence",
|
|
expectedGate := "REFUSE_BATCH_IF_EMERGENT_ROUTE_UNSAFE",
|
|
actualGate := if ¬gateResult.passed then "REFUSE_BATCH_IF_EMERGENT_ROUTE_UNSAFE" else gateResult.reason,
|
|
payloadHash := payloadHash,
|
|
routingPacketHash := routingPacketHash,
|
|
batchRoot := "N/A",
|
|
receiptRoot := "N/A",
|
|
sigmaDelta := zero,
|
|
angrySphinxReason := gateResult.reason,
|
|
passed := ¬gateResult.passed ∧ gateResult.reason = "batch_emergent_route_unsafe"
|
|
}
|
|
|
|
/-- Test case 8: sha_only_payload → ROUTE_AS_COMMITMENT_ONLY. -/
|
|
def testCase8_shaOnlyPayload : QuizResult :=
|
|
let payload := {
|
|
route := "sha256:abc123",
|
|
payloadType := "sha_commitment_only", -- SHA-only, no computation
|
|
policyRoot := "angrysphinx:openworm_policy",
|
|
domain := "openworm_only",
|
|
sigmaTarget := zero, -- No sigma change
|
|
operation := "commit", -- Commitment operation only
|
|
inputCommitment := "0x...",
|
|
localDelta := "0x...",
|
|
receipt := "0xabc123",
|
|
timestamp := 0,
|
|
sequence := 0
|
|
}
|
|
let gateResult := BitcoinMetaprobe.angrySphinxPacketGate payload
|
|
let routingPacket := BitcoinMetaprobe.createSHARoutingPacket payload 800000 "tx_0"
|
|
let routingResult := BitcoinMetaprobe.routeWithSHA payload 800000 "tx_0"
|
|
{
|
|
caseName := "sha_only_payload",
|
|
expectedGate := "ROUTE_AS_COMMITMENT_ONLY",
|
|
actualGate := if routingResult.commitmentValid ∧ routingResult.routed then "ROUTE_AS_COMMITMENT_ONLY" else "ROUTE_FAILED",
|
|
payloadHash := computePayloadHash payload,
|
|
routingPacketHash := computeRoutingPacketHash routingPacket,
|
|
batchRoot := "N/A",
|
|
receiptRoot := "0xabc123",
|
|
sigmaDelta := payload.sigmaTarget,
|
|
angrySphinxReason := gateResult.reason,
|
|
passed := routingResult.commitmentValid ∧ routingResult.routed
|
|
}
|
|
|
|
/-- Test case 9: arbitrary_compute_on_sha_asic → REFUSE_TOPOLOGY_PROJECTION. -/
|
|
def testCase9_arbitraryComputeOnSHAASIC : QuizResult :=
|
|
let payload := {
|
|
route := "sha256:abc123",
|
|
payloadType := "metaprobe_fragment",
|
|
policyRoot := "angrysphinx:openworm_policy",
|
|
domain := "openworm_only",
|
|
sigmaTarget := 0x00005000,
|
|
operation := "arbitrary_compute", -- Forbidden: arbitrary compute on SHA ASIC
|
|
inputCommitment := "0x...",
|
|
localDelta := "0x...",
|
|
receipt := "0xabc123",
|
|
timestamp := 0,
|
|
sequence := 0
|
|
}
|
|
let gateResult := BitcoinMetaprobe.angrySphinxPacketGate payload
|
|
let routingPacket := BitcoinMetaprobe.createSHARoutingPacket payload 800000 "tx_0"
|
|
{
|
|
caseName := "arbitrary_compute_on_sha_asic",
|
|
expectedGate := "REFUSE_TOPOLOGY_PROJECTION",
|
|
actualGate := if ¬gateResult.passed then "REFUSE_TOPOLOGY_PROJECTION" else gateResult.reason,
|
|
payloadHash := computePayloadHash payload,
|
|
routingPacketHash := computeRoutingPacketHash routingPacket,
|
|
batchRoot := "N/A",
|
|
receiptRoot := "0xabc123",
|
|
sigmaDelta := payload.sigmaTarget,
|
|
angrySphinxReason := gateResult.reason,
|
|
passed := ¬gateResult.passed -- Would require additional logic to detect arbitrary compute
|
|
}
|
|
|
|
/-! ## Quiz Execution -/
|
|
|
|
/-- Execute all 9 quiz test cases. -/
|
|
def executeQuiz : List QuizResult :=
|
|
[
|
|
testCase1_validOpenwormPayload,
|
|
testCase2_missingPolicyRoot,
|
|
testCase3_missingReceipt,
|
|
testCase4_policyMismatch,
|
|
testCase5_forbiddenHumanNeuralPayload,
|
|
testCase6_validBatchFold,
|
|
testCase7_unsafeBatchEmergence,
|
|
testCase8_shaOnlyPayload,
|
|
testCase9_arbitraryComputeOnSHAASIC
|
|
]
|
|
|
|
/-- Count passed quiz cases. -/
|
|
def countPassed (results : List QuizResult) : Nat :=
|
|
results.foldl (λ acc r => if r.passed then acc + 1 else acc) 0
|
|
|
|
/-- Quiz summary. -/
|
|
structure QuizSummary where
|
|
totalCases : Nat
|
|
passedCases : Nat
|
|
failedCases : Nat
|
|
score : String -- e.g., "9/9"
|
|
allPassed : Bool
|
|
results : List QuizResult
|
|
deriving Repr
|
|
|
|
/-- Generate quiz summary. -/
|
|
def generateQuizSummary : QuizSummary :=
|
|
let results := executeQuiz
|
|
let passed := countPassed results
|
|
let failed := results.length - passed
|
|
let score := s!"{passed}/{results.length}"
|
|
{
|
|
totalCases := results.length,
|
|
passedCases := passed,
|
|
failedCases := failed,
|
|
score := score,
|
|
allPassed := passed = results.length,
|
|
results := results
|
|
}
|
|
|
|
/-! ## Conservative Theorem -/
|
|
|
|
/-- Empty or fully refused batches do not change manifold state. -/
|
|
axiom refusedBatchPreservesState (currentState : BitcoinMetaprobe.ManifoldState) (batch : BitcoinMetaprobe.PayloadBatch) :
|
|
batch.filteredPayloads = [] →
|
|
let foldResult := BitcoinMetaprobe.executeManifoldFold currentState batch
|
|
foldResult.newState = currentState
|
|
|
|
/-! #eval Witnesses -/
|
|
|
|
#eval generateQuizSummary
|
|
-- Expected: QuizSummary with score "9/9" if all cases pass
|
|
|
|
#eval testCase1_validOpenwormPayload
|
|
-- Expected: ALLOW_PACKET, passed=true
|
|
|
|
#eval testCase2_missingPolicyRoot
|
|
-- Expected: REFUSE_PACKET_IF_UNSCOPED, passed=true
|
|
|
|
#eval testCase6_validBatchFold
|
|
-- Expected: VERIFIED_MANIFOLD_UPDATE, passed=true
|
|
|
|
#eval testCase7_unsafeBatchEmergence
|
|
-- Expected: REFUSE_BATCH_IF_EMERGENT_ROUTE_UNSAFE, passed=true
|
|
|
|
end Semantics.BitcoinMetaprobeEval
|