| name | endfield-option-overrides |
| description | Edit and validate Endfield WebUI-only manual option recovery overrides. Use when Codex needs to add, update, review, or verify entries in webui/overrides/options.json for known option placement gaps, unknown option positions, inferred option responses, or manual override tags in the Story WebUI. |
Endfield Option Overrides
Use this skill to maintain the local override file that covers known WebUI
option recovery gaps without changing the automatic recovery rules.
Files
- Override data:
webui/overrides/options.json
- Runtime application point:
webui/app.js
- Story rendering tags:
webui/app.js, webui/app_labels.js, webui/style.css
- Generated validation targets:
webui/data/lang/CN/conv/<key>.json,
reports/story/build/inferred_option_anchors_CN.json
- Coverage audit:
reports/story/recovery/options/option_override_coverage_CN.json/.md
Rules
- Treat overrides as WebUI-only display corrections, not source evidence.
- Edit the JSON file first. Change frontend code only when the override
format itself must evolve.
- Apply overrides only to known generated issue cases:
inferredOptionLayout / unknown option position, or
inferredOptionResponse / inferred following-line response.
- Do not use overrides to create new option groups, options, or line ids.
- Prefer exact stable ids: conversation key, group number, option id, and line id.
- Preserve the visible manual override tag; users must be able to see when a row
was manually overridden.
Override Format
Placement override:
{
"scenes": {
"dlg_example_1": {
"positions": {
"after": {
"dlg_example_1_002": ["1"]
}
},
"notes": {
"1": "Why this manual placement is accepted."
}
}
}
}
Pre-scene placement:
"positions": { "pre": ["1"] }
Inferred response override:
"responses": {
"option_dlg_example_1_1_001": ["dlg_example_1_003"]
}
Workflow
-
Identify the target scene and group.
- Use existing WebUI JSON,
reports/story/build/inferred_option_anchors_CN.json, or:
python tools\endfield_source_graph.py story <key> --limit-lines 12
- For inferred responses, inspect the generated warning or run the relevant
scripts/story_recovery/ audit before adding a manual mapping.
-
Edit webui/overrides/options.json.
- Keep notes short and factual.
- Use string values for group numbers.
- Validate option ids and line ids against the generated conv JSON.
-
Refresh the browser. No story rebuild is needed for runtime override edits.
-
Verify results.
python -m json.tool webui\overrides\options.json
- Run
python scripts\story_recovery\build_option_override_coverage_audit.py --language CN
when coverage or stale override targets need a full audit.
- Confirm the target Story scene shows the manual override tag.
- Confirm unresolved inferred-anchor counts are expected:
reports/story/build/inferred_option_anchors_CN.json
- Run syntax checks after frontend edits:
node --check webui\app.js
node --check webui\app_labels.js
Keep generated option audits under reports/story/recovery/options/; do not
write loose audit files at the reports/ root. These reports can feed later
source-graph or recovery audits, so remove only superseded scoped runs rather
than the current canonical language report.
Put temporary option probes under scratch/story/options/<task>/ or
tmp/story/options/<task-or-run>/; do not create loose files at either work
directory root.
Reporting Back
Mention:
- Which scene/group/option ids were overridden.
- Which line ids or placement were pinned.
- That the override is WebUI-only and visibly tagged.
- Which validation commands were run.