Skip to content

New units: — kit-autonomy gauntlet - #153

Merged
Infernal-Crack-LED merged 13 commits into
mainfrom
kit-autonomy-newunits-2026-10-09
Oct 9, 2026
Merged

Infernal-Crack-LED merged 13 commits into
mainfrom
kit-autonomy-newunits-2026-10-09

Conversation

@Infernal-Crack-LED

Copy link
Copy Markdown
Owner

Automated by the daily new-unit watch (~/.nikke-newunit-autopilot/run.sh): bakery-bot's sync seeded new units; nikke-sim synced them and ran the kit-autonomy gauntlet per unit (Claude-only model routing).

Units

Gauntlet results

Belorta: Pumpkin Witch (belorta-pumpkin-witch) — GO — faithfulness 1.0 / 1.0 — tier 2

  • Override: on every Full Burst entry → self Ghost Costume status 10s + Max HP ▲15.84% 10s, and the ally to her right ATK ▲44.88% of her ATK 10s; full charge while in Ghost Costume → boss Damage Taken ▲10.56% 10s; every full charge → right ally Sustained Damage ▲19.97% 5s; her own burst cast → right ally ATK ▲47.52% of her ATK + Sustained Damage ▲27.23% 10s. simSupported: true (variant only — base belorta untouched).
  • Engine primitive added: target adjacentAlly {side:'left'|'right'} ("the ally to the right of this unit" — first such kit in the roster). Own commit cb191d32, scripts/regression.ts unchanged before the override landed, pinned by scripts/tests/engine/adjacent-ally.test.ts. Code review on claude-fable-5-1: CLEAN (3 notes; the STATE.md row was added).
  • Evidence: spec test 23/23 with named counterfactuals. S2b (fable-5 + fable-5-1) converged on all 7 load-bearing lines. S6 blind override (opus-5) is block-identical. Blind S5 test: 11/11 non-burst assertions pass once its one-line onEvent wiring bug is fixed. Its 3 burst assertions fail only because its fixture lets crown win every stage-2 cast, so she never bursts; its own probe that forces her to cast once passes. Both judges: GO 1.0, no gotchas. All reviewers are Claude models, so this is same-family evidence only.
  • Unmodeled / ⚑: Ghost Costume's single-target untargetability (defensive, no boss targeting in v1). Its "removed upon a direct hit" never fires, so the costume always lasts 10s and Ghostly Prank's window is an upper bound. From the rightmost slot the right-ally lines apply to nobody (literal reading, no wrap-around). A full-charge "landing" is credited on the pull frame.
  • Owner spot-check: (1) trigger identity: Skill 1 lines fire on EVERY Full Burst entry, the burst lines only on her own cast; (2) scope: "the ally to the right" means the next slot, and nobody from slot 5; (3) duration: Ghost Costume always gets its full 10s.
  • Board A/B: none. She's on no graded comp, so board-read has no row for her.
  • Skipped / notes: full verify.sh not run (the wrapper runs it). Unit tests, validate-overrides, kit-status --check, typecheck, doc-drift and regression.ts all pass. kit-status --refresh was needed to create her row; it also refreshed global counts. Regenerating data/unit-pages.json dropped stale overload tables for drake-great-villain and laplace-ultimate-hero: both were already generatorSupported: false before this run, so the committed pages were stale and the drop is correct.

Roster test pins

