changedOutput schema / (root)
Previous value: -nullNew value: +{
+ "description": "The working set for one project.",
+ "properties": {
+ "activeDecisions": {
+ "description": "Decisions in a current, actionable state: proposed, planned, in_progress, executed, validated, or reconsidered.",
+ "items": {
+ "description": "A stored decision, including its alternatives and auditable confidence basis.",
+ "properties": {
+ "actor": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Who performed the write."
+ },
+ "alternatives": {
+ "description": "Rejected alternatives, each with id, label, reasonRejected, status, and the reopenWhen rules that make it reconsiderable.",
+ "type": "array"
+ },
+ "assumptions": {
+ "description": "Assumptions the decision rests on. Searchable content.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "chosen": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "The option that was chosen."
+ },
+ "client": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Which client performed the write."
+ },
+ "confidence": {
+ "description": "Auditable confidence: initial, current (0-1), policy, a history entry per move, and a basis summarising the contributions it was folded from. Legacy records may lack basis.",
+ "type": "object"
+ },
+ "createdAt": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "ISO 8601 creation time."
+ },
+ "evidence": {
+ "description": "Normalised evidence entries: source, type, sourceClass, confidence, observedAt, detail.",
+ "type": "array"
+ },
+ "failedAttempts": {
+ "description": "Attempt identifiers or notes attached to this decision.",
+ "type": "array"
+ },
+ "goal": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "What the decision was trying to achieve."
+ },
+ "id": {
+ "description": "Stable entity identifier.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Entity kind: decision, attempt, memory, fact, relation, review, or alternative.",
+ "type": "string"
+ },
+ "migration": {
+ "description": "Present only on migrated records; records the legacy value a field was mapped from.",
+ "type": "object"
+ },
+ "outcome": {
+ "anyOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "The recorded outcome, or null until one is recorded."
+ },
+ "project": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Project namespace; records imported from a schema that predates projects may carry null."
+ },
+ "reviewAfter": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "ISO 8601 instant after which shadowgraph_maintain marks this decision stale."
+ },
+ "schemaVersion": {
+ "description": "Storage schema version this entity was written under. A value above the build’s own version is preserved rather than downgraded.",
+ "type": "integer"
+ },
+ "sessionId": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Session identifier recorded with the write."
+ },
+ "sourceClass": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Claimed origin class recorded with the write. A claim, never proof."
+ },
+ "sourceRaw": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "The original origin label when it differed from sourceClass. Audit only; never evidence."
+ },
+ "status": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Lifecycle state. Legacy records may carry a value this build does not recognise; shadowgraph_validate reports those."
+ },
+ "supersededBy": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Identifier of the decision that replaced this one."
+ },
+ "supersedes": {
+ "description": "Identifiers of decisions this one replaced.",
+ "type": "array"
+ },
+ "title": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Short name of the decision."
+ },
+ "updatedAt": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "ISO 8601 time of the last change."
+ }
+ },
+ "required": [
+ "id",
+ "kind"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "completeness": {
+ "description": "Per-collection completeness. context returns five named collections, so one page object cannot describe it.",
+ "properties": {
+ "collections": {
+ "description": "One entry per returned collection.",
+ "properties": {
+ "activeDecisions": {
+ "description": "Counts for activeDecisions.",
+ "properties": {
+ "hasMore": {
+ "description": "True when this collection was truncated.",
+ "type": "boolean"
+ },
+ "omitted": {
+ "description": "total minus returned for this collection.",
+ "minimum": 0,
+ "type": "integer"
+ },
+ "returned": {
+ "description": "Items returned for this collection.",
+ "minimum": 0,
+ "type": "integer"
+ },
+ "total": {
+ "description": "Items that matched for this collection.",
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "returned",
+ "total",
+ "hasMore",
+ "omitted"
+ ],
+ "type": "object"
+ },
+ "failedAttemptsToAvoid": {
+ "description": "Counts for failedAttemptsToAvoid.",
+ "properties": {
+ "hasMore": {
+ "description": "True when this collection was truncated.",
+ "type": "boolean"
+ },
+ "omitted": {
+ "description": "total minus returned for this collection.",
+ "minimum": 0,
+ "type": "integer"
+ },
+ "returned": {
+ "description": "Items returned for this collection.",
+ "minimum": 0,
+ "type": "integer"
+ },
+ "total": {
+ "description": "Items that matched for this collection.",
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "returned",
+ "total",
+ "hasMore",
+ "omitted"
+ ],
+ "type": "object"
+ },
+ "openReviews": {
+ "description": "Counts for openReviews.",
+ "properties": {
+ "hasMore": {
+ "description": "True when this collection was truncated.",
+ "type": "boolean"
+ },
+ "omitted": {
+ "description": "total minus returned for this collection.",
+ "minimum": 0,
+ "type": "integer"
+ },
+ "returned": {
+ "description": "Items returned for this collection.",
+ "minimum": 0,
+ "type": "integer"
+ },
+ "total": {
+ "description": "Items that matched for this collection.",
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "returned",
+ "total",
+ "hasMore",
+ "omitted"
+ ],
+ "type": "object"
+ },
+ "staleAssumptions": {
+ "description": "Counts for staleAssumptions.",
+ "properties": {
+ "hasMore": {
+ "description": "True when this collection was truncated.",
+ "type": "boolean"
+ },
+ "omitted": {
+ "description": "total minus returned for this collection.",
+ "minimum": 0,
+ "type": "integer"
+ },
+ "returned": {
+ "description": "Items returned for this collection.",
+ "minimum": 0,
+ "type": "integer"
+ },
+ "total": {
+ "description": "Items that matched for this collection.",
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "returned",
+ "total",
+ "hasMore",
+ "omitted"
+ ],
+ "type": "object"
+ },
+ "suggestedQuestions": {
+ "description": "Counts for suggestedQuestions.",
+ "properties": {
+ "hasMore": {
+ "description": "True when this collection was truncated.",
+ "type": "boolean"
+ },
+ "omitted": {
+ "description": "total minus returned for this collection.",
+ "minimum": 0,
+ "type": "integer"
+ },
+ "returned": {
+ "description": "Items returned for this collection.",
+ "minimum": 0,
+ "type": "integer"
+ },
+ "total": {
+ "description": "Items that matched for this collection.",
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "returned",
+ "total",
+ "hasMore",
+ "omitted"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "activeDecisions",
+ "staleAssumptions",
+ "failedAttemptsToAvoid",
+ "openReviews",
+ "suggestedQuestions"
+ ],
+ "type": "object"
+ },
+ "complete": {
+ "description": "True only when no collection was truncated.",
+ "type": "boolean"
+ },
+ "limitSource": {
+ "description": "Whose choice bounded the collections.",
+ "enum": [
+ "caller",
+ "default"
+ ],
+ "type": "string"
+ },
+ "losslessItems": {
+ "description": "Always true: items are full records, never summaries.",
+ "type": "boolean"
+ },
+ "scope": {
+ "description": "The project this result covers.",
+ "type": "object"
+ }
+ },
+ "required": [
+ "scope",
+ "complete",
+ "limitSource",
+ "losslessItems",
+ "collections"
+ ],
+ "type": "object"
+ },
+ "failedAttemptsToAvoid": {
+ "description": "Attempts whose result mentions failure, regression, or error.",
+ "items": {
+ "description": "A stored attempt and its result.",
+ "properties": {
+ "actor": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Who performed the write."
+ },
+ "client": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Which client performed the write."
+ },
+ "createdAt": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "ISO 8601 creation time."
+ },
+ "environment": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Where it was tried."
+ },
+ "id": {
+ "description": "Stable entity identifier.",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Entity kind: decision, attempt, memory, fact, relation, review, or alternative.",
+ "type": "string"
+ },
+ "project": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Project namespace; records imported from a schema that predates projects may carry null."
+ },
+ "reason": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Why it turned out that way."
+ },
+ "relatedTo": {
+ "description": "Identifiers of related entities.",
+ "type": "array"
+ },
+ "result": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "What happened."
+ },
+ "reusableWhen": {
+ "description": "Conditions under which the attempt is worth repeating.",
+ "type": "array"
+ },
+ "schemaVersion": {
+ "description": "Storage schema version this entity was written under. A value above the build’s own version is preserved rather than downgraded.",
+ "type": "integer"
+ },
+ "sessionId": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Session identifier recorded with the write."
+ },
+ "solution": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "What was tried."
+ },
+ "sourceClass": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Claimed origin class recorded with the write. A claim, never proof."
+ },
+ "sourceRaw": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "The original origin label when it differed from sourceClass. Audit only; never evidence."
+ },
+ "updatedAt": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "ISO 8601 time of the last change."
+ }
+ },
+ "required": [
+ "id",
+ "kind"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "openReviews": {
+ "description": "Decisions currently due for reconsideration.",
+ "items": {
+ "description": "One decision whose rejected alternatives are due for reconsideration.",
+ "properties": {
+ "alternativesToReconsider": {
+ "description": "Labels of the alternatives to look at again; all of them when the trigger was not alternative-specific.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "decisionId": {
+ "description": "The decision to reconsider.",
+ "type": "string"
+ },
+ "reason": {
+ "description": "Comma-separated causes: the fact keys whose reopenWhen rules matched, \"review date reached\", or \"decision outcome failed\".",
+ "type": "string"
+ },
+ "title": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Decision title, when the stored decision has one."
+ }
+ },
+ "required": [
+ "decisionId",
+ "reason",
+ "alternativesToReconsider"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "project": {
+ "description": "The project this context describes.",
+ "type": "string"
+ },
+ "staleAssumptions": {
+ "description": "Facts that are no longer active, such as superseded or expired ones, which earlier decisions may still rest on.",
+ "items": {
+ "description": "A stored fact with its provenance claim and validity window.",
+ "properties": {
+ "actor": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Who performed the write."
+ },
+ "client": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Which client performed the write."
+ },
+ "confidence": {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Caller-declared confidence in the observation, 0-1."
+ },
+ "createdAt": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "ISO 8601 creation time."
+ },
+ "expiresAt": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Caller-declared expiry instant, or null."
+ },
+ "id": {
+ "description": "Stable entity identifier.",
+ "type": "string"
+ },
+ "key": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Fact name, unique per project among active facts."
+ },
+ "kind": {
+ "description": "Entity kind: decision, attempt, memory, fact, relation, review, or alternative.",
+ "type": "string"
+ },
+ "observedAt": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "ISO 8601 time the fact was observed."
+ },
+ "project": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Project namespace; records imported from a schema that predates projects may carry null."
+ },
+ "schemaVersion": {
+ "description": "Storage schema version this entity was written under. A value above the build’s own version is preserved rather than downgraded.",
+ "type": "integer"
+ },
+ "sessionId": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Session identifier recorded with the write."
+ },
+ "source": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Legacy alias of sourceClass, retained for compatibility."
+ },
+ "sourceClass": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Claimed origin class recorded with the write. A claim, never proof."
+ },
+ "sourceRaw": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "The original origin label when it differed from sourceClass. Audit only; never evidence."
+ },
+ "status": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "active, superseded, or expired."
+ },
+ "temporal": {
+ "description": "Bi-temporal window: validFrom, validTo, recordedAt, invalidatedAt.",
+ "type": "object"
+ },
+ "updatedAt": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "ISO 8601 time of the last change."
+ },
+ "validityPolicy": {
+ "description": "Declared expiry inputs and the effective expiration boundary derived from them.",
+ "type": "object"
+ },
+ "value": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "null"
+ },
+ {
+ "type": "array"
+ },
+ {
+ "type": "object"
+ }
+ ],
+ "description": "The observed value, any lossless JSON value."
+ },
+ "verification": {
+ "description": "Present only on a signed verification: the attestation this build checked.",
+ "type": "object"
+ },
+ "verificationStatus": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "unverified, contradicted, expired, or verified. Only the separately configured signed-evidence verifier can produce verified."
+ }
+ },
+ "required": [
+ "key"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "suggestedQuestions": {
+ "description": "Questions for the low-confidence decisions in this project.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "project",
+ "activeDecisions",
+ "staleAssumptions",
+ "failedAttemptsToAvoid",
+ "openReviews",
+ "suggestedQuestions",
+ "completeness"
+ ],
+ "type": "object"
+}