{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://paperspec.scient.ing/schemas/project.schema.json", "title": "Project", "description": "scienting-project/1: a team's curated set of documents and people; spec/20-projects.md.", "type": "object", "properties": { "format": { "const": "scienting-project/1" }, "key": { "$ref": "common.schema.json#/$defs/key" }, "store": { "$ref": "common.schema.json#/$defs/key" }, "name": { "type": "string", "minLength": 1 }, "description": { "type": "string", "minLength": 1 }, "members": { "type": "array", "items": { "type": "object", "properties": { "person": { "type": "string", "minLength": 1 }, "role": { "enum": [ "owner", "editor", "reader", "guest" ] }, "keys": { "type": "array", "items": { "$ref": "common.schema.json#/$defs/key" }, "uniqueItems": true } }, "required": [ "person", "role", "keys" ], "additionalProperties": false }, "minItems": 1 }, "documents": { "type": "array", "items": { "type": "object", "properties": { "doc": { "$ref": "common.schema.json#/$defs/qualifiedKey" }, "reason": { "type": "string", "minLength": 1 }, "tags": { "type": "array", "items": { "$ref": "common.schema.json#/$defs/key" }, "uniqueItems": true }, "status": { "type": "object", "additionalProperties": { "enum": [ "unread", "reading", "read" ] } } }, "required": [ "doc", "reason" ], "additionalProperties": false } }, "paths": { "type": "array", "items": { "type": "object", "properties": { "id": { "$ref": "common.schema.json#/$defs/key" }, "title": { "type": "string", "minLength": 1 }, "steps": { "type": "array", "items": { "type": "object", "properties": { "type": { "enum": [ "document", "node", "claim", "layer" ] }, "ref": { "type": "string", "minLength": 1 }, "note": { "type": "string", "minLength": 1 } }, "required": [ "type", "ref" ], "additionalProperties": false }, "minItems": 1 } }, "required": [ "id", "title", "steps" ], "additionalProperties": false } }, "layers": { "type": "array", "items": { "type": "string", "pattern": "^tag:scient\\.ing,2026:layer:[a-z0-9][a-z0-9._-]*/[a-hjkmnp-tv-z][0-9a-hjkmnp-tv-z]{6,25}$" } }, "datasets": { "type": "array", "items": { "$ref": "common.schema.json#/$defs/datasetId" } }, "views": { "type": "array", "items": { "$ref": "common.schema.json#/$defs/key" } }, "drafts": { "type": "array", "items": { "$ref": "common.schema.json#/$defs/qualifiedKey" } }, "claims": { "type": "object", "properties": { "lode": { "type": "string", "minLength": 1 } }, "required": [ "lode" ], "additionalProperties": false }, "settings": { "type": "object", "properties": { "digit_rule": { "enum": [ "all", "anchored-sections", "none" ] }, "drift_threshold": { "$ref": "common.schema.json#/$defs/decimal" }, "spot_check": { "type": "object", "properties": { "rate": { "$ref": "common.schema.json#/$defs/decimal" }, "minimum": { "type": "integer", "minimum": 1 } }, "required": [ "rate", "minimum" ], "additionalProperties": false }, "rights_unknown": { "enum": [ "refuse", "warn" ] }, "stages": { "$ref": "common.schema.json#/$defs/key" }, "log": { "type": "object", "description": "The project's transparency log (spec/23): its origin, the roster keys that witness it, and how many must cosign a checkpoint.", "properties": { "origin": { "type": "string", "pattern": "^[^\\n]+$", "minLength": 1 }, "witnesses": { "type": "array", "items": { "$ref": "common.schema.json#/$defs/key" }, "uniqueItems": true }, "threshold": { "type": "integer", "minimum": 0 } }, "required": [ "origin", "witnesses", "threshold" ], "additionalProperties": false } }, "required": [], "additionalProperties": false } }, "required": [ "format", "key", "name", "members", "documents" ], "additionalProperties": false }