myc

Self-custodial remote signer for Radroots apps
git clone https://radroots.dev/git/myc.git
Log | Files | Refs | README | LICENSE

operator_contract.v1.json (36014B)


      1 {
      2   "schema": "radroots.myc.operator-contract.v1",
      3   "contract_version": 1,
      4   "decision_state": "implemented",
      5   "service": "myc",
      6   "shared_host_contract": {
      7     "repository": "https://github.com/radrootslabs/lib",
      8     "path": "contracts/architecture/decisions/services_hardening_host.v1.json",
      9     "schema": "radroots.services-hardening.host-decisions.v1",
     10     "contract_version": 1
     11   },
     12   "admin": {
     13     "transport": "http_1_1_over_unix_domain_socket",
     14     "base_path": "/v1",
     15     "route_inventory_closed": true,
     16     "routes": [
     17       { "method": "GET", "path": "/v1/status", "operation_id": "radroots.myc.status.get.v1", "request_model": "empty", "response_model": "service_status_v1", "mutation": false },
     18       { "method": "GET", "path": "/v1/config/effective", "operation_id": "radroots.myc.config.effective.get.v1", "request_model": "empty", "response_model": "effective_config_v1", "mutation": false },
     19       { "method": "GET", "path": "/v1/identity/status", "operation_id": "radroots.myc.identity.status.get.v1", "request_model": "identity_status_query_v1", "response_model": "identity_status_v1", "mutation": false },
     20       { "method": "GET", "path": "/v1/identity/public", "operation_id": "radroots.myc.identity.public.get.v1", "request_model": "identity_public_query_v1", "response_model": "identity_public_v1", "mutation": false },
     21       { "method": "GET", "path": "/v1/state/status", "operation_id": "radroots.myc.state.status.get.v1", "request_model": "empty", "response_model": "state_status_v1", "mutation": false },
     22       { "method": "POST", "path": "/v1/state/backup", "operation_id": "radroots.myc.state.backup.create.v1", "request_model": "state_backup_request_v1", "response_model": "state_backup_receipt_v1", "mutation": true },
     23       { "method": "GET", "path": "/v1/metrics/snapshot", "operation_id": "radroots.myc.metrics.snapshot.get.v1", "request_model": "empty", "response_model": "metrics_snapshot_v1", "mutation": false },
     24       { "method": "GET", "path": "/v1/connections", "operation_id": "radroots.myc.connections.list.v1", "request_model": "connections_query_v1", "response_model": "connections_page_v1", "mutation": false },
     25       { "method": "POST", "path": "/v1/connections/{connection_id}/approve", "operation_id": "radroots.myc.connection.approve.v1", "request_model": "connection_approve_request_v1", "response_model": "connection_mutation_receipt_v1", "mutation": true },
     26       { "method": "POST", "path": "/v1/connections/{connection_id}/reject", "operation_id": "radroots.myc.connection.reject.v1", "request_model": "connection_reject_request_v1", "response_model": "connection_mutation_receipt_v1", "mutation": true },
     27       { "method": "POST", "path": "/v1/connections/{connection_id}/revoke", "operation_id": "radroots.myc.connection.revoke.v1", "request_model": "connection_revoke_request_v1", "response_model": "connection_mutation_receipt_v1", "mutation": true },
     28       { "method": "POST", "path": "/v1/authorization/challenges/require", "operation_id": "radroots.myc.authorization.challenge.require.v1", "request_model": "challenge_require_request_v1", "response_model": "challenge_v1", "mutation": true },
     29       { "method": "POST", "path": "/v1/authorization/challenges/{challenge_id}/authorize", "operation_id": "radroots.myc.authorization.challenge.authorize.v1", "request_model": "challenge_authorize_request_v1", "response_model": "challenge_authorization_receipt_v1", "mutation": true },
     30       { "method": "GET", "path": "/v1/audit/events", "operation_id": "radroots.myc.audit.events.list.v1", "request_model": "audit_events_query_v1", "response_model": "audit_events_page_v1", "mutation": false },
     31       { "method": "GET", "path": "/v1/audit/summary", "operation_id": "radroots.myc.audit.summary.get.v1", "request_model": "audit_summary_query_v1", "response_model": "audit_summary_v1", "mutation": false },
     32       { "method": "GET", "path": "/v1/discovery/desired", "operation_id": "radroots.myc.discovery.desired.get.v1", "request_model": "empty", "response_model": "discovery_desired_v1", "mutation": false },
     33       { "method": "POST", "path": "/v1/discovery/render", "operation_id": "radroots.myc.discovery.render.v1", "request_model": "discovery_render_request_v1", "response_model": "discovery_render_receipt_v1", "mutation": true },
     34       { "method": "POST", "path": "/v1/discovery/refresh", "operation_id": "radroots.myc.discovery.refresh.v1", "request_model": "discovery_refresh_request_v1", "response_model": "discovery_refresh_receipt_v1", "mutation": true },
     35       { "method": "POST", "path": "/v1/discovery/publish", "operation_id": "radroots.myc.discovery.publish.v1", "request_model": "discovery_publish_request_v1", "response_model": "discovery_publish_receipt_v1", "mutation": true }
     36     ],
     37     "model_wire_contract": {
     38       "encoding": "utf8_json",
     39       "object_unknown_fields": "reject",
     40       "duplicate_fields": "reject",
     41       "null": "forbidden",
     42       "optional_field_representation": "absent",
     43       "integer_representation": "exact_json_integer",
     44       "utc_time_unit": "signed_integer_unix_seconds",
     45       "string_length_unit": "utf8_bytes",
     46       "array_order": "preserved_unless_type_declares_canonical_sort",
     47       "response_body_max_utf8_bytes": 1048576
     48     },
     49     "identity_contract": {
     50       "roles": [
     51         { "id": "transport", "required": true, "disabled_allowed": false, "providers": ["encrypted_file", "local_signer"] },
     52         { "id": "user", "required": true, "disabled_allowed": false, "providers": ["encrypted_file", "local_signer"] },
     53         { "id": "discovery", "required": false, "disabled_allowed": true, "providers": ["encrypted_file", "local_signer"] }
     54       ],
     55       "live_mutation": false,
     56       "rotation_mode": "offline_create_new_then_config_apply",
     57       "in_place_overwrite": false
     58     },
     59     "types": {
     60       "myc_literal": { "kind": "literal", "value": "myc" },
     61       "myc_config_schema_literal": { "kind": "literal", "value": "radroots.myc.config" },
     62       "contract_version_literal": { "kind": "literal", "value": 1 },
     63       "bool": { "kind": "boolean" },
     64       "u64": { "kind": "integer", "minimum": 0, "maximum": 18446744073709551615 },
     65       "positive_u32": { "kind": "integer", "minimum": 1, "maximum": 4294967295 },
     66       "utc_seconds": { "kind": "integer", "unit": "unix_seconds", "minimum": 0, "maximum": 9223372036854775807 },
     67       "bounded_id": { "kind": "string", "minimum_utf8_bytes": 1, "maximum_utf8_bytes": 128, "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]*$" },
     68       "operation_id": { "kind": "string", "minimum_utf8_bytes": 1, "maximum_utf8_bytes": 128 },
     69       "reason_code": { "kind": "string", "minimum_utf8_bytes": 1, "maximum_utf8_bytes": 64, "pattern": "^[a-z][a-z0-9_]*$" },
     70       "reason_codes": { "kind": "array", "items": "reason_code", "maximum_items": 32, "unique": true, "canonical_sort": "ascending_utf8" },
     71       "sha256_hex": { "kind": "string", "utf8_bytes": 64, "pattern": "^[0-9a-f]{64}$" },
     72       "public_key_hex": { "kind": "string", "utf8_bytes": 64, "pattern": "^[0-9a-f]{64}$" },
     73       "absolute_path": { "kind": "string", "minimum_utf8_bytes": 1, "maximum_utf8_bytes": 4096, "pattern": "^/" },
     74       "confirmation": { "kind": "literal", "value": "confirm" },
     75       "identity_role": { "kind": "enum", "values": ["transport", "user", "discovery"] },
     76       "identity_provider_kind": { "kind": "enum", "values": ["encrypted_file", "local_signer"] },
     77       "service_phase": { "kind": "enum", "values": ["starting", "ready", "degraded", "unready", "stopping", "failed"] },
     78       "uptime_millis": { "kind": "integer", "minimum": 0, "maximum": 18446744073709551615, "unit": "milliseconds_from_injected_monotonic_clock" },
     79       "integrity_state": { "kind": "enum", "values": ["verified", "verification_required", "failed"] },
     80       "writer_lock_state": { "kind": "enum", "values": ["held_by_daemon", "free", "conflict"] },
     81       "configuration_source": { "kind": "enum", "values": ["explicit_config", "derived_repo_local"] },
     82       "configuration_identity": { "kind": "closed_object", "fields": { "schema": "myc_config_schema_literal", "schema_version": "contract_version_literal", "digest": "sha256_hex", "source": "configuration_source" } },
     83       "persistence_health": { "kind": "enum", "values": ["ready", "read_only", "repair_required", "unavailable"] },
     84       "persistence_state": { "kind": "closed_object", "fields": { "health": "persistence_health", "schema_version": "positive_u32", "generation": "u64", "integrity": "integrity_state", "reason_codes": "reason_codes" } },
     85       "provider_health": { "kind": "enum", "values": ["ready", "degraded", "unavailable"] },
     86       "provider_state": { "kind": "closed_object", "fields": { "health": "provider_health", "transport": "identity_health", "user": "identity_health", "discovery": "identity_health", "reason_codes": "reason_codes" } },
     87       "transport_health": { "kind": "enum", "values": ["ready", "degraded", "unavailable"] },
     88       "transport_state": { "kind": "closed_object", "fields": { "health": "transport_health", "required_relays_ready": "bool", "connected_relay_count": "u64", "reason_codes": "reason_codes" } },
     89       "connection_state": { "kind": "enum", "values": ["pending", "approved", "rejected", "revoked"] },
     90       "challenge_state": { "kind": "enum", "values": ["pending", "authorized", "expired", "rejected"] },
     91       "audit_outcome": { "kind": "enum", "values": ["succeeded", "rejected", "failed"] },
     92       "nip46_permission": {
     93         "kind": "string_union",
     94         "simple_values": ["nip04_decrypt", "nip04_encrypt", "nip44_decrypt", "nip44_encrypt", "switch_relays"],
     95         "sign_event_pattern": "^sign_event:kind:(0|[1-9][0-9]{0,9})$",
     96         "sign_event_kind_minimum": 0,
     97         "sign_event_kind_maximum": 4294967295,
     98         "sign_event_kind_encoding": "canonical_unsigned_decimal_no_leading_zeroes",
     99         "maximum_utf8_bytes": 64,
    100         "unpermissioned_methods": ["connect", "get_public_key", "get_session_capability", "ping", "logout"],
    101         "custom_methods": "unsupported_v1",
    102         "required_permission_api": "radroots_nostr_connect::server::required_permission",
    103         "permission_type": "radroots_nostr_connect::Permission",
    104         "fixed_vectors": {
    105           "valid": ["sign_event:kind:0", "sign_event:kind:1", "sign_event:kind:4294967295", "switch_relays"],
    106           "invalid": ["get_public_key", "ping", "sign_event", "sign_event:kind:", "sign_event:kind:00", "sign_event:kind:4294967296", "sign_event:kind:9999999999"]
    107         }
    108       },
    109       "permission_set": {
    110         "kind": "canonical_delimited_set",
    111         "items": "nip46_permission",
    112         "delimiter": ",",
    113         "maximum_items": 64,
    114         "maximum_utf8_bytes": 4096,
    115         "unique": true,
    116         "canonical_sort": "ascending_rendered_permission_utf8",
    117         "empty_allowed": true,
    118         "sign_event_kind_ceiling": "every_parameterized_kind_must_also_be_allowed_by_configured_policy"
    119       },
    120       "page_limit": { "kind": "integer", "minimum": 1, "maximum": 200 },
    121       "page_cursor": { "kind": "string", "minimum_utf8_bytes": 1, "maximum_utf8_bytes": 512, "encoding": "canonical_base64url_no_padding", "integrity": "server_authenticated" },
    122       "connection_state_filter": { "kind": "enum", "values": ["pending", "approved", "rejected", "revoked"] },
    123       "safe_code": { "kind": "string", "minimum_utf8_bytes": 1, "maximum_utf8_bytes": 64, "pattern": "^[a-z][a-z0-9_]*$" },
    124       "safe_url": { "kind": "string", "minimum_utf8_bytes": 1, "maximum_utf8_bytes": 2048, "allowed_schemes": ["https"] },
    125       "safe_counts": { "kind": "map", "key": "safe_code", "value": "u64", "maximum_entries": 128, "canonical_sort": "ascending_key_utf8" },
    126       "stable_metrics": { "kind": "map", "key": "safe_code", "value": "u64", "maximum_entries": 256, "high_cardinality_values_forbidden": true, "canonical_sort": "ascending_key_utf8" },
    127       "config_provenance": { "kind": "map", "key": "safe_code", "value": "config_provenance_value", "maximum_entries": 512, "canonical_sort": "ascending_key_utf8" },
    128       "config_provenance_value": { "kind": "enum", "values": ["bootstrap_cli", "toml", "safe_default", "derived_path"] },
    129       "redacted_config": { "kind": "canonical_json_object", "schema": "radroots.myc.config@1", "maximum_utf8_bytes": 786432, "protected_material": "redacted_or_omitted" },
    130       "build_info": { "kind": "closed_object", "fields": { "version": "bounded_id", "revision": "git_revision", "toolchain": "bounded_id", "contract_versions": "safe_counts" } },
    131       "git_revision": { "kind": "string", "utf8_bytes": 40, "pattern": "^[0-9a-f]{40}$" },
    132       "myc_status": { "kind": "closed_object", "fields": { "transport": "identity_health", "user": "identity_health", "discovery": "identity_health", "connection_counts": "safe_counts", "outbox": "outbox_status" } },
    133       "identity_health": { "kind": "closed_object", "fields": { "configured": "bool", "available": "bool", "reason_codes": "reason_codes" } },
    134       "outbox_status": { "kind": "closed_object", "fields": { "pending": "u64", "unknown": "u64", "oldest_pending_at_utc": "optional_utc_seconds" } },
    135       "optional_utc_seconds": { "kind": "optional", "representation": "absent_parent_field", "value": "utc_seconds" },
    136       "connection_summaries": { "kind": "array", "items": "connection_summary", "maximum_items": 200, "ordered": true },
    137       "connection_summary": { "kind": "closed_object", "fields": { "connection_id": "bounded_id", "client_public_key": "public_key_hex", "state": "connection_state", "permissions": "permission_set", "generation": "u64", "created_at_utc": "utc_seconds", "updated_at_utc": "utc_seconds" } },
    138       "request_identity": { "kind": "alias", "target": "sha256_hex" },
    139       "audit_kind": { "kind": "string", "minimum_utf8_bytes": 1, "maximum_utf8_bytes": 64, "pattern": "^[a-z][a-z0-9_]*$" },
    140       "audit_events": { "kind": "array", "items": "audit_event", "maximum_items": 200, "ordered": true },
    141       "audit_event": { "kind": "closed_object", "fields": { "audit_id": "bounded_id", "occurred_at_utc": "utc_seconds", "kind": "audit_kind", "outcome": "audit_outcome", "reason_code": "reason_code", "correlation_id": "bounded_id" } },
    142       "document_digests": { "kind": "map", "key": "bounded_id", "value": "sha256_hex", "maximum_entries": 16, "canonical_sort": "ascending_key_utf8" },
    143       "publication_state": { "kind": "enum", "values": ["disabled", "pending", "submitted", "delivered", "failed", "unknown"] },
    144       "source_completion": { "kind": "enum", "values": ["complete", "partial", "unavailable"] },
    145       "discovery_diff_state": { "kind": "enum", "values": ["in_sync", "drift", "conflict", "unavailable"] },
    146       "workflow_id": { "kind": "alias", "target": "bounded_id" },
    147       "target_count": { "kind": "integer", "minimum": 0, "maximum": 64 }
    148     },
    149     "models": {
    150       "empty": { "fields": {} },
    151       "service_status_v1": { "fields": { "contract_version": { "type": "contract_version_literal", "presence": "required" }, "service": { "type": "myc_literal", "presence": "required" }, "instance": { "type": "bounded_id", "presence": "required" }, "phase": { "type": "service_phase", "presence": "required" }, "ready": { "type": "bool", "presence": "required" }, "uptime_millis": { "type": "uptime_millis", "presence": "required" }, "reason_codes": { "type": "reason_codes", "presence": "required" }, "build_info": { "type": "build_info", "presence": "required" }, "configuration": { "type": "configuration_identity", "presence": "required" }, "persistence": { "type": "persistence_state", "presence": "required" }, "provider": { "type": "provider_state", "presence": "required" }, "transport": { "type": "transport_state", "presence": "required" }, "myc": { "type": "myc_status", "presence": "required" } } },
    152       "effective_config_v1": { "fields": { "schema": { "type": "myc_config_schema_literal", "presence": "required" }, "schema_version": { "type": "contract_version_literal", "presence": "required" }, "provenance": { "type": "config_provenance", "presence": "required" }, "redacted_config": { "type": "redacted_config", "presence": "required" }, "config_digest": { "type": "sha256_hex", "presence": "required" } } },
    153       "identity_status_query_v1": { "fields": { "role": { "type": "identity_role", "presence": "required" } } },
    154       "identity_status_v1": { "fields": { "role": { "type": "identity_role", "presence": "required" }, "provider": { "type": "identity_provider_kind", "presence": "optional" }, "configured": { "type": "bool", "presence": "required" }, "available": { "type": "bool", "presence": "required" }, "generation": { "type": "u64", "presence": "required" }, "reason_codes": { "type": "reason_codes", "presence": "required" }, "public_key": { "type": "public_key_hex", "presence": "optional" } } },
    155       "identity_public_query_v1": { "fields": { "role": { "type": "identity_role", "presence": "required" } } },
    156       "identity_public_v1": { "fields": { "role": { "type": "identity_role", "presence": "required" }, "public_key": { "type": "public_key_hex", "presence": "required" }, "generation": { "type": "u64", "presence": "required" } } },
    157       "state_status_v1": { "fields": { "schema_version": { "type": "positive_u32", "presence": "required" }, "generation": { "type": "u64", "presence": "required" }, "integrity": { "type": "integrity_state", "presence": "required" }, "writer_lock": { "type": "writer_lock_state", "presence": "required" }, "backup_eligible": { "type": "bool", "presence": "required" }, "reason_codes": { "type": "reason_codes", "presence": "required" } } },
    158       "state_backup_request_v1": { "fields": { "target_path": { "type": "absolute_path", "presence": "required" }, "expected_generation": { "type": "u64", "presence": "required" }, "confirmation": { "type": "confirmation", "presence": "required" } } },
    159       "state_backup_receipt_v1": { "fields": { "operation_id": { "type": "operation_id", "presence": "required" }, "manifest_digest": { "type": "sha256_hex", "presence": "required" }, "snapshot_generation": { "type": "u64", "presence": "required" }, "completed_at_utc": { "type": "utc_seconds", "presence": "required" } } },
    160       "metrics_snapshot_v1": { "fields": { "captured_at_utc": { "type": "utc_seconds", "presence": "required" }, "metrics": { "type": "stable_metrics", "presence": "required" } } },
    161       "connections_query_v1": { "fields": { "limit": { "type": "page_limit", "presence": "required" }, "cursor": { "type": "page_cursor", "presence": "optional" }, "state": { "type": "connection_state_filter", "presence": "optional" } } },
    162       "connections_page_v1": { "fields": { "snapshot_generation": { "type": "u64", "presence": "required" }, "items": { "type": "connection_summaries", "presence": "required" }, "next_cursor": { "type": "page_cursor", "presence": "optional" } } },
    163       "connection_approve_request_v1": { "fields": { "expected_generation": { "type": "u64", "presence": "required" }, "permissions": { "type": "permission_set", "presence": "required" }, "confirmation": { "type": "confirmation", "presence": "required" } } },
    164       "connection_reject_request_v1": { "fields": { "expected_generation": { "type": "u64", "presence": "required" }, "reason_code": { "type": "reason_code", "presence": "required" }, "confirmation": { "type": "confirmation", "presence": "required" } } },
    165       "connection_revoke_request_v1": { "fields": { "expected_generation": { "type": "u64", "presence": "required" }, "reason_code": { "type": "reason_code", "presence": "required" }, "confirmation": { "type": "confirmation", "presence": "required" } } },
    166       "connection_mutation_receipt_v1": { "fields": { "operation_id": { "type": "operation_id", "presence": "required" }, "connection_id": { "type": "bounded_id", "presence": "required" }, "previous_state": { "type": "connection_state", "presence": "required" }, "current_state": { "type": "connection_state", "presence": "required" }, "generation": { "type": "u64", "presence": "required" } } },
    167       "challenge_require_request_v1": { "fields": { "connection_id": { "type": "bounded_id", "presence": "required" }, "request_identity": { "type": "request_identity", "presence": "required" }, "expected_policy_generation": { "type": "u64", "presence": "required" } } },
    168       "challenge_v1": { "fields": { "challenge_id": { "type": "bounded_id", "presence": "required" }, "connection_id": { "type": "bounded_id", "presence": "required" }, "request_identity": { "type": "request_identity", "presence": "required" }, "challenge_url": { "type": "safe_url", "presence": "required" }, "issued_at_utc": { "type": "utc_seconds", "presence": "required" }, "expires_at_utc": { "type": "utc_seconds", "presence": "required" }, "state": { "type": "challenge_state", "presence": "required" } } },
    169       "challenge_authorize_request_v1": { "fields": { "expected_generation": { "type": "u64", "presence": "required" }, "confirmation": { "type": "confirmation", "presence": "required" } } },
    170       "challenge_authorization_receipt_v1": { "fields": { "operation_id": { "type": "operation_id", "presence": "required" }, "challenge_id": { "type": "bounded_id", "presence": "required" }, "request_identity": { "type": "request_identity", "presence": "required" }, "state": { "type": "challenge_state", "presence": "required" }, "generation": { "type": "u64", "presence": "required" } } },
    171       "audit_events_query_v1": { "fields": { "limit": { "type": "page_limit", "presence": "required" }, "cursor": { "type": "page_cursor", "presence": "optional" }, "from_utc": { "type": "utc_seconds", "presence": "optional" }, "to_utc": { "type": "utc_seconds", "presence": "optional" }, "kind": { "type": "audit_kind", "presence": "optional" }, "outcome": { "type": "audit_outcome", "presence": "optional" } } },
    172       "audit_events_page_v1": { "fields": { "snapshot_generation": { "type": "u64", "presence": "required" }, "items": { "type": "audit_events", "presence": "required" }, "next_cursor": { "type": "page_cursor", "presence": "optional" } } },
    173       "audit_summary_query_v1": { "fields": { "from_utc": { "type": "utc_seconds", "presence": "required" }, "to_utc": { "type": "utc_seconds", "presence": "required" } } },
    174       "audit_summary_v1": { "fields": { "from_utc": { "type": "utc_seconds", "presence": "required" }, "to_utc": { "type": "utc_seconds", "presence": "required" }, "counts": { "type": "safe_counts", "presence": "required" } } },
    175       "discovery_desired_v1": { "fields": { "enabled": { "type": "bool", "presence": "required" }, "generation": { "type": "u64", "presence": "required" }, "document_digests": { "type": "document_digests", "presence": "required" }, "publication_state": { "type": "publication_state", "presence": "required" } } },
    176       "discovery_render_request_v1": { "fields": { "expected_generation": { "type": "u64", "presence": "required" } } },
    177       "discovery_render_receipt_v1": { "fields": { "operation_id": { "type": "operation_id", "presence": "required" }, "generation": { "type": "u64", "presence": "required" }, "document_digests": { "type": "document_digests", "presence": "required" } } },
    178       "discovery_refresh_request_v1": { "fields": { "expected_generation": { "type": "u64", "presence": "required" } } },
    179       "discovery_refresh_receipt_v1": { "fields": { "operation_id": { "type": "operation_id", "presence": "required" }, "generation": { "type": "u64", "presence": "required" }, "source_completion": { "type": "source_completion", "presence": "required" }, "diff_state": { "type": "discovery_diff_state", "presence": "required" } } },
    180       "discovery_publish_request_v1": { "fields": { "expected_generation": { "type": "u64", "presence": "required" }, "confirmation": { "type": "confirmation", "presence": "required" } } },
    181       "discovery_publish_receipt_v1": { "fields": { "operation_id": { "type": "operation_id", "presence": "required" }, "generation": { "type": "u64", "presence": "required" }, "workflow_id": { "type": "workflow_id", "presence": "required" }, "exact_bytes_digest": { "type": "sha256_hex", "presence": "required" }, "target_count": { "type": "target_count", "presence": "required" } } }
    182     },
    183     "path_parameters": {
    184       "connection_id": { "type": "bounded_id", "source": "percent_decoded_single_path_segment", "slash_allowed": false },
    185       "challenge_id": { "type": "bounded_id", "source": "percent_decoded_single_path_segment", "slash_allowed": false }
    186     },
    187     "pagination": {
    188       "cursor_type": "page_cursor",
    189       "limit_min": 1,
    190       "limit_max": 200,
    191       "terminal_page": "next_cursor_field_absent",
    192       "cursor_reuse": "same_route_same_filters_only",
    193       "filter_or_route_mismatch": "invalid_cursor",
    194       "connections_order": ["created_at_utc_ascending", "connection_id_ascending"],
    195       "connections_snapshot": "generation_fixed_by_first_page_cursor",
    196       "audit_order": ["occurred_at_utc_descending", "audit_id_descending"],
    197       "audit_snapshot": "maximum_audit_sequence_fixed_by_first_page_cursor"
    198     },
    199     "mutation_contract": {
    200       "request_envelope_required_fields": ["contract_version", "operation_id", "request"],
    201       "request_envelope_optional_fields": ["correlation_id"],
    202       "effective_correlation_id_required_in_response": true,
    203       "identical_operation_id_reuse": "return_original_committed_result",
    204       "different_request_operation_id_reuse": { "admin_error_code": "operation_id_conflict", "cli_exit": 5 },
    205       "success_visibility": "response_only_after_local_authoritative_commit",
    206       "relay_submission_or_delivery_required_for_success": false,
    207       "committed_effects": {
    208         "radroots.myc.state.backup.create.v1": "verified_snapshot_manifest_digest_and_operation_audit",
    209         "radroots.myc.connection.approve.v1": "connection_state_permissions_generation_and_operation_audit",
    210         "radroots.myc.connection.reject.v1": "connection_state_reason_generation_and_operation_audit",
    211         "radroots.myc.connection.revoke.v1": "connection_state_session_revocation_generation_and_operation_audit",
    212         "radroots.myc.authorization.challenge.require.v1": "bounded_challenge_binding_rate_window_and_operation_audit",
    213         "radroots.myc.authorization.challenge.authorize.v1": "challenge_state_bound_request_resume_generation_and_operation_audit",
    214         "radroots.myc.discovery.render.v1": "deterministic_document_generation_digests_and_operation_audit",
    215         "radroots.myc.discovery.refresh.v1": "source_completion_diff_state_generation_and_operation_audit",
    216         "radroots.myc.discovery.publish.v1": "exact_signed_bytes_immutable_targets_outbox_workflow_and_operation_audit"
    217       }
    218     }
    219   },
    220   "cli_dispatch": {
    221     "parse_count": 1,
    222     "primary_authorities": ["daemon", "offline", "live_unix_admin"],
    223     "live_direct_sqlite_access": false,
    224     "live_mutation_offline_fallback": false,
    225     "read_only_offline_fallback_requires_free_daemon_writer_lock": true,
    226     "bootstrap": {
    227       "output_modes": ["human", "json"],
    228       "default_output_mode": "human",
    229       "stdout": "results_only",
    230       "stderr": "diagnostics_only",
    231       "config_init": {
    232         "source": "bounded_nonsecret_toml_stdin",
    233         "persistence": "create_new_selected_path_mode_0600_file_and_parent_sync"
    234       },
    235       "config_loader": {
    236         "path": "selected_absolute_explicit_or_canonical_default",
    237         "maximum_utf8_bytes": 1048576,
    238         "no_follow": true,
    239         "regular_file": true,
    240         "single_link": true,
    241         "effective_user_owner": true,
    242         "group_or_other_write": false,
    243         "revalidate_after_read": ["parent_device_inode", "file_device_inode", "file_length"]
    244       },
    245       "config_apply": {
    246         "candidate_argument": "--candidate-config_absolute_path",
    247         "current_source": "selected_config_path",
    248         "mutates_config_files": false
    249       },
    250       "identity": {
    251         "role_argument": "--role_transport_user_discovery",
    252         "init_provider": "configured_encrypted_file_only",
    253         "init_secret_source": "stdin_fixed_binary_v1_117_bytes"
    254       },
    255       "state_init": {
    256         "source_generation": "system_entropy_nonzero_32_bytes",
    257         "created_at": "system_wall_clock",
    258         "existing_state_open": "sealed_intent_discovers_actual_metadata"
    259       },
    260       "runtime": {
    261         "owner": "myc_binary",
    262         "count_per_process": 1,
    263         "worker_threads_default": 4,
    264         "worker_threads_range": [2, 32],
    265         "blocking_threads_default": 8,
    266         "blocking_threads_range": [1, 32],
    267         "cpu_derived_defaults": false
    268       },
    269       "backup": {
    270         "operation_id_argument": "--operation-id",
    271         "target_argument": "--target-new-absolute-directory",
    272         "expected_generation_argument": "--expected-generation",
    273         "confirmation_argument": "--confirm",
    274         "offline_stdout": "exact_canonical_manifest_bytes_no_trailing_newline"
    275       },
    276       "restore": {
    277         "manifest_argument": "--manifest-absolute-file",
    278         "manifest_digest_argument": "--manifest-sha256",
    279         "bundle_argument": "--bundle-absolute-directory",
    280         "maximum_state_bytes_argument": "--maximum-state-bytes",
    281         "confirmation_argument": "--confirm",
    282         "expected_identity_source": "trusted_digest_bound_manifest_before_live_database_open"
    283       },
    284       "run": {
    285         "config_source": "secure_selected_path_loader",
    286         "runtime_owner": "myc_binary",
    287         "graph_owner": "myc-runtime-graph-shutdown"
    288       },
    289       "unsupported_command_success": false
    290     },
    291     "commands": [
    292       { "command": "run", "primary_authority": "daemon" },
    293       { "command": "config init", "primary_authority": "offline", "offline_operation": "config" },
    294       { "command": "config validate", "primary_authority": "offline", "offline_operation": "config" },
    295       { "command": "config show", "primary_authority": "offline", "offline_operation": "config" },
    296       { "command": "config schema", "primary_authority": "offline", "offline_operation": "config" },
    297       { "command": "config apply", "primary_authority": "offline", "offline_operation": "config" },
    298       { "command": "state init", "primary_authority": "offline", "offline_operation": "state_exclusive" },
    299       { "command": "state status", "primary_authority": "live_unix_admin", "admin_route": "/v1/state/status", "offline_operation": "state_read_only", "daemon_unavailable_offline_fallback": true },
    300       { "command": "state backup", "primary_authority": "live_unix_admin", "admin_route": "/v1/state/backup", "offline_operation": "state_read_only", "daemon_unavailable_offline_fallback": true },
    301       { "command": "state restore", "primary_authority": "offline", "offline_operation": "state_exclusive" },
    302       { "command": "state verify", "primary_authority": "offline", "offline_operation": "state_exclusive" },
    303       { "command": "state migrate", "primary_authority": "offline", "offline_operation": "state_exclusive" },
    304       { "command": "identity init", "primary_authority": "offline", "offline_operation": "identity_exclusive" },
    305       { "command": "identity status", "primary_authority": "live_unix_admin", "admin_route": "/v1/identity/status", "offline_operation": "identity_read_only", "daemon_unavailable_offline_fallback": true },
    306       { "command": "identity export-public", "primary_authority": "live_unix_admin", "admin_route": "/v1/identity/public", "offline_operation": "identity_read_only", "daemon_unavailable_offline_fallback": true },
    307       { "command": "status", "primary_authority": "live_unix_admin", "admin_route": "/v1/status", "offline_operation": "state_read_only", "daemon_unavailable_offline_fallback": true },
    308       { "command": "doctor", "primary_authority": "offline", "offline_operation": "doctor" }
    309     ]
    310   },
    311   "doctor": {
    312     "shared_schema": "radroots.service.doctor.v1",
    313     "contract_version": 1,
    314     "execution": "ordered",
    315     "pass_requires_all_scope": true,
    316     "probe_future_cancellation": "drop_stops_or_owns_cleanup",
    317     "detached_probe_work": false,
    318     "statuses": ["pass", "fail", "timeout", "skipped"],
    319     "aggregate_statuses": ["pass", "degraded", "fail"],
    320     "required_skipped": "forbidden",
    321     "summary_max_utf8_bytes": 256,
    322     "report_max_utf8_bytes": 8192,
    323     "raw_error_or_path_allowed": false,
    324     "required_fail_or_timeout_exit": 6,
    325     "checks": [
    326       { "id": "paths_permissions", "required": true, "deadline_ms": 2000, "remediation_code": "correct_path_policy", "scope": ["resolved_path_containment", "owner", "type", "mode"] },
    327       { "id": "writer_lock", "required": true, "deadline_ms": 2000, "remediation_code": "release_writer_lock", "scope": ["state_directory_binding", "writer_lock_state"] },
    328       { "id": "sqlite_schema", "required": true, "deadline_ms": 5000, "remediation_code": "repair_schema", "scope": ["metadata_identity", "migration_history", "schema_catalog"] },
    329       { "id": "sqlite_integrity", "required": true, "deadline_ms": 15000, "remediation_code": "restore_verified_state", "scope": ["integrity_check", "foreign_key_check"] },
    330       { "id": "sqlite_free_space", "required": true, "deadline_ms": 2000, "remediation_code": "free_state_disk_space", "scope": ["state_filesystem_capacity", "minimum_free_bytes"] },
    331       { "id": "identity_binding", "required": true, "deadline_ms": 2000, "remediation_code": "restore_identity_binding", "scope": ["envelope_contract", "credential_reference", "public_identity"] },
    332       { "id": "signer_provider", "required": true, "deadline_ms": 15000, "remediation_code": "repair_signer_provider", "scope": ["capability", "contract_version", "identity", "correlation", "deadline"] },
    333       { "id": "admin_bind_policy", "required": true, "deadline_ms": 2000, "remediation_code": "correct_admin_bind_policy", "scope": ["unix_socket_path", "socket_mode", "peer_authorization"] },
    334       { "id": "operations_bind_policy", "required": true, "deadline_ms": 2000, "remediation_code": "correct_operations_bind_policy", "scope": ["enabled_posture", "listen_address", "bind_policy"] },
    335       { "id": "network_policy", "required": true, "deadline_ms": 2000, "remediation_code": "correct_network_policy", "scope": ["dns_policy", "tls_policy", "relay_url_policy"] },
    336       { "id": "required_relays", "required": true, "deadline_ms": 15000, "remediation_code": "restore_required_relays", "scope": ["required_read_relays", "required_write_relays", "connect_deadline"] },
    337       { "id": "outbox_invariants", "required": true, "deadline_ms": 5000, "remediation_code": "repair_outbox_state", "scope": ["claim_invariants", "retry_state", "exact_response_bytes"] },
    338       { "id": "clock_skew", "required": false, "deadline_ms": 5000, "remediation_code": "correct_clock", "scope": ["wall_clock_skew"] }
    339     ]
    340   },
    341   "exit_codes": [
    342     { "code": 0, "name": "success", "meaning": "successful command or completed graceful first-signal shutdown" },
    343     { "code": 1, "name": "unexpected_internal", "meaning": "unexpected invariant, critical task, or internal failure" },
    344     { "code": 2, "name": "input_or_configuration", "meaning": "CLI, config, validation, or unsupported contract input" },
    345     { "code": 3, "name": "service_or_dependency_unavailable", "meaning": "daemon, required provider, relay, source, or local dependency unavailable" },
    346     { "code": 4, "name": "state_or_identity_unavailable", "meaning": "state, schema, lock, credential, or identity unavailable" },
    347     { "code": 5, "name": "operation_rejected_or_conflict", "meaning": "authorization rejection, idempotency conflict, stale generation, or domain conflict" },
    348     { "code": 6, "name": "doctor_required_check_failed", "meaning": "one or more required doctor checks failed or timed out" }
    349   ],
    350   "tcp_operations": {
    351     "routes": [
    352       { "method": "GET", "path": "/livez", "source": "cached_supervisor_state" },
    353       { "method": "GET", "path": "/readyz", "source": "cached_readiness_state" },
    354       { "method": "GET", "path": "/metrics", "source": "cached_bounded_metrics_snapshot" }
    355     ],
    356     "active_probe_per_request": false,
    357     "additional_routes": false
    358   }
    359 }