---
mvp: no
subsystem: meta
---

# Unknown DnD Action ID Resolution Status

Per Phase 2 plan 02-02 (D-08 path (a)): the two GameMaker drag-and-drop action IDs that the LateralGM action library bundle did not cover have been hand-resolved.

| Action ID | Status | Resolution |
|-----------|--------|------------|
| **523** | **RESOLVED** | Hand-authored entry in `tools/extract-gmd/data/action-ids.json` based on LateralGM "Set font" semantics. 6-arg shape (font, alpha, halign, valign, color, transparent). Argument shape verified by inspection of `extracted/client-5-8/objects/0034-title/events/Draw.dnd.json`. Named **`Draw_Set_Font`** to disambiguate from the older 2-arg `action_font(font, transparent)` cursor variant which already holds id 526. |
| **525** | **RESOLVED** | Hand-authored entry based on LateralGM "Set font (combined)". 1-arg composite-string shape. Verified against `extracted/client-5-8/objects/0045-commandob/events/Draw.dnd.json`. Named **`Draw_Set_Font_Combined`**. |

After resolution, `extracted/client-5-8/UNKNOWN-ACTIONS.md` is **no longer emitted** (Phase 1 D-11 contract: file present iff at least one entry; the entry set drained to zero). Re-running `pnpm extract:client` produces zero `UNKNOWN ACTION_ID=NNN` markers in the extracted GML output — confirmed in 02-02-SUMMARY.

## Verification

Run from repo root:

```sh
grep -r "UNKNOWN ACTION_ID" extracted/client-5-8/
# Expected: zero matches
```

Or, equivalently, inspect a Draw event that was previously affected:

```sh
head -3 extracted/client-5-8/objects/0034-title/events/Draw.gml
# Expected first line:
# // auto-transcompiled — see *.dnd.json for canonical truth
# Expected second line:
# draw_set_font(OCRA); draw_set_color(16711680); draw_set_halign(0); draw_set_valign(0)
```

The presence of `OCRA` (and `Fixedsys` in `objects/0045-commandob/events/Draw.gml`) is the visible confirmation that path (a) closed cleanly — these were the placeholder font names obscured by the unknown-action emission before plan 02-02.

## Path (b) fallback (NOT used in this phase)

If a future ID arises that cannot be resolved (no LateralGM entry, no `.dnd.json` argument signature), the convention is to mark it **`DEFERRED`** with reason. Phase 7 PAR-01 treats DEFERRED entries as known scope gaps to be revisited at parity time.

The path (b) fallback is intentionally lighter than path (a): it preserves forensic information without forcing a hand-authored interpretation. As of 2026-05-03, no DEFERRED entries exist.

## Provenance trail

- **02-02-PLAN.md** — original D-08 path (a) plan
- **02-02-SUMMARY.md** — outcome: `action-ids.json` grew 134 → 136 entries; 19 client + 14 server Draw.gml files re-emitted clean
- **`tools/extract-gmd/data/action-ids.json`** — the authoritative entry table (hand-authored entries documented in the file's README under "D-08 path (a) extension")
- **`tools/extract-gmd/data/README.md`** — porter `--check` mode notes (drift guard against future LateralGM updates)

## Scripts referenced in this subsystem

<!-- AUTOGEN:scripts:start -->
| Script ID | Name | Lines | Used in objects |
|-----------|------|-------|------------------|
<!-- AUTOGEN:scripts:end -->

## Objects referenced in this subsystem

<!-- AUTOGEN:objects:start -->
| Object ID | Name | Sprite | Mask | Events |
|-----------|------|--------|------|--------|
<!-- AUTOGEN:objects:end -->

## Engine functions used

<!-- AUTOGEN:gml-functions:start -->
| GML function | Call sites | Sample script | Wiki link |
|--------------|------------|---------------|-----------|
<!-- AUTOGEN:gml-functions:end -->

(Autogen tables are intentionally empty; this MD is a status doc, not a subsystem narrative.)

## See also

- [rendering.md](rendering.md) — Draw events that consume actions 523 + 525
- [.planning/phases/02-client-engine-documentation/02-02-PLAN.md](../../.planning/phases/02-client-engine-documentation/02-02-PLAN.md)
- [.planning/phases/02-client-engine-documentation/02-02-SUMMARY.md](../../.planning/phases/02-client-engine-documentation/02-02-SUMMARY.md)
