addedInput schema / properties / accessId
Added value: +{
+ "description": "Grant ID, rechecked at use.",
+ "type": "string"
+}
addedInput schema / properties / asOf
Added value: +{
+ "description": "ISO 8601 instant for relevant: facts and memories valid then, recency ordered from it, and lines derived as of it.",
+ "type": "string"
+}
addedInput schema / properties / compact
Added value: +{
+ "description": "Deliver each relevant record as a derived claim line (T1) instead of the full record. A line that cannot carry its decisive meaning is delivered as the full record.",
+ "type": "boolean"
+}
addedInput schema / properties / focalId
Added value: +{
+ "description": "Entity id to rank graph neighbours from. An id outside the scope reaches nothing, like an unknown one.",
+ "type": "string"
+}
addedInput schema / properties / grantId
Added value: +{
+ "description": "Alias for accessId; conflicting identifiers are refused.",
+ "type": "string"
+}
addedInput schema / properties / originId
Added value: +{
+ "description": "Capture-origin id; with no project the record belongs to it alone.",
+ "type": "string"
+}
changedInput schema / properties / project / description
Previous value: -"Project namespace. Defaults to \"default\"; an empty string is rejected."New value: +"Project or confirmed workspace binding; otherwise origin-only. No identity returns an empty scoped view."
addedInput schema / properties / query
Added value: +{
+ "description": "Free text. With it or focalId, the response adds relevant: the records in scope that the lexical or graph signal ranks, ahead of the working set. No semantic signal is computed on this read.",
+ "type": "string"
+}
changedOutput schema / properties / activeDecisions / description
Previous value: -"Decisions in a current, actionable state: proposed, planned, in_progress, executed, validated, or reconsidered."New value: +"Decisions whose lifecycle status is current: proposed, planned, in_progress, executed, validated, or reconsidered."
changedOutput schema / properties / activeDecisions / items / properties / project / description
Previous value: -"Project namespace; records imported from a schema that predates projects may carry null."New value: +"Project namespace; null for an unattributed record or one imported from before projects."
addedOutput schema / properties / belowConfidenceThreshold
Added value: +{
+ "description": "Decisions of any status whose recorded confidence is below the policy threshold.",
+ "items": {
+ "description": "One decision whose recorded confidence is below the policy threshold.",
+ "properties": {
+ "confidence": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "null"
+ },
+ {
+ "type": "array"
+ },
+ {
+ "type": "object"
+ }
+ ],
+ "description": "Recorded current confidence, normally 0-1; null when none is recorded, which counts as below."
+ },
+ "decisionId": {
+ "description": "The decision.",
+ "type": "string"
+ },
+ "status": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "null"
+ },
+ {
+ "type": "array"
+ },
+ {
+ "type": "object"
+ }
+ ],
+ "description": "Its lifecycle status as recorded, whatever it is; null when none is recorded."
+ },
+ "threshold": {
+ "description": "The policy threshold the confidence is below.",
+ "type": "number"
+ },
+ "title": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Decision title, when the stored decision has one."
+ }
+ },
+ "required": [
+ "decisionId",
+ "status",
+ "confidence",
+ "threshold"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+}
changedOutput schema / properties / completeness / description
Previous value: -"Per-collection completeness. context returns five named collections, so one page object cannot describe it."New value: +"Per-collection completeness. context returns several named collections, so one page object cannot describe it."
addedOutput schema / properties / completeness / properties / capture
Added value: +{
+ "description": "Scoped unprocessed capture, when present.",
+ "properties": {
+ "blocked": {
+ "description": "Items blocked.",
+ "minimum": 0,
+ "type": "integer"
+ },
+ "expired": {
+ "description": "Raw expired before extraction; a gap, not backlog.",
+ "minimum": 0,
+ "type": "integer"
+ },
+ "extractionAvailable": {
+ "description": "Whether extraction runs.",
+ "type": "boolean"
+ },
+ "failed": {
+ "description": "Items failed.",
+ "minimum": 0,
+ "type": "integer"
+ },
+ "gaps": {
+ "description": "Capture refusal/unread gaps; no identities.",
+ "items": {
+ "properties": {
+ "from": {
+ "description": "Gap start time.",
+ "type": "string"
+ },
+ "reason": {
+ "description": "Why capture has a gap.",
+ "enum": [
+ "maxQueueDepth",
+ "maxStoreBytes",
+ "maxItemsPerSession",
+ "session_in_another_project",
+ "raw_expired",
+ "transcript_unrecognised",
+ "session_left_project",
+ "transcript_rewritten",
+ "transcript_reanchored",
+ "transcript_incomplete_at_end",
+ "transcript_line_oversized",
+ "tool_calls_not_captured"
+ ],
+ "type": "string"
+ },
+ "sessions": {
+ "description": "Sessions covered by this gap.",
+ "minimum": 0,
+ "type": "integer"
+ },
+ "to": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "End time, if known."
+ }
+ },
+ "required": [
+ "reason",
+ "from",
+ "to"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "limited": {
+ "description": "Admission limits; accepted items kept.",
+ "items": {
+ "properties": {
+ "ceiling": {
+ "description": "The limit value.",
+ "minimum": 0,
+ "type": "integer"
+ },
+ "limit": {
+ "description": "The limit reached.",
+ "enum": [
+ "maxQueueDepth",
+ "maxStoreBytes"
+ ],
+ "type": "string"
+ },
+ "since": {
+ "description": "When refusal began.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "limit",
+ "ceiling",
+ "since"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "oldestPendingAt": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Oldest pending capture."
+ },
+ "pending": {
+ "description": "Items waiting.",
+ "minimum": 0,
+ "type": "integer"
+ },
+ "processing": {
+ "description": "Items claimed.",
+ "minimum": 0,
+ "type": "integer"
+ },
+ "workerErrors": {
+ "description": "Scoped worker stops; fixed codes.",
+ "items": {
+ "properties": {
+ "at": {
+ "description": "Stop timestamp.",
+ "type": "string"
+ },
+ "reason": {
+ "description": "Worker stop code.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "reason",
+ "at"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "pending",
+ "processing",
+ "failed",
+ "blocked",
+ "oldestPendingAt",
+ "extractionAvailable",
+ "limited",
+ "gaps"
+ ],
+ "type": "object"
+}
addedOutput schema / properties / completeness / properties / collections / properties / belowConfidenceThreshold
Added value: +{
+ "description": "Counts for belowConfidenceThreshold.",
+ "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"
+}
addedOutput schema / properties / completeness / properties / collections / properties / conditionDiagnostics
Added value: +{
+ "description": "Counts for conditionDiagnostics.",
+ "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"
+}
addedOutput schema / properties / completeness / properties / collections / properties / failedAttempts
Added value: +{
+ "description": "Counts for failedAttempts.",
+ "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"
+ },
+ "undetermined": {
+ "description": "Captured attempts with no resultClass: undetermined, in no collection.",
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "returned",
+ "total",
+ "hasMore",
+ "omitted",
+ "undetermined"
+ ],
+ "type": "object"
+}
removedOutput schema / properties / completeness / properties / collections / properties / failedAttemptsToAvoid
Removed value: -{
- "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"
-}
addedOutput schema / properties / completeness / properties / collections / properties / firedConditions
Added value: +{
+ "description": "Counts for firedConditions.",
+ "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"
+}
removedOutput schema / properties / completeness / properties / collections / properties / openReviews
Removed value: -{
- "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"
-}
addedOutput schema / properties / completeness / properties / collections / properties / reusableAttempts
Added value: +{
+ "description": "Counts for reusableAttempts.",
+ "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"
+}
removedOutput schema / properties / completeness / properties / collections / properties / suggestedQuestions
Removed value: -{
- "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"
-}
changedOutput schema / properties / completeness / properties / collections / required
Previous value: -[
- "activeDecisions",
- "staleAssumptions",
- "failedAttemptsToAvoid",
- "openReviews",
- "suggestedQuestions"
-]New value: +[
+ "activeDecisions",
+ "staleAssumptions",
+ "failedAttempts",
+ "firedConditions",
+ "belowConfidenceThreshold"
+]
changedOutput schema / properties / completeness / properties / complete / description
Previous value: -"True only when no collection was truncated."New value: +"Known-candidate coverage; false for unresolved scope, withheld detail or pending capture; not recall."
addedOutput schema / properties / completeness / properties / limitation
Added value: +{
+ "description": "Limits of this view.",
+ "properties": {
+ "code": {
+ "description": "Stable limitation code.",
+ "type": "string"
+ },
+ "detail": {
+ "description": "What this view cannot establish.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "code",
+ "detail"
+ ],
+ "type": "object"
+}
changedOutput schema / properties / completeness / properties / losslessItems / description
Previous value: -"Always true: items are full records, never summaries."New value: +"False when returned items have withheld or transformed detail."
addedOutput schema / properties / completeness / properties / quarantined
Added value: +{
+ "description": "Items withheld as possibly purged.",
+ "minimum": 0,
+ "type": "integer"
+}
changedOutput schema / properties / completeness / properties / scope / description
Previous value: -"The project this result covers."New value: +"The resolved read boundary."
addedOutput schema / properties / completeness / properties / scope / properties
Added value: +{
+ "grant": {
+ "anyOf": [
+ {
+ "type": "null"
+ },
+ {
+ "properties": {
+ "accessId": {
+ "description": "The currently rechecked grant identifier.",
+ "type": "string"
+ },
+ "expiresAt": {
+ "description": "Earliest effective expiry of this read authority.",
+ "type": "string"
+ },
+ "surface": {
+ "description": "Actual runtime surface of this read.",
+ "enum": [
+ "cli",
+ "mcp",
+ "http"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "accessId",
+ "expiresAt",
+ "surface"
+ ],
+ "type": "object"
+ }
+ ],
+ "description": "Effective rechecked grant, or null."
+ },
+ "originPresented": {
+ "description": "Usable origin presented; not project selection.",
+ "type": "boolean"
+ },
+ "project": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Resolved project, or null."
+ },
+ "requestState": {
+ "description": "Whether a project was resolved.",
+ "enum": [
+ "project_selected",
+ "project_unresolved"
+ ],
+ "type": "string"
+ }
+}
addedOutput schema / properties / completeness / properties / scope / required
Added value: +[
+ "project",
+ "requestState",
+ "originPresented",
+ "grant"
+]
addedOutput schema / properties / conditionDiagnostics
Added value: +{
+ "description": "Conditions that could not be settled, or that rest on facts which disagree. Neither a breach nor a confirmed-safe decision.",
+ "items": {
+ "description": "Unresolved or contested conditions on one decision or attempt. Not a review signal: neither a breach nor a confirmed-safe decision.",
+ "properties": {
+ "attemptId": {
+ "description": "The attempt involved, for reusableWhen conditions.",
+ "type": "string"
+ },
+ "conditions": {
+ "description": "The unresolved or contested conditions.",
+ "items": {
+ "description": "One evaluated reopen condition. Verdict \"unknown\" means it could not be evaluated from available evidence, which is not a pass.",
+ "properties": {
+ "alternativeId": {
+ "description": "Alternative carrying it.",
+ "type": "string"
+ },
+ "alternativeLabel": {
+ "description": "Label of that alternative.",
+ "type": "string"
+ },
+ "attemptId": {
+ "description": "Attempt the condition belongs to, for a reusableWhen rule.",
+ "type": "string"
+ },
+ "conflictingEvidence": {
+ "description": "Equally applicable facts that disagree. The verdict rests on the deterministic winner.",
+ "items": {
+ "description": "A fact a verdict came from. Unrecorded fields are omitted, never filled in.",
+ "properties": {
+ "factId": {
+ "description": "The observed fact.",
+ "type": "string"
+ },
+ "observedAt": {
+ "description": "When observed, if recorded.",
+ "type": "string"
+ },
+ "sourceClass": {
+ "description": "Provenance class, if recorded.",
+ "type": "string"
+ },
+ "validFrom": {
+ "description": "Validity start, if recorded.",
+ "type": "string"
+ },
+ "value": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "null"
+ },
+ {
+ "type": "array"
+ },
+ {
+ "type": "object"
+ }
+ ],
+ "description": "A stored value, any lossless JSON value."
+ },
+ "verificationStatus": {
+ "description": "Verification status, if recorded.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "factId",
+ "value"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "decisionId": {
+ "description": "Decision the condition belongs to, for a reopenWhen rule.",
+ "type": "string"
+ },
+ "evidence": {
+ "description": "Provenance of the value used.",
+ "type": "object"
+ },
+ "expected": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "null"
+ },
+ {
+ "type": "array"
+ },
+ {
+ "type": "object"
+ }
+ ],
+ "description": "A stored value, any lossless JSON value."
+ },
+ "key": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Fact key read."
+ },
+ "observed": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "null"
+ },
+ {
+ "type": "array"
+ },
+ {
+ "type": "object"
+ }
+ ],
+ "description": "A stored value, any lossless JSON value."
+ },
+ "operator": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Operator the rule declared."
+ },
+ "reason": {
+ "description": "Why this verdict.",
+ "type": "string"
+ },
+ "unit": {
+ "description": "Unit the rule declared, if any.",
+ "type": "string"
+ },
+ "verdict": {
+ "description": "Evaluation result.",
+ "enum": [
+ "true",
+ "false",
+ "unknown"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "operator",
+ "verdict",
+ "reason"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "decisionId": {
+ "description": "The decision involved, for reopenWhen conditions.",
+ "type": "string"
+ },
+ "title": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Decision title, when stored."
+ }
+ },
+ "required": [
+ "conditions"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+}
addedOutput schema / properties / failedAttempts
Added value: +{
+ "description": "Attempts that failed: resultClass failed or, with none and not captured, a result mentioning failure, regression, or error.",
+ "items": {
+ "description": "A stored attempt and its result.",
+ "properties": {
+ "actor": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Who performed the write."
+ },
+ "causalClaim": {
+ "description": "The cause, attributed apart from the attempt: state recorded (the reason, agent_claimed), unknown, not_recorded, or legacy_freetext (a reason stored before causes were, never classed or evidenced).",
+ "type": "object"
+ },
+ "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; null for an unattributed record or one imported from before projects."
+ },
+ "reason": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Why it turned out that way, verbatim as recorded."
+ },
+ "relatedTo": {
+ "description": "Identifiers of related entities.",
+ "type": "array"
+ },
+ "result": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "What happened."
+ },
+ "resultClass": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Declared or observed: failed, succeeded, or inconclusive. If absent: not captured (no captureRef or outcomeEvidence), the wording heuristic classifies; captured, the outcome is undetermined."
+ },
+ "reusableWhen": {
+ "description": "Conditions recorded for reusing the attempt. All must hold, and none may be unresolved.",
+ "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"
+}
removedOutput schema / properties / failedAttemptsToAvoid
Removed value: -{
- "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"
-}
addedOutput schema / properties / firedConditions
Added value: +{
+ "description": "Decisions whose recorded review conditions fired, with the conditions and the facts they were computed from.",
+ "items": {
+ "description": "One decision whose recorded reopen conditions, review date or failed outcome fired.",
+ "properties": {
+ "affectedAlternatives": {
+ "description": "Labels of the recorded alternatives the fired conditions belong to; all of them when the trigger was not alternative-specific.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "decisionId": {
+ "description": "The decision whose conditions fired.",
+ "type": "string"
+ },
+ "reason": {
+ "description": "Comma-separated causes: the fact keys whose reopenWhen rules matched, \"review date reached\", or \"decision outcome failed\".",
+ "type": "string"
+ },
+ "reviewSignalId": {
+ "description": "The stored review signal for this decision; shadowgraph_ack_review takes this id.",
+ "type": "string"
+ },
+ "reviewSignalStatus": {
+ "description": "Whether this review is open or acknowledged, or unpersisted: no stored signal, because context is a read or the evaluation was wider. Entries are recomputed from current evidence; an acknowledged one still appears.",
+ "enum": [
+ "open",
+ "acknowledged",
+ "unpersisted"
+ ],
+ "type": "string"
+ },
+ "title": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Decision title, when the stored decision has one."
+ },
+ "violatedConditions": {
+ "description": "The conditions that actually fired, each naming its operator, expected and observed value, and the fact it was computed from.",
+ "items": {
+ "description": "One evaluated reopen condition. Verdict \"unknown\" means it could not be evaluated from available evidence, which is not a pass.",
+ "properties": {
+ "alternativeId": {
+ "description": "Alternative carrying it.",
+ "type": "string"
+ },
+ "alternativeLabel": {
+ "description": "Label of that alternative.",
+ "type": "string"
+ },
+ "attemptId": {
+ "description": "Attempt the condition belongs to, for a reusableWhen rule.",
+ "type": "string"
+ },
+ "conflictingEvidence": {
+ "description": "Equally applicable facts that disagree. The verdict rests on the deterministic winner.",
+ "items": {
+ "description": "A fact a verdict came from. Unrecorded fields are omitted, never filled in.",
+ "properties": {
+ "factId": {
+ "description": "The observed fact.",
+ "type": "string"
+ },
+ "observedAt": {
+ "description": "When observed, if recorded.",
+ "type": "string"
+ },
+ "sourceClass": {
+ "description": "Provenance class, if recorded.",
+ "type": "string"
+ },
+ "validFrom": {
+ "description": "Validity start, if recorded.",
+ "type": "string"
+ },
+ "value": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "null"
+ },
+ {
+ "type": "array"
+ },
+ {
+ "type": "object"
+ }
+ ],
+ "description": "A stored value, any lossless JSON value."
+ },
+ "verificationStatus": {
+ "description": "Verification status, if recorded.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "factId",
+ "value"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "decisionId": {
+ "description": "Decision the condition belongs to, for a reopenWhen rule.",
+ "type": "string"
+ },
+ "evidence": {
+ "description": "Provenance of the value used.",
+ "type": "object"
+ },
+ "expected": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "null"
+ },
+ {
+ "type": "array"
+ },
+ {
+ "type": "object"
+ }
+ ],
+ "description": "A stored value, any lossless JSON value."
+ },
+ "key": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Fact key read."
+ },
+ "observed": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "null"
+ },
+ {
+ "type": "array"
+ },
+ {
+ "type": "object"
+ }
+ ],
+ "description": "A stored value, any lossless JSON value."
+ },
+ "operator": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Operator the rule declared."
+ },
+ "reason": {
+ "description": "Why this verdict.",
+ "type": "string"
+ },
+ "unit": {
+ "description": "Unit the rule declared, if any.",
+ "type": "string"
+ },
+ "verdict": {
+ "description": "Evaluation result.",
+ "enum": [
+ "true",
+ "false",
+ "unknown"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "operator",
+ "verdict",
+ "reason"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "decisionId",
+ "reason",
+ "affectedAlternatives"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+}
addedOutput schema / properties / notice
Added value: +{
+ "description": "Declared interface metadata, not memory: context is a read, and reviewContext (shadowgraph_review_context) evaluates and persists.",
+ "properties": {
+ "code": {
+ "description": "Stable notice code.",
+ "enum": [
+ "context_does_not_persist"
+ ],
+ "type": "string"
+ },
+ "detail": {
+ "description": "Where the old evaluate-and-persist behaviour moved.",
+ "type": "string"
+ },
+ "replacement": {
+ "description": "The replacement operation on each surface.",
+ "properties": {
+ "cli": {
+ "description": "CLI verb to run.",
+ "type": "string"
+ },
+ "http": {
+ "description": "HTTP route to call.",
+ "type": "string"
+ },
+ "kernel": {
+ "description": "Kernel method to call.",
+ "type": "string"
+ },
+ "mcp": {
+ "description": "MCP tool to call.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "code",
+ "detail",
+ "replacement"
+ ],
+ "type": "object"
+}
removedOutput schema / properties / openReviews
Removed value: -{
- "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"
-}
addedOutput schema / properties / project / anyOf
Added value: +[
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+]
changedOutput schema / properties / project / description
Previous value: -"The project this context describes."New value: +"The resolved project, or null when unresolved."
removedOutput schema / properties / project / type
Removed value: -"string"
addedOutput schema / properties / readProvenance
Added value: +{
+ "description": "Original read bounds; reuse intersects these with currently valid authority.",
+ "properties": {
+ "accessId": {
+ "description": "Original grant, revalidated on every reuse.",
+ "type": "string"
+ },
+ "expiresAt": {
+ "description": "Original effective expiry; reuse cannot extend it.",
+ "type": "string"
+ },
+ "request": {
+ "description": "Original request ownership, preserved during expansion.",
+ "properties": {
+ "originId": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Original capture origin, or null when absent."
+ },
+ "project": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Original resolved project, or null when unresolved."
+ }
+ },
+ "required": [
+ "project",
+ "originId"
+ ],
+ "type": "object"
+ },
+ "scope": {
+ "description": "Finite explicit owner bounds; project names, origins and legacy attribution are disjoint.",
+ "properties": {
+ "legacyAttributions": {
+ "description": "Explicit legacy ownership classes; neither is a named project.",
+ "items": {
+ "enum": [
+ "legacy_ambiguous",
+ "legacy_unattributed"
+ ],
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "originIds": {
+ "description": "Exact nonempty origin identifiers for unattributed content.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "projects": {
+ "description": "Exact named projects, including a real project named default if requested.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "surfaces": {
+ "description": "Original permitted surfaces; reuse can only narrow them.",
+ "items": {
+ "enum": [
+ "cli",
+ "mcp",
+ "http"
+ ],
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "version": {
+ "const": 1,
+ "description": "Version of this bounded read provenance.",
+ "type": "integer"
+ }
+ },
+ "required": [
+ "version",
+ "request",
+ "accessId",
+ "scope",
+ "surfaces",
+ "expiresAt"
+ ],
+ "type": "object"
+}
addedOutput schema / properties / relevant
Added value: +{
+ "description": "Present with query or focalId: records in scope ranked on the records themselves, head first.",
+ "properties": {
+ "byKind": {
+ "description": "Candidates by kind.",
+ "properties": {
+ "attempt": {
+ "description": "Candidate attempts.",
+ "minimum": 0,
+ "type": "integer"
+ },
+ "decision": {
+ "description": "Candidate decisions.",
+ "minimum": 0,
+ "type": "integer"
+ },
+ "fact": {
+ "description": "Candidate facts.",
+ "minimum": 0,
+ "type": "integer"
+ },
+ "memory": {
+ "description": "Candidate memories.",
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "decision",
+ "attempt",
+ "memory",
+ "fact"
+ ],
+ "type": "object"
+ },
+ "capture": {
+ "description": "Scoped unprocessed capture, when present.",
+ "properties": {
+ "blocked": {
+ "description": "Items blocked.",
+ "minimum": 0,
+ "type": "integer"
+ },
+ "expired": {
+ "description": "Raw expired before extraction; a gap, not backlog.",
+ "minimum": 0,
+ "type": "integer"
+ },
+ "extractionAvailable": {
+ "description": "Whether extraction runs.",
+ "type": "boolean"
+ },
+ "failed": {
+ "description": "Items failed.",
+ "minimum": 0,
+ "type": "integer"
+ },
+ "gaps": {
+ "description": "Capture refusal/unread gaps; no identities.",
+ "items": {
+ "properties": {
+ "from": {
+ "description": "Gap start time.",
+ "type": "string"
+ },
+ "reason": {
+ "description": "Why capture has a gap.",
+ "enum": [
+ "maxQueueDepth",
+ "maxStoreBytes",
+ "maxItemsPerSession",
+ "session_in_another_project",
+ "raw_expired",
+ "transcript_unrecognised",
+ "session_left_project",
+ "transcript_rewritten",
+ "transcript_reanchored",
+ "transcript_incomplete_at_end",
+ "transcript_line_oversized",
+ "tool_calls_not_captured"
+ ],
+ "type": "string"
+ },
+ "sessions": {
+ "description": "Sessions covered by this gap.",
+ "minimum": 0,
+ "type": "integer"
+ },
+ "to": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "End time, if known."
+ }
+ },
+ "required": [
+ "reason",
+ "from",
+ "to"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "limited": {
+ "description": "Admission limits; accepted items kept.",
+ "items": {
+ "properties": {
+ "ceiling": {
+ "description": "The limit value.",
+ "minimum": 0,
+ "type": "integer"
+ },
+ "limit": {
+ "description": "The limit reached.",
+ "enum": [
+ "maxQueueDepth",
+ "maxStoreBytes"
+ ],
+ "type": "string"
+ },
+ "since": {
+ "description": "When refusal began.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "limit",
+ "ceiling",
+ "since"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "oldestPendingAt": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Oldest pending capture."
+ },
+ "pending": {
+ "description": "Items waiting.",
+ "minimum": 0,
+ "type": "integer"
+ },
+ "processing": {
+ "description": "Items claimed.",
+ "minimum": 0,
+ "type": "integer"
+ },
+ "workerErrors": {
+ "description": "Scoped worker stops; fixed codes.",
+ "items": {
+ "properties": {
+ "at": {
+ "description": "Stop timestamp.",
+ "type": "string"
+ },
+ "reason": {
+ "description": "Worker stop code.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "reason",
+ "at"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "pending",
+ "processing",
+ "failed",
+ "blocked",
+ "oldestPendingAt",
+ "extractionAvailable",
+ "limited",
+ "gaps"
+ ],
+ "type": "object"
+ },
+ "complete": {
+ "description": "All counted candidates returned, relevance established and the scope resolved; not semantic recall.",
+ "type": "boolean"
+ },
+ "expansion": {
+ "description": "The operation a line handle names.",
+ "properties": {
+ "available": {
+ "description": "True: shadowgraph_expand serves the full record behind a line.",
+ "type": "boolean"
+ },
+ "operation": {
+ "description": "Operation name.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "operation",
+ "available"
+ ],
+ "type": "object"
+ },
+ "fallback": {
+ "description": "Whether fuller delivery replaced relevance or a line.",
+ "properties": {
+ "reason": {
+ "anyOf": [
+ {
+ "enum": [
+ "relevance_not_established",
+ "decisive_meaning_omitted"
+ ],
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "relevance_not_established: no signal ranked a record, so the working set is delivered. decisive_meaning_omitted: a line could not carry its decisive meaning, so that record is delivered in full."
+ },
+ "used": {
+ "description": "True when the working set or a full record was delivered instead.",
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "used",
+ "reason"
+ ],
+ "type": "object"
+ },
+ "hasMore": {
+ "description": "True when limit left candidates out.",
+ "type": "boolean"
+ },
+ "items": {
+ "description": "Ranked records, best first; the working set when fallback reason is relevance_not_established.",
+ "items": {
+ "description": "One relevant record, as its line (T1) or in full (T2), with the ranks that selected it.",
+ "properties": {
+ "line": {
+ "description": "A derived claim line (T1): never canonical, bound to the revision it was derived from.",
+ "properties": {
+ "boundRevision": {
+ "description": "The record id and the SHA-256 digest of what the line was derived from.",
+ "type": "object"
+ },
+ "claimClass": {
+ "description": "The weakest class among its claims and its cause: quoted, entailed, ambiguous, unsupported, legacy_freetext, or not_classified.",
+ "type": "string"
+ },
+ "decisiveOmitted": {
+ "description": "Decisive parts the line could not carry; empty on a delivered line.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "derivationVersion": {
+ "description": "Version of the template.",
+ "type": "string"
+ },
+ "derived": {
+ "description": "Always true: a line is never canonical.",
+ "type": "boolean"
+ },
+ "expansion": {
+ "description": "Handle for the full record: operation, record id, digest, as-of, derivation version, scope and derivation time.",
+ "type": "object"
+ },
+ "kind": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "The kind of that record."
+ },
+ "line": {
+ "description": "The record in one line, from a versioned template: stored values quoted, recorded conditions stated as recorded.",
+ "type": "string"
+ },
+ "outcome": {
+ "description": "Attempts only: result class, outcome-evidence state and cause state.",
+ "type": "object"
+ },
+ "polarity": {
+ "description": "Whether decisive text negates, with the negating text verbatim.",
+ "type": "object"
+ },
+ "preconditions": {
+ "description": "Recorded reopen and reuse conditions and assumptions, verbatim.",
+ "type": "object"
+ },
+ "provenance": {
+ "description": "Source class and capture reference.",
+ "type": "object"
+ },
+ "recordId": {
+ "description": "The record the line was derived from.",
+ "type": "string"
+ },
+ "requiresExpansion": {
+ "description": "True when a negation is not settled by a verified claim stating it.",
+ "type": "boolean"
+ },
+ "scope": {
+ "description": "Project, memory scope, environment and applicability window.",
+ "type": "object"
+ },
+ "status": {
+ "description": "Lifecycle, supersession and verification state.",
+ "type": "object"
+ }
+ },
+ "required": [
+ "recordId",
+ "kind",
+ "line",
+ "claimClass",
+ "polarity",
+ "scope",
+ "preconditions",
+ "status",
+ "provenance",
+ "boundRevision",
+ "derived",
+ "derivationVersion",
+ "decisiveOmitted",
+ "requiresExpansion",
+ "expansion"
+ ],
+ "type": "object"
+ },
+ "ranks": {
+ "anyOf": [
+ {
+ "description": "Position this item held in each signal list, counting from 1, or null where that signal did not rank it.",
+ "properties": {
+ "graph": {
+ "anyOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Position in the graph-distance list; null when no focalId was supplied."
+ },
+ "lexical": {
+ "anyOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Position in the BM25-style lexical list."
+ },
+ "semantic": {
+ "anyOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Position in the vector list; null when no compatible query vector or provider existed."
+ },
+ "temporal": {
+ "anyOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Position in the recency list; null when neither asOf nor preferRecent was supplied."
+ }
+ },
+ "required": [
+ "lexical",
+ "semantic",
+ "graph",
+ "temporal"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Position in each signal list; null for a working-set record delivered by the fallback."
+ },
+ "record": {
+ "description": "One stored entity: a decision, attempt, memory, fact, or alternative. Fields vary by kind, and an entity imported from an older schema may carry fewer of them.",
+ "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."
+ },
+ "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; null for an unattributed record or one imported from before projects."
+ },
+ "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."
+ },
+ "updatedAt": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "ISO 8601 time of the last change."
+ }
+ },
+ "type": "object"
+ },
+ "score": {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Fused rank score; null for a working-set record delivered by the fallback."
+ },
+ "temporalEvidence": {
+ "description": "What the stored times and supersession support: when it was recorded, when it held, whether it holds now.",
+ "properties": {
+ "currentState": {
+ "anyOf": [
+ {
+ "description": "Whether it holds at the read instant, and on what basis.",
+ "properties": {
+ "basis": {
+ "anyOf": [
+ {
+ "enum": [
+ "explicit_supersession",
+ "validity_window",
+ "recording_order_only"
+ ],
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "What decides it; null when nothing temporal does."
+ },
+ "evidence": {
+ "description": "The records that decide it, at most 10.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "evidenceOmitted": {
+ "description": "Deciding records not named.",
+ "minimum": 0,
+ "type": "integer"
+ },
+ "state": {
+ "description": "unresolved: only the recording order sets it apart from another version. undetermined: no event time places it at the read instant.",
+ "enum": [
+ "current",
+ "historical",
+ "not_yet_valid",
+ "unresolved",
+ "undetermined"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "state",
+ "basis",
+ "evidence",
+ "evidenceOmitted"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "null for an attempt, an event."
+ },
+ "eventTime": {
+ "description": "When it held, if stored apart from the recording time.",
+ "properties": {
+ "at": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "The event time, when known."
+ },
+ "state": {
+ "description": "unknown: no event time stored apart from the recording time.",
+ "enum": [
+ "known",
+ "unknown"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "at",
+ "state"
+ ],
+ "type": "object"
+ },
+ "recordedAt": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "When it was recorded."
+ }
+ },
+ "required": [
+ "recordedAt",
+ "eventTime",
+ "currentState"
+ ],
+ "type": "object"
+ },
+ "tier": {
+ "description": "T1 carries line, T2 carries record.",
+ "enum": [
+ "T1",
+ "T2"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "tier",
+ "score",
+ "ranks",
+ "temporalEvidence"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "limitSource": {
+ "description": "Whose choice bounded the items.",
+ "enum": [
+ "caller",
+ "default"
+ ],
+ "type": "string"
+ },
+ "limitation": {
+ "description": "Limits of this view.",
+ "properties": {
+ "code": {
+ "description": "Stable limitation code.",
+ "type": "string"
+ },
+ "detail": {
+ "description": "What this view cannot establish.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "code",
+ "detail"
+ ],
+ "type": "object"
+ },
+ "lines": {
+ "description": "One entry per delivered line, in item order.",
+ "items": {
+ "description": "A delivered line.",
+ "properties": {
+ "claimClass": {
+ "description": "The claim class of that line.",
+ "type": "string"
+ },
+ "recordId": {
+ "description": "The record the line was derived from.",
+ "type": "string"
+ },
+ "requiresExpansion": {
+ "description": "Whether that line requires expansion.",
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "recordId",
+ "claimClass",
+ "requiresExpansion"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "omitted": {
+ "description": "total minus returned.",
+ "minimum": 0,
+ "type": "integer"
+ },
+ "processing": {
+ "description": "Scoped capture processing; extraction is inactive in this build.",
+ "properties": {
+ "blocked": {
+ "description": "Items whose extraction is blocked.",
+ "minimum": 0,
+ "type": "integer"
+ },
+ "extractionAvailable": {
+ "description": "Whether extraction runs.",
+ "type": "boolean"
+ },
+ "failed": {
+ "description": "Items whose extraction failed.",
+ "minimum": 0,
+ "type": "integer"
+ },
+ "gaps": {
+ "description": "Capture refusal/unread gaps; no identities.",
+ "items": {
+ "properties": {
+ "from": {
+ "description": "Gap start time.",
+ "type": "string"
+ },
+ "reason": {
+ "description": "Why capture has a gap.",
+ "enum": [
+ "maxQueueDepth",
+ "maxStoreBytes",
+ "maxItemsPerSession",
+ "session_in_another_project",
+ "raw_expired",
+ "transcript_unrecognised",
+ "session_left_project",
+ "transcript_rewritten",
+ "transcript_reanchored",
+ "transcript_incomplete_at_end",
+ "transcript_line_oversized",
+ "tool_calls_not_captured"
+ ],
+ "type": "string"
+ },
+ "sessions": {
+ "description": "Sessions covered by this gap.",
+ "minimum": 0,
+ "type": "integer"
+ },
+ "to": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "End time, if known."
+ }
+ },
+ "required": [
+ "reason",
+ "from",
+ "to"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "limited": {
+ "description": "Admission limits; accepted items kept.",
+ "items": {
+ "properties": {
+ "ceiling": {
+ "description": "The limit value.",
+ "minimum": 0,
+ "type": "integer"
+ },
+ "limit": {
+ "description": "The limit reached.",
+ "enum": [
+ "maxQueueDepth",
+ "maxStoreBytes"
+ ],
+ "type": "string"
+ },
+ "since": {
+ "description": "When refusal began.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "limit",
+ "ceiling",
+ "since"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "oldestPendingAt": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "When the oldest pending item arrived."
+ },
+ "pending": {
+ "description": "Items awaiting extraction.",
+ "minimum": 0,
+ "type": "integer"
+ },
+ "processing": {
+ "description": "Items an extraction has claimed; present when the store holds capture state.",
+ "minimum": 0,
+ "type": "integer"
+ },
+ "workerErrors": {
+ "description": "Scoped worker stops; fixed codes.",
+ "items": {
+ "properties": {
+ "at": {
+ "description": "Stop timestamp.",
+ "type": "string"
+ },
+ "reason": {
+ "description": "Worker stop code.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "reason",
+ "at"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "pending",
+ "failed",
+ "blocked",
+ "oldestPendingAt",
+ "extractionAvailable"
+ ],
+ "type": "object"
+ },
+ "relevance": {
+ "description": "Whether any signal established relevance, and which signals ran.",
+ "properties": {
+ "established": {
+ "description": "True when the lexical, semantic or graph signal ranked a record. Recency orders records; it never selects one.",
+ "type": "boolean"
+ },
+ "signals": {
+ "description": "Availability of each signal.",
+ "properties": {
+ "graph": {
+ "description": "Distance from focalId.",
+ "properties": {
+ "available": {
+ "description": "Whether the signal ran.",
+ "type": "boolean"
+ },
+ "matched": {
+ "description": "Records it ranked.",
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "available",
+ "matched"
+ ],
+ "type": "object"
+ },
+ "lexical": {
+ "description": "Content-word matching: available when the query has a content word; matched counts records sharing one. Item ranks use every term.",
+ "properties": {
+ "available": {
+ "description": "Whether the signal ran.",
+ "type": "boolean"
+ },
+ "matched": {
+ "description": "Records it ranked.",
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "available",
+ "matched"
+ ],
+ "type": "object"
+ },
+ "semantic": {
+ "description": "Meaning; never available on this read.",
+ "properties": {
+ "available": {
+ "description": "Whether the signal ran.",
+ "type": "boolean"
+ },
+ "matched": {
+ "description": "Records it ranked.",
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "available",
+ "matched"
+ ],
+ "type": "object"
+ },
+ "temporal": {
+ "description": "Recency from asOf.",
+ "properties": {
+ "available": {
+ "description": "Whether the signal ran.",
+ "type": "boolean"
+ },
+ "matched": {
+ "description": "Records it ranked.",
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "available",
+ "matched"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "lexical",
+ "semantic",
+ "graph",
+ "temporal"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "established",
+ "signals"
+ ],
+ "type": "object"
+ },
+ "returned": {
+ "description": "Items in this response.",
+ "minimum": 0,
+ "type": "integer"
+ },
+ "scope": {
+ "description": "The resolved read boundary.",
+ "properties": {
+ "grant": {
+ "anyOf": [
+ {
+ "type": "null"
+ },
+ {
+ "properties": {
+ "accessId": {
+ "description": "The currently rechecked grant identifier.",
+ "type": "string"
+ },
+ "expiresAt": {
+ "description": "Earliest effective expiry of this read authority.",
+ "type": "string"
+ },
+ "surface": {
+ "description": "Actual runtime surface of this read.",
+ "enum": [
+ "cli",
+ "mcp",
+ "http"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "accessId",
+ "expiresAt",
+ "surface"
+ ],
+ "type": "object"
+ }
+ ],
+ "description": "Effective rechecked grant, or null."
+ },
+ "originPresented": {
+ "description": "Usable origin presented; not project selection.",
+ "type": "boolean"
+ },
+ "project": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Resolved project, or null."
+ },
+ "requestState": {
+ "description": "Whether a project was resolved.",
+ "enum": [
+ "project_selected",
+ "project_unresolved"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "project",
+ "requestState",
+ "originPresented",
+ "grant"
+ ],
+ "type": "object"
+ },
+ "temporal": {
+ "description": "The as-of instant, and how many items have no stored event time or rest on the recording order only.",
+ "properties": {
+ "asOf": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "The asOf given, or null."
+ },
+ "eventTimeUnknown": {
+ "description": "Items whose event time is unknown.",
+ "minimum": 0,
+ "type": "integer"
+ },
+ "recordingOrderOnly": {
+ "description": "Items whose state rests on the recording order only.",
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "asOf",
+ "eventTimeUnknown",
+ "recordingOrderOnly"
+ ],
+ "type": "object"
+ },
+ "total": {
+ "description": "Candidates in total.",
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "scope",
+ "relevance",
+ "fallback",
+ "byKind",
+ "total",
+ "returned",
+ "omitted",
+ "hasMore",
+ "complete",
+ "limitSource",
+ "limitation",
+ "temporal",
+ "lines",
+ "processing",
+ "expansion",
+ "items"
+ ],
+ "type": "object"
+}
addedOutput schema / properties / reusableAttempts
Added value: +{
+ "description": "Attempts whose reusableWhen conditions all hold now. The recorded failure still stands, and this is not authorisation to retry.",
+ "items": {
+ "description": "An attempt whose reusableWhen conditions ALL hold now, with none unresolved. The recorded failure still stands, and this is not authorisation to retry.",
+ "properties": {
+ "attemptId": {
+ "description": "The attempt.",
+ "type": "string"
+ },
+ "resultClass": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Declared or observed result class, or null when the wording heuristic classified it."
+ },
+ "satisfiedConditions": {
+ "description": "Every condition that had to hold, and the evidence for each.",
+ "items": {
+ "description": "One evaluated reopen condition. Verdict \"unknown\" means it could not be evaluated from available evidence, which is not a pass.",
+ "properties": {
+ "alternativeId": {
+ "description": "Alternative carrying it.",
+ "type": "string"
+ },
+ "alternativeLabel": {
+ "description": "Label of that alternative.",
+ "type": "string"
+ },
+ "attemptId": {
+ "description": "Attempt the condition belongs to, for a reusableWhen rule.",
+ "type": "string"
+ },
+ "conflictingEvidence": {
+ "description": "Equally applicable facts that disagree. The verdict rests on the deterministic winner.",
+ "items": {
+ "description": "A fact a verdict came from. Unrecorded fields are omitted, never filled in.",
+ "properties": {
+ "factId": {
+ "description": "The observed fact.",
+ "type": "string"
+ },
+ "observedAt": {
+ "description": "When observed, if recorded.",
+ "type": "string"
+ },
+ "sourceClass": {
+ "description": "Provenance class, if recorded.",
+ "type": "string"
+ },
+ "validFrom": {
+ "description": "Validity start, if recorded.",
+ "type": "string"
+ },
+ "value": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "null"
+ },
+ {
+ "type": "array"
+ },
+ {
+ "type": "object"
+ }
+ ],
+ "description": "A stored value, any lossless JSON value."
+ },
+ "verificationStatus": {
+ "description": "Verification status, if recorded.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "factId",
+ "value"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "decisionId": {
+ "description": "Decision the condition belongs to, for a reopenWhen rule.",
+ "type": "string"
+ },
+ "evidence": {
+ "description": "Provenance of the value used.",
+ "type": "object"
+ },
+ "expected": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "null"
+ },
+ {
+ "type": "array"
+ },
+ {
+ "type": "object"
+ }
+ ],
+ "description": "A stored value, any lossless JSON value."
+ },
+ "key": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Fact key read."
+ },
+ "observed": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "null"
+ },
+ {
+ "type": "array"
+ },
+ {
+ "type": "object"
+ }
+ ],
+ "description": "A stored value, any lossless JSON value."
+ },
+ "operator": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Operator the rule declared."
+ },
+ "reason": {
+ "description": "Why this verdict.",
+ "type": "string"
+ },
+ "unit": {
+ "description": "Unit the rule declared, if any.",
+ "type": "string"
+ },
+ "verdict": {
+ "description": "Evaluation result.",
+ "enum": [
+ "true",
+ "false",
+ "unknown"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "operator",
+ "verdict",
+ "reason"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "solution": {
+ "description": "What was tried.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "attemptId",
+ "satisfiedConditions"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+}
changedOutput schema / properties / staleAssumptions / items / properties / project / description
Previous value: -"Project namespace; records imported from a schema that predates projects may carry null."New value: +"Project namespace; null for an unattributed record or one imported from before projects."
removedOutput schema / properties / suggestedQuestions
Removed value: -{
- "description": "Questions for the low-confidence decisions in this project.",
- "items": {
- "type": "string"
- },
- "type": "array"
-}
changedOutput schema / required
Previous value: -[
- "project",
- "activeDecisions",
- "staleAssumptions",
- "failedAttemptsToAvoid",
- "openReviews",
- "suggestedQuestions",
- "completeness"
-]New value: +[
+ "project",
+ "activeDecisions",
+ "staleAssumptions",
+ "failedAttempts",
+ "firedConditions",
+ "belowConfidenceThreshold",
+ "completeness",
+ "notice"
+]