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
+33 -4
View File
@@ -339,6 +339,30 @@ project mission "Harbor safety — 港 🌊" {
component_port,
function_port,
);
let participants: Vec<_> = p
.elements
.values()
.filter(|e| matches!(e.kind(), Kind::Entity | Kind::Actor))
.map(|e| e.id)
.collect();
let means = p.relate(
RelationKind::CommunicationMean,
"Operational communication",
participants[0],
participants[1],
);
let category = p
.add_element(
Kind::ExchangeCategory,
Layer::Oa,
"Operational exchange category",
None,
)
.unwrap();
*p.elements.get_mut(&category).unwrap().shared_mut().unwrap() = SharedBody::ExchangeCategory {
family: oa_core::view_options::ExchangeFamily::Participant,
exchanges: vec![means],
};
p
}
@@ -491,7 +515,7 @@ fn authoring_defaults_and_forward_references_remain_strict() {
#[test]
fn typed_unknown_fields_enums_duplicates_and_reference_spelling_are_rejected() {
for (source, expected) in [
("arcadia 6; project mission \"x\" {}", "Unsupported schema"),
("arcadia 7; project mission \"x\" {}", "Unsupported schema"),
(
"arcadia 2; project mission \"x\" { oa_activity a \"A\" { nonsense 1; } }",
"Unknown field",
@@ -795,7 +819,7 @@ fn original_v2_text_and_json_preserve_identity_and_mixed_scenarios_after_extensi
assert_eq!(from_source, from_json);
let original: serde_json::Value = serde_json::from_slice(old_json).unwrap();
let mut retained = serde_json::to_value(&from_json).unwrap();
assert_eq!(retained["schema_version"], 5);
assert_eq!(retained["schema_version"], oa_core::SCHEMA_VERSION);
retained["schema_version"] = 2.into();
let allocations: Vec<_> = from_json
.relations
@@ -904,6 +928,11 @@ fn original_v2_text_and_json_preserve_identity_and_mixed_scenarios_after_extensi
}
}
for diagram in retained["diagrams"].as_object_mut().unwrap().values_mut() {
assert_eq!(
diagram["view_options"],
serde_json::to_value(oa_core::view_options::ViewOptions::default()).unwrap()
);
diagram.as_object_mut().unwrap().remove("view_options");
assert_eq!(diagram["routes"], serde_json::json!([]));
diagram.as_object_mut().unwrap().remove("routes");
}
@@ -991,7 +1020,7 @@ fn v1_text_and_json_migrate_deterministically_without_losing_legacy_semantics()
assert_eq!(from_text, from_json);
assert_eq!(read(text), from_text);
assert_eq!(persistence::decode(json).unwrap(), from_json);
assert_eq!(from_text.schema_version, 5);
assert_eq!(from_text.schema_version, oa_core::SCHEMA_VERSION);
assert!(!from_text.elements.values().any(|e| e.layer() == Layer::Sa));
let raw: serde_json::Value = serde_json::from_slice(json).unwrap();
for (id, record) in raw["elements"].as_object().unwrap() {
@@ -1193,7 +1222,7 @@ fn complete_normative_examples_are_accepted_by_the_real_parser() {
if code.trim_start().starts_with("arcadia 2;")
|| code.trim_start().starts_with("arcadia 3;")
|| code.trim_start().starts_with("arcadia 4;")
|| code.trim_start().starts_with("arcadia 5;")
|| code.trim_start().starts_with("arcadia 6;")
{
read(&code);
examples += 1;