Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
7 changes: 5 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
.PHONY: validate validate-json validate-yaml validate-quadlet validate-render validate-evidence validate-governance validate-activation validate-supply-chain validate-release-bundle validate-sourceos-projections validate-package validate-cli validate-formula doctor probe
.PHONY: validate validate-json validate-yaml validate-quadlet validate-render validate-evidence validate-governance validate-activation validate-supply-chain validate-release-bundle validate-sourceos-projections validate-superconscious-runtime-plan validate-package validate-cli validate-formula doctor probe

PYTHON ?= python3
RUBY ?= ruby
Expand All @@ -20,7 +20,7 @@ DECIDED_AT := 2026-05-04T12:51:00Z
PYCLI := PYTHONPATH=src $(PYTHON) -m agent_machine.cli
PYMOD := PYTHONPATH=src $(PYTHON) -m

validate: validate-json validate-yaml validate-quadlet validate-render validate-evidence validate-governance validate-activation validate-supply-chain validate-release-bundle validate-sourceos-projections validate-package validate-cli validate-formula
validate: validate-json validate-yaml validate-quadlet validate-render validate-evidence validate-governance validate-activation validate-supply-chain validate-release-bundle validate-sourceos-projections validate-superconscious-runtime-plan validate-package validate-cli validate-formula

validate-json:
$(PYTHON) scripts/validate-json.py
Expand Down Expand Up @@ -69,6 +69,9 @@ validate-release-bundle:
validate-sourceos-projections:
$(PYTHON) scripts/validate-sourceos-projection-fixtures.py

validate-superconscious-runtime-plan:
$(PYTHON) scripts/validate-superconscious-runtime-plan.py

validate-package:
$(PYTHON) scripts/validate-package.py

Expand Down
33 changes: 33 additions & 0 deletions fixtures/superconscious/reasoning-runtime-plan.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
{
"apiVersion": "agentmachine.sourceos.dev/v1",
"kind": "SuperconsciousReasoningRuntimePlan",
"metadata": {
"name": "superconscious-m1-deterministic-runtime-plan",
"createdAt": "2026-05-06T00:00:00Z"
},
"spec": {
"reasoningRunRef": "urn:srcos:reasoning-run:superconscious-demo",
"agentPodRef": "urn:srcos:agent-pod:superconscious-m1-deterministic",
"runtimeProfileRef": "urn:srcos:agent-machine-runtime-profile:deterministic-local",
"activationMode": "no-activation",
"providerClass": "none",
"modelResidencyRequired": false,
"cachePosture": "not-required",
"networkRequired": false,
"hostMutationRequired": false,
"toolExecutionRequired": false,
"storage": {
"scratch": "none",
"evidence": "local-artifact-directory",
"memory": "proposal-only"
},
"activationDecision": {
"decision": "allowed-dry-run-plan",
"startsRuntime": false,
"loadsModel": false,
"opensSocket": false,
"changesHostState": false,
"evidenceRef": "urn:srcos:reasoning-event:superconscious-runtime-plan"
}
}
}
81 changes: 81 additions & 0 deletions scripts/validate-superconscious-runtime-plan.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
#!/usr/bin/env python3
"""Validate Superconscious runtime-plan fixture for Agent Machine.

The M1 runtime plan is intentionally no-activation: it must not start a runtime,
load a model, open a socket, mutate host state, or require network access.
"""

from __future__ import annotations

import json
import sys
from pathlib import Path
from typing import Any


ROOT = Path(__file__).resolve().parents[1]
FIXTURE = ROOT / "fixtures" / "superconscious" / "reasoning-runtime-plan.json"


def fail(message: str) -> int:
print(f"ERROR: {message}", file=sys.stderr)
return 1


def load(path: Path) -> dict[str, Any]:
return json.loads(path.read_text(encoding="utf-8"))


def validate(doc: dict[str, Any]) -> int:
if doc.get("apiVersion") != "agentmachine.sourceos.dev/v1":
return fail("apiVersion invalid")
if doc.get("kind") != "SuperconsciousReasoningRuntimePlan":
return fail("kind must be SuperconsciousReasoningRuntimePlan")
spec = doc.get("spec") or {}
for key in [
"reasoningRunRef",
"agentPodRef",
"runtimeProfileRef",
"activationMode",
"providerClass",
"modelResidencyRequired",
"cachePosture",
"networkRequired",
"hostMutationRequired",
"toolExecutionRequired",
"storage",
"activationDecision",
]:
if key not in spec:
return fail(f"missing spec.{key}")
if not str(spec["reasoningRunRef"]).startswith("urn:srcos:reasoning-run:"):
return fail("reasoningRunRef must be a SourceOS reasoning-run URN")
if spec["activationMode"] != "no-activation":
return fail("activationMode must be no-activation for M1")
if spec["providerClass"] != "none":
return fail("providerClass must be none for M1")
for key in ["modelResidencyRequired", "networkRequired", "hostMutationRequired", "toolExecutionRequired"]:
if spec[key] is not False:
return fail(f"{key} must be false for M1")
storage = spec["storage"]
if storage.get("memory") != "proposal-only":
return fail("storage.memory must be proposal-only")
decision = spec["activationDecision"]
expected_false = ["startsRuntime", "loadsModel", "opensSocket", "changesHostState"]
for key in expected_false:
if decision.get(key) is not False:
return fail(f"activationDecision.{key} must be false")
if decision.get("decision") != "allowed-dry-run-plan":
return fail("activationDecision.decision must be allowed-dry-run-plan")
if not str(decision.get("evidenceRef", "")).startswith("urn:srcos:reasoning-event:"):
return fail("activationDecision.evidenceRef must reference a SourceOS reasoning event")
print("OK: Superconscious runtime plan fixture validated")
return 0


def main() -> int:
return validate(load(FIXTURE))


if __name__ == "__main__":
raise SystemExit(main())
Loading