-
Notifications
You must be signed in to change notification settings - Fork 7
Register 80hours reminder and platform schemas #1101
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,30 @@ | ||
| { | ||
| "$schema": "http://json-schema.org/draft-07/schema#", | ||
| "schemaId": "0f9a3cb8-4a9f-4b5f-a1fa-3a4c2eb1f410", | ||
| "title": "GroupReference", | ||
| "type": "object", | ||
| "description": "A user-side reference to the canonical GroupManifest for a company or project. It intentionally carries no duplicate group membership or role data.", | ||
| "additionalProperties": false, | ||
| "required": [ | ||
| "id", | ||
| "isReference", | ||
| "entityType", | ||
| "canonicalEntityId", | ||
| "canonicalOwnerEName", | ||
| "canonicalEnvelopeId", | ||
| "groupManifestEnvelopeId", | ||
| "createdAt", | ||
| "updatedAt" | ||
| ], | ||
| "properties": { | ||
| "id": { "type": "string" }, | ||
| "isReference": { "type": "boolean", "const": true }, | ||
| "entityType": { "type": "string", "enum": ["company", "project"] }, | ||
| "canonicalEntityId": { "type": "string" }, | ||
| "canonicalOwnerEName": { "type": "string" }, | ||
| "canonicalEnvelopeId": { "type": "string" }, | ||
| "groupManifestEnvelopeId": { "type": "string" }, | ||
| "createdAt": { "type": "string", "format": "date-time" }, | ||
| "updatedAt": { "type": "string", "format": "date-time" } | ||
| } | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,31 @@ | ||
| { | ||
| "$schema": "http://json-schema.org/draft-07/schema#", | ||
| "schemaId": "0f9a3cb8-4a9f-4b5f-a1fa-3a4c2eb1f411", | ||
| "title": "PlatformSelfDescription", | ||
| "type": "object", | ||
| "description": "A machine-readable self-description of a W3DS post-platform, stored on the platform's own eVault.", | ||
| "additionalProperties": false, | ||
| "properties": { | ||
| "id": { "type": "string" }, | ||
| "platformName": { "type": "string" }, | ||
| "displayName": { "type": "string" }, | ||
| "format": { "type": "string" }, | ||
| "content": { "type": "string" }, | ||
| "contentSha256": { "type": "string" }, | ||
| "sourceUrl": { "type": "string" }, | ||
| "profileEnvelopeId": { "type": "string" }, | ||
| "createdAt": { "type": "string", "format": "date-time" }, | ||
| "updatedAt": { "type": "string", "format": "date-time" } | ||
| }, | ||
| "required": [ | ||
| "id", | ||
| "platformName", | ||
| "displayName", | ||
| "format", | ||
| "content", | ||
| "contentSha256", | ||
| "profileEnvelopeId", | ||
| "createdAt", | ||
| "updatedAt" | ||
| ] | ||
| } | ||
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
| @@ -0,0 +1,71 @@ | ||||||
| { | ||||||
| "$schema": "http://json-schema.org/draft-07/schema#", | ||||||
| "schemaId": "0f9a3cb8-4a9f-4b5f-a1fa-3a4c2eb1f412", | ||||||
| "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, | ||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🗄️ 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 Proposed fix- "additionalProperties": true,
+ "additionalProperties": false,📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||
| "required": [ | ||||||
| "id", | ||||||
| "canonicalOwnerEName", | ||||||
| "createdBy", | ||||||
| "recipientEName", | ||||||
| "triggerAt", | ||||||
| "action", | ||||||
| "summary", | ||||||
| "status", | ||||||
| "relatedSubject", | ||||||
| "createdAt", | ||||||
| "updatedAt" | ||||||
| ], | ||||||
| "properties": { | ||||||
| "id": { "type": "string" }, | ||||||
| "canonicalOwnerEName": { "type": "string" }, | ||||||
| "createdBy": { "type": "string" }, | ||||||
| "recipientEName": { "type": "string" }, | ||||||
| "triggerAt": { | ||||||
| "type": "string", | ||||||
| "format": "date-time", | ||||||
| "description": "Absolute reminder trigger time, equivalent to VALARM TRIGGER;VALUE=DATE-TIME." | ||||||
| }, | ||||||
|
Comment on lines
+26
to
+30
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🗄️ 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
🤖 Prompt for AI Agents |
||||||
| "timezone": { "type": "string", "default": "UTC" }, | ||||||
| "action": { | ||||||
| "type": "string", | ||||||
| "enum": ["display", "email", "audio"], | ||||||
| "default": "display" | ||||||
| }, | ||||||
| "summary": { "type": "string" }, | ||||||
| "description": { "type": "string" }, | ||||||
| "status": { | ||||||
| "type": "string", | ||||||
| "enum": ["scheduled", "acknowledged", "dismissed", "cancelled"], | ||||||
| "default": "scheduled" | ||||||
| }, | ||||||
| "acknowledgedAt": { "type": ["string", "null"], "format": "date-time" }, | ||||||
| "snoozedUntil": { "type": ["string", "null"], "format": "date-time" }, | ||||||
| "standard": { | ||||||
| "type": "string", | ||||||
| "description": "Optional interoperability hint, for example RFC5545-VALARM." | ||||||
| }, | ||||||
| "triggerKind": { | ||||||
| "type": "string", | ||||||
| "enum": ["absolute", "relative"], | ||||||
| "default": "absolute" | ||||||
| }, | ||||||
| "relatedSubject": { | ||||||
| "type": "object", | ||||||
| "description": "Structured pointer to the subject. Readers can resolve this to learn whether the subject is a task, event, message, birthday, payment, shopping item, or another W3DS entity.", | ||||||
| "required": ["id"], | ||||||
| "additionalProperties": true, | ||||||
| "properties": { | ||||||
| "id": { "type": "string" }, | ||||||
| "ontologyId": { "type": "string" }, | ||||||
| "canonicalOwnerEName": { "type": "string" }, | ||||||
| "canonicalEnvelopeId": { "type": ["string", "null"] }, | ||||||
| "type": { "type": "string" } | ||||||
| } | ||||||
| }, | ||||||
| "createdAt": { "type": "string", "format": "date-time" }, | ||||||
| "updatedAt": { "type": "string", "format": "date-time" } | ||||||
| } | ||||||
| } | ||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
Repository: MetaState-Prototype-Project/prototype
Length of output: 1781
🏁 Script executed:
Repository: MetaState-Prototype-Project/prototype
Length of output: 4131
Constrain
contentSha256to the expected SHA-256 digest format.contentSha256is 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 withpattern.🤖 Prompt for AI Agents