Initial commit: add .gitignore and README
This commit is contained in:
17
fusionagi/maa/schemas/__init__.py
Normal file
17
fusionagi/maa/schemas/__init__.py
Normal file
@@ -0,0 +1,17 @@
|
||||
"""MAA schemas: MPC, DLT, intent."""
|
||||
|
||||
from fusionagi.maa.schemas.mpc import ManufacturingProofCertificate, MPCId
|
||||
from fusionagi.maa.schemas.dlt import DLTNode, DLTContract, DLTFamily
|
||||
from fusionagi.maa.schemas.intent import EngineeringIntentGraph, IntentNode, LoadCase, RequirementType
|
||||
|
||||
__all__ = [
|
||||
"ManufacturingProofCertificate",
|
||||
"MPCId",
|
||||
"DLTNode",
|
||||
"DLTContract",
|
||||
"DLTFamily",
|
||||
"EngineeringIntentGraph",
|
||||
"IntentNode",
|
||||
"LoadCase",
|
||||
"RequirementType",
|
||||
]
|
||||
41
fusionagi/maa/schemas/dlt.py
Normal file
41
fusionagi/maa/schemas/dlt.py
Normal file
@@ -0,0 +1,41 @@
|
||||
"""Deterministic Decision Logic Tree schema: node, contract, families."""
|
||||
|
||||
from enum import Enum
|
||||
from typing import Any
|
||||
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
|
||||
class DLTFamily(str, Enum):
|
||||
"""DLT families: intent, geometry, physics, process, machine."""
|
||||
|
||||
INT = "DLT-INT"
|
||||
GEO = "DLT-GEO"
|
||||
PHY = "DLT-PHY"
|
||||
PROC = "DLT-PROC"
|
||||
MACH = "DLT-MACH"
|
||||
|
||||
|
||||
class DLTNode(BaseModel):
|
||||
"""Single node in a DLT: deterministic, evidence-backed, fail-closed."""
|
||||
|
||||
node_id: str = Field(..., description="Unique node id within tree")
|
||||
family: DLTFamily = Field(...)
|
||||
condition: str = Field(..., description="Deterministic condition expression or ref")
|
||||
evidence_ref: str | None = Field(default=None)
|
||||
fail_closed: bool = Field(default=True, description="On failure, reject (fail closed)")
|
||||
children: list[str] = Field(default_factory=list, description="Child node ids")
|
||||
metadata: dict[str, Any] = Field(default_factory=dict)
|
||||
|
||||
|
||||
class DLTContract(BaseModel):
|
||||
"""Immutable, versioned DLT contract."""
|
||||
|
||||
contract_id: str = Field(..., description="Contract identifier")
|
||||
version: int = Field(default=1)
|
||||
family: DLTFamily = Field(...)
|
||||
root_id: str = Field(..., description="Root node id")
|
||||
nodes: dict[str, DLTNode] = Field(default_factory=dict)
|
||||
metadata: dict[str, Any] = Field(default_factory=dict)
|
||||
|
||||
model_config = {"frozen": False}
|
||||
38
fusionagi/maa/schemas/intent.py
Normal file
38
fusionagi/maa/schemas/intent.py
Normal file
@@ -0,0 +1,38 @@
|
||||
"""Intent formalization schema: intent graph, requirement types, load cases."""
|
||||
|
||||
from enum import Enum
|
||||
from typing import Any
|
||||
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
|
||||
class RequirementType(str, Enum):
|
||||
DIMENSIONAL = "dimensional"
|
||||
LOAD = "load"
|
||||
ENVIRONMENTAL = "environmental"
|
||||
PROCESS = "process"
|
||||
OTHER = "other"
|
||||
|
||||
|
||||
class IntentNode(BaseModel):
|
||||
node_id: str = Field(..., description="Unique intent node id")
|
||||
requirement_type: RequirementType = Field(...)
|
||||
description: str = Field(...)
|
||||
bounds_ref: str | None = Field(default=None)
|
||||
load_case_ids: list[str] = Field(default_factory=list)
|
||||
metadata: dict[str, Any] = Field(default_factory=dict)
|
||||
|
||||
|
||||
class LoadCase(BaseModel):
|
||||
load_case_id: str = Field(...)
|
||||
description: str = Field(...)
|
||||
boundary_conditions_ref: str | None = Field(default=None)
|
||||
metadata: dict[str, Any] = Field(default_factory=dict)
|
||||
|
||||
|
||||
class EngineeringIntentGraph(BaseModel):
|
||||
intent_id: str = Field(...)
|
||||
nodes: list[IntentNode] = Field(default_factory=list)
|
||||
load_cases: list[LoadCase] = Field(default_factory=list)
|
||||
environmental_bounds: dict[str, Any] = Field(default_factory=dict)
|
||||
metadata: dict[str, Any] = Field(default_factory=dict)
|
||||
79
fusionagi/maa/schemas/mpc.py
Normal file
79
fusionagi/maa/schemas/mpc.py
Normal file
@@ -0,0 +1,79 @@
|
||||
"""Manufacturing Proof Certificate schema: decision lineage, simulation proof, process, machine, risk."""
|
||||
|
||||
from enum import Enum
|
||||
from typing import Any
|
||||
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
|
||||
class MPCId(BaseModel):
|
||||
"""Immutable MPC identifier: content-addressed or versioned."""
|
||||
|
||||
value: str = Field(..., description="Unique MPC id (e.g. hash or versioned id)")
|
||||
version: int = Field(default=1, description="Certificate version")
|
||||
|
||||
def __str__(self) -> str:
|
||||
return f"{self.value}@v{self.version}"
|
||||
|
||||
|
||||
class DecisionLineageEntry(BaseModel):
|
||||
"""Single entry in decision lineage."""
|
||||
|
||||
node_id: str = Field(..., description="DLT or decision node id")
|
||||
family: str = Field(..., description="DLT family: INT, GEO, PHY, PROC, MACH")
|
||||
evidence_ref: str | None = Field(default=None, description="Reference to evidence artifact")
|
||||
outcome: str = Field(..., description="Outcome: pass, fail_closed, etc.")
|
||||
|
||||
|
||||
class SimulationProof(BaseModel):
|
||||
"""Binding simulation proof reference."""
|
||||
|
||||
proof_id: str = Field(..., description="Proof artifact id")
|
||||
governing_equations: str | None = Field(default=None)
|
||||
boundary_conditions_ref: str | None = Field(default=None)
|
||||
safety_factor: float | None = Field(default=None)
|
||||
failure_modes_covered: list[str] = Field(default_factory=list)
|
||||
|
||||
|
||||
class ProcessJustification(BaseModel):
|
||||
"""Process eligibility justification."""
|
||||
|
||||
process_type: str = Field(..., description="additive, subtractive, hybrid")
|
||||
eligible: bool = Field(...)
|
||||
checks_ref: str | None = Field(default=None)
|
||||
tool_access: bool | None = None
|
||||
thermal_distortion: bool | None = None
|
||||
overhangs: bool | None = None
|
||||
datum_survivability: bool | None = None
|
||||
|
||||
|
||||
class MachineDeclaration(BaseModel):
|
||||
"""Machine binding declaration."""
|
||||
|
||||
machine_id: str = Field(..., description="Bound machine id")
|
||||
profile_ref: str | None = Field(default=None)
|
||||
limits_ref: str | None = Field(default=None)
|
||||
deviation_model_ref: str | None = Field(default=None)
|
||||
|
||||
|
||||
class RiskRegisterEntry(BaseModel):
|
||||
"""Single risk register entry."""
|
||||
|
||||
risk_id: str = Field(...)
|
||||
description: str = Field(...)
|
||||
severity: str = Field(..., description="e.g. low, medium, high")
|
||||
mitigation_ref: str | None = Field(default=None)
|
||||
|
||||
|
||||
class ManufacturingProofCertificate(BaseModel):
|
||||
"""Manufacturing Proof Certificate: immutable, versioned; required for manufacturing execution."""
|
||||
|
||||
mpc_id: MPCId = Field(..., description="Certificate identifier")
|
||||
decision_lineage: list[DecisionLineageEntry] = Field(default_factory=list)
|
||||
simulation_proof: SimulationProof | None = Field(default=None)
|
||||
process_justification: ProcessJustification | None = Field(default=None)
|
||||
machine_declaration: MachineDeclaration | None = Field(default=None)
|
||||
risk_register: list[RiskRegisterEntry] = Field(default_factory=list)
|
||||
metadata: dict[str, Any] = Field(default_factory=dict)
|
||||
|
||||
model_config = {"frozen": True}
|
||||
Reference in New Issue
Block a user