Capabilities
A capability is one thing a job can ask sandcastle to do. The toolbox is closed: there are two,
claude and ocr, and they are built into the
binary. The configuration only enables them and sets their values.
A job names one capability and fills that capability’s input, and only the fields it defines.
It cannot choose a program, a model, an argument or a path. Any other field is ignored.
Each capability’s page says three things: what the operator configures, what the job fills, and what the job gets back.
What every capability shares
- Every job runs in a box of its own, with no network and no secret; see How a job is boxed.
- An input larger than the capability’s
max_inputfails the job before a box starts. - A source may use a capability only when the operator enabled it in
config.yamland listed it in the source’scapabilities. A job for another capability fails. - A job ends in one of three ways, sent back to the source as its
status:succeeded, with the output;failed: the job is at fault, or its box broke a limit;released: the capability could not be used, through no fault of the job. The capability then rests for itscooldown, and no job of it is claimed until the rest is over.
checkasks each enabled capability to prove it can work, in a box of its own, without running a job.
The keys of both are in config.yaml.