Three defects found while running the release checklist against a live
backend, all on main.
1. Every TechLog route registered `access: "public"`, including the whole
Studio surface. `decideRouteAccessForDefinition` was therefore a no-op
for Studio: a signed-out visitor who typed /studio, /studio/documents,
or /studio/assets got the Studio shell rendered, and the page went on
to issue Studio API calls. Access is now derived from the spec's own
`layoutGroup`, so a newly added Studio route is gated by construction
rather than by remembering to restate it.
Verified against a production-profile build: /studio* now renders the
sign-in surface, / and /explore are unchanged, and after signing in
the router returns to the originally requested Studio screen.
2. `public/release-manifest.json` still declared the contract set at
2.0.0 while the vendored contract had moved to 3.0.0 (eb86708). Boot
verification fails closed on that mismatch, so `pnpm dev` served a
blank screen. Regenerated from the same producer `dist/` uses.
3. `release-manifest.test.ts` asserted the same stale 2.0.0. The literal
is deliberately independent of `EXPECTED_CONTRACT_SET_PACKAGES` (see
the comment above it), so it is updated in place, not derived.
Also drops a dead `= null` initializer that failed `no-useless-assignment`.
check:types, lint, check:architecture, check:tech-log-contract and
check:dev-release-manifest all pass. test:all is 1818 passed with one
pre-existing load-dependent flake (provider-guardian-transaction, passes
in isolation, untouched by this change).
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
53 lines
3.6 KiB
JSON
53 lines
3.6 KiB
JSON
{
|
|
"schemaVersion": 2,
|
|
"appVersion": "0.1.0",
|
|
"buildId": "local-build",
|
|
"commitSha": "local",
|
|
"configSchemaVersion": "2.0",
|
|
"assetManifestHash": "generated-during-build",
|
|
"releaseId": "local-release",
|
|
"builtAt": "1970-01-01T00:00:00.000Z",
|
|
"routeChunks": {
|
|
"route-tech-log-home": "src/features/tech-log/presentation/public/pages/home-page.tsx",
|
|
"route-tech-log-explore": "src/features/tech-log/presentation/public/pages/explore-page.tsx",
|
|
"route-tech-log-explore-kind": "src/features/tech-log/presentation/public/pages/explore-kind-page.tsx",
|
|
"route-tech-log-case": "src/features/tech-log/presentation/public/pages/case-page.tsx",
|
|
"route-tech-log-reference": "src/features/tech-log/presentation/public/pages/reference-page.tsx",
|
|
"route-tech-log-question": "src/features/tech-log/presentation/public/pages/question-page.tsx",
|
|
"route-tech-log-topic": "src/features/tech-log/presentation/public/pages/topic-page.tsx",
|
|
"route-tech-log-projects": "src/features/tech-log/presentation/public/pages/projects-page.tsx",
|
|
"route-tech-log-project": "src/features/tech-log/presentation/public/pages/project-overview-page.tsx",
|
|
"route-tech-log-project-records": "src/features/tech-log/presentation/public/pages/project-records-page.tsx",
|
|
"route-tech-log-project-decisions": "src/features/tech-log/presentation/public/pages/project-decisions-page.tsx",
|
|
"route-tech-log-project-activity": "src/features/tech-log/presentation/public/pages/project-activity-page.tsx",
|
|
"route-tech-log-releases": "src/features/tech-log/presentation/public/pages/releases-page.tsx",
|
|
"route-tech-log-release": "src/features/tech-log/presentation/public/pages/release-page.tsx",
|
|
"route-tech-log-profile": "src/features/tech-log/presentation/public/pages/profile-page.tsx",
|
|
"route-tech-log-search": "src/features/tech-log/presentation/public/pages/search-page.tsx",
|
|
"route-tech-log-studio-home": "src/features/tech-log/presentation/studio/pages/studio-home-page.tsx",
|
|
"route-tech-log-studio-documents": "src/features/tech-log/presentation/studio/pages/documents-page.tsx",
|
|
"route-tech-log-studio-document-new": "src/features/tech-log/presentation/studio/pages/new-document-page.tsx",
|
|
"route-tech-log-studio-document-edit": "src/features/tech-log/presentation/studio/pages/document-edit-page.tsx",
|
|
"route-tech-log-studio-document-validation": "src/features/tech-log/presentation/studio/pages/document-validation-page.tsx",
|
|
"route-tech-log-studio-document-preview": "src/features/tech-log/presentation/studio/pages/document-preview-page.tsx",
|
|
"route-tech-log-studio-document-publish": "src/features/tech-log/presentation/studio/pages/document-publish-page.tsx",
|
|
"route-tech-log-studio-publications": "src/features/tech-log/presentation/studio/pages/publications-page.tsx",
|
|
"route-tech-log-studio-publication-preview": "src/features/tech-log/presentation/studio/pages/publication-preview-page.tsx",
|
|
"route-tech-log-studio-not-found": "src/features/tech-log/presentation/studio/pages/studio-not-found-page.tsx",
|
|
"route-not-found": "src/features/tech-log/presentation/public/pages/public-not-found-page.tsx"
|
|
},
|
|
"contractSet": {
|
|
"setAlgorithm": "CA_CONTRACT_SET_V1",
|
|
"setDigest": "sha256:261ac63030fcbcef8bd0b7087d29120996a9f580f455739dad245141860c1fe5",
|
|
"packages": [
|
|
{
|
|
"packageId": "@tech-log/studio-contract",
|
|
"version": "3.0.0",
|
|
"digest": "sha256:6cae9924403d0761f401643a022980b8e04183eea0d890c143c9fbbbbc7431e4",
|
|
"runtimeProtocolVersion": 1,
|
|
"sourceRevision": "b20d7a2"
|
|
}
|
|
]
|
|
}
|
|
}
|