Propagative metadata is a two-layer mechanism. Layer A โ Hierarchical Scope Resolver: for any declared property, the resolver looks first on the node (node.attributes or a connected PropertyNode), then on the swimlane the node belongs to (EpochNode + the Swimlane Paradata Node Group defined in DP-19), then on the graph (canvas header tags from DP-40). The first non-null value wins. Layer A is now generic (DP-32 PropagationRule registry) with five built-in rules: absolute_time_start, absolute_time_end, author, license, embargo. Layer B โ Temporal Constraint Closure: symmetrical TPQ/TAQ propagation along is_after and survive_in_epoch edges, using Layer A values as seeds. Hard-policy paradox detection: when declared seeds disagree with the stratigraphic order (e.g. X older with abs_start=150 and Y more recent with abs_start=130, Y is_after X), the resolver preserves the user-declared seed AND emits a [chronology paradox] warning; TPQ/TAQ propagation is stopped at the paradoxical node. Header/PN disagreement (header epoch.start_time vs PropertyNode absolute_time_start inside SL_PD) emits a [chronology mismatch] warning and the PropertyNode wins. EpochNode resolves as its own swimlane, so chronology / author / license / embargo queries on an epoch work without a dedicated code path. The Heriverse exporter migration to the resolver was scoped out to a v1.6 follow-up: the design direction is to have Heriverse consume s3Dgraphy as a Python library and run propagation at export time, emitting lighter and less-redundant JSON payloads that already carry resolved per-node values instead of raw header attributes.
1.5
EM v1.5
Sarmizegetusa
Layer A+B shipped with 13 synthetic scenarios locked. Dashed connector reclassified to has_author/has_license/has_embargo by target class (DP-51). SL_PD auto-edge supports both XML-nested and top-level (has_first_epoch) layouts. Heriverse exporter migration deferred to v1.6: the plan is for Heriverse to consume s3Dgraphy as a Python library, run the DP-32 resolver at export time, and produce JSON payloads with resolved per-node values (lighter and less redundant than the current header-attribute approach).