docs(vt): owner decision — no interop; slice 9 dropped, all plugins rewritten against acdream's own API

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
Erik 2026-09-06 21:34:30 +02:00
parent d078863306
commit bda8745448
3 changed files with 6 additions and 3 deletions

View file

@ -37,11 +37,10 @@ accepts: T = tests only, O = owner connected/visual gate.
| 6 | **Navigation** | Creep band + `FaceHeading` snap-turn inside 1/160 with the forced-Magic case; OpenVendor fire-and-forget vs wait (decide, document as a divergence if kept); lockpick strategy (decide); recall stationary gate; Portal2/UseNPC candidate filter; chat-color gate on UseNPC. (06 §6) | 2 | M | O (route) |
| 7 | **UI transcription** | Monsters/Items/Consumables/Buffs/Route/Meta tabs rebuilt as VTank's grids on the multi-column list; window geometry from `mainView.xml`; Advanced Options and Loot Editor stay in-panel by decision. (08 §1,§5) | 1c | M | O (visual) |
| 8 | **Meta and expressions** | Doc 07's five semantic gaps: `CreateView` markup translation (VTank's two-tag Button/Layout dialect → our panel markup; 6-view cap), nested `All` actions must run every child (no short-circuit), case-sensitive monster-name regex, the `;` operator decision (retail returns the FIRST operand, UtilityBelt/MossTank the last — owner decides, document as a divergence either way), watchdog ring pre-fill with the far sentinel; plus the per-state-entry firing rule, the two "seconds in state" clocks, and the call/return stack semantics of 07 §2. Unregistered retail condition id 27 stays unregistered. | 1b (`.af`) | M | T + O (a live meta run) |
| 9 | **Plugin interop API** | Expand `AcDream.Plugin.Abstractions`: sibling plugin discovery/handle, a public event surface (macro state, profile changed, cast complete), settings-by-name get/set, command injection into another plugin's verb table, a permission tier for trusted partners. Needed by a ported MosswartMassacre. (09 §5) | — | M | T |
| ~~9~~ | ~~**Plugin interop API**~~ | **DROPPED by the owner 2026-09-06: no interop.** All plugins are rewritten for acdream against its own API; no VTank export surface, no Decal-shaped relay. (09 §5 is historical context.) | — | — | — |
Slices 37 all need the owner's eyes and are outside the current goal; the
goal ends after slice 1's review. Slice 9 is host API work and can run in
parallel with 2 later.
goal ends after slice 1's review. Slice 9 is dropped (owner: no interop).
## `c406942ef` re-judged against doc 02
@ -55,3 +54,4 @@ before slice 2; the commit stays as is on the branch.
- 2026-09-06 draft written from docs 01-06, 08, 09; 07 and the citation pass pending.
- 2026-09-06 doc 07 landed and its gaps placed in slice 8; owner amendment: metas and navs are metaf `.af` (slice 1b rewritten). Citation pass still pending before FINAL.
- 2026-09-06 citation pass folded for docs 02-09 (commits `1b8183674`, `887242cd1`, `2e36ea826`, `642eacc13`, `ee901b7f2`, `69bb16484`, `d8f85848b`, `caf730752`); slice rows re-judged where a finding moved (slice 4 G4 → ordering only; slice 5 gains "MossTank's pickup-priority sort has no live VTank counterpart" as a documented addition, not a gap; slice 6's OpenVendor row: retail stays busy on missing/non-vendor objects, fire-and-forget only on the resolving path; slice 8's nav-node candidate filter = free-standing objects only). Doc 01 verifier pending; FINAL after it lands.
- 2026-09-06 owner: no interop — slice 9 dropped; every plugin is rewritten against acdream's own API.

View file

@ -20,6 +20,7 @@ catalog.
| Files | Drop-in compatibility for `.usd` profiles and `.utl` loot profiles (load unchanged; settings keep VTank's names). **Metas and navs use metaf `.af` (owner, 2026-09-06 amendment):** MossTank reads and writes the human-readable metaf format for both metas and nav routes and does NOT implement binary `.met` or author `.nav`; conversion to/from VTank's binaries is the metaf tool's job. Reference parser: `C:\Users\erikn\source\repos\metas\metaf_monolithic.py` (port of `metaf.cs`, GPLv3 — read, never paste), with 148 real `.af`, 25 `.met`, 130 `.nav` files beside it. Memory: `claude-memory/reference_metaf_af_format.md`. |
| Knowledge base | Full catalog with decompile citations BEFORE implementation. |
| Platform | Linux is a first-class target: no `System.Drawing`, no GDI+/Windows fonts, no Windows-only paths or registry, no COM. The plugin stays BCL-only per `AcDream.Plugin.Abstractions`. |
| Interop | **NONE (owner, 2026-09-06): "We should not do any interops. All plugins will have to get rewritten for acdream." VTank relies on Decal hooking/injecting the client; acdream controls the client through its own API.** No VTank export-API surface, no Decal-shaped relay, no compatibility layer for existing Decal plugins (MosswartMassacre, UtilityBelt, Mag-Tools are rewritten as acdream plugins when wanted). KB doc 09's interop sections stay as historical context only. Any future plugin-to-plugin need is designed on its own merits, host-mediated. |
## The oracle (local, never committed)

View file

@ -26,6 +26,8 @@ implementation order.
| 08 | [UI views](08-ui-views.md) | 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](09-commands-and-interop.md) | 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 decision 2026-09-06 — no interop.** All plugins are rewritten for acdream against its own API (VTank depends on Decal hooking the client; acdream controls it by API). Doc 09's export-API, relay and Classic Looter SPI sections are historical context, not a build target.
**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