Register seven Meshenger-authored ontologies (Relation, AvailabilityStatus, ChatPreference, DraftMessage, Summary, PreferredHandlers, FileContext) - #1103
Conversation
Relation, AvailabilityStatus, ChatPreference, DraftMessage, Summary, PreferredHandlers, FileContext — all seven have been in production use by Meshenger (meshenger.postplatforms.com) and are declared in its published self-description, but were never registered here, so no other platform could resolve their schemaIds. Field sets are derived from the envelopes actually written in production, required-fields cover only what is always written, and additionalProperties stays true: the registry has no versioning mechanism, so readers must tolerate additive fields. Relation is deliberately distinct from the existing Reference (c20e9437-…): Reference is a review/score OF a target; Relation is a reified triple BETWEEN envelopes (reactions, pins, mentions, responses) and its description says so to keep the two from being conflated. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
📝 WalkthroughWalkthroughAdded seven Draft-07 JSON schemas for ontology records covering availability, chat preferences, draft messages, file context, relations, preferred handlers, and summaries. ChangesOntology schemas
Estimated code review effort: 3 (Moderate) | ~20 minutes Suggested reviewers: 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@services/ontology/schemas/summary.json`:
- Around line 30-34: Update the summary schema’s conditional validation so
objects with isReference set to true require both canonicalOwnerEName and
canonicalSummaryId, using Draft-07 if/then syntax. Leave non-reference objects
subject to the existing validation rules.
- Around line 10-20: Update the subject schema to require the kind property and
constrain it with an enum allowing only “call” and “day”. Preserve the existing
subject object and other properties while ensuring empty subjects and
unsupported kind values fail validation.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro Plus
Run ID: 8fdd0d93-e0e8-43b5-846f-f76014d0ed4a
📒 Files selected for processing (7)
services/ontology/schemas/availabilityStatus.jsonservices/ontology/schemas/chatPreference.jsonservices/ontology/schemas/draftMessage.jsonservices/ontology/schemas/fileContext.jsonservices/ontology/schemas/preferredHandlers.jsonservices/ontology/schemas/relation.jsonservices/ontology/schemas/summary.json
| "subject": { | ||
| "type": "object", | ||
| "description": "What is summarised: {kind: 'call'|'day', chatId?, callId?, dayKey?, ref?} — `ref` is a w3ds envelope URI of the source", | ||
| "properties": { | ||
| "kind": { "type": "string" }, | ||
| "chatId": { "type": "string" }, | ||
| "callId": { "type": "string" }, | ||
| "dayKey": { "type": "string", "description": "YYYY-MM-DD for a day digest" }, | ||
| "ref": { "type": "string" } | ||
| } | ||
| }, |
There was a problem hiding this comment.
🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win
Require and constrain subject.kind.
subject: {} and {"kind":"other"} both validate. The documented contract permits only call or day. Consumers cannot reliably select the summary subject type.
Proposed fix
- "kind": { "type": "string" },
+ "kind": { "type": "string", "enum": ["call", "day"] },
"chatId": { "type": "string" },
"callId": { "type": "string" },
"dayKey": { "type": "string", "description": "YYYY-MM-DD for a day digest" },
"ref": { "type": "string" }
- }
+ },
+ "required": ["kind"]📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| "subject": { | |
| "type": "object", | |
| "description": "What is summarised: {kind: 'call'|'day', chatId?, callId?, dayKey?, ref?} — `ref` is a w3ds envelope URI of the source", | |
| "properties": { | |
| "kind": { "type": "string" }, | |
| "chatId": { "type": "string" }, | |
| "callId": { "type": "string" }, | |
| "dayKey": { "type": "string", "description": "YYYY-MM-DD for a day digest" }, | |
| "ref": { "type": "string" } | |
| } | |
| }, | |
| "subject": { | |
| "type": "object", | |
| "description": "What is summarised: {kind: 'call'|'day', chatId?, callId?, dayKey?, ref?} — `ref` is a w3ds envelope URI of the source", | |
| "properties": { | |
| "kind": { "type": "string", "enum": ["call", "day"] }, | |
| "chatId": { "type": "string" }, | |
| "callId": { "type": "string" }, | |
| "dayKey": { "type": "string", "description": "YYYY-MM-DD for a day digest" }, | |
| "ref": { "type": "string" } | |
| }, | |
| "required": ["kind"] | |
| }, |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@services/ontology/schemas/summary.json` around lines 10 - 20, Update the
subject schema to require the kind property and constrain it with an enum
allowing only “call” and “day”. Preserve the existing subject object and other
properties while ensuring empty subjects and unsupported kind values fail
validation.
| "isReference": { "type": "boolean" }, | ||
| "canonicalOwnerEName": { "type": "string" }, | ||
| "canonicalSummaryId": { "type": "string" }, | ||
| "sharedBy": { "type": "string" }, | ||
| "sharedAt": { "type": "string", "format": "date-time" } |
There was a problem hiding this comment.
🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win
Require a canonical locator for references.
An object with "isReference": true validates without canonicalOwnerEName or canonicalSummaryId. A client then cannot resolve the canonical summary. Add a Draft-07 if/then constraint that requires both fields when isReference is true.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@services/ontology/schemas/summary.json` around lines 30 - 34, Update the
summary schema’s conditional validation so objects with isReference set to true
require both canonicalOwnerEName and canonicalSummaryId, using Draft-07 if/then
syntax. Leave non-reference objects subject to the existing validation rules.
Seven ontologies Meshenger has been writing in production and declaring in its self-description (https://meshenger.postplatforms.com/.well-known/w3ds-platform.json), never registered here — so other platforms could not resolve their schemaIds. This closes the gap.
f9ff8527-…Reference(review/score of a target) — the description spells the difference out.47478875-…eb69c8ad-…55606983-…5b1a2c3d-…9a1b2c3d-…b65218b4-…Field sets are taken from the envelopes production actually writes (not aspirational);
requiredcovers only fields that are always present, andadditionalProperties: truebecause the registry has no versioning — readers must ignore unknown additive fields. Reference/merge conventions these schemas participate in are documented in the Meshenger self-description.🤖 Generated with Claude Code
Summary by CodeRabbit