addedInput schema / properties / asserted_facts
Added value: +{
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "confidence": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+ },
+ "path": {
+ "pattern": "^/",
+ "type": "string"
+ },
+ "source": {
+ "additionalProperties": false,
+ "properties": {
+ "id": {
+ "maxLength": 256,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "enum": [
+ "caller",
+ "dm",
+ "player",
+ "agent",
+ "transcript",
+ "sensor",
+ "imported-state",
+ "system"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "path",
+ "source",
+ "confidence"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+}
addedInput schema / properties / event / properties / amount / minimum
Added value: +0
addedInput schema / properties / event / properties / feet / minimum
Added value: +0
addedInput schema / properties / event / properties / spell / additionalProperties
Added value: +false
addedInput schema / properties / event / properties / spell / properties
Added value: +{
+ "level": {
+ "maximum": 9,
+ "minimum": 0,
+ "type": "integer"
+ }
+}
addedInput schema / properties / event / properties / spell / required
Added value: +[
+ "level"
+]
addedInput schema / properties / event / properties / state_patch / description
Added value: +"optional partial state update for a recorded table ruling; supplied fields are validated against state_schema.json before lineage is stamped"
addedInput schema / properties / idempotency_key
Added value: +{
+ "description": "stable caller-owned event identity; use the Discord message/event ID when applicable",
+ "maxLength": 256,
+ "minLength": 1,
+ "type": "string"
+}
addedInput schema / properties / policy_context
Added value: +{
+ "additionalProperties": false,
+ "properties": {
+ "campaign_id": {
+ "maxLength": 256,
+ "minLength": 1,
+ "type": "string"
+ },
+ "encounter_id": {
+ "maxLength": 256,
+ "minLength": 1,
+ "type": "string"
+ },
+ "request_id": {
+ "maxLength": 256,
+ "minLength": 1,
+ "type": "string"
+ },
+ "session_id": {
+ "maxLength": 256,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "type": "object"
+}
addedInput schema / properties / state / additionalProperties
Added value: +false
removedInput schema / properties / state / description
Removed value: -"current state per the adapter's state_schema.json (state travels; it never resides here)"
addedInput schema / properties / state / properties
Added value: +{
+ "concentration_on": {
+ "description": "name of the effect being concentrated on, or null",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "conditions": {
+ "items": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "dead": {
+ "type": "boolean"
+ },
+ "death_save_failures": {
+ "maximum": 3,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "death_save_successes": {
+ "maximum": 3,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "exhaustion_level": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "hp": {
+ "description": "current hit points",
+ "minimum": 0,
+ "type": "integer"
+ },
+ "hp_max": {
+ "description": "hit point maximum",
+ "minimum": 1,
+ "type": "integer"
+ },
+ "immunities": {
+ "description": "damage types (or 'all') the creature has Immunity to — zeroed",
+ "items": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "is_monster": {
+ "description": "true = monster (standard damage defaults to death at 0 HP); explicit dead false records the GM's choice to use character-style unconsciousness and death saves",
+ "type": "boolean"
+ },
+ "lineage": {
+ "additionalProperties": false,
+ "description": "kernel-stamped transition chain metadata; self commits to the game state plus every other lineage field",
+ "properties": {
+ "event": {
+ "type": "object"
+ },
+ "idempotency_key": {
+ "description": "stable caller event key, or a deterministic auto key when omitted",
+ "maxLength": 256,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "enum": [
+ "rule",
+ "ruling"
+ ],
+ "type": "string"
+ },
+ "prev": {
+ "description": "canonical bootstrap-state hash or the prior stamped state's lineage.self",
+ "minLength": 1,
+ "type": "string"
+ },
+ "rule_ids": {
+ "items": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "self": {
+ "description": "SHA-256 prefix over the canonical state plus seq, prev, event, rule_ids, and kind",
+ "minLength": 1,
+ "type": "string"
+ },
+ "seq": {
+ "minimum": 1,
+ "type": "integer"
+ },
+ "state_precondition_hash": {
+ "description": "full canonical hash of the state this transition evaluated",
+ "pattern": "^sha256:[0-9a-f]{64}$",
+ "type": "string"
+ },
+ "transition_id": {
+ "description": "stable identity binding adapter, event, idempotency key, and precondition",
+ "pattern": "^sha256:[0-9a-f]{64}$",
+ "type": "string"
+ }
+ },
+ "required": [
+ "seq",
+ "prev",
+ "event",
+ "rule_ids",
+ "kind",
+ "self"
+ ],
+ "type": "object"
+ },
+ "resistances": {
+ "description": "damage types (or 'all') the creature has Resistance to — halved",
+ "items": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "speed": {
+ "minimum": 0,
+ "type": "integer"
+ },
+ "stable": {
+ "type": "boolean"
+ },
+ "turn": {
+ "additionalProperties": false,
+ "properties": {
+ "action_spent": {
+ "type": "boolean"
+ },
+ "bonus_action_spent": {
+ "type": "boolean"
+ },
+ "free_interaction_spent": {
+ "type": "boolean"
+ },
+ "movement_ft_spent": {
+ "minimum": 0,
+ "type": "integer"
+ },
+ "reaction_spent": {
+ "type": "boolean"
+ },
+ "spell_slots_spent_this_turn": {
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "action_spent",
+ "bonus_action_spent",
+ "reaction_spent",
+ "free_interaction_spent",
+ "movement_ft_spent",
+ "spell_slots_spent_this_turn"
+ ],
+ "type": "object"
+ },
+ "vulnerabilities": {
+ "description": "damage types (or 'all') the creature has Vulnerability to — doubled",
+ "items": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "type": "array"
+ }
+}
addedInput schema / properties / state / required
Added value: +[
+ "speed",
+ "conditions",
+ "turn"
+]
addedInput schema / properties / table_decision
Added value: +{
+ "additionalProperties": false,
+ "properties": {
+ "kind": {
+ "enum": [
+ "ruling",
+ "override"
+ ],
+ "type": "string"
+ },
+ "lineage": {
+ "additionalProperties": false,
+ "properties": {
+ "affected_query": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "affected_rule_ids": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "authority": {
+ "enum": [
+ "table-ruling"
+ ],
+ "type": "string"
+ },
+ "source_rule_unchanged": {
+ "enum": [
+ true
+ ],
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "authority",
+ "affected_query",
+ "affected_rule_ids",
+ "source_rule_unchanged"
+ ],
+ "type": "object"
+ },
+ "origin": {
+ "additionalProperties": false,
+ "properties": {
+ "id": {
+ "maxLength": 256,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "enum": [
+ "dm"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ "outcome": {
+ "maxLength": 1024,
+ "minLength": 1,
+ "type": "string"
+ },
+ "policy_id": {
+ "maxLength": 256,
+ "minLength": 1,
+ "type": "string"
+ },
+ "reason": {
+ "maxLength": 2048,
+ "minLength": 1,
+ "type": "string"
+ },
+ "reversible": {
+ "type": "boolean"
+ },
+ "scope": {
+ "additionalProperties": false,
+ "properties": {
+ "id": {
+ "maxLength": 256,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "enum": [
+ "once",
+ "encounter",
+ "session",
+ "campaign"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ "visibility": {
+ "enum": [
+ "dm-only",
+ "table"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "outcome",
+ "origin",
+ "scope"
+ ],
+ "type": "object"
+}
addedInput schema / properties / table_policy
Added value: +{
+ "additionalProperties": false,
+ "properties": {
+ "policies": {
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "author": {
+ "additionalProperties": false,
+ "properties": {
+ "id": {
+ "maxLength": 256,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "enum": [
+ "dm"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ "decision": {
+ "additionalProperties": false,
+ "properties": {
+ "kind": {
+ "enum": [
+ "ruling",
+ "override"
+ ],
+ "type": "string"
+ },
+ "outcome": {
+ "maxLength": 1024,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "outcome"
+ ],
+ "type": "object"
+ },
+ "enabled": {
+ "type": "boolean"
+ },
+ "id": {
+ "maxLength": 256,
+ "minLength": 1,
+ "type": "string"
+ },
+ "query": {
+ "additionalProperties": false,
+ "properties": {
+ "match": {
+ "additionalProperties": {},
+ "type": "object"
+ },
+ "type": {
+ "maxLength": 256,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "match"
+ ],
+ "type": "object"
+ },
+ "reason": {
+ "maxLength": 2048,
+ "minLength": 1,
+ "type": "string"
+ },
+ "reversible": {
+ "type": "boolean"
+ },
+ "scope": {
+ "additionalProperties": false,
+ "properties": {
+ "id": {
+ "maxLength": 256,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "enum": [
+ "once",
+ "encounter",
+ "session",
+ "campaign"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "id"
+ ],
+ "type": "object"
+ },
+ "visibility": {
+ "enum": [
+ "dm-only",
+ "table"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "id",
+ "author",
+ "reason",
+ "query",
+ "decision",
+ "scope",
+ "visibility",
+ "reversible"
+ ],
+ "type": "object"
+ },
+ "maxItems": 1000,
+ "type": "array"
+ },
+ "schema": {
+ "enum": [
+ "srdcheck.table-policy/1.0"
+ ],
+ "type": "string"
+ },
+ "table": {
+ "maxLength": 256,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "schema",
+ "policies"
+ ],
+ "type": "object"
+}
addedOutput schema / properties / assumptions
Added value: +{
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+}
addedOutput schema / properties / checked_scope
Added value: +{
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+}
addedOutput schema / properties / coverage_level
Added value: +{
+ "enum": [
+ "unknown",
+ "registry-only",
+ "budget-only",
+ "rule-surface-complete",
+ "full-context-checkable"
+ ],
+ "type": "string"
+}
addedOutput schema / properties / explanation
Added value: +{
+ "additionalProperties": false,
+ "properties": {
+ "rule": {
+ "type": "string"
+ },
+ "situation_facts": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "state_mutation": {
+ "type": "string"
+ },
+ "table_decision": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "rule",
+ "situation_facts",
+ "table_decision",
+ "state_mutation"
+ ],
+ "type": "object"
+}
addedOutput schema / properties / facts
Added value: +{
+ "additionalProperties": false,
+ "properties": {
+ "asserted": {
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "confidence": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "path": {
+ "type": "string"
+ },
+ "source": {
+ "additionalProperties": false,
+ "properties": {
+ "id": {
+ "maxLength": 256,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "enum": [
+ "caller",
+ "dm",
+ "player",
+ "agent",
+ "transcript",
+ "sensor",
+ "imported-state",
+ "system"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ "value": {}
+ },
+ "required": [
+ "path",
+ "value",
+ "source",
+ "confidence"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "consumed": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "derived": {
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "basis": {
+ "enum": [
+ "rule_result"
+ ],
+ "type": "string"
+ },
+ "path": {
+ "type": "string"
+ },
+ "value": {}
+ },
+ "required": [
+ "path",
+ "value",
+ "basis"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "missing": {
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "path": {
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "path"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "asserted",
+ "consumed",
+ "derived",
+ "missing"
+ ],
+ "type": "object"
+}
addedOutput schema / properties / rule_result
Added value: +{
+ "additionalProperties": false,
+ "properties": {
+ "adapter": {
+ "type": "string"
+ },
+ "authority": {
+ "enum": [
+ "rules-advisory"
+ ],
+ "type": "string"
+ },
+ "citations": {
+ "type": "array"
+ },
+ "exit_code": {
+ "type": "integer"
+ },
+ "rule_ids": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "verdict": {
+ "type": "string"
+ },
+ "why": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "authority",
+ "verdict",
+ "exit_code",
+ "why",
+ "adapter",
+ "rule_ids",
+ "citations"
+ ],
+ "type": "object"
+}
addedOutput schema / properties / state_mutation
Added value: +{
+ "additionalProperties": false,
+ "properties": {
+ "operations": {
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "op": {
+ "enum": [
+ "replace"
+ ],
+ "type": "string"
+ },
+ "path": {
+ "enum": [
+ "/"
+ ],
+ "type": "string"
+ },
+ "value": {}
+ },
+ "required": [
+ "op",
+ "path",
+ "value"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "status": {
+ "enum": [
+ "none",
+ "proposed"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "status",
+ "operations"
+ ],
+ "type": "object"
+}
addedOutput schema / properties / table_decision
Added value: +{
+ "additionalProperties": false,
+ "properties": {
+ "kind": {
+ "enum": [
+ "ruling",
+ "override"
+ ],
+ "type": "string"
+ },
+ "lineage": {
+ "additionalProperties": false,
+ "properties": {
+ "affected_query": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "affected_rule_ids": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "authority": {
+ "enum": [
+ "table-ruling"
+ ],
+ "type": "string"
+ },
+ "source_rule_unchanged": {
+ "enum": [
+ true
+ ],
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "authority",
+ "affected_query",
+ "affected_rule_ids",
+ "source_rule_unchanged"
+ ],
+ "type": "object"
+ },
+ "origin": {
+ "additionalProperties": false,
+ "properties": {
+ "id": {
+ "maxLength": 256,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "enum": [
+ "dm"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ "outcome": {
+ "maxLength": 1024,
+ "minLength": 1,
+ "type": "string"
+ },
+ "policy_id": {
+ "maxLength": 256,
+ "minLength": 1,
+ "type": "string"
+ },
+ "reason": {
+ "maxLength": 2048,
+ "minLength": 1,
+ "type": "string"
+ },
+ "reversible": {
+ "type": "boolean"
+ },
+ "scope": {
+ "additionalProperties": false,
+ "properties": {
+ "id": {
+ "maxLength": 256,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "enum": [
+ "once",
+ "encounter",
+ "session",
+ "campaign"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ "visibility": {
+ "enum": [
+ "dm-only",
+ "table"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "outcome",
+ "origin",
+ "scope"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+}
addedOutput schema / properties / unchecked_scope
Added value: +{
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+}
changedOutput schema / required
Previous value: -[
- "verdict",
- "exit_code",
- "why",
- "citations",
- "rule_ids",
- "adapter"
-]New value: +[
+ "verdict",
+ "exit_code",
+ "why",
+ "citations",
+ "rule_ids",
+ "adapter",
+ "coverage_level",
+ "checked_scope",
+ "unchecked_scope",
+ "assumptions",
+ "facts",
+ "rule_result",
+ "table_decision",
+ "state_mutation",
+ "explanation"
+]
changedOutput schema / x-srdcheck-schema-version
Previous value: -"1.0"New value: +"4.0"