Skip to content
Merged
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
8 changes: 6 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
.PHONY: validate validate-resource-contract validate-measurement validate-value-type validate-source-locator validate-sourceos-repo-manifest validate-mesh-action-registry validate-control-plane-examples validate-nlboot-examples validate-lattice-data-governai-examples validate-ops-history-examples validate-runtime-observability-examples validate-interpretability-examples validate-lifecycle-boundary-examples validate-svf-contracts validate-sync-cycle-receipts validate-onboarding-examples validate-runtime-causality-examples validate-agentic-os-examples validate-triparty-examples validate-labor-market-examples validate-supply-chain-risk-examples validate-reasoning-examples validate-mpcc-event-examples validate-knowledge-nugget-examples validate-semantic-action-examples validate-epistemic-kernel-examples validate-ab-update-examples validate-device-service-examples validate-duplicate-schema-ids validate-lawful-dispatch-receipt validate-architectural-building-block validate-measurement
.PHONY: validate validate-resource-contract validate-measurement validate-value-type validate-source-locator validate-sourceos-repo-manifest validate-mesh-action-registry validate-control-plane-examples validate-nlboot-examples validate-lattice-data-governai-examples validate-ops-history-examples validate-runtime-observability-examples validate-interpretability-examples validate-lifecycle-boundary-examples validate-svf-contracts validate-sync-cycle-receipts validate-onboarding-examples validate-runtime-causality-examples validate-agentic-os-examples validate-triparty-examples validate-labor-market-examples validate-supply-chain-risk-examples validate-reasoning-examples validate-mpcc-event-examples validate-knowledge-nugget-examples validate-semantic-action-examples validate-epistemic-kernel-examples validate-ab-update-examples validate-device-service-examples validate-duplicate-schema-ids validate-lawful-dispatch-receipt validate-architectural-building-block validate-agent-passport-examples validate-measurement

validate: validate-control-plane-examples validate-nlboot-examples validate-lattice-data-governai-examples validate-ops-history-examples validate-runtime-observability-examples validate-interpretability-examples validate-lifecycle-boundary-examples validate-svf-contracts validate-sync-cycle-receipts validate-onboarding-examples validate-runtime-causality-examples validate-agentic-os-examples validate-triparty-examples validate-labor-market-examples validate-supply-chain-risk-examples validate-reasoning-examples validate-mpcc-event-examples validate-knowledge-nugget-examples validate-semantic-action-examples validate-epistemic-kernel-examples validate-ab-update-examples validate-device-service-examples validate-duplicate-schema-ids validate-value-type validate-source-locator validate-sourceos-repo-manifest validate-mesh-action-registry validate-lawful-dispatch-receipt validate-architectural-building-block validate-measurement validate-resource-contract
validate: validate-control-plane-examples validate-nlboot-examples validate-lattice-data-governai-examples validate-ops-history-examples validate-runtime-observability-examples validate-interpretability-examples validate-lifecycle-boundary-examples validate-svf-contracts validate-sync-cycle-receipts validate-onboarding-examples validate-runtime-causality-examples validate-agentic-os-examples validate-triparty-examples validate-labor-market-examples validate-supply-chain-risk-examples validate-reasoning-examples validate-mpcc-event-examples validate-knowledge-nugget-examples validate-semantic-action-examples validate-epistemic-kernel-examples validate-ab-update-examples validate-device-service-examples validate-duplicate-schema-ids validate-value-type validate-source-locator validate-sourceos-repo-manifest validate-mesh-action-registry validate-lawful-dispatch-receipt validate-architectural-building-block validate-agent-passport-examples validate-measurement validate-resource-contract
@echo "OK: validate"

validate-agent-passport-examples:
python3 -m pip install --user jsonschema >/dev/null
python3 tools/validate_agent_passport_examples.py

validate-source-locator:
python3 tools/validate_source_locator.py

