Tag Catalog
Status: authoritative committed tag list as of Wave D. Committed tags are
those declared in Content/common/tags.secs and
Generated/Vocabulary/Tags.cs (14 tags total: 6 modifier tags + 8
structural-predicate tags). Planned tags are described in generation
contracts but not yet committed to Content. Do not use planned tag names
as TagId constants until they are committed.
Purpose
This catalog lists every committed Valenar tag and separates them from
planned tags that are described in generation contracts but not yet
committed to Content/common/tags.secs. The source of truth for
committed tags is Content/common/tags.secs (and its generated mirror
Generated/Vocabulary/Tags.cs). This catalog is a reading convenience;
the .secs file is authoritative. The design surface for how tags work
lives in systems/gd-tags-and-classification.md.
When a reader needs to know how to classify something with a tag, they read the design doc. When a reader needs to know whether a particular tag is committed, what its canonical id string is, and what one-line semantic it has, they read this catalog.
Committed Tags
There are 14 committed tags as of Wave D, in two groups.
Modifier Tags
The 6 modifier tags categorize effect bundles for bulk modifier operations (targeting, removal, stacking, propagation filters).
| C# field | Canonical id string | One-line semantic |
|---|---|---|
Tags.Buff | valenar:tag/buff | Positive effect bundle category. |
Tags.Debuff | valenar:tag/debuff | Negative effect bundle category. |
Tags.Disease | valenar:tag/disease | Disease-type modifier category. |
Tags.Military | valenar:tag/military | Military operation or conflict effect category. |
Tags.Seasonal | valenar:tag/seasonal | Time-of-year or weather-gated effect category. |
Tags.Economic | valenar:tag/economic | Production, trade, or resource effect category. |
These are referenced from modifier declarations through their
tags = ... slot. They are not used in template structural predicates
or in has_tag filters over templates.
Structural-Predicate Tags
The 8 structural-predicate tags classify templates (especially Resource
templates) for has_tag predicates in propagates_to and
aggregate-where clauses. Activity classification and policy from tags
selector provenance for Tags.Food are deferred to a scoped tag-fixture
wave that lands .secs, Generated, and tests together.
| C# field | Canonical id string | One-line semantic |
|---|---|---|
Tags.Food | valenar:tag/food | Food-class consumable resource. |
Tags.Mineral | valenar:tag/mineral | Mineral-class extracted material. |
Tags.Material | valenar:tag/material | Generic crafting material category. |
Tags.Magical | valenar:tag/magical | Magical or arcane-property item or resource. |
Tags.Strategic | valenar:tag/strategic | Strategic-significance resource (rare, war-relevant). |
Tags.Perishable | valenar:tag/perishable | Spoils over time; storage and logistics matter. |
Tags.Currency | valenar:tag/currency | Functions as currency in trade or accounting. |
Tags.Durable | valenar:tag/durable | Long-lasting; opposite of perishable for storage rules. |
These are referenced from template declarations through their
tags = ... slot and may be referenced from has_tag filters in
propagation and aggregate-where clauses. Current Valenar source does not
yet use live has_tag propagation or aggregate filtering because no
current gameplay mechanic needs it. They are not used in modifier-group
bulk operations.
Current Usage Surface
| Tag(s) | Template classification | Modifier classification | Activity classification | Policy selection | Propagation has_tag | Aggregate has_tag | Current status |
|---|---|---|---|---|---|---|---|
Tags.Buff, Tags.Debuff, Tags.Disease, Tags.Military, Tags.Seasonal, Tags.Economic | No | Yes | No | No | No | No | Real modifier metadata in Content/common/modifiers.secs. |
Tags.Food | Yes | No | Deferred | Deferred | Deferred | Deferred | Real template tag on food resources/buildings; activity tags and any FoodSelector policy selector are deferred to a scoped tag-fixture wave that lands .secs, Generated, and tests together. |
Tags.Mineral, Tags.Material, Tags.Magical, Tags.Strategic, Tags.Perishable, Tags.Currency, Tags.Durable | Yes | No | No | No | Deferred | Deferred | Real template/resource classification only. |
Deferred means the SECS compiler/runtime contract is committed and generic
tests support the surface, but Valenar does not yet carry live .secs,
Generated, and test provenance for that surface.
Planned Tags (Not Yet Committed)
The following terrain-derived tags are described in
gd-location-generation-contract.md
under "Derived Classes And Tags" but are not yet committed to
Content/common/tags.secs. They are description-only language until a
future generation wave commits them.
Fertile
ForestEdge
OpenGround
EasyTravel
GoodRoadLand
Sheltered
Exposed
HighCover
LowCover
OreBearing
AncientTrace
Tainted
Shielded
GateShadow
Chokepoint
CoastalAccess
RiverAccess
GoodSettlementLand
PoorSettlementLand
These are 19 terrain-derived classification labels. They are NOT
committed TagId constants and must not be referenced as
Tags.<Name> in code. Their canonical id strings (e.g.
valenar:tag/fertile) and TagId declarations will be added to
Content/common/tags.secs when the production generator requires
them. The promotion path is:
- The generator implementation needs to attach the tag to a Location or Feature during generation.
- A wave commits the new
TagIdconstants totags.secsandTags.cs, with one-line semantics. - The new entries are added to the "Committed Tags" section of this catalog and removed from "Planned Tags".
Until that promotion happens, generation contracts may use these
labels in prose, but live Content/, Generated/, and runtime code
must not reference them.
Cross-Links
- systems/gd-tags-and-classification.md - the design surface for how tags work, namespace rules, and the modifier-vs-structural-predicate split.
- generation/gd-location-generation-contract.md - the source for the planned terrain-tag list under "Derived Classes And Tags".
- generation/gd-feature-generation-contract.md - the source for Feature category language that intentionally remains separate from the tag layer.