306 lines
11 KiB
JSON
306 lines
11 KiB
JSON
{
|
|
"schema": "freecad-web-p6-cam-module-gate/v1",
|
|
"task_id": "FW-P6-CAM-Y",
|
|
"module": "CAM",
|
|
"result": "pass",
|
|
"sourceRevision": "b5a086fda59b0325fe0996147e6e9b344414f9bc",
|
|
"actions": {
|
|
"create/recompute": {
|
|
"result": "pass",
|
|
"artifacts": [
|
|
{
|
|
"stage": "A",
|
|
"artifact": "docs/p6/cam-source-boundary.json",
|
|
"artifactSha256": "dd6c1ec1ac9cad3491b8b3160c94b3611bac5448194124caa98a112fd6e28896",
|
|
"result": "pass",
|
|
"sourceRevision": "b5a086fda59b0325fe0996147e6e9b344414f9bc"
|
|
},
|
|
{
|
|
"stage": "B",
|
|
"artifact": "docs/p6/cam-runtime.json",
|
|
"artifactSha256": "6516280646921077006a20e05595a2501cef2a2f9ebd05c70edaeee2b4b66a42",
|
|
"result": "pass",
|
|
"sourceRevision": "b5a086fda59b0325fe0996147e6e9b344414f9bc"
|
|
},
|
|
{
|
|
"stage": "C",
|
|
"artifact": "docs/p6/cam-kernel.json",
|
|
"artifactSha256": "bc382703fa3dc607bde3cdeda969a320d22f9af14f6918e6e9e49c5877c0ea0e",
|
|
"result": "pass",
|
|
"sourceRevision": "b5a086fda59b0325fe0996147e6e9b344414f9bc"
|
|
},
|
|
{
|
|
"stage": "D",
|
|
"artifact": "docs/p6/cam-recovery.json",
|
|
"artifactSha256": "f586ca04838056396c5bf1df64364a9833e9c41a55ec9654597773bf9ad85db2",
|
|
"result": "pass",
|
|
"sourceRevision": "b5a086fda59b0325fe0996147e6e9b344414f9bc"
|
|
},
|
|
{
|
|
"stage": "E",
|
|
"artifact": "docs/p6/cam-facade.json",
|
|
"artifactSha256": "9def30ac625c4e5be27baa7eaa72442d655f52fc08832519415d2aa746454978",
|
|
"result": "pass",
|
|
"sourceRevision": "b5a086fda59b0325fe0996147e6e9b344414f9bc"
|
|
},
|
|
{
|
|
"stage": "F",
|
|
"artifact": "docs/p6/cam-chrome.json",
|
|
"artifactSha256": "62f0fe772ace2c6d181dd76323021673b0994d321773daee4cb9bd8cdec8a526",
|
|
"result": "pass",
|
|
"sourceRevision": "b5a086fda59b0325fe0996147e6e9b344414f9bc"
|
|
},
|
|
{
|
|
"stage": "G",
|
|
"artifact": "docs/p6/cam-persistence.json",
|
|
"artifactSha256": "58e68a68775fada40b4f8dd53de7d226634584b871432d2699c5f80b2860c901",
|
|
"result": "pass",
|
|
"sourceRevision": "b5a086fda59b0325fe0996147e6e9b344414f9bc"
|
|
}
|
|
],
|
|
"chrome": {
|
|
"externalRequests": 0,
|
|
"runtimeExceptions": 0
|
|
},
|
|
"persistence": {
|
|
"applicable": false,
|
|
"result": "pass",
|
|
"boundaries": [
|
|
"No FCStd round-trip claim is made because this action has no save/reopen API.",
|
|
"The deterministic create/recompute state is replayed twice and remains unchanged after cancellation/error handling.",
|
|
"Cross-version migration, full CAM serialization and GUI document persistence remain out of scope."
|
|
]
|
|
}
|
|
},
|
|
"import/export": {
|
|
"result": "pass",
|
|
"artifacts": [
|
|
{
|
|
"stage": "C",
|
|
"artifact": "docs/p6/cam-action-02-kernel.json",
|
|
"artifactSha256": "f9c80ea10a75350412fb2bebda2d0b6f55c3b76d1582fb6e284fc16b4b863855",
|
|
"result": "pass",
|
|
"sourceRevision": "b5a086fda59b0325fe0996147e6e9b344414f9bc"
|
|
},
|
|
{
|
|
"stage": "D",
|
|
"artifact": "docs/p6/cam-action-02-recovery.json",
|
|
"artifactSha256": "76957dcfd39d03ebcebbcba432167239a4f9a011f728781f2b10857143a068ba",
|
|
"result": "pass",
|
|
"sourceRevision": "b5a086fda59b0325fe0996147e6e9b344414f9bc"
|
|
},
|
|
{
|
|
"stage": "E",
|
|
"artifact": "docs/p6/cam-action-02-facade.json",
|
|
"artifactSha256": "c2c0947fa523e1539656bd5ff0f66cf653007d18b522b283335a670f92c5e737",
|
|
"result": "pass",
|
|
"sourceRevision": "b5a086fda59b0325fe0996147e6e9b344414f9bc"
|
|
},
|
|
{
|
|
"stage": "F",
|
|
"artifact": "docs/p6/cam-action-02-chrome.json",
|
|
"artifactSha256": "473956475c1d7aa014631ac6025feb24a9bc5ca480609f3a7c31e6a13570a1fd",
|
|
"result": "pass",
|
|
"sourceRevision": "b5a086fda59b0325fe0996147e6e9b344414f9bc"
|
|
},
|
|
{
|
|
"stage": "G",
|
|
"artifact": "docs/p6/cam-action-02-persistence.json",
|
|
"artifactSha256": "df0aabb4757eb387da586f06e44719454ae8b411da8046e48d38b56cf2cf035d",
|
|
"result": "pass",
|
|
"sourceRevision": "b5a086fda59b0325fe0996147e6e9b344414f9bc"
|
|
}
|
|
],
|
|
"chrome": {
|
|
"externalRequests": 0,
|
|
"runtimeExceptions": 0
|
|
},
|
|
"persistence": {
|
|
"applicable": false,
|
|
"result": "pass",
|
|
"boundaries": [
|
|
"No FCStd round-trip claim; only deterministic JSON import/export read-only replay is covered."
|
|
]
|
|
}
|
|
},
|
|
"inspect/source-inventory": {
|
|
"result": "pass",
|
|
"artifacts": [
|
|
{
|
|
"stage": "C",
|
|
"artifact": "docs/p6/cam-action-03-kernel.json",
|
|
"artifactSha256": "96c8f9f2dffe24365c0c2352edc142efa17223f0aa289f3f9f6be5d0b312bff2",
|
|
"result": "pass",
|
|
"sourceRevision": "b5a086fda59b0325fe0996147e6e9b344414f9bc"
|
|
},
|
|
{
|
|
"stage": "D",
|
|
"artifact": "docs/p6/cam-action-03-recovery.json",
|
|
"artifactSha256": "bd962b2d75662a7afb30571cf35b8b773c5c46341c5166cbe4474a9a66c6980f",
|
|
"result": "pass",
|
|
"sourceRevision": "b5a086fda59b0325fe0996147e6e9b344414f9bc"
|
|
},
|
|
{
|
|
"stage": "E",
|
|
"artifact": "docs/p6/cam-action-03-facade.json",
|
|
"artifactSha256": "842cfd1b8db2c8d119e65464ad576a193fc69326573bf0593f3e0666e9144071",
|
|
"result": "pass",
|
|
"sourceRevision": "b5a086fda59b0325fe0996147e6e9b344414f9bc"
|
|
},
|
|
{
|
|
"stage": "F",
|
|
"artifact": "docs/p6/cam-action-03-chrome.json",
|
|
"artifactSha256": "9481ef309e889011089455afe8e17e8754a40f98d5c61a02f0910339fde40624",
|
|
"result": "pass",
|
|
"sourceRevision": "b5a086fda59b0325fe0996147e6e9b344414f9bc"
|
|
},
|
|
{
|
|
"stage": "G",
|
|
"artifact": "docs/p6/cam-action-03-persistence.json",
|
|
"artifactSha256": "e305868587e3844b4ba42b6b16cc6115aecb27ee83097925ff6945d7a78c3c4b",
|
|
"result": "pass",
|
|
"sourceRevision": "b5a086fda59b0325fe0996147e6e9b344414f9bc"
|
|
}
|
|
],
|
|
"chrome": {
|
|
"externalRequests": 0,
|
|
"runtimeExceptions": 0
|
|
},
|
|
"persistence": {
|
|
"applicable": false,
|
|
"result": "pass",
|
|
"boundaries": [
|
|
"No FCStd round-trip claim; only deterministic read-only inventory replay is covered."
|
|
]
|
|
}
|
|
},
|
|
"python-api": {
|
|
"result": "pass",
|
|
"artifacts": [
|
|
{
|
|
"stage": "C",
|
|
"artifact": "docs/p6/cam-action-04-kernel.json",
|
|
"artifactSha256": "a74952b019e660cecf85d92236fa146a7c5f9cc67daaa0826b6ea7ff577f332b",
|
|
"result": "pass",
|
|
"sourceRevision": "b5a086fda59b0325fe0996147e6e9b344414f9bc"
|
|
},
|
|
{
|
|
"stage": "D",
|
|
"artifact": "docs/p6/cam-action-04-recovery.json",
|
|
"artifactSha256": "2b8af456418d839daac6125371e567bce92148a37a6b7d3099cddfb33e4b90ff",
|
|
"result": "pass",
|
|
"sourceRevision": "b5a086fda59b0325fe0996147e6e9b344414f9bc"
|
|
},
|
|
{
|
|
"stage": "E",
|
|
"artifact": "docs/p6/cam-action-04-facade.json",
|
|
"artifactSha256": "25152e961df4045d72dfa33caa887a45848f810aded890eb3da14d4424f6cccb",
|
|
"result": "pass",
|
|
"sourceRevision": "b5a086fda59b0325fe0996147e6e9b344414f9bc"
|
|
},
|
|
{
|
|
"stage": "F",
|
|
"artifact": "docs/p6/cam-action-04-chrome.json",
|
|
"artifactSha256": "0a0c27f4686d6314348125887b9e613a9b9b53554116e5dbd9ef26dd1dd4ef1b",
|
|
"result": "pass",
|
|
"sourceRevision": "b5a086fda59b0325fe0996147e6e9b344414f9bc"
|
|
},
|
|
{
|
|
"stage": "G",
|
|
"artifact": "docs/p6/cam-action-04-persistence.json",
|
|
"artifactSha256": "97915201da1ee21762eaa227c3e85720be08e291ff9bdca1fe149a3e35450ac3",
|
|
"result": "pass",
|
|
"sourceRevision": "b5a086fda59b0325fe0996147e6e9b344414f9bc"
|
|
}
|
|
],
|
|
"chrome": {
|
|
"externalRequests": 0,
|
|
"runtimeExceptions": 0
|
|
},
|
|
"persistence": {
|
|
"applicable": false,
|
|
"result": "pass",
|
|
"boundaries": [
|
|
"No FCStd round-trip claim; Python API result is a read-only source inventory, not arbitrary execution."
|
|
]
|
|
}
|
|
},
|
|
"save/reopen": {
|
|
"result": "pass",
|
|
"artifacts": [
|
|
{
|
|
"stage": "C",
|
|
"artifact": "docs/p6/cam-action-05-kernel.json",
|
|
"artifactSha256": "9e938d48bab88a04a26f21a3c812f30eeb74bee9113a3df0c00594ae80d8ddfb",
|
|
"result": "pass",
|
|
"sourceRevision": "b5a086fda59b0325fe0996147e6e9b344414f9bc"
|
|
},
|
|
{
|
|
"stage": "D",
|
|
"artifact": "docs/p6/cam-action-05-recovery.json",
|
|
"artifactSha256": "a5aefa25b2de51383f63cc2db41a2e634cef83ab70268656a5690566f026c3a0",
|
|
"result": "pass",
|
|
"sourceRevision": "b5a086fda59b0325fe0996147e6e9b344414f9bc"
|
|
},
|
|
{
|
|
"stage": "E",
|
|
"artifact": "docs/p6/cam-action-05-facade.json",
|
|
"artifactSha256": "f800d4982c2953e46ff9cdec6e95da708bf85f76f410e1e526d2d65bfe4486eb",
|
|
"result": "pass",
|
|
"sourceRevision": "b5a086fda59b0325fe0996147e6e9b344414f9bc"
|
|
},
|
|
{
|
|
"stage": "F",
|
|
"artifact": "docs/p6/cam-action-05-chrome.json",
|
|
"artifactSha256": "77c43be31039e30d4ae326f7c96e435be7612c32297ef88d36dab2d3fce2fc07",
|
|
"result": "pass",
|
|
"sourceRevision": "b5a086fda59b0325fe0996147e6e9b344414f9bc"
|
|
},
|
|
{
|
|
"stage": "G",
|
|
"artifact": "docs/p6/cam-action-05-persistence.json",
|
|
"artifactSha256": "ff7ea1771ff5dd130a3d6c32c337458e7bf5893a57cc7bc723c4f9f4945b7249",
|
|
"result": "pass",
|
|
"sourceRevision": "b5a086fda59b0325fe0996147e6e9b344414f9bc"
|
|
}
|
|
],
|
|
"chrome": {
|
|
"externalRequests": 0,
|
|
"runtimeExceptions": 0
|
|
},
|
|
"persistence": {
|
|
"applicable": true,
|
|
"result": "pass",
|
|
"boundaries": [
|
|
"One Path::Feature FCStd fixture only; multi-object CAM serialization and cross-version migration remain out of scope."
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"chrome": {
|
|
"browser": "Google Chrome only",
|
|
"versions": [],
|
|
"externalRequests": 0,
|
|
"runtimeExceptions": 0
|
|
},
|
|
"persistence": {
|
|
"fcstdRoundTrip": true,
|
|
"applicableActions": [
|
|
"save/reopen"
|
|
],
|
|
"notApplicableActions": [
|
|
"create/recompute",
|
|
"import/export",
|
|
"inspect/source-inventory",
|
|
"python-api"
|
|
]
|
|
},
|
|
"moduleStatus": "completed",
|
|
"boundaries": [
|
|
"import/export is covered as deterministic JSON import/export; FCStd round-trip is not applicable to the ephemeral facade action.",
|
|
"inspect/source-inventory and python-api are read-only inventories; they do not claim arbitrary Python execution or GUI document persistence.",
|
|
"save/reopen covers one Path::Feature FCStd fixture; multi-object CAM serialization and cross-version migration remain out of scope.",
|
|
"CAM GUI integrations excluded by the action contracts remain out of scope."
|
|
]
|
|
}
|