8.8 KiB
Troubleshooting
This guide lists common implemented failure modes and safe fixes.
Canonical references:
Missing Or Invalid Config
Symptom:
- CLI error includes
application config error,config file not found,invalid config YAML, orinvalid config.
Likely cause:
--configpoints to a missing file.- YAML syntax is invalid.
- Config contains unknown fields or negative HTTP size limits.
Diagnostic step:
go run ./cmd/scriptorium render --config /path/to/config.yml --prompt generic.markdown_summary --input transcript=./examples/fixtures/transcript.md --input glossary=./examples/fixtures/glossary.yml
Safe fix:
- Correct the config path.
- Fix YAML syntax.
- Remove unknown fields.
- Keep raw secrets out of config.
Relevant links: Configuration reference, CLI reference
Missing Prompt Directory
Symptom:
- CLI parse error says the prompt directory is required.
Likely cause:
- Neither config nor CLI flags provide an effective
prompt_dir.
Diagnostic step:
- Re-run once with explicit
--prompt-dir.
Safe fix:
- Set
prompt_dirin config or pass--prompt-dir.
Relevant links: Configuration reference, CLI reference
Unknown Flags
Symptom:
- CLI parse error for an unknown flag.
Likely cause:
- Typo.
- Flag is valid for another command.
servewas given runtime model override flags.
Diagnostic step:
- Compare the command with the command-specific flag list.
Safe fix:
- Remove unsupported flags.
- Use
runorrenderfor runtime model overrides.
Relevant links: CLI reference
Prompt Load Failures
Symptom:
- CLI run/render fails during prompt loading.
- HTTP returns
404 prompt_not_foundor400 prompt_load_failed.
Likely cause:
- Prompt ID/version does not exist.
- Prompt YAML is invalid or has unknown fields.
- Prompt contract is invalid, such as missing messages, invalid output mode, bad
content_file, or missingschema_pathforjson_schema.
Diagnostic step:
go run ./cmd/scriptorium render --config ./examples/config.yml --prompt <prompt-id> --input transcript=./examples/fixtures/transcript.md --input glossary=./examples/fixtures/glossary.yml --format json
Safe fix:
- Correct prompt ID/version.
- Fix prompt YAML and referenced
content_filepaths. - Fix output contract fields.
Relevant links: Configuration reference, CLI reference
Profile Load Failures
Symptom:
- CLI run/render fails during profile loading.
- HTTP returns
404 profile_not_found,400 profile_load_failed, or400 profile_required.
Likely cause:
- Profile ID does not exist.
- Request omitted profile and prompt has no
default_profile. - Profile YAML is invalid or has unknown fields.
- Profile contains raw
api_key.
Diagnostic step:
go run ./cmd/scriptorium render --config ./examples/config.yml --prompt generic.markdown_summary --profile <profile-id> --input transcript=./examples/fixtures/transcript.md --input glossary=./examples/fixtures/glossary.yml
Safe fix:
- Correct profile ID or prompt
default_profile. - Fix profile YAML and value ranges.
- Replace raw
api_keywithapi_key_env.
Relevant links: Configuration reference, CLI reference
Input Artifact Failures
Symptom:
- CLI run/render fails while reading inputs.
- HTTP returns
400 artifact_read_failed,400 artifact_not_allowed, or413 artifact_too_large.
Likely cause:
- Input file path is missing or unreadable.
- HTTP input type is unsupported or missing required fields.
- HTTP file refs are disabled because no artifact root is configured.
- HTTP file path is lexically outside the artifact root.
- HTTP file input exceeds
server.max_artifact_bytes.
Diagnostic step:
- Verify each input path exists and is readable by the process.
- For HTTP, verify input refs use
fileorinline. - For HTTP file refs, verify the artifact root and compare file size to
server.max_artifact_bytes.
Safe fix:
- Correct paths and permissions.
- Configure a narrow artifact root for HTTP file refs.
- Use relative paths under the artifact root or switch to
inline. - Increase
server.max_artifact_bytesonly for expected larger inputs.
Relevant links: HTTP API reference, Configuration reference
Missing API-Key Environment Variable
Symptom:
- CLI render/run fails with an API-key environment error.
- HTTP returns
400 api_key_env_missing.
Likely cause:
- Selected profile or runtime override sets
api_key_env, but the environment variable is unset or empty.
Diagnostic step:
printenv SCRIPTORIUM_API_KEY
Safe fix:
- Set the required environment variable before starting the CLI command or HTTP service.
- Or use a profile that does not require provider API-key auth.
Relevant links: Configuration reference, Operations guide
Prompt Template Render Failures
Symptom:
- CLI render/run fails during prompt rendering.
- HTTP returns
400 prompt_render_failed.
Likely cause:
- Template references an input that was not supplied.
- Template syntax or variable reference is invalid.
Diagnostic step:
- Run
render --format jsonwith the same prompt, inputs, vars, and profile.
Safe fix:
- Align
{{input "name"}}references with request input names. - Fix template syntax and variable names.
Relevant links: Configuration reference, CLI reference
LLM Request Failures
Symptom:
- CLI
runfails during generation. - HTTP returns
502 llm_failed.
Likely cause:
- Endpoint is unreachable.
- Provider returns non-2xx.
- Request times out.
- Provider response is malformed.
Diagnostic step:
- Run
renderfirst to confirm pre-LLM preparation works. - Check selected endpoint/model in prepared output.
- Check network/provider logs for timeout or non-2xx details.
Safe fix:
- Correct endpoint/model/profile settings.
- Adjust timeout when appropriate.
- Resolve provider or network issue.
Relevant links: Operations guide, Configuration reference
Validation Failed
Symptom:
- CLI
runexits2. - HTTP returns
200 OKwithvalidation.statusset tofailed.
Likely cause:
- Generated output failed
basic,json, orjson_schemacontent validation.
Diagnostic step:
- Inspect validation errors in CLI stderr or the HTTP response.
Safe fix:
- Refine prompt instructions.
- Adjust schema or model/profile settings.
- Rerun after correction.
Relevant links: Operations guide, HTTP API reference
Validation Runtime Failure
Symptom:
- CLI
runfails with validation runtime error. - HTTP returns
500 validation_runtime_failed.
Likely cause:
json_schemaschema file is missing or unreadable.- Schema JSON is invalid.
Diagnostic step:
- Verify
schema_dirand promptoutput.schema_path. - Check schema file readability and JSON syntax.
Safe fix:
- Correct schema path or permissions.
- Fix schema JSON.
- Rerun.
Relevant links: Configuration reference, Operations guide
HTTP JSON Or Request Contract Errors
Symptom:
- HTTP returns
400 invalid_jsonor400 invalid_request.
Likely cause:
- JSON body is malformed.
- Request has unknown fields or trailing JSON tokens.
- Required
prompt_idorinputsis missing. - Runtime override values are out of range.
extra_paramscollides with reserved outbound fields.
Diagnostic step:
- Revalidate request JSON and compare fields with the API reference.
Safe fix:
- Send one JSON object with only supported fields.
- Include
prompt_idand at least one input. - Use valid model override ranges.
- Remove reserved
extra_paramskeys.
Relevant links: HTTP API reference
HTTP Size Limit Errors
Symptom:
- HTTP returns
413 request_too_large,413 artifact_too_large, or413 response_too_large.
Likely cause:
- JSON request body exceeds
server.max_request_bytes. - HTTP file input exceeds
server.max_artifact_bytes. - Encoded JSON response exceeds
server.max_response_bytes.
Diagnostic step:
- Compare request, file input, and expected response sizes with configured limits.
Safe fix:
- Use smaller inline inputs or switch to file inputs under the artifact root.
- Reduce generated output size.
- Omit
include_raw_output. - Increase limits only when the deployment expects larger payloads.
Relevant links: HTTP API reference, Operations guide
HTTP Route Or Method Errors
Symptom:
- HTTP returns
404 not_foundor405 method_not_allowed.
Likely cause:
- Path is not
/v1/runs. - Method on
/v1/runsis notPOST.
Diagnostic step:
- Check the request URL and method.
Safe fix:
- Send
POST /v1/runs.
Relevant links: HTTP API reference