changedInput schema / properties / spec / properties / env / description
Previous value: -"Environment variables for the container. They are stored with the job spec in clear on our control plane and are included in our routine backups, so do not put credentials or other secrets here — pass them in at run time or fetch them from your own store inside the command."New value: +"Non-sensitive configuration for the container (e.g. MODEL_NAME, EPOCHS). They are stored with the job spec in clear on our control plane and are included in our routine backups, so NEVER put credentials here: API keys, tokens, passwords and cloud keys belong in saved Secrets, attached with `secrets`."
addedInput schema / properties / spec / properties / secrets
Added value: +{
+ "description": "Saved secret sets this job needs, by name (e.g. [{\"name\":\"hf-training\"}]) or by the access it needs ([{\"type\":\"huggingface\",\"purpose\":\"Access a gated model\"}]). Every variable in each set is injected into the container at run time; values are never in the spec, the response or the chat. A missing set comes back with a Symbioza setup link for the user.",
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "fields": {
+ "description": "For a custom requirement only: the environment variable NAMES the workload expects (e.g. [\"MODEL_API_TOKEN\"]). Names only, never values.",
+ "items": {
+ "pattern": "^[A-Za-z_][A-Za-z0-9_]{0,127}$",
+ "type": "string"
+ },
+ "maxItems": 32,
+ "type": "array"
+ },
+ "id": {
+ "description": "The saved set's id (sec_…). Symbioza pins it at submit; you normally give the name.",
+ "pattern": "^sec_[A-Za-z0-9_-]{22}$",
+ "type": "string"
+ },
+ "name": {
+ "description": "The saved secret set's name, e.g. \"hf-training\". Read the names with listSecrets.",
+ "pattern": "^[a-z0-9][a-z0-9_-]{0,62}$",
+ "type": "string"
+ },
+ "purpose": {
+ "description": "A short reason shown to the user on the setup page, e.g. \"Access a gated model\". Never a credential.",
+ "maxLength": 160,
+ "minLength": 1,
+ "type": "string"
+ },
+ "type": {
+ "description": "What access the workload needs: huggingface, object-storage, wandb or custom. With no name, Symbioza uses your one saved set of this type, or returns a setup link when there is none.",
+ "enum": [
+ "huggingface",
+ "object-storage",
+ "wandb",
+ "custom"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "maxItems": 16,
+ "type": "array"
+}
addedOutput schema / properties / access
Added value: +{
+ "additionalProperties": {},
+ "description": "On access_required or secret_conflict: what the spec's secrets need, with setup links",
+ "properties": {
+ "complete": {
+ "description": "true when every set the spec names is saved and nothing collides; submitJob refuses otherwise",
+ "type": "boolean"
+ },
+ "conflicts": {
+ "description": "A variable two attached sets (or a set and env) both define",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "nextAction": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "add_access | fix_spec | null"
+ },
+ "ready": {
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "fields": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "name": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "name",
+ "type",
+ "fields"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "required": {
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "candidates": {
+ "description": "ambiguous: the saved set names that could serve; ask the user which",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "message": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "purpose": {
+ "type": "string"
+ },
+ "setupUrl": {
+ "description": "missing: the Symbioza link where the user saves it; give it as returned",
+ "type": "string"
+ },
+ "status": {
+ "description": "missing | ambiguous | type_mismatch",
+ "type": "string"
+ },
+ "type": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "status",
+ "type",
+ "message"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "complete",
+ "ready",
+ "required",
+ "conflicts",
+ "nextAction"
+ ],
+ "type": "object"
+}
changedOutput schema / properties / action / description
Previous value: -"The one next step: authenticate, fix_spec, raise_budget, add_funds, claim_credit, relax_spec_or_retry, retry_later, contact_support"New value: +"The one next step: authenticate, fix_spec, raise_budget, add_funds, claim_credit, add_access, relax_spec_or_retry, retry_later, contact_support"
changedOutput schema / properties / code / description
Previous value: -"Machine-readable refusal code: unauthorized, invalid_spec, budget_too_low, insufficient_balance, no_compute, unavailable, refused"New value: +"Machine-readable refusal code: unauthorized, invalid_spec, budget_too_low, insufficient_balance, access_required, secret_conflict, no_compute, unavailable, refused"
addedOutput schema / properties / shortfallUsd
Added value: +{
+ "description": "On insufficient_balance: whole dollars of credit this job still needs",
+ "type": "number"
+}
addedOutput schema / properties / topupUrl
Added value: +{
+ "description": "On insufficient_balance: the link to give the user for that credit",
+ "type": "string"
+}