Governed spatial modeling and representation validation for Moon Suite.
Dependencies
Domain pack · early digital-model alpha. Read the product contract for representation truth, Blender qualification, authority limits and release gates.
///|
test "a presentation sibling cannot replace engineering truth" {
let source = @moonmold.new_artifact(
artifact_id="habitat-source",
representation=EditableSource,
digest="mm1-source",
units="m",
coordinate_frame="z-up-right-handed",
parent_digest=None,
relation=None,
known_losses=[],
)
let styled = @moonmold.derive_artifact(
source,
artifact_id="habitat-presentation",
representation=Presentation,
digest="mm1-present",
relation=StyledFrom,
known_losses=["collision fidelity", "engineering materials"],
)
assert_true(styled.parent_digest() == Some(source.digest()))
assert_eq(styled.is_lossless_engineering_representation(), false)
}moon check --target all --warn-list +unnecessary_annotation
moon test --target all
npm test
npm run demo
npm run demo:transferpub(all) suberror AdapterError {
InvalidIdentity(String)
InvalidDeadline(Int)
AuthorityExceeded(AuthorityClass)
WorkspaceBoundaryViolation(String)
StaleParent(expected~ : String, actual~ : String)
ConflictingIdempotencyKey(String)
UnsupportedTransportMethod(String)
InvalidOperation(String)
} derive(Eq, Debug)pub(all) struct AdapterReceipt {
request_id : String
idempotency_key : String
outcome : AdapterOutcome
before_digest : String
after_digest : String
changed_objects : Array[String]
warnings : Array[String]
evidence : ValidationEvidence
} derive(Eq, ToJson, Debug)pub(all) struct AdapterRequest {
project_id : String
session_id : String
model_id : String
request_id : String
idempotency_key : String
expected_parent_digest : String
workspace_root : String
deadline_ms : Int
authority : AuthorityClass
operation : SemanticOperation
}fn MockBackend::execute(self : MockBackend, request : AdapterRequest) -> AdapterReceipt raise AdapterErrorpub(all) enum SemanticOperation {
CreateModel(name~ : String, units~ : String, coordinate_frame~ : String)
CreateBox(object_id~ : String, width_mm~ : Int, depth_mm~ : Int, height_mm~ : Int)
CreateCylinder(object_id~ : String, radius_mm~ : Int, height_mm~ : Int, sides~ : Int)
SetTransform(object_id~ : String, x_mm~ : Int, y_mm~ : Int, z_mm~ : Int)
AssignMaterial(object_id~ : String, material_id~ : String)
BooleanSubtract(target_id~ : String, cutter_id~ : String)
ValidateScene
ExportRepresentation(representation~ : RepresentationKind, output_path~ : String)
} derive(Eq, ToJson, Debug)pub struct SpatialArtifact {
artifact_id : String
representation : RepresentationKind
digest : String
units : String
coordinate_frame : String
parent_digest : String?
relation : LineageRelation?
known_losses : Array[String]
}pub(all) struct ValidationEvidence {
validator : String
validator_version : String
subject_digest : String
accepted : Bool
findings : Array[ValidationFinding]
} derive(Eq, ToJson, Debug)pub(all) struct ValidationFinding {
code : String
severity : FindingSeverity
message : String
criterion : String
} derive(Eq, ToJson, Debug)fn derive_artifact(parent : SpatialArtifact, artifact_id~ : String, representation~ : RepresentationKind, digest~ : String, relation~ : LineageRelation, known_losses~ : Array[String]) -> SpatialArtifactfn deterministic_manifest_key(canonical : String) -> Stringfn new_artifact(artifact_id~ : String, representation~ : RepresentationKind, digest~ : String, units~ : String, coordinate_frame~ : String, parent_digest~ : String?, relation~ : LineageRelation?, known_losses~ : Array[String]) -> SpatialArtifactGoverned spatial modeling and representation validation for Moon Suite.
Dependencies