Wrapper tool hardening and cleanup
This commit is contained in:
@@ -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`
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user