Skip to content

Promote dev: D1.3 + D1.4 (affix-pool condition exposure + part tags) - #25

Merged
tom-snyder merged 1 commit into
mainfrom
dev
Jul 18, 2026
Merged

Promote dev: D1.3 + D1.4 (affix-pool condition exposure + part tags)#25
tom-snyder merged 1 commit into
mainfrom
dev

Conversation

@tom-snyder

@tom-snyder tom-snyder commented Jul 18, 2026

Copy link
Copy Markdown
Owner

Promotion of dev after the D1.3/D1.4 squash (#24): read-only affixPools exposure feeding the E6 condition picker's F7 union (catalog ∪ observed pool condition ids, ADR 0008 canonical dedup), first-class part-tags authoring (Arms ADR 0004 §4 — tags are not identifiers), and the folded grill HIGH-1 (non-catalog namespaced condition ids served verbatim; export no longer blocked on the tool's own output).

Evidence on dev CI run 29656912820 (completed/success): repo-root pytest 716/4 skipped, vitest 615, build green. Grill: HOLD → fold 5e5bc2a → re-verify SHIP.

…abulary (#24)

* feat: D1.3 affix-pool condition exposure + D1.4 part tags vocabulary

D1.3 (F7 half-union closure): sidecar serializes imported affix pools
(read-only — id, display name, entry condition ids) to a new
SidecarProject field with fromSidecar mapping; the synergy condition
picker's vocabulary is SYNERGY_CONDITION_TYPES unioned with observed
pool condition ids, deduped by canonical identity, foreign spellings
preserved. D1.4: parts gain a tags list (PartPanel editor, non-empty
deduped strings validated); the withPartTag tag picker offers the
project-wide observed-tag union plus free entry; save_part carries
tags through the established wire path. Docs: PLAN ledger rows,
GUNRNG_CHANGES D1.3/D1.4 status; Arms-side DESIGNRNG_CHANGES mirror
edit reported separately.

Gates: sidecar pytest 715 passed / 4 skipped (baseline 709); renderer
vitest 615/615 (baseline 588); typecheck/lint/build green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix(D1.3): serve non-catalog namespaced condition ids verbatim (grill HIGH-1)

_synergy_modifiers_to_camel stripped the local namespace BEFORE the
catalog-map lookup and passed misses through bare: gunrng:always (real
pool vocabulary the D1.3 picker offers verbatim) served as 'always',
armsng:custom_thing as 'custom_thing'. The new D1.3 validateLibrary rule
then hard-flagged the tool's own output after one authoring round-trip
and blocked export, and a re-save mis-prefixed armsng:* back as
gunrng:*. Now camel-map ONLY catalog vocabulary; every other id keeps
its STORED spelling verbatim - the exact mirror of the ':' guard in
_synergy_modifiers_to_snake (ADR 0008 rule 1 / Arms ADR 0004 preserved-
spelling law).

Pin: test_synergy_condition_non_catalog_namespaced_ids_round_trip_verbatim
(serve-side verbatim + stash spelling + re-save fixpoint for catalog,
gunrng:-non-catalog, and armsng: addon ids).

Ledger: grill outcome + LOW/INFO dispositions recorded; gate label
corrected to repo-root pytest (INFO-2).

Gates after fold: repo-root pytest 716/4 skipped, vitest 615, build
exit 0.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
@tom-snyder
tom-snyder merged commit b822089 into main Jul 18, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant