{ "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "Fester Project Definition", "type": "object", "required": ["name", "source", "targets"], "additionalProperties": false, "properties": { "name": { "type": "string", "description": "Human-readable project name" }, "version": { "type": "string", "description": "Optional project version tag (release tracking)", "default": "0.0.0" }, "source": { "type": "object", "required": ["type", "url"], "additionalProperties": false, "properties": { "type": { "type": "string", "enum": ["git", "hg", "svn", "cvs"], "description": "Source control system type (normalized into snapshot)" }, "url": { "type": "string", "description": "Repository URL or path for checkout/export" }, "ref": { "type": "string", "description": "Optional branch/tag/revision reference (git branch, svn rev, hg changeset)", "default": "HEAD" } } }, "targets": { "type": "object", "description": "Build targets mapped to shell commands", "additionalProperties": { "type": "string" } }, "resources": { "type": "object", "description": "Optional resource hints for scheduler optimization", "properties": { "max_parallel_builds": { "type": "integer", "minimum": 1, "maximum": 256, "default": 64 }, "thermal_priority": { "type": "string", "enum": ["low", "balanced", "high_safety"], "default": "high_safety" }, "preferred_nodes": { "type": "array", "items": { "type": "string" }, "description": "Optional node names preferred for this project" }, "avoid_nodes": { "type": "array", "items": { "type": "string" }, "description": "Nodes to exclude from scheduling" } } }, "build_env": { "type": "object", "description": "Environment variables injected into build runtime", "additionalProperties": { "type": "string" } }, "artifacts": { "type": "object", "description": "Output packaging configuration", "properties": { "enabled": { "type": "boolean", "default": true }, "format": { "type": "string", "enum": ["tar", "tar.gz", "tar.zst", "deb", "rpm"], "default": "tar.zst" }, "output_dir": { "type": "string", "default": "./dist" }, "naming": { "type": "string", "description": "Artifact naming template", "default": "{name}-{version}-{target}-{hash}" } } }, "cache": { "type": "object", "description": "Build cache behavior control", "properties": { "enabled": { "type": "boolean", "default": true }, "reuse_snapshots": { "type": "boolean", "default": true }, "skip_if_unchanged": { "type": "boolean", "default": true } } }, "logging": { "type": "object", "properties": { "verbose": { "type": "boolean", "default": true }, "stream_to_ui": { "type": "boolean", "default": true } } } } }