`corepack pnpm dev` did not boot. Plain `vite` serves `public/release-manifest.json` verbatim, and that hand-maintained fixture still declared `"packages": []` after the first real contract contribution was registered. `verifyContractSet` runs unconditionally at boot — before any adapter is chosen, so in the default `MOCK` mode as much as in `HTTP` — saw the build had compiled `@tech-log/studio-contract` and failed closed with `CONTRACT_SET_PACKAGE_MISSING`. Production builds were never affected: `scripts/generate-build-manifest.ts` derives `dist/release-manifest.json`'s block from the same composed set. Editing the fixture by hand is not the fix — it had already gone stale twice, once when the package first appeared and once when the contract moved 2.0.0 -> 3.0.0, because every regeneration changes the package digest. So `generate:tech-log-contract` now refreshes the block itself, as its last step and through a dynamic import so it reads the canonical source it just wrote. `generate:dev-release-manifest` does the same refresh on its own. The composed set can also change without the contract being regenerated — a contribution added to or removed from `installed-contract-contributions.ts` moves it. Tying the refresh to contract generation is therefore necessary but not sufficient; the CI gate that follows is what closes that half. 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:e0da77655f51592ece583826d5fc6b092f57dd2bf63307e45e7e77283e6bf437",
|
|
"packages": [
|
|
{
|
|
"packageId": "@tech-log/studio-contract",
|
|
"version": "2.0.0",
|
|
"digest": "sha256:99f54f56ea0c582eafdbdf9be5653e3384bef0a1b08bff67f3147ee0292019ea",
|
|
"runtimeProtocolVersion": 1,
|
|
"sourceRevision": "ce2e748"
|
|
}
|
|
]
|
|
}
|
|
}
|