Wrapper tool hardening and cleanup

This commit is contained in:
2026-05-13 19:06:24 +02:00
parent 53cb1e6996
commit 7d286551b3
19 changed files with 1376 additions and 149 deletions
@@ -1,5 +1,17 @@
# AI Agent Contract: Auto-Include Existing Part Models in 2DA Generation
## Status Snapshot
Current state as of 2026-05-13:
- Implemented.
- The toolkit resolves released parts manifests through the configured autogen
release source and covers this behavior with `parts_manifest_test.go` plus
broader native topdata tests.
- Remaining work is operational hardening only: keep manifest contracts stable
across `assets/` releases and maintain regression coverage as autogen config
evolves.
## Objective
The native 2DA generation pipeline must automatically include existing part models already present in the **`sow-assets` repository** when building final parts tables.
@@ -1,5 +1,22 @@
# Global Feat Injection — Specification
## Status Snapshot
Current state as of 2026-05-13:
- This document is partially stale relative to the implementation in
`internal/topdata/native.go`.
- Current code injects:
- always-on menu feats: `feat:specialattacks`, `feat:throw`,
`feat:grapple`, `feat:offensivefighting`, `feat:defensivefighting`,
`feat:horsemenu`
- conditional combat feats: `feat:powerattack`, `feat:combatexpertise`
- class-skill shorthand rows for `masterfeats:skillfocus` at level `-1` and
`masterfeats:greaterskillfocus` at level `12`
- This contract should be treated as a parity note, not as an exact
implementation transcript, until it is fully rewritten around the current
behavior.
## Objective
Ensure the native class feat generation pipeline produces **functionally identical output** to the legacy system by applying deterministic global feat injections.
@@ -24,6 +41,9 @@ With properties:
"OnMenu": "0"
}
For the current implementation, `masterfeats:greaterskillfocus` is injected with
`GrantedOnLevel = 12`, not `-1`.
---
### R2 — Spellcasting master feats
@@ -37,6 +57,16 @@ Then inject:
- `masterfeats:spellfocus`
- `masterfeats:greaterspellfocus`
Historical note:
- This rule is not currently implemented as an automatic global injection in
`native.go`.
- Spell-focus expansion is supported when the class feat data explicitly
references `masterfeats:spellfocus`.
If automatic spellcaster-driven injection is still required, it remains
outstanding work.
With properties:
```json
@@ -75,6 +105,9 @@ With properties:
Always inject:
- `feat:specialattacks`
- `feat:throw`
- `feat:grapple`
- `feat:offensivefighting`
- `feat:defensivefighting`
- `feat:horsemenu`
@@ -1,5 +1,16 @@
# Generic Family Expansion Contract
## Status Snapshot
Current state as of 2026-05-13:
- Implemented and actively used by native feat generation.
- `family_expansion.go`, `native.go`, and `topdata_test.go` cover the current
underscore-family interpretation, generated family metadata, and reapplication
behavior.
- Remaining work is mostly consumer expansion: use the same primitive in more
datasets only when the authored data actually benefits from it.
Topdata now treats underscore expansion as a structural rule:
- `parent_child` means `child` is an expansion of `parent`
@@ -1,5 +1,16 @@
# `feat` Generated Families Contract
## Status Snapshot
Current state as of 2026-05-13:
- Implemented for the current native `feat` pipeline.
- Native tests cover generated-family expansion, family-owned shared defaults,
masterfeat-backed inheritance, and lock/TLK identity preservation.
- The one explicitly deferred item in this contract is still current:
`feat.2da` remains native-built but excluded from `compare-topdata`
reference-catalog coverage through `compare_reference: false`.
Canonical authored paths:
- `topdata/data/feat/base.json`
+9
View File
@@ -1,5 +1,14 @@
# Topdata Inheritance Contract
## Status Snapshot
Current state as of 2026-05-13:
- Implemented.
- `native.go` supports both row-sugar inheritance and generic object
inheritance, including cycle detection and missing-target failures.
- Validation and build regression coverage live in `topdata_test.go`.
Native topdata now supports two inheritance forms:
## 1. Row Sugar Compatibility
+10
View File
@@ -1,5 +1,15 @@
# `masterfeats` Canonical Contract
## Status Snapshot
Current state as of 2026-05-13:
- Implemented as a first-class native dataset.
- The repository contains `topdata/data/masterfeats/`, migration/import support,
validator checks, and native output coverage for `masterfeats.2da`.
- Remaining work is only downstream adoption and regression maintenance as other
native datasets continue to consume `masterfeats` more heavily.
`masterfeats` is a stable native canonical family consumed directly by `feat`
generation, class-feat expansion, and inheritance/ref resolution.