Register 80hours reminder and platform schemas - #1101
Conversation
📝 WalkthroughWalkthroughThe PR adds schemas for group references, platform self-descriptions, and reminders. It also updates the Task schema with soft-delete metadata, deprecation descriptions, and a reduced required-field contract. ChangesOntology schema contracts
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: 3
🤖 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/platformSelfDescription.json`:
- Line 14: Constrain the contentSha256 property in the platform self-description
schema to the consumer-defined SHA-256 encoding: retain its string type and add
a pattern requiring exactly 64 hexadecimal characters, rejecting empty,
truncated, and malformed digests.
In `@services/ontology/schemas/reminder.json`:
- Around line 26-30: Update the Reminder schema around triggerAt to handle
triggerKind "relative" explicitly: either remove the relative trigger option, or
add conditional schemas so absolute triggers require triggerAt while relative
triggers require the appropriate offset and subject-time anchor fields. Ensure
reminders are not forced to provide triggerAt when using the relative form.
- Line 7: Update the top-level Reminder schema’s additionalProperties setting to
false so undeclared fields are rejected; if supported extensibility is required,
define an explicit extension field rather than allowing arbitrary top-level
properties.
🪄 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: 6b2142cd-2607-4599-b4f6-dd66e22be49d
📒 Files selected for processing (4)
services/ontology/schemas/groupReference.jsonservices/ontology/schemas/platformSelfDescription.jsonservices/ontology/schemas/reminder.jsonservices/ontology/schemas/task.json
| "displayName": { "type": "string" }, | ||
| "format": { "type": "string" }, | ||
| "content": { "type": "string" }, | ||
| "contentSha256": { "type": "string" }, |
There was a problem hiding this comment.
🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
# Verify the encoding emitted and consumed for contentSha256.
rg -n -C 4 --glob '*.js' --glob '*.ts' --glob '*.json' \
'"contentSha256"|contentSha256' servicesRepository: MetaState-Prototype-Project/prototype
Length of output: 1781
🏁 Script executed:
#!/bin/bash
set -euo pipefail
printf 'Files mentioning contentSha256:\n'
rg -n -C 3 'contentSha256' . || true
printf '\nSchema files:\n'
git ls-files 'services/ontology/schemas/*.json'
printf '\nPlatform self-description schema:\n'
cat -n services/ontology/schemas/platformSelfDescription.jsonRepository: MetaState-Prototype-Project/prototype
Length of output: 4131
Constrain contentSha256 to the expected SHA-256 digest format.
contentSha256 is required but the schema only treats it as a generic string, which allows empty, truncated, or malformed values. Define the single encoding used for consumers, such as 64-character hexadecimal, and enforce it with pattern.
🤖 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/platformSelfDescription.json` at line 14, Constrain
the contentSha256 property in the platform self-description schema to the
consumer-defined SHA-256 encoding: retain its string type and add a pattern
requiring exactly 64 hexadecimal characters, rejecting empty, truncated, and
malformed digests.
| "title": "Reminder", | ||
| "type": "object", | ||
| "description": "A universal reminder/alarm envelope. It can point to any W3DS subject, not only a task. The timing model is compatible with iCalendar VALARM absolute triggers.", | ||
| "additionalProperties": true, |
There was a problem hiding this comment.
🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win
Make the top-level Reminder contract strict.
Line 7 permits every undeclared top-level field. This conflicts with the stated strict-schema contract and allows misspelled or unsupported fields to validate. Set additionalProperties to false. Define an explicit extension field if extensibility is required.
Proposed fix
- "additionalProperties": true,
+ "additionalProperties": false,📝 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.
| "additionalProperties": true, | |
| "additionalProperties": false, |
🤖 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/reminder.json` at line 7, Update the top-level
Reminder schema’s additionalProperties setting to false so undeclared fields are
rejected; if supported extensibility is required, define an explicit extension
field rather than allowing arbitrary top-level properties.
| "triggerAt": { | ||
| "type": "string", | ||
| "format": "date-time", | ||
| "description": "Absolute reminder trigger time, equivalent to VALARM TRIGGER;VALUE=DATE-TIME." | ||
| }, |
There was a problem hiding this comment.
🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
# Trace Reminder scheduling and trigger interpretation.
rg -n -C 5 --glob '*.js' --glob '*.ts' --glob '*.json' \
'"triggerKind"|"triggerAt"|"relativeTo"|"offset"|"Reminder"' servicesRepository: MetaState-Prototype-Project/prototype
Length of output: 3219
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "== reminder.json =="
cat -n services/ontology/schemas/reminder.json | sed -n '1,120p'
echo
echo "== schema references to reminder trigger fields =="
rg -n -C 6 --glob '*.js' --glob '*.ts' --glob '*.json' \
'"triggerKind"|"triggerAt"|"snoozedUntil"|"relatedSubject"|"REMINDER"' services | sed -n '1,240p'Repository: MetaState-Prototype-Project/prototype
Length of output: 8197
Handle triggerKind: "relative" in the schema.
Reminder still requires an absolute triggerAt for every reminder, including triggerKind: "relative". Remove the relative option or add conditional schemas that require absolute times and separate required relative fields such as offset and subject-time anchor.
🤖 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/reminder.json` around lines 26 - 30, Update the
Reminder schema around triggerAt to handle triggerKind "relative" explicitly:
either remove the relative trigger option, or add conditional schemas so
absolute triggers require triggerAt while relative triggers require the
appropriate offset and subject-time anchor fields. Ensure reminders are not
forced to provide triggerAt when using the relative form.
Summary
Validation
Summary by CodeRabbit
New Features
Improvements