Complete source 6 engineering workflows and preserve release validation evidence

This commit is contained in:
Codex
2026-09-06 21:49:04 -07:00
parent 2b2d2bc18b
commit 4b6b5fc197
290 changed files with 48271 additions and 1791 deletions
+19 -2
View File
@@ -191,6 +191,7 @@ fn path(own: &Own, facet: &FacetSelector) -> Option<Vec<String>> {
F::State(StateFacet::Exit) => ("State", &["exit"]),
F::State(StateFacet::DoActivity) => ("State", &["do_activity"]),
F::Constraint(ConstraintFacet::Expression) => ("Constraint", &["expression"]),
F::Category(CategoryFacet::Family) => ("ExchangeCategory", &["family"]),
F::Relation(RelationFacet::Source) => ("*", &["source"]),
F::Relation(RelationFacet::Target) => ("*", &["target"]),
F::Relation(RelationFacet::AllocationOrder) => ("InterfaceItemAllocation", &["order"]),
@@ -206,7 +207,7 @@ fn path(own: &Own, facet: &FacetSelector) -> Option<Vec<String>> {
F::Relation(RelationFacet::TargetNavigable) => ("DataAssociation", &["target_navigable"]),
F::Relation(RelationFacet::SourcePort) => ("FunctionalExchange", &["source_port"]),
F::Relation(RelationFacet::TargetPort) => ("FunctionalExchange", &["target_port"]),
F::Relation(RelationFacet::Oriented) => ("BoundaryExchange", &["oriented"]),
F::Relation(RelationFacet::Oriented) => ("*", &["oriented"]),
F::Relation(RelationFacet::ExtendCondition) => ("CapabilityExtend", &["condition"]),
F::Relation(RelationFacet::SequenceGuard) => ("SequenceLink", &["guard"]),
F::Relation(RelationFacet::TransitionKind) => ("StateTransition", &["transition_kind"]),
@@ -311,7 +312,8 @@ pub(crate) fn collection(project: &Project, id: Id, which: ReferenceCollection)
Some(
RelationBody::Interaction { items, .. }
| RelationBody::FunctionalExchange { items, .. }
| RelationBody::BoundaryExchange { items, .. },
| RelationBody::BoundaryExchange { items, .. }
| RelationBody::CommunicationMean { items, .. },
) => Some(items.clone()),
_ => None,
},
@@ -327,6 +329,10 @@ pub(crate) fn collection(project: &Project, id: Id, which: ReferenceCollection)
Some(SharedBody::Constraint { constrained, .. }) => Some(constrained.clone()),
_ => None,
},
C::CategoryExchanges => match shared {
Some(SharedBody::ExchangeCategory { exchanges, .. }) => Some(exchanges.clone()),
_ => None,
},
}
}
pub(crate) fn order_collection(which: OrderedCollection) -> ReferenceCollection {
@@ -575,6 +581,7 @@ fn catalog_facets(
ReferenceCollection::FunctionOutputItems,
ReferenceCollection::SignalItems,
ReferenceCollection::ExchangeItems,
ReferenceCollection::CategoryExchanges,
ReferenceCollection::TransitionTriggers,
ReferenceCollection::TransitionEffects,
ReferenceCollection::Constrained,
@@ -1036,6 +1043,11 @@ mod coverage {
p
};
for (kind, parts, which) in [
(
"ExchangeCategory",
vec!["exchanges"],
ReferenceCollection::CategoryExchanges,
),
("Process", vec!["steps"], ReferenceCollection::Steps),
("FunctionalChain", vec!["steps"], ReferenceCollection::Steps),
("Scenario", vec!["steps"], ReferenceCollection::Steps),
@@ -1079,6 +1091,11 @@ mod coverage {
vec!["items"],
ReferenceCollection::ExchangeItems,
),
(
"CommunicationMean",
vec!["items"],
ReferenceCollection::ExchangeItems,
),
(
"StateTransition",
vec!["triggers"],
@@ -73,6 +73,7 @@ macro_rules! enums {
} )* };
}
enums!(
crate::view_options::ExchangeFamily,
ExchangeItemKind,
ExchangeMechanism,
ParameterDirection,
+6 -1
View File
@@ -63,7 +63,8 @@ pub(crate) fn set_collection(
Some(
RelationBody::Interaction { items, .. }
| RelationBody::FunctionalExchange { items, .. }
| RelationBody::BoundaryExchange { items, .. },
| RelationBody::BoundaryExchange { items, .. }
| RelationBody::CommunicationMean { items, .. },
) => Some(items),
_ => None,
},
@@ -79,6 +80,10 @@ pub(crate) fn set_collection(
Some(SharedBody::Constraint { constrained, .. }) => Some(constrained),
_ => None,
},
C::CategoryExchanges => match p.elements.get_mut(&id).and_then(Element::shared_mut) {
Some(SharedBody::ExchangeCategory { exchanges, .. }) => Some(exchanges),
_ => None,
},
}
.ok_or("Collection is inapplicable on target")?;
*slot = list;
+12 -1
View File
@@ -795,7 +795,18 @@ fn build_review(
current.clone()
};
if resolution.decision == SemanticDecision::TakeSource {
fact = remap_fact(&fact, &map, source_layer)?;
fact = if let Some(adapted) = transitions::review_endpoint_fact(
initial,
&plan.request.transition,
&map,
request.source,
target,
&fact,
)? {
adapted
} else {
remap_fact(&fact, &map, source_layer)?
};
}
// A Keep reads the frozen target, never a value written by an earlier source.
if resolution.decision != SemanticDecision::KeepTarget {
+2
View File
@@ -86,6 +86,7 @@ macro_rules! scalar_families {
ExchangeItem, ExchangeItemFacet, ExchangeItemReview {
Nature: ExchangeItemKind, Mechanism: ExchangeMechanism, Supertype: Option<Id>
}
Category, CategoryFacet, CategoryReview { Family: crate::view_options::ExchangeFamily }
Interface, InterfaceFacet, InterfaceReview { Supertype: Option<Id> }
Data, DataFacet, DataReview {
Constructor: DataConstructor,
@@ -197,6 +198,7 @@ pub enum ReferenceCollection {
FunctionOutputItems,
SignalItems,
ExchangeItems,
CategoryExchanges,
TransitionTriggers,
TransitionEffects,
Constrained,