Expand Down
16 changes: 16 additions & 0 deletions examples/agent-passport.intelligence-automation.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"type": "AgentPassport",
"bundle_id": "com.apple.Siri.ActionPredictionNotifications",
"binary_path": "/System/Library/PrivateFrameworks/SiriActionPrediction.framework",
"agent_class": "intelligence_automation",
"is_daemon": true,
"is_apple_signed": true,
"suppress_user_authorization_prompt": false,
"system_bundle": true,
"summarize_previews_permitted": false,
"dnd_intelligent_management_permitted": false,
"autonomous_action_permitted": false,
"interrupt_level": "time_sensitive",
"attested_at": "2026-06-09T14:00:00Z",
"attestation_source": "urn:srcos:agent-machine:attest"
}
14 changes: 14 additions & 0 deletions examples/agent-passport.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"type": "AgentPassport",
"bundle_id": "com.anthropic.claudefordesktop",
"binary_path": "/Applications/Claude.app/Contents/MacOS/Claude",
"agent_class": "third_party",
"is_daemon": false,
"is_apple_signed": false,
"suppress_user_authorization_prompt": false,
"system_bundle": false,
"interrupt_level": "standard",
"capability_exceptions": [],
"attested_at": "2026-06-09T14:00:00Z",
"attestation_source": "urn:srcos:agent-machine:attest"
}
13 changes: 13 additions & 0 deletions examples/agent-passport.system-core.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"type": "AgentPassport",
"bundle_id": "com.apple.sharingd",
"binary_path": "/usr/libexec/sharingd",
"agent_class": "system_core",
"is_daemon": true,
"is_apple_signed": true,
"suppress_user_authorization_prompt": true,
"system_bundle": true,
"interrupt_level": "critical",
"attested_at": "2026-06-09T14:00:00Z",
"attestation_source": "urn:srcos:agent-machine:attest"
}
180 changes: 180 additions & 0 deletions schemas/AgentPassport.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,180 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://schemas.srcos.ai/v2/AgentPassport.json",
"title": "AgentPassport",
"description": "Canonical typed classification for an agent or service observed on a SourceOS-managed host. Formalizes the five-class agent model (system_core, intelligence_automation, app_helper, legacy_bridge, third_party) that governs execution authorization, spatial permissions, and intelligence constraints across the SourceOS estate. Complementary to the Agent Plane family (AgentSession/ExecutionDecision/ExecutionSurface), which operate at workflow/session level; AgentPassport is host-level process classification. Canonical instance URN: urn:srcos:agent-passport:<bundle_id_slug>. Schema version 1.0.0. Cross-field invariants (documented on the relevant properties) are authoritatively enforced by SHACL in ontogenesis (T1-4); the JSON-Schema-expressible subset is additionally enforced here via the allOf/if-then rules at the end of this schema.",
"type": "object",
"additionalProperties": false,
"required": [
"bundle_id",
"agent_class",
"is_daemon",
"is_apple_signed",
"suppress_user_authorization_prompt",
"system_bundle",
"interrupt_level"
],
"properties": {
"type": {
"const": "AgentPassport",
"description": "Object discriminator, matching the repo convention (examples are mapped to their schema by this field). Optional so minimal downstream fixtures remain valid."
},
"bundle_id": {
"type": "string",
"minLength": 1,
"description": "Stable process identity (e.g. com.anthropic.claudefordesktop). The canonical passport URN is urn:srcos:agent-passport:<bundle_id_slug>."
},
"pid": {
"type": "integer",
"minimum": 0,
"description": "SESSION-SCOPED process id (non-negative). NOT a stable identifier: it is reused across processes and reboots and must never be used for cross-session correlation or authorization."
},
"binary_path": {
"type": "string",
"description": "Last known binary path on the host."
},
"agent_class": {
"type": "string",
"enum": [
"system_core",
"intelligence_automation",
"app_helper",
"legacy_bridge",
"third_party"
],
"description": "Typed classification. system_core = system-center daemons (highest privilege; the source usernoted ontology tags these as the SYSTEM_CENTER notification-server class). intelligence_automation = proactive/prediction agents, constrained output. app_helper = application background daemons, standard user auth. legacy_bridge = legacy/modern connection bridge services. third_party = unsigned external applications."
},
"is_daemon": {
"type": "boolean",
"description": "Whether the process runs as a background daemon."
},
"is_apple_signed": {
"type": "boolean",
"description": "Whether the binary is Apple-signed."
},
"suppress_user_authorization_prompt": {
"type": "boolean",
"description": "Whether the agent may suppress the user authorization prompt. CONSTRAINT: true is only valid when is_apple_signed is true (enforced below via if/then; SHACL T1-4 is authoritative). third_party/app_helper/legacy_bridge must never set this true (SEAM-002)."
},
"system_bundle": {
"type": "boolean",
"description": "Whether the agent is part of a system bundle. CONSTRAINT: a third_party agent must not set this true (enforced below via if/then; SHACL T1-4 authoritative)."
},
"authorized_space_ids": {
"type": "array",
"items": { "type": "integer" },
"description": "CGSSpace spids the agent may present in."
},
"authorized_window_ids": {
"type": "array",
"items": { "type": "string" },
"description": "WAWindow wids the agent may interact with."
},
"authorized_display_uuids": {
"type": "array",
"items": { "type": "string" },
"description": "Physical display contexts. Stability is subject to SEAM-008 (displayUUID instability from firmware manipulation); an attestation timestamp is required when this is asserted."
},
"summarize_previews_permitted": {
"type": "boolean",
"description": "Mirrors the summarizePreviews system flag. Required for the intelligence_automation class (enforced below)."
},
"dnd_intelligent_management_permitted": {
"type": "boolean",
"description": "Mirrors dndAllowIntelligentManagement. Required for the intelligence_automation class (enforced below)."
},
"autonomous_action_permitted": {
"type": "boolean",
"description": "Whether the agent may act without a human in the loop. Required for the intelligence_automation class (enforced below)."
},
"capability_exceptions": {
"type": "array",
"description": "Explicit, scoped capability grants that deviate from the class default.",
"items": {
"type": "object",
"additionalProperties": false,
"required": ["capability", "granted_by", "granted_at", "scope"],
"properties": {
"capability": { "type": "string" },
"granted_by": { "type": "string" },
"granted_at": { "type": "string", "format": "date-time" },
"scope": { "type": "string" },
"expires": {
"type": ["string", "null"],
"format": "date-time",
"description": "Expiry timestamp, or null for a non-expiring grant."
}
}
}
},
"interrupt_level": {
"type": "string",
"enum": ["critical", "time_sensitive", "high", "standard", "passive"],
"description": "Notification/interrupt authority level."
},
"attested_at": {
"type": "string",
"format": "date-time",
"description": "When this passport was attested. Required when spatial authorization (authorized_display_uuids) is asserted (SEAM-008)."
},
"attestation_source": {
"type": "string",
"description": "The attesting authority (e.g. agent-machine attest subcommand)."
}
},
"allOf": [
{
"$comment": "intelligence_automation requires all three intelligence-constraint fields.",
"if": {
"properties": { "agent_class": { "const": "intelligence_automation" } },
"required": ["agent_class"]
},
"then": {
"required": [
"summarize_previews_permitted",
"dnd_intelligent_management_permitted",
"autonomous_action_permitted"
]
}
},
{
"$comment": "third_party must not claim system_bundle: true (class elevation).",
"if": {
"properties": { "agent_class": { "const": "third_party" } },
"required": ["agent_class"]
},
"then": {
"properties": { "system_bundle": { "const": false } }
}
},
{
"$comment": "suppress_user_authorization_prompt: true is only valid when is_apple_signed: true.",
"if": {
"properties": { "suppress_user_authorization_prompt": { "const": true } },
"required": ["suppress_user_authorization_prompt"]
},
"then": {
"properties": { "is_apple_signed": { "const": true } }
}
},
{
"$comment": "SEAM-002: third_party, app_helper, and legacy_bridge must never suppress the user authorization prompt, regardless of signing.",
"if": {
"properties": { "agent_class": { "enum": ["third_party", "app_helper", "legacy_bridge"] } },
"required": ["agent_class"]
},
"then": {
"properties": { "suppress_user_authorization_prompt": { "const": false } }
}
},
{
"$comment": "SEAM-008: an attestation timestamp is required whenever spatial display authorization is asserted.",
"if": {
"required": ["authorized_display_uuids"]
},
"then": {
"required": ["attested_at"]
}
}
]
}
Loading
Loading