coleam00/Archon · error
Gitea API error: ${String(response.status)}
Error message
Gitea API error: ${String(response.status)} What it means
normalizeRunOverridePreset normalizes a run-level model override preset through normalizeStrictRunModelPreset, which enforces the strict preset shape (valid provider, model string, allowed fields). When that validator throws RunModelPresetValidationError, it is re-thrown as a plain Error that names the override target and embeds the validator's message, so the developer knows which override entry is malformed.
Source
Thrown at packages/adapters/src/community/forge/gitea/adapter.ts:419
/**
* Fetch comment history from issue or PR
* Returns comments in chronological order (oldest first)
*/
private async fetchCommentHistory(
owner: string,
repo: string,
number: number
): Promise<string[]> {
try {
const url = `${this.baseUrl}/api/v1/repos/${owner}/${repo}/issues/${String(number)}/comments`;
const response = await fetch(url, {
headers: {
Authorization: `token ${this.token}`,
},
});
if (!response.ok) {
throw new Error(`Gitea API error: ${String(response.status)}`);
}
const comments = (await response.json()) as {
user?: { login: string } | null;
body?: string | null;
}[];
// Gitea returns comments in chronological order by default
// Take last 20 for context
return comments.slice(-20).map(comment => {
const author = comment.user?.login ?? 'unknown';
const body = comment.body ?? '';
return `${author}: ${body}`;
});
} catch (error) {
getLog().error(
{ err: error, owner, repo, issueNumber: number },
'comment_history_fetch_failed'View on GitHub (pinned to 0773b97458)
Solutions
- Read the embedded error.message after the target name — it states exactly which field is invalid.
- Provide the full strict preset shape: a valid provider slug plus a model string, e.g. { provider: 'anthropic', model: 'claude-sonnet-4' }.
- Use the 'provider/model' shorthand spec instead of a raw object if you only know provider and model.
- Validate the preset with normalizeStrictRunModelPreset in a try/catch before passing it if constructing programmatically.
Example fix
// before
{ reasoning: { provider: 'openai' } } // missing model
// after
{ reasoning: { provider: 'openai', model: 'gpt-4o' } } Defensive patterns
Strategy: validation
Validate before calling
import { normalizeStrictRunModelPreset } from '@archon/workflows/model-validation';
try { normalizeStrictRunModelPreset(preset); } catch (e) { console.error('invalid preset', e); } Type guard
function isValidPreset(p: unknown): p is { provider: string; model: string } {
return typeof p === 'object' && p !== null &&
'provider' in p && typeof (p as any).provider === 'string' &&
'model' in p && typeof (p as any).model === 'string';
} Try / catch
try {
resolveRunModelOverrides(profile, overrides);
} catch (e) {
if (e instanceof Error && e.message.startsWith('Model override')) {
console.error('Fix the malformed override entry:', e.message);
} else throw e;
} Prevention
- Always specify both provider and model in override presets
- Use provider slugs exactly as documented (lowercase, no spaces)
- Prefer the 'provider/model' string shorthand over raw objects in env/YAML
- Validate presets with normalizeStrictRunModelPreset before passing them programmatically
When it happens
Trigger: Calling resolveRunModelOverrides where an override value like `tier='x'` expands (or is given directly) to a RawAliasEntry with an unknown provider, missing model, empty string, or extra/invalid fields — anything normalizeStrictRunModelPreset rejects.
Common situations: YAML/env run overrides like `MODEL_OVERRIDE_reasoning='gpt-5'` omitting the provider; unsupported provider slug ('open ai', 'anthropicx'); trailing whitespace or quoting artifacts; copying a preset shape from an older Archon version with fields that no longer exist.
Understand the failure class
Background: Schema validation failed / invalid input schema: payload rejected because its shape doesn't match the expected schema — this error's family across 28 libraries.
Related errors
- No chat in context
- Gitea API error: ${String(response.status)} ${response.statu
- Invalid container.network '${network}' in .archon/config.yam
- Invalid container.memoryMb '${String(memoryMb)}' — must be a
- Invalid container.pidsLimit '${String(pidsLimit)}' — must be
AI-assisted analysis of coleam00/Archon@0773b97458 (2026-09-01).
Data as JSON: /api/errors/b896f753197fb510.
Report an issue: GitHub.