diff --git a/.agents/checks/guard-catalog.json b/.agents/checks/guard-catalog.json index 0bf305e..fd822e6 100644 --- a/.agents/checks/guard-catalog.json +++ b/.agents/checks/guard-catalog.json @@ -161,6 +161,34 @@ "reviewer": "security", "title": "Output escaping in views", "requirement": "Views (.phtml) MUST use e() for all HTML output. Raw echo is only permitted for pre-built HTML fragments from framework helpers (e.g. ARIA attributes from navActive()). Each raw echo MUST carry an inline '// raw-html-ok: reason' comment." + }, + { + "id": "GR-CORE-LAYERS", + "area": "core", + "reviewer": "code", + "title": "Architecture layer isolation", + "requirement": "MUST enforce strict layer separation: Views render only (no DB calls), Services contain no HTML, Repositories are isolated from HTTP/session. No cross-layer violations." + }, + { + "id": "GR-CORE-MODULE", + "area": "core", + "reviewer": "code", + "title": "Module boundary isolation", + "requirement": "Modules MUST use MintyPHP\\Module\\* namespaces, declare valid manifests conforming to the schema, register providers correctly, prefix session keys with module..*, and pass per-module isolation tests." + }, + { + "id": "GR-CORE-META", + "area": "core", + "reviewer": "code", + "title": "Agent and codex system integrity", + "requirement": "Guard catalog, enforcement map, quality gates, agent references, and codex skill/docs links MUST be internally consistent. All guard/gate IDs MUST resolve. No orphaned or broken references." + }, + { + "id": "GR-UI-TAXONOMY", + "area": "ui", + "reviewer": "code", + "title": "Status taxonomy consistency", + "requirement": "Status enums, filter schemas, data-layer constants, and UI labels MUST stay in sync across all layers. No literal status strings outside taxonomy enums." } ] } diff --git a/.agents/checks/guard-enforcement-map.json b/.agents/checks/guard-enforcement-map.json index d4353ba..cce1d2e 100644 --- a/.agents/checks/guard-enforcement-map.json +++ b/.agents/checks/guard-enforcement-map.json @@ -1,5 +1,5 @@ { - "version": "1.0.0", + "version": "1.1.0", "entries": [ { "guard_id": "GR-CORE-003", @@ -50,6 +50,9 @@ "enforcement_mode": "hybrid", "evidence_source": [ "tests/Architecture/CoreStarterkitContractTest.php", + "tests/Architecture/AppContainerIsolationContractTest.php", + "tests/Architecture/ContainerFactoryContractTest.php", + "tests/Architecture/RepositoryInterfaceContractTest.php", ".agents/runs//review-code.json" ] }, @@ -66,7 +69,12 @@ "enforcement_mode": "automated", "evidence_source": [ "tests/Architecture/ListDataEndpointContractTest.php", - "tests/Architecture/ListTemplateContractTest.php" + "tests/Architecture/ListTemplateContractTest.php", + "tests/Architecture/ListActionContractTest.php", + "tests/Architecture/ListTitlebarTemplateContractTest.php", + "tests/Architecture/ListUiSharedPartialsContractTest.php", + "tests/Architecture/FilterDrawerTemplateContractTest.php", + "tests/Architecture/FilterDrawerRuntimeContractTest.php" ] }, { @@ -74,7 +82,14 @@ "enforcement_mode": "automated", "evidence_source": [ "tests/Architecture/DetailPageRuntimeContractTest.php", - "tests/Architecture/DetailActionPolicyRuntimeContractTest.php" + "tests/Architecture/DetailActionPolicyRuntimeContractTest.php", + "tests/Architecture/DetailPageFormContractTest.php", + "tests/Architecture/DetailPageTitlebarContractTest.php", + "tests/Architecture/DetailValidationTemplateContractTest.php", + "tests/Architecture/DetailValidationActionContractTest.php", + "tests/Architecture/DetailValidationAssetContractTest.php", + "tests/Architecture/DetailActionPolicyPartialContractTest.php", + "tests/Architecture/DetailActionPolicyMigrationContractTest.php" ] }, { @@ -82,7 +97,11 @@ "enforcement_mode": "automated", "evidence_source": [ "tests/Architecture/AuthLoginTemplateAccessibilityContractTest.php", - "tests/Architecture/AuthLoginFieldAccessibilityContractTest.php" + "tests/Architecture/AuthLoginFieldAccessibilityContractTest.php", + "tests/Architecture/AuthLoginTenantSelectionContractTest.php", + "tests/Architecture/AuthLoginPasswordToggleContractTest.php", + "tests/Architecture/AuthHelpLinksPartialContractTest.php", + "tests/Architecture/AuthHelpLinksPageContractTest.php" ] }, { @@ -98,6 +117,13 @@ "enforcement_mode": "hybrid", "evidence_source": [ "tests/Architecture/CoreStarterkitContractTest.php", + "tests/Architecture/FrontendRuntimeEntrypointContractTest.php", + "tests/Architecture/FrontendRuntimeHostContractTest.php", + "tests/Architecture/FrontendRuntimeComponentContractTest.php", + "tests/Architecture/AssetVersioningContractTest.php", + "tests/Architecture/TypographyTokenContractTest.php", + "tests/Architecture/AsideNavigationRuntimeContractTest.php", + "tests/Architecture/AsideNavigationAdminContractTest.php", ".agents/runs//review-code.json" ] }, @@ -113,7 +139,9 @@ "enforcement_mode": "automated", "evidence_source": [ "tests/Architecture/SecurityLoggingRedactionContractTest.php", - "tests/Architecture/SecurityLoggingTelemetryContractTest.php" + "tests/Architecture/SecurityLoggingTelemetryContractTest.php", + "tests/Architecture/SecurityLoggingRuntimeContractTest.php", + "tests/Architecture/FrontendTelemetryContractTest.php" ] }, { @@ -158,6 +186,14 @@ "evidence_source": [ "tests/Architecture/AuthzAdminUsersContractTest.php", "tests/Architecture/AuthzApiBootstrapContractTest.php", + "tests/Architecture/AuthzAdminTenantsContractTest.php", + "tests/Architecture/AuthzAdminMasterDataContractTest.php", + "tests/Architecture/AuthzAdminSettingsContractTest.php", + "tests/Architecture/AuthzUiActionContractTest.php", + "tests/Architecture/AuthzUiLayoutContractTest.php", + "tests/Architecture/AuthzUiTemplateContractTest.php", + "tests/Architecture/PublicPageAdminContractTest.php", + "tests/Architecture/PublicPageRoutingContractTest.php", ".agents/runs//review-security.json" ] }, @@ -175,6 +211,56 @@ "evidence_source": [ "tests/Architecture/ViewLayerOutputEscapingContractTest.php" ] + }, + { + "guard_id": "GR-CORE-LAYERS", + "enforcement_mode": "automated", + "evidence_source": [ + "tests/Architecture/ViewLayerNoDbCallsContractTest.php", + "tests/Architecture/ServiceLayerNoHtmlContractTest.php", + "tests/Architecture/RepositoryLayerIsolationContractTest.php" + ] + }, + { + "guard_id": "GR-CORE-MODULE", + "enforcement_mode": "automated", + "evidence_source": [ + "tests/Architecture/ModuleBoundaryContractTest.php", + "tests/Architecture/ModuleManifestContractTest.php", + "tests/Architecture/ModuleManifestSchemaValidationContractTest.php", + "tests/Architecture/ModuleProviderContractTest.php", + "tests/Architecture/ModuleRegistryBootstrapContractTest.php", + "tests/Architecture/ModuleRegistryFailFastContractTest.php", + "tests/Architecture/ModuleSessionKeyPrefixContractTest.php", + "tests/Architecture/ModuleUiContractTest.php", + "tests/Architecture/AddressBookModuleIsolationContractTest.php", + "tests/Architecture/BookmarksModuleIsolationContractTest.php", + "tests/Architecture/AuditModuleIsolationContractTest.php" + ] + }, + { + "guard_id": "GR-CORE-META", + "enforcement_mode": "automated", + "evidence_source": [ + "tests/Architecture/AgentSystemEnforcementContractTest.php", + "tests/Architecture/AgentSystemCatalogContractTest.php", + "tests/Architecture/AgentSystemReferenceContractTest.php", + "tests/Architecture/AgentSystemFileContractTest.php", + "tests/Architecture/CodexSkillReferenceContractTest.php", + "tests/Architecture/CodexDocsIntegrityContractTest.php", + "tests/Architecture/CodexAutomationContractTest.php" + ] + }, + { + "guard_id": "GR-UI-TAXONOMY", + "enforcement_mode": "automated", + "evidence_source": [ + "tests/Architecture/StatusTaxonomyEnumContractTest.php", + "tests/Architecture/StatusTaxonomyFilterSchemaContractTest.php", + "tests/Architecture/StatusTaxonomyDataContractTest.php", + "tests/Architecture/StatusTaxonomyLiteralGuardContractTest.php", + "tests/Architecture/StatusTaxonomyUiContractTest.php" + ] } ] }