Skip to content

D1.3 + D1.4: affix-pool condition exposure (F7 union) + part tags vocabulary - #24

Merged
tom-snyder merged 2 commits into
devfrom
codex/d13-d14-affix-pools-part-tags
Jul 18, 2026
Merged

D1.3 + D1.4: affix-pool condition exposure (F7 union) + part tags vocabulary#24
tom-snyder merged 2 commits into
devfrom
codex/d13-d14-affix-pools-part-tags

Conversation

@tom-snyder

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

Copy link
Copy Markdown
Owner

Summary

  • D1.3: project_to_design_json emits a read-only affixPools summary (condition-picker fuel, not affix authoring); the E6 condition picker's vocabulary is now catalog ∪ observed pool condition ids, deduped by canonical LOCAL identity (ADR 0008), foreign ids offered exactly as observed; validateLibrary accepts well-formed namespaced condition ids and hard-flags bare unknown spellings.
  • D1.4: part tags become first-class author-side — sidecar plumbing for gunModeller's existing GunPartDoc.tags, TS GunPart.tags + PartPanel tags editor with observed-vocabulary suggestions (exact case-sensitive dedup per Arms ADR 0004 §4 — tags are NOT identifiers), withPartTag sub-field datalist. Unblocks gunrng:with_part_tag production activation.
  • Grill HIGH-1 folded (5e5bc2a): the sidecar→TS serializer now camel-maps ONLY catalog vocabulary — non-catalog namespaced condition ids (gunrng:always, armsng:*) are served verbatim instead of namespace-stripped, so the D1.3 validator no longer blocks export on the tool's own output after an authoring round-trip. Pinned by test_synergy_condition_non_catalog_namespaced_ids_round_trip_verbatim.

Evidence

  • Gates after fold: repo-root pytest 716 passed / 4 skipped, vitest 615 passed, production build exit 0 (baselines 709/588 at f265af4).
  • Independent ship grill: initial HOLD on HIGH-1 → fold → adversarial re-verify SHIP (original repro re-run clean, all stash spelling classes verified incl. historical bare forms, re-save fixpoint confirmed, gates reproduced fresh). LOW-1/LOW-2/INFO-3 dispositioned as accepted in the ledger.

tom-snyder and others added 2 commits July 18, 2026 13:57
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>
… 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>
@tom-snyder
tom-snyder merged commit 171ca88 into dev Jul 18, 2026
3 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