Skip to content

Canon-figure-as-PC build completeness + armor inspector metadata (optimizer build-inspection gaps) #896

@100yenadmin

Description

@100yenadmin

Context

The build-optimizer persona (sat=5, the lone cross_persona_sat holdout) plays a seeded canon figure as PC (e.g. Devella Fountainhead, an L10 Paladin via load_canon_character). Ground-truth from its live snapshot showed the canon figure arrives incompletely built, and the item inspector lacks SRD armor metadata. These are legitimate D&D-completeness gaps a real player adopting a canon figure also hits.

The 5 optimizer majors, root-caused:

# Complaint Root cause Status
1 L10 Paladin "Choose Subclass" — no Sacred Oath _apply_srd_class_defaults only granted subclass features if sub (already set) → canon figure kept subclass=null FIXED #895 (auto-set the sole SRD subclass on canon-load seat at/past the choice level)
5 No Fighting Style selected (blank at L10) The Character model has no fighting_style field — "Fighting Style" is only a feature name; no specific style is tracked/selected OPEN — needs a fighting_style field + a default-on-canon-load (multiple SRD styles, so pick a sensible default e.g. Defense, or surface as a build choice) + viewer render
2 Only 3 of 7 spells prepared (under-prepared) Canon record supplied 3 spells; the seat path's starter-loadout only fires when spell lists are empty (server.py ~1392), so it never tops a canon caster up to the prepared cap OPEN — on canon-load, fill an under-prepared prepared-caster to the SRD prepared-max (level/2 + ability mod) from _preparable_spells
3 No spell-preparation UI in Rest & Prepare Viewer: the rest-prep spell-selection step (the #887 engine half landed) isn't reachable/rendered OPEN — viewer (OpenWorlds Rest & Prepare dialog)
4 Chain Mail inspector shallow — no category/STR-req/stealth Engine itemcatalog Chain Mail has armor_category: heavy, ac: 16, weight: 55 but lacks stealth_disadvantage and str_requirement (STR 13 in SRD 5.2); the inspector also doesn't render category/STR-req/stealth OPEN — add SRD armor metadata (stealth-disadvantage, STR-req) to the heavy/medium armor catalog entries (Chain Mail STR 13, Plate/Splint STR 15, etc.) + render in the viewer item inspector

Suggested next wave (engine = my lane; viewer separate)

Evidence

Snapshot (vm2-optimizer @27d8002): classes:[{Paladin,10,subclass:null}], pending_choices:[], spells_prepared:[Bless,Cure Wounds,Shield of Faith] (3, cap 7), no fighting_style field. Item: itemcatalog.resolve("Chain Mail"){armor_category:heavy, ac:16, weight:55} (no stealth/STR-req).

NOTE: #895 (oath auto-set) lands the #1 fix; a fresh sweep @3582dc2 will show the residual optimizer sat after it.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions