removedInput schema / properties / content
Removed value: -{
- "description": "Memory content, prompt text, session summary, or text containing a Key Learnings section",
- "type": "string"
-}
addedInput schema / properties / event_key
Added value: +{
+ "description": "Stable event key for idempotency; required for observation, observation_review, observation_promotion, and evidence with metadata.",
+ "type": "string"
+}
addedInput schema / properties / evidence
Added value: +{
+ "anyOf": [
+ {
+ "additionalProperties": false,
+ "properties": {
+ "content": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "enum": [
+ "root_prompt",
+ "explicit_save",
+ "checkpoint",
+ "handoff",
+ "legacy_prompt",
+ "legacy_observation",
+ "session_summary"
+ ],
+ "type": "string"
+ },
+ "source_ref": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "content"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "content": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "explicit_save",
+ "type": "string"
+ },
+ "metadata": {
+ "additionalProperties": false,
+ "properties": {
+ "observation_validation": {
+ "additionalProperties": false,
+ "properties": {
+ "method": {
+ "maxLength": 500,
+ "minLength": 1,
+ "type": "string"
+ },
+ "observation_id": {
+ "maxLength": 200,
+ "minLength": 1,
+ "type": "string"
+ },
+ "result": {
+ "enum": [
+ "passed",
+ "failed"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "observation_id",
+ "result",
+ "method"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "observation_validation"
+ ],
+ "type": "object"
+ },
+ "source_ref": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "content",
+ "metadata"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "content": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "handoff",
+ "type": "string"
+ },
+ "metadata": {
+ "additionalProperties": false,
+ "properties": {
+ "observation_review_attestation": {
+ "additionalProperties": false,
+ "properties": {
+ "method": {
+ "maxLength": 500,
+ "minLength": 1,
+ "type": "string"
+ },
+ "observation_id": {
+ "maxLength": 200,
+ "minLength": 1,
+ "type": "string"
+ },
+ "reviewer": {
+ "maxLength": 200,
+ "minLength": 1,
+ "type": "string"
+ },
+ "verdict": {
+ "enum": [
+ "accepted",
+ "rejected"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "observation_id",
+ "verdict",
+ "reviewer",
+ "method"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "observation_review_attestation"
+ ],
+ "type": "object"
+ },
+ "source_ref": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "content",
+ "metadata"
+ ],
+ "type": "object"
+ }
+ ],
+ "description": "Direct evidence { kind, content }; optionally add memory for a promoted save. Structured metadata forbids memory and requires event_key, root_session_key, and harness."
+}
addedInput schema / properties / harness
Added value: +{
+ "description": "Native harness for root_session_key; supply both or omit both. Required wherever root_session_key is required.",
+ "enum": [
+ "opencode",
+ "codex",
+ "claude",
+ "pi",
+ "mcp",
+ "cli",
+ "import"
+ ],
+ "type": "string"
+}
removedInput schema / properties / kind
Removed value: -{
- "description": "Write mode. Defaults to observation",
- "enum": [
- "observation",
- "prompt",
- "session_summary",
- "passive_learnings"
- ],
- "type": "string"
-}
addedInput schema / properties / memory
Added value: +{
+ "additionalProperties": false,
+ "description": "Promoted memory for direct evidence only; requires evidence without metadata. Do not combine with observation, observation_review, or observation_promotion.",
+ "properties": {
+ "content": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "enum": [
+ "decision",
+ "convention",
+ "architecture",
+ "discovery",
+ "failure",
+ "project_structure",
+ "handoff",
+ "preference"
+ ],
+ "type": "string"
+ },
+ "outcome": {
+ "enum": [
+ "unknown",
+ "succeeded",
+ "failed",
+ "mixed"
+ ],
+ "type": "string"
+ },
+ "supersedes_id": {
+ "type": "string"
+ },
+ "title": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "topic_key": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "title",
+ "content"
+ ],
+ "type": "object"
+}
addedInput schema / properties / observation
Added value: +{
+ "additionalProperties": false,
+ "description": "Submit a supported candidate without promotion; requires event_key. Session scope also requires root_session_key, harness, and coverage.",
+ "properties": {
+ "claim": {
+ "maxLength": 4000,
+ "minLength": 1,
+ "type": "string"
+ },
+ "concepts": {
+ "items": {
+ "maxLength": 200,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 16,
+ "type": "array"
+ },
+ "coverage": {
+ "additionalProperties": false,
+ "properties": {
+ "from_sequence": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "to_sequence": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "from_sequence",
+ "to_sequence"
+ ],
+ "type": "object"
+ },
+ "files": {
+ "items": {
+ "maxLength": 500,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 16,
+ "type": "array"
+ },
+ "generator": {
+ "additionalProperties": false,
+ "properties": {
+ "config_hash": {
+ "pattern": "^[0-9a-f]{64}$",
+ "type": "string"
+ },
+ "kind": {
+ "enum": [
+ "root_agent",
+ "harness",
+ "model"
+ ],
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 200,
+ "minLength": 1,
+ "type": "string"
+ },
+ "version": {
+ "maxLength": 200,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "name"
+ ],
+ "type": "object"
+ },
+ "kind": {
+ "enum": [
+ "decision",
+ "constraint",
+ "fact",
+ "procedure",
+ "result",
+ "failure",
+ "preference"
+ ],
+ "type": "string"
+ },
+ "predecessor_id": {
+ "maxLength": 200,
+ "minLength": 1,
+ "type": "string"
+ },
+ "proposed_memory": {
+ "additionalProperties": false,
+ "properties": {
+ "content": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "enum": [
+ "decision",
+ "convention",
+ "architecture",
+ "discovery",
+ "failure",
+ "project_structure",
+ "handoff",
+ "preference"
+ ],
+ "type": "string"
+ },
+ "outcome": {
+ "enum": [
+ "unknown",
+ "succeeded",
+ "failed",
+ "mixed"
+ ],
+ "type": "string"
+ },
+ "title": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "topic_key": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "title",
+ "content"
+ ],
+ "type": "object"
+ },
+ "scope": {
+ "enum": [
+ "session",
+ "project"
+ ],
+ "type": "string"
+ },
+ "support_ids": {
+ "items": {
+ "maxLength": 200,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 16,
+ "minItems": 1,
+ "type": "array"
+ },
+ "title": {
+ "maxLength": 500,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "scope",
+ "title",
+ "claim",
+ "proposed_memory",
+ "support_ids",
+ "generator"
+ ],
+ "type": "object"
+}
addedInput schema / properties / observation_promotion
Added value: +{
+ "additionalProperties": false,
+ "description": "Promote one accepted observation without new prose; requires event_key, root_session_key, and harness. Send no other operation branch or memory.",
+ "properties": {
+ "observation_id": {
+ "maxLength": 200,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "observation_id"
+ ],
+ "type": "object"
+}
addedInput schema / properties / observation_review
Added value: +{
+ "additionalProperties": false,
+ "description": "Review one supported observation; requires event_key, root_session_key, and harness. Send no other operation branch or memory.",
+ "properties": {
+ "basis": {
+ "enum": [
+ "root_user_confirmed",
+ "observable_validation",
+ "independent_review"
+ ],
+ "type": "string"
+ },
+ "observation_id": {
+ "maxLength": 200,
+ "minLength": 1,
+ "type": "string"
+ },
+ "policy": {
+ "additionalProperties": false,
+ "properties": {
+ "id": {
+ "maxLength": 200,
+ "minLength": 1,
+ "type": "string"
+ },
+ "version": {
+ "maxLength": 200,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "id",
+ "version"
+ ],
+ "type": "object"
+ },
+ "reason": {
+ "maxLength": 1000,
+ "minLength": 1,
+ "type": "string"
+ },
+ "support_ids": {
+ "items": {
+ "maxLength": 200,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 16,
+ "minItems": 1,
+ "type": "array"
+ },
+ "verdict": {
+ "enum": [
+ "accepted",
+ "rejected"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "observation_id",
+ "verdict",
+ "basis",
+ "policy",
+ "reason",
+ "support_ids"
+ ],
+ "type": "object"
+}
removedInput schema / properties / project
Removed value: -{
- "description": "Project name",
- "type": "string"
-}
addedInput schema / properties / project_key
Added value: +{
+ "description": "Exact opaque project_key copied verbatim from verified native identity; never derive it from a display name, path hint, remote, branch, worktree name, host ID, listing, or recalled content.",
+ "minLength": 1,
+ "type": "string"
+}
addedInput schema / properties / project_name
Added value: +{
+ "description": "Creation/display metadata only; never participates in project identity equality. Prefer the database-persisted name returned by lifecycle or project output.",
+ "minLength": 1,
+ "type": "string"
+}
addedInput schema / properties / root_session_key
Added value: +{
+ "description": "Verified root session key; supply with harness or omit both. Required for session-scoped observations, observation_review, observation_promotion, and evidence with metadata; blank counts as absent.",
+ "type": "string"
+}
removedInput schema / properties / scope
Removed value: -{
- "description": "Observation scope",
- "enum": [
- "project",
- "personal"
- ],
- "type": "string"
-}
removedInput schema / properties / session_id
Removed value: -{
- "description": "Session ID (default: manual-save-{project})",
- "type": "string"
-}
removedInput schema / properties / title
Removed value: -{
- "description": "Short searchable title. Required for kind=observation",
- "type": "string"
-}
removedInput schema / properties / topic_key
Removed value: -{
- "description": "Stable key for observation upserts",
- "type": "string"
-}
removedInput schema / properties / type
Removed value: -{
- "description": "Observation category for kind=observation",
- "enum": [
- "decision",
- "architecture",
- "bugfix",
- "pattern",
- "config",
- "discovery",
- "learning",
- "session_summary",
- "manual"
- ],
- "type": "string"
-}
changedInput schema / required
Previous value: -[
- "content"
-]New value: +[
+ "project_key",
+ "project_name"
+]