changedInput schema / properties / spec / description
Previous value: -"The job spec: image + command run on a rented box sized by minDiskGb (and gpu, when declared), under budgetUsd. Supply the workload: the image, the command, its inputs, the expected outputs and budgetUsd. Symbioza sizes the machine — do not ask the user to choose CPU cores, RAM, VRAM, a GPU model, a provider or a region, and do not derive a resource minimum from a thread count, a worker count or a measurement taken somewhere else. gpu.minVramGb, minRamGb and minCpuCores are optional expert floors: declare one only when the workload has evidence for it, and omit it otherwise — an omitted floor is sized by Symbioza, never treated as zero. The gpu block is optional: leave it out and the job is still GPU work with Symbioza sizing the card; declare it to carry minCudaVersion or an evidenced floor."New value: +"The job spec to estimate: image + command run on a rented box sized by minDiskGb (and gpu, when declared). budgetUsd is optional here — leave it out to see the likely cost before the user chooses one; submitJob requires it. Supply the workload: the image, the command, its inputs, the expected outputs and budgetUsd. Symbioza sizes the machine — do not ask the user to choose CPU cores, RAM, VRAM, a GPU model, a provider or a region, and do not derive a resource minimum from a thread count, a worker count or a measurement taken somewhere else. gpu.minVramGb, minRamGb and minCpuCores are optional expert floors: declare one only when the workload has evidence for it, and omit it otherwise — an omitted floor is sized by Symbioza, never treated as zero. The gpu block is optional: leave it out and the job is still GPU work with Symbioza sizing the card; declare it to carry minCudaVersion or an evidenced floor."
changedInput schema / properties / spec / properties / budgetUsd / description
Previous value: -"Hard spend ceiling for the whole job, USD. The job is refused or stopped rather than exceeding it."New value: +"Optional here: the job's hard spend ceiling, USD. Leave it out to see the estimate before the user chooses one; submitJob requires it, so estimate again with the user's budget before submitting."
changedInput schema / properties / spec / required
Previous value: -[
- "image",
- "command",
- "budgetUsd"
-]New value: +[
+ "image",
+ "command"
+]
addedOutput schema / properties / account / properties / coversThisJob / anyOf
Added value: +[
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "null"
+ }
+]
addedOutput schema / properties / account / properties / coversThisJob / description
Added value: +"Would submitJob accept this spec's budget today; null when the spec has no budgetUsd"
removedOutput schema / properties / account / properties / coversThisJob / type
Removed value: -"boolean"
addedOutput schema / properties / account / properties / topupUrl / description
Added value: +"With a budget: the link for the credit this job needs"
changedOutput schema / properties / account / required
Previous value: -[
- "availableUsd",
- "promoUsd",
- "promoExpiresAtMs",
- "coversThisJob",
- "promoJobCapUsd",
- "claimableUsd",
- "nextAction",
- "claimUrl",
- "topupUrl"
-]New value: +[
+ "availableUsd",
+ "promoUsd",
+ "promoExpiresAtMs",
+ "coversThisJob",
+ "promoJobCapUsd",
+ "claimableUsd",
+ "nextAction",
+ "claimUrl"
+]
changedOutput schema / properties / budgetUsd / description
Previous value: -"Your own cap, read back; nothing bills past it"New value: +"Your own cap, read back; nothing bills past it. Absent when the spec has none"
changedOutput schema / properties / estimatedPriceUsd / description
Previous value: -"What this spec is expected to bill you, in dollars"New value: +"What this spec is expected to bill you, in dollars — present only when price.evidence is customer (priced at your own maxRuntimeSeconds); absent when nothing about this job predicts its runtime"
addedOutput schema / properties / price
Added value: +{
+ "additionalProperties": {},
+ "description": "What the price rests on, what it includes and what is still unknown",
+ "properties": {
+ "evidence": {
+ "description": "customer: priced at your own maxRuntimeSeconds | insufficient: nothing about this job predicts its runtime, so this is not a quote",
+ "type": "string"
+ },
+ "includes": {
+ "description": "What the estimate counts",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "nextStep": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "perHourUsd": {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "What each hour of running costs on the machine Symbioza would book"
+ },
+ "summary": {
+ "description": "One sentence for the user",
+ "type": "string"
+ },
+ "unknown": {
+ "description": "What it cannot count yet",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "evidence",
+ "summary",
+ "perHourUsd",
+ "includes",
+ "unknown",
+ "nextStep"
+ ],
+ "type": "object"
+}
addedOutput schema / properties / readiness
Added value: +{
+ "additionalProperties": {},
+ "description": "What stands between this estimate and a submittable one, plus advice about its inputs",
+ "properties": {
+ "missing": {
+ "description": "budget_required | inputs_unverified | inputs_not_declared | access_required, each with a detail; the input notes are advice and never block a submit",
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "detail": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "code",
+ "detail"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "status": {
+ "description": "preliminary while budget_required or access_required is listed; otherwise ready",
+ "type": "string"
+ }
+ },
+ "required": [
+ "status",
+ "missing"
+ ],
+ "type": "object"
+}
changedOutput schema / properties / runtime / description
Previous value: -"basis, referenceSeconds, boundSeconds, boundBy, note: the runtime the price assumes and where the run would be stopped"New value: +"basis, referenceSeconds, boundSeconds, boundBy, note: the runtime the estimate assumes and where the run would be stopped"
changedOutput schema / properties / specDigest / description
Previous value: -"Fingerprint of the exact spec and budget priced here; pass it to submitJob"New value: +"Fingerprint of the exact spec and budget priced here; pass it to submitJob. Absent when the spec has no budgetUsd: submitJob requires one"