Skip to main content

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# fieldCanonical id stringOne-line semantic
Tags.Buffvalenar:tag/buffPositive effect bundle category.
Tags.Debuffvalenar:tag/debuffNegative effect bundle category.
Tags.Diseasevalenar:tag/diseaseDisease-type modifier category.
Tags.Militaryvalenar:tag/militaryMilitary operation or conflict effect category.
Tags.Seasonalvalenar:tag/seasonalTime-of-year or weather-gated effect category.
Tags.Economicvalenar:tag/economicProduction, 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# fieldCanonical id stringOne-line semantic
Tags.Foodvalenar:tag/foodFood-class consumable resource.
Tags.Mineralvalenar:tag/mineralMineral-class extracted material.
Tags.Materialvalenar:tag/materialGeneric crafting material category.
Tags.Magicalvalenar:tag/magicalMagical or arcane-property item or resource.
Tags.Strategicvalenar:tag/strategicStrategic-significance resource (rare, war-relevant).
Tags.Perishablevalenar:tag/perishableSpoils over time; storage and logistics matter.
Tags.Currencyvalenar:tag/currencyFunctions as currency in trade or accounting.
Tags.Durablevalenar:tag/durableLong-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 classificationModifier classificationActivity classificationPolicy selectionPropagation has_tagAggregate has_tagCurrent status
Tags.Buff, Tags.Debuff, Tags.Disease, Tags.Military, Tags.Seasonal, Tags.EconomicNoYesNoNoNoNoReal modifier metadata in Content/common/modifiers.secs.
Tags.FoodYesNoDeferredDeferredDeferredDeferredReal 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.DurableYesNoNoNoDeferredDeferredReal 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:

  1. The generator implementation needs to attach the tag to a Location or Feature during generation.
  2. A wave commits the new TagId constants to tags.secs and Tags.cs, with one-line semantics.
  3. 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.