Five small fixes bundled per the round's cleanup item:
- VtankNavRouteSerializer.cs's doc comment cited a "WriteBinaryNavBlob"
method that no longer exists anywhere in the codebase (MetaEngine's
embedded-navigation contract moved to the typed MetaAction.EmbeddedRoute
NavigationSettings, saved/loaded through MetafSerializer.SaveNav/
TryLoadNav, back at round 2 step B) — corrected to name the real
mechanism.
- MossTankCommands.cs:274's comment referenced an "exports/nav/" mirror
directory that stopped existing when route profiles cut over to writing
their real .af file directly (round 2 steps 2-3) — corrected.
- docs/research/vtank-kb/07-meta-and-expressions.md section 5.2 row 6
described the pre-cutover "MossTankMetaProfileStore.WriteLegacyExport
convenience mirror" design; .af is now the SOLE authoritative Meta
store, so a disabled rule's save refusal now blocks the profile itself
— the row now says a disabled rule makes the profile file genuinely
unsaveable, not that a mirror goes stale.
- The two bare `catch (FormatException) { }` blocks that silently dropped
a corrupt monster-rule expression (one in SideCarDocument.Apply, reached
from a corrupt side-car; one in LegacyCombatProfileDocument.Apply,
reached during legacy-JSON migration) now log a warning via the host's
IPluginLogger, threaded through as an optional parameter from every call
site.
- VtankDatabase.Render()'s table-sort doc comment now states explicitly
that StringComparer.Ordinal matching .NET Framework's SortedDictionary
default order is confirmed only for the plain-ASCII table names VTank
ships (AntiExtraBuffSpells, MyMonsters, Settings, …), not as a general
claim for any string — comment only, no behavior change.
Added CorruptSideCarMonsterRuleIsLoggedNotSilentlySwallowed (FakeLogger
now captures Warn() calls via a new FakeHost.Logger property) pinning the
swallow-to-log fix.
Mutation: reverted MossTankProfileStore.cs to HEAD (keeping only the new
test) and ran it — failed with an empty Warnings collection, confirming
the silent-swallow bug before the fix.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
||
|---|---|---|
| .. | ||
| 01-settings-and-profiles.md | ||
| 02-scheduler-and-actions.md | ||
| 03-combat.md | ||
| 04-buffs-and-vitals.md | ||
| 05-looting-and-utl.md | ||
| 06-navigation-and-nav.md | ||
| 07-meta-and-expressions.md | ||
| 08-ui-views.md | ||
| 09-commands-and-interop.md | ||
| README.md | ||
VTank knowledge base (Campaign VT, VT1)
Written 2026-09-06 from the decompiled oracle under refs/ (gitignored; see
docs/plans/2026-09-06-campaign-vt-vtank-oracle.md for what is there and how
to regenerate it). Every behavioral claim cites file:line into
refs/vtank/decompiled/ (VTank), refs/vtank-classiclooter/decompiled/
(Classic Looter) or refs/vvs/decompiled/ (VirindiViewService). Decompiled
code is never pasted; behavior is re-implemented from these docs. When the
older wiki-derived research (docs/research/2026-07-29-vtank-plugin-automation-requirements.md,
docs/research/2026-08-26-mosstank-vtank-utilitybelt-research.md) disagrees
with a doc here, the doc here wins.
Each doc ends with a MossTank gap section (ranked by player impact) and a Could not determine list. VT2 consolidates the gap sections into the implementation order.
| # | Doc | What it pins | Oracle files most cited |
|---|---|---|---|
| 01 | settings and profiles | All 137 settings (type, default, tab control, consumer), the self-describing .usd table grammar, profile naming/selection, /vt opt |
f3.cs (typed accessors), gy/cw/bd/y.cs (table reader), defaultsettings.usd |
| 02 | scheduler and actions | The single-winner priority list (24 rule classes, 45 instantiations, sentinels), 293 ms heartbeat + event poke, force-combat-mode ga.a and stuck-state recovery, IdlePeace in full |
uTank2/cLogic.cs, ga.cs, f9.cs, cm.cs, fz.cs |
| 03 | combat | Target acquisition/selection (3 methods, ghost/blacklist), monster rules, weapon/damage/ammo choice, attack execution, the hardcoded 12-debuff order, pets | dz.cs, hi.cs, b4.cs |
| 04 | buffs and vitals | Buff plan and per-tick re-evaluation, item enchantments (-1 "no buffs"), helper buffs, the nine recharge thresholds, kits/potions/food, dispel, worn-item mana |
eq.cs, fz.cs, ba.cs, ai.cs, dy.cs, a5.cs, MySpell.cs |
| 05 | looting and .utl | The .utl format and all requirement types, EarlyMatch identify-avoidance, ComputedItemInfo, VTank's corpse selection/approach/open/loot rules, ownership-denial regexes |
VTClassic cLootRules, UTLBlock_*; VTank fo.cs, d0.cs, el.cs, hv.cs |
| 06 | navigation and .nav | uTank2 NAV 1.2 byte-for-byte (10 waypoint types), route types, steering/creep band, jump, door/lockpick, recall, priority interactions, 240 m/unit |
x.cs, ca.cs, fd.cs, bi.cs, b7.cs, g8.cs |
| 07 | meta and expressions | .met format, FSM semantics, the expression language and built-in table, views created by metas |
ExpressionEvaluator.cs, ch.cs, a7.cs, cLogic.cs:191-196 |
| 08 | UI views | Every control of the nine tabs and three secondary views (type, geometry, binding), VVS control semantics our markup must offer, the markup extension needed (multi-column lists) | uTank2.ViewXML.*.xml, VVS HudList/HudCombo/HudTabView, Decal3XMLParser.cs |
| 09 | commands and interop | The /vt verb table (~48 documented + 15 parser-only), chat sinks and dedup, the three-tier export API, Classic Looter SPI, MosswartMassacre's real usage |
uTank2/PluginCore.cs, d5.cs, ah.cs, eExternalsPermissionLevel.cs |
Owner amendment 2026-09-06 — metas and navs use metaf .af. Docs 06 §1
and 07 §1 document VTank's binary .nav/.met layouts; MossTank does not
implement them. It reads and writes the human-readable metaf format (the
reference converter is C:\Users\erikn\source\repos\metas\metaf_monolithic.py,
see claude-memory/reference_metaf_af_format.md). The semantics sections of
06/07 (execution, FSM, expressions, views) remain the behavior oracle.
Local companion note (not committed): refs/vtank/notes/2026-09-06-idlepeace-fcm-trace.md
— the line-level trace of the combat-mode choke point, the eight
drop-to-peace sites and the wield sequencing.
Corrections folded in by the lead during spot-checks are marked in place
("lead verification 2026-09-06"). Files written by agents into the main
checkout by mistake were moved here; check git status in the main checkout
after any catalog session.