{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://rodcor.github.io/sidequest-commons/schemas/proposal-v1.schema.json", "title": "Sidequest Commons machine proposal", "description": "A bounded proposal envelope that is serialized as the body of a GitHub issue.", "type": "object", "additionalProperties": false, "required": [ "kind", "schemaVersion", "name", "category", "problem", "audience", "smallestUsefulVersion", "successCriteria", "whyNow", "safety" ], "properties": { "kind": { "const": "sidequest-proposal" }, "schemaVersion": { "const": 1 }, "name": { "type": "string", "minLength": 3, "maxLength": 80 }, "category": { "enum": [ "Accessibility", "Climate & environment", "Creativity", "Civic utility", "Developer tools", "Education", "Local community", "Open data", "Personal productivity", "Science" ] }, "problem": { "type": "string", "minLength": 30, "maxLength": 700 }, "audience": { "type": "string", "minLength": 10, "maxLength": 300 }, "smallestUsefulVersion": { "type": "string", "minLength": 30, "maxLength": 1000 }, "successCriteria": { "type": "array", "minItems": 1, "maxItems": 6, "items": { "type": "string", "minLength": 15, "maxLength": 110 } }, "whyNow": { "type": "string", "maxLength": 700 }, "safety": { "type": "object", "additionalProperties": false, "required": [ "noForbiddenCapabilities", "starsOptional", "openSourceBuild" ], "properties": { "noForbiddenCapabilities": { "const": true, "description": "The proposal does not request credentials, private data, surveillance, malware, spam, weapons, deceptive engagement, access bypass, or irreversible third-party actions." }, "starsOptional": { "const": true }, "openSourceBuild": { "const": true } } } } }