Addresses the 14aa6415 review.
- pick-model.sh: the picker relied on `--allowedTools ""` to be tool-less, but an
empirical check showed an empty allowlist does NOT block tools (the Write tool
still ran) -- it is treated as "unset" and the default toolset stays live. Add
`--permission-mode plan`, which IS verified to block Write while still producing
the selection JSON. --allowedTools "" + the Read deny-list remain as additional
layers. Corrected the comments in pick-model.sh and the picker settings.json
that claimed the empty allowlist made it tool-less.
- .woodpecker/ci-scripts-test.yml: new pull_request-triggered pipeline (homelab
only) that runs scripts/ci/test-model-selection.sh, so a PR weakening the
injection gate fails checks immediately instead of only on the next scheduled
e2e cron (closes the coverage-timing gap the review flagged).
- Pin a recorded real /v1/models response (scripts/ci/testdata/v1-models-sample.json)
and assert fetch-models.sh maps it correctly (opus effort=true, haiku
effort=false), documenting the verified response shape.
Deferred with rationale: hard-failing a pipeline when the degraded-schema warning
fires -- the warning already reaches the job log (curl/jq stderr is no longer
suppressed), and hard-failing on a benign API schema addition would break all
model selection; graceful degradation to name+date is the deliberate choice.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
46 lines
1.6 KiB
JSON
46 lines
1.6 KiB
JSON
{
|
|
"data": [
|
|
{
|
|
"type": "model",
|
|
"id": "claude-opus-5",
|
|
"display_name": "Claude Opus 5",
|
|
"created_at": "2026-07-24T00:00:00Z",
|
|
"max_input_tokens": 1000000,
|
|
"max_tokens": 128000,
|
|
"capabilities": {
|
|
"batch": { "supported": true },
|
|
"citations": { "supported": true },
|
|
"code_execution": { "supported": true },
|
|
"context_management": { "supported": true },
|
|
"effort": { "supported": true, "low": { "supported": true }, "medium": { "supported": true }, "high": { "supported": true }, "xhigh": { "supported": true }, "max": { "supported": true } },
|
|
"image_input": { "supported": true },
|
|
"pdf_input": { "supported": true },
|
|
"structured_outputs": { "supported": true },
|
|
"thinking": { "supported": true }
|
|
}
|
|
},
|
|
{
|
|
"type": "model",
|
|
"id": "claude-haiku-4-5-20251001",
|
|
"display_name": "Claude Haiku 4.5",
|
|
"created_at": "2025-10-15T00:00:00Z",
|
|
"max_input_tokens": 200000,
|
|
"max_tokens": 64000,
|
|
"capabilities": {
|
|
"batch": { "supported": true },
|
|
"citations": { "supported": true },
|
|
"code_execution": { "supported": false },
|
|
"context_management": { "supported": true },
|
|
"effort": { "supported": false },
|
|
"image_input": { "supported": true },
|
|
"pdf_input": { "supported": true },
|
|
"structured_outputs": { "supported": true },
|
|
"thinking": { "supported": true }
|
|
}
|
|
}
|
|
],
|
|
"has_more": false,
|
|
"first_id": "claude-opus-5",
|
|
"last_id": "claude-haiku-4-5-20251001"
|
|
}
|