From 43abc32edf935949d06495a0bebde53323897640 Mon Sep 17 00:00:00 2001 From: Erik Date: Mon, 7 Sep 2026 06:29:46 +0200 Subject: [PATCH] =?UTF-8?q?docs(vt):=20owner=20direction=20=E2=80=94=20one?= =?UTF-8?q?=20plugin,=20two=20hosts;=20slice=202=20gains=20headless=20auto?= =?UTF-8?q?start=20+=20a=20headless=20MossTank=20smoke=20test?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Fable 5.1 --- docs/plans/2026-09-06-campaign-vt-vt2-gap-audit.md | 2 +- docs/plans/2026-09-06-campaign-vt-vtank-oracle.md | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/plans/2026-09-06-campaign-vt-vt2-gap-audit.md b/docs/plans/2026-09-06-campaign-vt-vt2-gap-audit.md index d18fa5eb..0323779e 100644 --- a/docs/plans/2026-09-06-campaign-vt-vt2-gap-audit.md +++ b/docs/plans/2026-09-06-campaign-vt-vt2-gap-audit.md @@ -30,7 +30,7 @@ accepts: T = tests only, O = owner connected/visual gate. | # | Slice | Contents (doc §) | Depends on | Size | Gate | |---|---|---|---|---|---| | 1 | **File compatibility + multi-column list** (VT3 slice 1, in the current goal) | 1a `.usd` reader/writer with the self-describing table grammar, profile directory discovery and selection (`--`/`[By char]` naming), `RechargeHandlerSet` table parse, and the ten fields `BuffProfileDocument` drops (01 §1,§3,§5). 1b **metaf `.af` reader/writer for metas and nav routes** (owner amendment 2026-09-06: no `.met`, no authored `.nav`) proven against the 148 real files in the owner's metas repo and against the metaf tool's own conversions of `met/` and `nav/`; the `.utl` `BuffedInt/Double` base-key gate (05 gap 4); the jump-charge clamp to 2000 ms at load (06 gap 5) applied to `.af` `jmp` nodes. Loading real files from a configured directory (Linux-clean). 1c `` gains `` children with header, widths, per-cell click and per-row check state (08 §2-3). | — | M+M (parallel: plugin vs App) | T | -| 2 | **Scheduler parity** | Replace the owns-action chain with a declarative single-winner rule list in VTank's order incl. sentinels, `Running=false` teardown signal, 293 ms heartbeat + event poke, IdlePeace as terminal rule AND pre-chain on idle loot/approach/nav, the `fd` tight-waypoint Magic override; fold in every deferred finding on `c406942ef` (no-caster stops the macro; retry budget in ticks with wand-use recovery; "buff due" suppresses idle; Items-page order for the fallback wand; equip cadence/budget; `Unknown` mode hands-off; single caster predicate; notice text). (02 §1-5) | 1 (profile order, settings) | L | O (macro start from peace; idle peace) | +| 2 | **Scheduler parity** | Replace the owns-action chain with a declarative single-winner rule list in VTank's order incl. sentinels, `Running=false` teardown signal, 293 ms heartbeat + event poke, IdlePeace as terminal rule AND pre-chain on idle loot/approach/nav, the `fd` tight-waypoint Magic override; fold in every deferred finding on `c406942ef` (no-caster stops the macro; retry budget in ticks with wand-use recovery; "buff due" suppresses idle; Items-page order for the fallback wand; equip cadence/budget; `Unknown` mode hands-off; single caster predicate; notice text). (02 §1-5). **Plus (owner, 2026-09-07): headless operation.** (a) A MossTank section in the headless session config (settings/meta/nav/loot profile names + `startMacro`) applied on login, so an unattended bot loads its profiles and starts the macro without a UI; (b) a headless end-to-end smoke test: plugin under `AcDream.Headless`, real ACE connect, a real `.af` meta loaded and ticked, assertions on the event stream — the automated proof for every later slice. Owner's model: one plugin, two hosts — configure and play in the graphical client, run unattended in headless (no renderer, far cheaper; Slice K ran 30 sessions in one process). | 1 (profile order, settings) | L | O (macro start from peace; idle peace) | | 3 | **Combat policy corrections** | Hardcoded 12-step debuff order and first-due-wins; target selection with `DebuffEachFirst` + urgency score, `TargetLock`/sticky as low tiebreaks; quality before `UseArcs`; unknown-monster → no auto-element; wield-match tiebreak. (03 §8) | 2 | M | O (live fight) | | 4 | **Buffs and vitals** | Per-tick plan re-evaluation (mid-pass tier cascade); profile-item → default enchant rows on Add; helper pool incl. non-fellow tracked players (decide); worn-item charge ORDER only (oldest-queued vs lowest-%, Low — the pool is global on both sides); keep the RandomHelper improvement (decide, document). (04 §5) | 2 | M | O (buff pass) | | 5 | **Looting** | `EarlyMatch`/`NeedsID` identify-avoidance; rare-first corpse selection; ownership-denial chat listener (10 s skip); corpse age clock from first sighting; explicit re-close. (05 §4) | 1 | M | O (loot field) | diff --git a/docs/plans/2026-09-06-campaign-vt-vtank-oracle.md b/docs/plans/2026-09-06-campaign-vt-vtank-oracle.md index 0a5aa022..9e04092c 100644 --- a/docs/plans/2026-09-06-campaign-vt-vtank-oracle.md +++ b/docs/plans/2026-09-06-campaign-vt-vtank-oracle.md @@ -21,6 +21,7 @@ catalog. | 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. VTank has no real API — what KB 09 calls its "export API" is a reflection relay behind a signed handshake that every real consumer bypassed. If acdream plugins ever need to talk to each other, acdream creates its own plugin API later, on its own terms ("we can of course create one later on"). | +| Hosts | **One plugin, two hosts (owner, 2026-09-07).** Plugins work in the graphical client (configure, play) AND in the headless bot (unattended: on login load the named profiles and start the macro). Headless = no renderer, cheap. Slice 2 adds the session-config autostart and a headless MossTank smoke test. | ## The oracle (local, never committed)