Implement phased modernization infrastructure for transitioning from multi-page legacy routing to SPA portal-shell architecture, plus post-delivery hardening fixes for policy loading, fallback consistency, and governance drift detection. Key changes: - Add route contract enrichment with scope/visibility/compatibility policies - Canonical 302 redirects from legacy direct-entry to /portal-shell/ routes - Asset readiness enforcement and runtime fallback retirement for in-scope routes - Shared feature-flag helpers (env > config > default) replacing duplicated _to_bool - Defensive copy for lru_cached policy payloads preventing mutation corruption - Unified retired-fallback response helper across app and blueprint routes - Frontend/backend route-contract cross-validation in governance gates - Shell CSS token fallback values for routes rendered outside shell scope - Local-safe .env.example defaults with production recommendation comments - Legacy contract fallback warning logging and single-hop redirect optimization Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
114 lines
3.2 KiB
JSON
114 lines
3.2 KiB
JSON
{
|
|
"change": "full-modernization-architecture-blueprint",
|
|
"generated_at": "2026-02-12T00:00:00Z",
|
|
"phase": "phase-1-shell-and-content-modernization",
|
|
"policy": {
|
|
"scope_is_frozen": true,
|
|
"out_of_scope_tasks_must_be_rejected": true
|
|
},
|
|
"in_scope": [
|
|
{
|
|
"route": "/wip-overview",
|
|
"category": "report",
|
|
"canonical_shell_path": "/portal-shell/wip-overview",
|
|
"owner": "frontend-mes-reporting",
|
|
"visibility_policy": "released_or_admin"
|
|
},
|
|
{
|
|
"route": "/wip-detail",
|
|
"category": "report",
|
|
"canonical_shell_path": "/portal-shell/wip-detail",
|
|
"owner": "frontend-mes-reporting",
|
|
"visibility_policy": "released_or_admin"
|
|
},
|
|
{
|
|
"route": "/hold-overview",
|
|
"category": "report",
|
|
"canonical_shell_path": "/portal-shell/hold-overview",
|
|
"owner": "frontend-mes-reporting",
|
|
"visibility_policy": "released_or_admin"
|
|
},
|
|
{
|
|
"route": "/hold-detail",
|
|
"category": "report",
|
|
"canonical_shell_path": "/portal-shell/hold-detail",
|
|
"owner": "frontend-mes-reporting",
|
|
"visibility_policy": "released_or_admin"
|
|
},
|
|
{
|
|
"route": "/hold-history",
|
|
"category": "report",
|
|
"canonical_shell_path": "/portal-shell/hold-history",
|
|
"owner": "frontend-mes-reporting",
|
|
"visibility_policy": "released_or_admin"
|
|
},
|
|
{
|
|
"route": "/resource",
|
|
"category": "report",
|
|
"canonical_shell_path": "/portal-shell/resource",
|
|
"owner": "frontend-mes-reporting",
|
|
"visibility_policy": "released_or_admin"
|
|
},
|
|
{
|
|
"route": "/resource-history",
|
|
"category": "report",
|
|
"canonical_shell_path": "/portal-shell/resource-history",
|
|
"owner": "frontend-mes-reporting",
|
|
"visibility_policy": "released_or_admin"
|
|
},
|
|
{
|
|
"route": "/qc-gate",
|
|
"category": "report",
|
|
"canonical_shell_path": "/portal-shell/qc-gate",
|
|
"owner": "frontend-mes-reporting",
|
|
"visibility_policy": "released_or_admin"
|
|
},
|
|
{
|
|
"route": "/job-query",
|
|
"category": "report",
|
|
"canonical_shell_path": "/portal-shell/job-query",
|
|
"owner": "frontend-mes-reporting",
|
|
"visibility_policy": "released_or_admin"
|
|
},
|
|
{
|
|
"route": "/tmtt-defect",
|
|
"category": "report",
|
|
"canonical_shell_path": "/portal-shell/tmtt-defect",
|
|
"owner": "frontend-mes-reporting",
|
|
"visibility_policy": "released_or_admin"
|
|
},
|
|
{
|
|
"route": "/admin/pages",
|
|
"category": "admin",
|
|
"canonical_shell_path": "/portal-shell/admin/pages",
|
|
"owner": "frontend-platform-admin",
|
|
"visibility_policy": "admin_only"
|
|
},
|
|
{
|
|
"route": "/admin/performance",
|
|
"category": "admin",
|
|
"canonical_shell_path": "/portal-shell/admin/performance",
|
|
"owner": "frontend-platform-admin",
|
|
"visibility_policy": "admin_only"
|
|
}
|
|
],
|
|
"deferred": [
|
|
{
|
|
"route": "/tables",
|
|
"reason": "deferred-to-follow-up-change"
|
|
},
|
|
{
|
|
"route": "/excel-query",
|
|
"reason": "deferred-to-follow-up-change"
|
|
},
|
|
{
|
|
"route": "/query-tool",
|
|
"reason": "deferred-to-follow-up-change"
|
|
},
|
|
{
|
|
"route": "/mid-section-defect",
|
|
"reason": "deferred-to-follow-up-change"
|
|
}
|
|
]
|
|
}
|