decomposer: generate deliverable files for Inspect the single_agent template and target repository conventions to identify the required project structure, configuration, interfaces, and implementation patterns for the application landing zone agent.; Define the application landing zone agent's behavior, input and output contracts, document-generation workflow, and architecture-diagram requirements using the extracted template conventions.; Validate the implemented application_landing_zone_agent by running repository tests and checking the TSD document generation, draw.io diagram generation, agent packaging, configuration, and committed implementation against the defined contracts.; Commit and push the validated application_landing_zone_agent implementation to the target repository.

This commit is contained in:
2026-08-31 14:45:15 +00:00
parent 576c4050be
commit 0060bdd426
14 changed files with 226 additions and 85 deletions

View File

@@ -1,30 +1,31 @@
import json, unittest
import xml.etree.ElementTree as ET
import json, tempfile, unittest
from pathlib import Path
from application_landing_zone_agent import LandingZoneAgent, ValidationError
from landing_zone_agent.generator import generate
from landing_zone_agent.validation import validate_requirements
class AgentContractTests(unittest.TestCase):
@classmethod
def setUpClass(cls):
cls.data = json.loads(Path("examples/application.json").read_text())
cls.agent = LandingZoneAgent()
def test_generation_is_deterministic_and_complete(self):
a, b = self.agent.generate(self.data), self.agent.generate(self.data)
self.assertEqual(a, b)
self.assertIn("## Component inventory", a.tsd_markdown)
self.assertIn("Orders API", a.tsd_markdown)
self.assertTrue(a.validation.valid)
def test_drawio_is_native_xml_with_vertices_and_edges(self):
root = ET.fromstring(self.agent.generate(self.data).drawio_xml)
self.assertEqual(root.tag, "mxfile")
self.assertIsNotNone(root.find(".//mxGraphModel"))
self.assertGreaterEqual(len(root.findall(".//mxCell[@vertex='1']")), 4)
self.assertGreaterEqual(len(root.findall(".//mxCell[@edge='1']")), 1)
def test_required_input_errors(self):
with self.assertRaises(ValidationError): self.agent.generate({"application_name": "x"})
def test_cli_fixture_has_expected_contract(self):
report = self.agent.validate(self.data)
self.assertFalse(report.errors)
self.assertEqual(report.warnings, [])
class AgentTests(unittest.TestCase):
def setUp(self):
self.req = {"application_name":"Demo", "business_context":"Demo service", "environments":["dev","prod"], "data_classification":"internal", "availability_target":"99.9%", "components":["API","DB"]}
if __name__ == "__main__": unittest.main()
def test_generates_tsd_and_drawio(self):
result = generate(self.req)
self.assertIn("# Technical Solution Design: Demo", result["tsd"])
self.assertIn("Security, resilience, and operations", result["tsd"])
self.assertTrue(result["drawio"].startswith("<mxfile"))
self.assertIn("<mxGraphModel>", result["drawio"])
self.assertTrue(result["manifest"]["validation"]["drawio"])
def test_missing_field_is_actionable(self):
with self.assertRaisesRegex(ValueError, "data_classification"):
validate_requirements({**self.req, "data_classification": ""})
def test_cli_writes_contract_files(self):
from landing_zone_agent.cli import main
with tempfile.TemporaryDirectory() as directory:
req_path = Path(directory) / "req.json"; out = Path(directory) / "out"
req_path.write_text(json.dumps(self.req), encoding="utf-8")
self.assertEqual(main(["--requirements", str(req_path), "--output-dir", str(out)]), 0)
self.assertEqual({p.name for p in out.iterdir()}, {"tsd.md", "architecture.drawio", "manifest.json"})
if __name__ == "__main__":
unittest.main()