Roster test pins — 2026-10-09 sync (new unit: belorta-pumpkin-witch)

  • Ran: scripts/tests/data + census-kit-numbers (72/72 passed), npm run typecheck (clean), and all of scripts/tests except units/ (1474 passed, 2 failed).
  • FIXED (caused by the sync): share/sitemap-drift.test.ts failed because the sitemap had no /unit/belorta-pumpkin-witch entry. Regenerated it with npm run build:sitemap (+4 lines) and committed as 8fba772e roster: test pins follow the 2026-10-09 sync.
  • SKIPPED, needs the owner (sync bug): generators/cross-team-polish.test.ts ("recovers a roster greedy left on the table": greedy found 4 teams, expected 3). Cause: bakery-bot renamed the Treasure units to "Laplace (Favorite Item) (Treasure)", "Drake (Favorite Item) (Treasure)" and "Sugar (Favorite Item) (Treasure)". normalizeName in src/data/sync.ts:61 strips only " (Treasure)", so these names no longer match data/enikk-supported.json, and drake and laplace flipped generatorSupported from true to false. Laplace was in this test's B3 pool window. The proper fix is to make normalizeName also strip (Favorite Item), then re-run npm run sync. Re-pinning the test to the shrunken pool would have locked in the regression, so I didn't. The same bug also takes drake and laplace out of the Team Generator and DPS chart.
  • Not touched: the untracked web/public/img/portraits/belorta-pumpkin-witch-{128,256}.webp (sync output, not mine). No engine, snapshot, override or data/** edits. Nothing pushed.

Gate

bash scripts/verify.sh: RED (log on the owner's Mac: /Users/maxwellsutton/Library/Logs/nikke-newunit-watch/run-20261009T060005/verify.log)

Same-family provenance: every blind/judge role ran on a Claude model (no Kimi/Qwen access) — a GO is weaker evidence than a cross-family GO; spot-check the scope / duration / trigger-identity lines.

🤖 Generated with Claude Code

Infernal-Crack-LED and others added 12 commits October 9, 2026 06:00
Daily new-unit watch (~/.nikke-newunit-autopilot): `npm run sync` against bakery-bot's DB added
these units; their char-extracts are the characters.json entries minus nicknames. Per-unit gauntlet
commits follow.
Regenerated web/public/sitemap.xml (npm run build:sitemap) for the new unit
belorta-pumpkin-witch so sitemap-drift.test.ts matches the generator again.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…t" (for belorta-pumpkin-witch)

New positional target {kind:'adjacentAlly', side:'left'|'right'}: the ONE neighbouring slot on that
side (units[] is slot order, leftmost first), never self; an owner at the matching team edge resolves
to nobody (the literal kit reading). Sibling of selfAndAdjacent. Validator rejects a missing/unknown
side (sim.ts would otherwise resolve it to the left neighbour); web targetLabel names it. Pinned by
scripts/tests/engine/adjacent-ally.test.ts. Inert for every existing override (no carrier until
belorta-pumpkin-witch lands): scripts/regression.ts passes unchanged. Engine edit owner-approved
2026-10-02 (new-unit watch standing exception).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Six line groups (Ghost Costume gate → Ghostly Prank, Prank Preparation Max HP, FB-entry right-ally
ATK, full-charge right-ally Sustained Damage, burst right-ally ATK + Sustained Damage) + the
rightmost-slot edge, each with its named nearest-wrong counterfactual.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…review (CLEAN)

Override from the kit prose: FB-entry Ghost Costume selfStatus 10s + self Max HP 15.84/10s;
FB-entry right-ally casterAtkPct 44.88/10s; full charge while in Ghost Costume → boss Damage Taken
10.56/10s; full charge → right-ally Sustained Damage 19.97/5s; own burst cast → right-ally
casterAtkPct 47.52 + Sustained Damage 27.23, 10s. Spec test 23/23 green (enemy debuffs attributed by
key prefix). S2b on claude-fable-5 + claude-fable-5-1 converged on the spec + load-bearing set.
adjacentAlly engine review on claude-fable-5-1: CLEAN (3 notes).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
S6 blind override is block-identical to the shipped one. S5 blind test: unmodified 8 RED from one
harness-wiring defect (onEvent on CompOptions, not cfg); the adapted copy (that one line moved) runs
11 green / 3 RED / 4 skipped — the 3 RED are the burst group on controlComp, where crown (B2, cd 20s,
slot 1) wins every stage-2 cast so she casts zero bursts (fixture finding; its burstFirst probe is
green and non-vacuous: 1 cast, both grants to helm, the ally to her right).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…t matrix (belorta-pumpkin-witch)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
simSupported true for belorta-pumpkin-witch (the variant only — base belorta untouched); kit-status
row created (--refresh, single-unit run) and recorded with --gauntlet (same-family evidence + the
owner spot-check residual); unit pages and the unmodeled-review mirror regenerated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…inding) / GO 1.0 (claude-fable-5)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… GO faithfulness 1.0 / 1.0

NEW unit (VARIANT of the base unit belorta, RL/Electric), RL/Supporter/Water/Tetra Burst II cd 40s.
Tier 2. Driver Claude Opus 5.5; Claude-only routing (owner 2026-10-02): S2b claude-fable-5 +
claude-fable-5-1, S5/S6 claude-opus-5, S7 claude-fable-5-1 (binding) + claude-fable-5, engine review
claude-fable-5-1 — same-family evidence.

Override: FB entry → self Ghost Costume selfStatus 10s + Max HP 15.84/10s, and the ally to the right
casterAtkPct 44.88/10s; full charge while in Ghost Costume → boss Damage Taken 10.56/10s; every full
charge → right-ally Sustained Damage 19.97/5s; her burst cast → right-ally casterAtkPct 47.52 +
Sustained Damage 27.23, 10s. New engine target adjacentAlly (cb191d3, board-inert, review CLEAN).

Spec test 23/23 with named counterfactuals. S6 blind override block-identical. Blind S5 11/11
non-burst green after its one-line onEvent wiring fix; its 3 burst REDs are the contested-Burst-II
controlComp fixture (crown always wins stage 2; its burstFirst probe is green). ⚑: direct-hit
removal of Ghost Costume (window is an upper bound), rightmost slot → nobody, landing = pull frame.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Infernal-Crack-LED
Infernal-Crack-LED marked this pull request as ready for review October 9, 2026 16:31
…oss-team-polish)

bakery-bot now names three Treasure rows "<Name> (Favorite Item) (Treasure)" (slugs
drake, laplace, sugar). normalizeName only stripped " (Treasure)", so drake and laplace
no longer matched data/enikk-supported.json and flipped generatorSupported to false
(dropping laplace from cross-team-polish's B3 pool → greedy found 4 teams, expected 3).
The same names let bare aliases "drake"/"laplace"/"sugar" through the nickname filter,
which validate-nicknames rejects.

One shared normName in src/data/nicknames.ts now strips both markers; sync.ts uses it
for the enikk match and to build the display name ("Drake (Treasure)" again). Re-ran
`npm run sync`, then regenerated kit-status (--refresh), unmodeled-entries-review and
unit-pages (restores the drake/laplace overload tables). verify.sh green.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Infernal-Crack-LED
Infernal-Crack-LED merged commit dcec219 into main Oct 9, 2026
1 check passed
@Infernal-Crack-LED
Infernal-Crack-LED deleted the kit-autonomy-newunits-2026-10-09 branch October 9, 2026 17:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant