chore(guards): map all 85 architecture tests to guards, add 4 new guards
Add GR-CORE-LAYERS (layer isolation), GR-CORE-MODULE (module boundaries), GR-CORE-META (agent/codex system integrity), GR-UI-TAXONOMY (status taxonomy consistency). Extend existing guards GR-SEC-008, GR-UI-DETAIL, GR-UI-LIST, GR-UI-A11Y, GR-UI-REUSE, GR-TEST-002, GR-SEC-002 with their previously unmapped architecture tests. Coverage goes from 23/85 mapped tests (27%) to 85/85 (100%). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -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.<id>.*, 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."
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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/<TASK>/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/<TASK>/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/<TASK>/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"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user