wip: preserve local engine and agent workflow changes before ganjihong refactor integration

This commit is contained in:
2026-09-09 17:08:24 +08:00
parent a5c3ec1f36
commit 387b99e255
112 changed files with 3543 additions and 12177 deletions
+22 -2
View File
@@ -1041,10 +1041,15 @@ class LoweringTests(unittest.TestCase):
cap_extrude = features["f_F5"]
self.assertEqual(cap_extrude["atomic_id"], "extrude_from_face")
self.assertNotIn("sketch_id", cap_extrude)
self.assertEqual(cap_extrude["selectors"], [{
selector = cap_extrude["selectors"][0]
self.assertEqual({key: selector[key] for key in (
"kind", "owner_feature_id", "output_role", "source", "confidence",
)}, {
"kind": "face", "owner_feature_id": "f_F3", "output_role": "extrude.start",
"source": "runtime_snapshot", "confidence": 1.0,
}])
})
self.assertEqual(selector["selector_intent_version"], "1.0")
self.assertEqual(selector["selector_intent"]["query_family"], "CAP_FACE")
from engine.cdsl_engine.runtime import rebuild_cdsl
with tempfile.TemporaryDirectory() as directory:
@@ -1691,6 +1696,21 @@ class LoweringTests(unittest.TestCase):
self.assertEqual(result.diagnostics[0]["code"], "unsupported_engine_capability")
self.assertIn("extrude_profile_topology:cap_face", result.diagnostics[0]["capability"])
def test_cap_face_selector_retains_versioned_provenance_intent(self):
source = SOURCE.replace(
'\n});\n',
'\n extrude(context, id + "F2", {"entities":makeQuery(id + "F1.opExtrude", "CAP_FACE", FACE, {"isStart":false}), "depth":10 * mm});\n});\n',
)
result = lower_model(parse_featurescript(source, "cap-intent"), {})
self.assertEqual(result.status, "converted_complete")
selector = next(item for item in result.cdsl["features"] if item["id"] == "f_F2")["selectors"][0]
self.assertEqual(selector["selector_intent"]["query_family"], "CAP_FACE")
self.assertEqual(selector["selector_intent_version"], "1.0")
self.assertEqual(selector["selector_intent"]["source_query"]["featurescript_version"], "1511")
self.assertEqual(selector["selector_intent"]["evidence"], "operation_role")
from engine.cdsl_engine.semantic_validation import validate_semantic_cdsl
self.assertTrue(validate_semantic_cdsl(result.cdsl)["future_rebuild_ready"])
def test_conversion_writes_status_and_sidecars(self):
with tempfile.TemporaryDirectory() as tmp:
root = Path(tmp); source = root / "00000173.txt"; source.write_text(SOURCE)