readProjectFile($file), true); $this->assertIsArray($decoded, 'Invalid JSON: ' . $file); } } public function testAllSevenRolePromptsExist(): void { $roles = ['analyst', 'planner', 'executor', 'reviewer-code', 'reviewer-security', 'reviewer-acceptance', 'finalizer']; foreach ($roles as $role) { $this->readProjectFile('.agents/prompts/' . $role . '.md'); } } public function testAllSevenContractsExist(): void { $contracts = ['analyst', 'planner', 'executor', 'reviewer-code', 'reviewer-security', 'reviewer-acceptance', 'finalizer']; foreach ($contracts as $contract) { $decoded = json_decode($this->readProjectFile('.agents/contracts/' . $contract . '.schema.json'), true); $this->assertIsArray($decoded, 'Invalid JSON schema: ' . $contract); } } public function testAllSevenTemplatesExist(): void { $templates = [ 'analysis', 'plan', 'execution-report', 'review-code', 'review-security', 'review-acceptance', 'finalize', ]; foreach ($templates as $template) { $decoded = json_decode($this->readProjectFile('.agents/templates/' . $template . '.template.json'), true); $this->assertIsArray($decoded, 'Invalid JSON template: ' . $template); } } }