diff --git a/.codex-screenshots/compact-home-forms-desktop.png b/.codex-screenshots/compact-home-forms-desktop.png
new file mode 100644
index 000000000..0b0142b04
Binary files /dev/null and b/.codex-screenshots/compact-home-forms-desktop.png differ
diff --git a/.codex-screenshots/compact-home-forms-mobile.png b/.codex-screenshots/compact-home-forms-mobile.png
new file mode 100644
index 000000000..fa6caf34a
Binary files /dev/null and b/.codex-screenshots/compact-home-forms-mobile.png differ
diff --git a/.codex-screenshots/compact-home-services-desktop.png b/.codex-screenshots/compact-home-services-desktop.png
new file mode 100644
index 000000000..2af1a67b1
Binary files /dev/null and b/.codex-screenshots/compact-home-services-desktop.png differ
diff --git a/.codex-screenshots/compact-home-services-mobile.png b/.codex-screenshots/compact-home-services-mobile.png
new file mode 100644
index 000000000..b994c939d
Binary files /dev/null and b/.codex-screenshots/compact-home-services-mobile.png differ
diff --git a/.codex-screenshots/crisp-white-colour-system-desktop.png b/.codex-screenshots/crisp-white-colour-system-desktop.png
new file mode 100644
index 000000000..5c256d8b1
Binary files /dev/null and b/.codex-screenshots/crisp-white-colour-system-desktop.png differ
diff --git a/.codex-screenshots/crisp-white-colour-system-mobile.png b/.codex-screenshots/crisp-white-colour-system-mobile.png
new file mode 100644
index 000000000..d4d3e0aee
Binary files /dev/null and b/.codex-screenshots/crisp-white-colour-system-mobile.png differ
diff --git a/.codex-screenshots/crisp-white-colour-system-static.html b/.codex-screenshots/crisp-white-colour-system-static.html
new file mode 100644
index 000000000..c8861551b
--- /dev/null
+++ b/.codex-screenshots/crisp-white-colour-system-static.html
@@ -0,0 +1,899 @@
+
Clinical White Mockup
Clean colour-system mockups
Clinical White: crisp white canvas, graphite command, precise teal signals.
This direction removes the cream background entirely. The UI becomes a true white workspace with cool nickel borders, low graphite elevation, and a clinical focus rail so teal communicates evidence instead of tinting the whole product.
White firstCanvas and answer surfaces stay pure white for a cleaner premium read.
Graphite commandsPrimary actions use graphite so teal can keep clinical meaning.
Nickel hierarchyDepth comes from borders, shadow discipline, and rail separation.
Teal railSelected and evidence states use a precise 2px clinical focus rail.
Canvas#FFFFFF
Rail#F7F8FA
Graphite#111827
Ink#101418
Teal#0B7A75
Amber#A15C07
Red#B42318
Line#E5E7EB
Desktop mockup
Crisp white workspace
Recommended
Clinical White
How can I help?
Ask a clinical question, search documents, or start from a verified source.
Evidence-backed answer3 verified sources
The answer area stays white and readable. The teal focus rail marks clinical confidence without tinting the whole interface.
GuidelineLocal PDFReview due
Mobile mockup
White canvas, compact controls
390px check
How can I help?
Ask or search verified sources.
Ask a questionClean white card with a teal focus rail.
Search documentsCool grey field, no cream wash.
Sources ready
White answer surface. Teal appears only where the user needs evidence state.
Dark pairing check
Obsidian stays polished
No white glare
Evidence-backed answer
Dark mode keeps black glass surfaces and uses the same teal signal language.
\ No newline at end of file
diff --git a/.codex-screenshots/crisp-white-dev.err.log b/.codex-screenshots/crisp-white-dev.err.log
new file mode 100644
index 000000000..e69de29bb
diff --git a/.codex-screenshots/crisp-white-dev.out.log b/.codex-screenshots/crisp-white-dev.out.log
new file mode 100644
index 000000000..dd3ddb62c
--- /dev/null
+++ b/.codex-screenshots/crisp-white-dev.out.log
@@ -0,0 +1,6 @@
+Starting Clinical KB at http://localhost:4308 (configured port).
+▲ Next.js 16.2.9 (Turbopack)
+- Local: http://localhost:4308
+- Network: http://0.0.0.0:4308
+- Environments: .env.local
+✓ Ready in 13.8s
diff --git a/.codex-screenshots/dark-sanity-desktop.png b/.codex-screenshots/dark-sanity-desktop.png
new file mode 100644
index 000000000..5e0f78104
Binary files /dev/null and b/.codex-screenshots/dark-sanity-desktop.png differ
diff --git a/.codex-screenshots/debug-map-click.png b/.codex-screenshots/debug-map-click.png
new file mode 100644
index 000000000..7725ab8cb
Binary files /dev/null and b/.codex-screenshots/debug-map-click.png differ
diff --git a/.codex-screenshots/design-review-dark-desktop.png b/.codex-screenshots/design-review-dark-desktop.png
new file mode 100644
index 000000000..bc2dab0a0
Binary files /dev/null and b/.codex-screenshots/design-review-dark-desktop.png differ
diff --git a/.codex-screenshots/design-review-dark-mobile-sidebar.png b/.codex-screenshots/design-review-dark-mobile-sidebar.png
new file mode 100644
index 000000000..3b45ee6bd
Binary files /dev/null and b/.codex-screenshots/design-review-dark-mobile-sidebar.png differ
diff --git a/.codex-screenshots/design-review-dark-mobile.png b/.codex-screenshots/design-review-dark-mobile.png
new file mode 100644
index 000000000..d2656f19a
Binary files /dev/null and b/.codex-screenshots/design-review-dark-mobile.png differ
diff --git a/.codex-screenshots/diagnosis-map-desktop.png b/.codex-screenshots/diagnosis-map-desktop.png
new file mode 100644
index 000000000..787faf3bc
Binary files /dev/null and b/.codex-screenshots/diagnosis-map-desktop.png differ
diff --git a/.codex-screenshots/diagnosis-map-mobile.png b/.codex-screenshots/diagnosis-map-mobile.png
new file mode 100644
index 000000000..bd86e4c1d
Binary files /dev/null and b/.codex-screenshots/diagnosis-map-mobile.png differ
diff --git a/.codex-screenshots/differential-debug.png b/.codex-screenshots/differential-debug.png
new file mode 100644
index 000000000..e504010b3
Binary files /dev/null and b/.codex-screenshots/differential-debug.png differ
diff --git a/.codex-screenshots/differential-original-after-open-click-mobile.png b/.codex-screenshots/differential-original-after-open-click-mobile.png
new file mode 100644
index 000000000..334bc7fd0
Binary files /dev/null and b/.codex-screenshots/differential-original-after-open-click-mobile.png differ
diff --git a/.codex-screenshots/differential-original-structured-desktop.png b/.codex-screenshots/differential-original-structured-desktop.png
new file mode 100644
index 000000000..e504010b3
Binary files /dev/null and b/.codex-screenshots/differential-original-structured-desktop.png differ
diff --git a/.codex-screenshots/differential-original-structured-mobile.png b/.codex-screenshots/differential-original-structured-mobile.png
new file mode 100644
index 000000000..a7d071265
Binary files /dev/null and b/.codex-screenshots/differential-original-structured-mobile.png differ
diff --git a/.codex-screenshots/differential-structured-desktop.png b/.codex-screenshots/differential-structured-desktop.png
new file mode 100644
index 000000000..e504010b3
Binary files /dev/null and b/.codex-screenshots/differential-structured-desktop.png differ
diff --git a/.codex-screenshots/differential-structured-mobile.png b/.codex-screenshots/differential-structured-mobile.png
new file mode 100644
index 000000000..e659e5db0
Binary files /dev/null and b/.codex-screenshots/differential-structured-mobile.png differ
diff --git a/.codex-screenshots/differentials-home-desktop-final.png b/.codex-screenshots/differentials-home-desktop-final.png
new file mode 100644
index 000000000..ea64b8332
Binary files /dev/null and b/.codex-screenshots/differentials-home-desktop-final.png differ
diff --git a/.codex-screenshots/differentials-home-desktop.png b/.codex-screenshots/differentials-home-desktop.png
new file mode 100644
index 000000000..76611f0e0
Binary files /dev/null and b/.codex-screenshots/differentials-home-desktop.png differ
diff --git a/.codex-screenshots/differentials-home-mobile-final.png b/.codex-screenshots/differentials-home-mobile-final.png
new file mode 100644
index 000000000..f59d71221
Binary files /dev/null and b/.codex-screenshots/differentials-home-mobile-final.png differ
diff --git a/.codex-screenshots/differentials-presentation-desktop-iteration.png b/.codex-screenshots/differentials-presentation-desktop-iteration.png
new file mode 100644
index 000000000..e8f191946
Binary files /dev/null and b/.codex-screenshots/differentials-presentation-desktop-iteration.png differ
diff --git a/.codex-screenshots/differentials-presentation-desktop-viewport.png b/.codex-screenshots/differentials-presentation-desktop-viewport.png
new file mode 100644
index 000000000..e6f86fb52
Binary files /dev/null and b/.codex-screenshots/differentials-presentation-desktop-viewport.png differ
diff --git a/.codex-screenshots/differentials-presentation-desktop.png b/.codex-screenshots/differentials-presentation-desktop.png
new file mode 100644
index 000000000..1fd069b47
Binary files /dev/null and b/.codex-screenshots/differentials-presentation-desktop.png differ
diff --git a/.codex-screenshots/differentials-presentation-mobile-iteration.png b/.codex-screenshots/differentials-presentation-mobile-iteration.png
new file mode 100644
index 000000000..9f30e40d5
Binary files /dev/null and b/.codex-screenshots/differentials-presentation-mobile-iteration.png differ
diff --git a/.codex-screenshots/differentials-presentation-mobile-viewport.png b/.codex-screenshots/differentials-presentation-mobile-viewport.png
new file mode 100644
index 000000000..70a6f2a4e
Binary files /dev/null and b/.codex-screenshots/differentials-presentation-mobile-viewport.png differ
diff --git a/.codex-screenshots/differentials-presentation-mobile.png b/.codex-screenshots/differentials-presentation-mobile.png
new file mode 100644
index 000000000..5f39ad3ca
Binary files /dev/null and b/.codex-screenshots/differentials-presentation-mobile.png differ
diff --git a/.codex-screenshots/edge-test.png b/.codex-screenshots/edge-test.png
new file mode 100644
index 000000000..1bcd6b33f
Binary files /dev/null and b/.codex-screenshots/edge-test.png differ
diff --git a/.codex-screenshots/final-rag-structure-full.png b/.codex-screenshots/final-rag-structure-full.png
new file mode 100644
index 000000000..7fe5c69ed
Binary files /dev/null and b/.codex-screenshots/final-rag-structure-full.png differ
diff --git a/.codex-screenshots/final-rag-structure-mockup-1-small.png b/.codex-screenshots/final-rag-structure-mockup-1-small.png
new file mode 100644
index 000000000..e8ef7bd04
Binary files /dev/null and b/.codex-screenshots/final-rag-structure-mockup-1-small.png differ
diff --git a/.codex-screenshots/final-rag-structure-mockup-2-small.png b/.codex-screenshots/final-rag-structure-mockup-2-small.png
new file mode 100644
index 000000000..7a95c5d3f
Binary files /dev/null and b/.codex-screenshots/final-rag-structure-mockup-2-small.png differ
diff --git a/.codex-screenshots/final-rag-structure-overview-small.png b/.codex-screenshots/final-rag-structure-overview-small.png
new file mode 100644
index 000000000..6164e3835
Binary files /dev/null and b/.codex-screenshots/final-rag-structure-overview-small.png differ
diff --git a/.codex-screenshots/forms-detail-polish2-desktop.png b/.codex-screenshots/forms-detail-polish2-desktop.png
new file mode 100644
index 000000000..dabdde6f5
Binary files /dev/null and b/.codex-screenshots/forms-detail-polish2-desktop.png differ
diff --git a/.codex-screenshots/forms-detail-polish2-mobile.png b/.codex-screenshots/forms-detail-polish2-mobile.png
new file mode 100644
index 000000000..df4c880bb
Binary files /dev/null and b/.codex-screenshots/forms-detail-polish2-mobile.png differ
diff --git a/.codex-screenshots/forms-detail-polished-desktop.png b/.codex-screenshots/forms-detail-polished-desktop.png
new file mode 100644
index 000000000..496132827
Binary files /dev/null and b/.codex-screenshots/forms-detail-polished-desktop.png differ
diff --git a/.codex-screenshots/forms-detail-polished-mobile.png b/.codex-screenshots/forms-detail-polished-mobile.png
new file mode 100644
index 000000000..9d5bd1247
Binary files /dev/null and b/.codex-screenshots/forms-detail-polished-mobile.png differ
diff --git a/.codex-screenshots/forms-direct-dev.err.log b/.codex-screenshots/forms-direct-dev.err.log
new file mode 100644
index 000000000..e69de29bb
diff --git a/.codex-screenshots/forms-direct-dev.out.log b/.codex-screenshots/forms-direct-dev.out.log
new file mode 100644
index 000000000..8a17295d0
--- /dev/null
+++ b/.codex-screenshots/forms-direct-dev.out.log
@@ -0,0 +1,41 @@
+▲ Next.js 16.2.9 (Turbopack)
+- Local: http://localhost:4298
+- Network: http://0.0.0.0:4298
+- Environments: .env.local
+✓ Ready in 2.6s
+
+ GET /api/local-project-id 200 in 560ms (next.js: 440ms, application-code: 120ms)
+ GET /api/local-project-id 200 in 17ms (next.js: 7ms, application-code: 10ms)
+ GET /api/local-project-id 200 in 87ms (next.js: 76ms, application-code: 10ms)
+ GET /api/local-project-id 200 in 14ms (next.js: 4ms, application-code: 10ms)
+ GET /api/local-project-id 200 in 15ms (next.js: 4ms, application-code: 11ms)
+ GET /api/local-project-id 200 in 17ms (next.js: 6ms, application-code: 11ms)
+ GET /api/local-project-id 200 in 15ms (next.js: 6ms, application-code: 9ms)
+ GET /api/local-project-id 200 in 17ms (next.js: 6ms, application-code: 11ms)
+ GET /api/local-project-id 200 in 26ms (next.js: 16ms, application-code: 10ms)
+ GET /api/local-project-id 200 in 19ms (next.js: 9ms, application-code: 10ms)
+ GET /api/local-project-id 200 in 35ms (next.js: 26ms, application-code: 9ms)
+ GET /api/local-project-id 200 in 11ms (next.js: 3ms, application-code: 8ms)
+○ Compiling / ...
+ GET / 200 in 5.2s (next.js: 3.0s, application-code: 2.2s)
+ GET /?mode=answer 200 in 5.9s (next.js: 3.4s, application-code: 2.5s)
+ GET /api/local-project-id 200 in 123ms (next.js: 79ms, application-code: 44ms)
+ GET /api/local-project-id 200 in 289ms (next.js: 95ms, application-code: 194ms)
+ GET /forms?q=transport&focus=1&run=1 200 in 4.5s (next.js: 2.9s, application-code: 1564ms)
+ GET /api/local-project-id 200 in 31ms (next.js: 22ms, application-code: 9ms)
+ GET /api/local-project-id 200 in 362ms (next.js: 130ms, application-code: 233ms)
+ GET /api/local-project-id 200 in 417ms (next.js: 205ms, application-code: 213ms)
+ GET /forms?q=transport&focus=1&run=1 200 in 1521ms (next.js: 264ms, application-code: 1258ms)
+ GET /api/local-project-id 200 in 445ms (next.js: 102ms, application-code: 343ms)
+ GET /api/local-project-id 200 in 12ms (next.js: 4ms, application-code: 9ms)
+ GET /api/local-project-id 200 in 428ms (next.js: 106ms, application-code: 322ms)
+ GET / 200 in 501ms (next.js: 136ms, application-code: 365ms)
+ GET /api/local-project-id 200 in 22ms (next.js: 13ms, application-code: 9ms)
+ GET /?mode=answer 200 in 442ms (next.js: 7ms, application-code: 435ms)
+ GET /api/local-project-id 200 in 19ms (next.js: 9ms, application-code: 10ms)
+ GET /?mode=documents 200 in 654ms (next.js: 23ms, application-code: 630ms)
+ GET /api/local-project-id 200 in 15ms (next.js: 6ms, application-code: 9ms)
+ GET /api/setup-status 200 in 1783ms (next.js: 1694ms, application-code: 89ms)
+ GET /api/local-project-id 200 in 20ms (next.js: 12ms, application-code: 8ms)
+ GET /services 200 in 1536ms (next.js: 290ms, application-code: 1246ms)
+[?25h
diff --git a/.codex-screenshots/forms-home-desktop-final.png b/.codex-screenshots/forms-home-desktop-final.png
new file mode 100644
index 000000000..cdbe565a6
Binary files /dev/null and b/.codex-screenshots/forms-home-desktop-final.png differ
diff --git a/.codex-screenshots/forms-home-mobile-final.png b/.codex-screenshots/forms-home-mobile-final.png
new file mode 100644
index 000000000..1e651ebbf
Binary files /dev/null and b/.codex-screenshots/forms-home-mobile-final.png differ
diff --git a/.codex-screenshots/forms-home-next.err.log b/.codex-screenshots/forms-home-next.err.log
new file mode 100644
index 000000000..e69de29bb
diff --git a/.codex-screenshots/forms-home-next.out.log b/.codex-screenshots/forms-home-next.out.log
new file mode 100644
index 000000000..6ac2f0cc0
--- /dev/null
+++ b/.codex-screenshots/forms-home-next.out.log
@@ -0,0 +1,6 @@
+▲ Next.js 16.2.9 (Turbopack)
+- Local: http://127.0.0.1:4305
+- Network: http://127.0.0.1:4305
+- Environments: .env.local
+✓ Ready in 15.7s
+[?25h
diff --git a/.codex-screenshots/forms-home-next.pid b/.codex-screenshots/forms-home-next.pid
new file mode 100644
index 000000000..dbabd7f37
--- /dev/null
+++ b/.codex-screenshots/forms-home-next.pid
@@ -0,0 +1 @@
+44356
diff --git a/.codex-screenshots/forms-next-dev.err.log b/.codex-screenshots/forms-next-dev.err.log
new file mode 100644
index 000000000..81a364121
--- /dev/null
+++ b/.codex-screenshots/forms-next-dev.err.log
@@ -0,0 +1,3803 @@
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/forms'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/forms'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/forms'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/forms'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\static\development\_buildManifest.js.tmp.mv1h6x72zkb'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\static\\development\\_buildManifest.js.tmp.mv1h6x72zkb'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/forms'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/forms'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/forms'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/forms'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/forms'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/forms'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/forms'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/forms'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/forms'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/forms'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/forms'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/forms'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/forms'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/forms'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/forms'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/forms'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/forms'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/forms'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/forms'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/forms'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/forms'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/forms'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/forms'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/forms'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/forms'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/forms'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/forms'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/forms'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/forms'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/forms'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/forms'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/forms'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/forms'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/forms'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/forms'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/forms'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/forms'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/forms'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/forms'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/forms'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/forms'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/forms'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+Persisting failed: Unable to write SST file 00000009.sst
+
+Caused by:
+ The system cannot find the path specified. (os error 3)
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/forms'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json',
+ page: '/forms'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Persisting failed: Another write batch or compaction is already active (Only a single write operations is allowed at a time)
+Persisting failed: Another write batch or compaction is already active (Only a single write operations is allowed at a time)
+Compaction failed: Another write batch or compaction is already active (Only a single write operations is allowed at a time)
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
+Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\server\app\api\local-project-id\[__metadata_id__]\route\app-paths-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\server\\app\\api\\local-project-id\\[__metadata_id__]\\route\\app-paths-manifest.json'
+}
+⨯ Error: ENOENT: no such file or directory, open 'C:\Dev\Apps\Database\.next\dev\routes-manifest.json'
+ at ignore-listed frames {
+ errno: -4058,
+ code: 'ENOENT',
+ syscall: 'open',
+ path: 'C:\\Dev\\Apps\\Database\\.next\\dev\\routes-manifest.json'
+}
diff --git a/.codex-screenshots/forms-next-dev.out.log b/.codex-screenshots/forms-next-dev.out.log
new file mode 100644
index 000000000..6ba33b034
--- /dev/null
+++ b/.codex-screenshots/forms-next-dev.out.log
@@ -0,0 +1,195 @@
+▲ Next.js 16.2.9 (Turbopack)
+- Local: http://127.0.0.1:4298
+- Network: http://127.0.0.1:4298
+- Environments: .env.local
+✓ Ready in 3.8s
+
+ GET /api/local-project-id 200 in 3.4s (next.js: 3.3s, application-code: 106ms)
+ GET /api/local-project-id 200 in 3.4s (next.js: 3.4s, application-code: 13ms)
+○ Compiling /api/local-project-id ...
+ GET /api/local-project-id 200 in 284ms (next.js: 12ms, application-code: 272ms)
+ GET /api/local-project-id 200 in 19ms (next.js: 8ms, application-code: 12ms)
+ GET /api/local-project-id 200 in 18ms (next.js: 7ms, application-code: 11ms)
+ GET /api/local-project-id 200 in 20ms (next.js: 8ms, application-code: 12ms)
+ GET /api/local-project-id 200 in 16ms (next.js: 4ms, application-code: 12ms)
+ GET /api/local-project-id 200 in 15ms (next.js: 4ms, application-code: 11ms)
+ GET /api/local-project-id 200 in 21ms (next.js: 11ms, application-code: 10ms)
+ GET /api/local-project-id 200 in 25ms (next.js: 9ms, application-code: 16ms)
+ GET /api/local-project-id 200 in 15ms (next.js: 5ms, application-code: 10ms)
+ GET /api/local-project-id 200 in 17ms (next.js: 8ms, application-code: 9ms)
+ GET /api/local-project-id 200 in 16ms (next.js: 6ms, application-code: 10ms)
+ GET /api/local-project-id 200 in 35ms (next.js: 10ms, application-code: 25ms)
+ GET /api/local-project-id 200 in 688ms (next.js: 527ms, application-code: 161ms)
+ GET /api/local-project-id 200 in 16ms (next.js: 6ms, application-code: 9ms)
+ GET /api/local-project-id 200 in 13ms (next.js: 4ms, application-code: 10ms)
+ GET /api/local-project-id 200 in 13ms (next.js: 4ms, application-code: 9ms)
+ GET /api/local-project-id 200 in 16ms (next.js: 6ms, application-code: 10ms)
+ GET /api/local-project-id 200 in 16ms (next.js: 7ms, application-code: 10ms)
+ GET / 500 in 12.1s (next.js: 7.5s, application-code: 4.6s)
+ GET / 500 in 12.2s (next.js: 6.8s, application-code: 5.4s)
+ GET /forms?q=transport%20forms&focus=1&run=1 500 in 1885ms (next.js: 1062ms, application-code: 823ms)
+ GET /api/local-project-id 500 in 16.8s (next.js: 16.6s, application-code: 181ms)
+ GET /api/local-project-id 500 in 16.8s (next.js: 16.6s, application-code: 182ms)
+ GET /forms?q=transport%20forms&focus=1&run=1 500 in 1836ms (next.js: 243ms, application-code: 1594ms)
+ GET / 500 in 6.9s (next.js: 6.9s, application-code: 53ms)
+ GET / 500 in 6.9s (next.js: 6.9s, application-code: 53ms)
+ GET /api/local-project-id 500 in 2.1s (next.js: 1179ms, application-code: 969ms)
+ GET /api/local-project-id 500 in 2.1s (next.js: 1042ms, application-code: 1107ms)
+ GET /api/local-project-id 500 in 4.0s (next.js: 3.1s, application-code: 858ms)
+ GET /api/local-project-id 500 in 4.0s (next.js: 3.1s, application-code: 858ms)
+ GET /api/local-project-id 500 in 6.2s (next.js: 6.2s, application-code: 35ms)
+ GET /api/local-project-id 500 in 6.2s (next.js: 6.2s, application-code: 36ms)
+ GET /forms?q=transport%20forms&focus=1&run=1 500 in 1343ms (next.js: 99ms, application-code: 1245ms)
+ GET /api/local-project-id 500 in 2.9s (next.js: 2.1s, application-code: 833ms)
+ GET /api/local-project-id 500 in 2.9s (next.js: 2.1s, application-code: 834ms)
+ GET /api/local-project-id 500 in 2.9s (next.js: 2.8s, application-code: 149ms)
+ GET /api/local-project-id 500 in 2.9s (next.js: 2.8s, application-code: 149ms)
+ GET /api/local-project-id 500 in 4.5s (next.js: 3.2s, application-code: 1270ms)
+ GET /api/local-project-id 500 in 4.5s (next.js: 3.2s, application-code: 1271ms)
+ GET /forms?q=transport%20forms&focus=1&run=1 500 in 2.8s (next.js: 2.2s, application-code: 558ms)
+ GET /forms?q=transport%20forms&focus=1&run=1 500 in 2.8s (next.js: 2.2s, application-code: 558ms)
+ GET /api/local-project-id 500 in 3.9s (next.js: 3.8s, application-code: 54ms)
+ GET /api/local-project-id 500 in 3.9s (next.js: 3.8s, application-code: 54ms)
+ GET /api/local-project-id 500 in 3.9s (next.js: 3.8s, application-code: 28ms)
+ GET /api/local-project-id 500 in 3.9s (next.js: 3.8s, application-code: 28ms)
+ GET /api/local-project-id 500 in 3.5s (next.js: 3.2s, application-code: 244ms)
+ GET /api/local-project-id 500 in 3.5s (next.js: 3.2s, application-code: 245ms)
+ GET /api/local-project-id 500 in 3.5s (next.js: 3.1s, application-code: 355ms)
+ GET /api/local-project-id 500 in 3.5s (next.js: 3.1s, application-code: 356ms)
+ GET /forms?q=transport%20forms&focus=1&run=1 500 in 2.5s (next.js: 1705ms, application-code: 808ms)
+ GET /forms?q=transport%20forms&focus=1&run=1 500 in 2.5s (next.js: 1705ms, application-code: 812ms)
+ GET /api/local-project-id 500 in 3.3s (next.js: 3.3s, application-code: 31ms)
+ GET /api/local-project-id 500 in 3.3s (next.js: 3.3s, application-code: 31ms)
+ GET /api/local-project-id 500 in 2.4s (next.js: 2.4s, application-code: 68ms)
+ GET /api/local-project-id 500 in 2.4s (next.js: 2.4s, application-code: 69ms)
+ GET /api/local-project-id 500 in 2.5s (next.js: 2.4s, application-code: 31ms)
+ GET /api/local-project-id 500 in 2.5s (next.js: 2.4s, application-code: 32ms)
+ GET /forms?q=transport%20forms&focus=1&run=1 500 in 2.6s (next.js: 2.5s, application-code: 100ms)
+ GET /forms?q=transport%20forms&focus=1&run=1 500 in 2.6s (next.js: 2.5s, application-code: 101ms)
+ GET /api/local-project-id 500 in 2.4s (next.js: 2.3s, application-code: 32ms)
+ GET /api/local-project-id 500 in 2.4s (next.js: 2.3s, application-code: 32ms)
+ GET /api/local-project-id 500 in 2.3s (next.js: 2.3s, application-code: 35ms)
+ GET /api/local-project-id 500 in 2.3s (next.js: 2.3s, application-code: 36ms)
+ GET /api/local-project-id 500 in 2.4s (next.js: 2.3s, application-code: 34ms)
+ GET /api/local-project-id 500 in 2.4s (next.js: 2.3s, application-code: 34ms)
+ GET /api/local-project-id 500 in 1304ms (next.js: 1254ms, application-code: 49ms)
+ GET /api/local-project-id 500 in 1305ms (next.js: 1254ms, application-code: 51ms)
+ GET /api/local-project-id 500 in 2.5s (next.js: 2.4s, application-code: 33ms)
+ GET /api/local-project-id 500 in 2.5s (next.js: 2.4s, application-code: 34ms)
+✓ Compiled in 1619ms
+ GET /forms?q=transport%20forms&focus=1&run=1 500 in 3.3s (next.js: 2.2s, application-code: 1168ms)
+ GET /forms?q=transport%20forms&focus=1&run=1 500 in 3.3s (next.js: 2.2s, application-code: 1168ms)
+ GET /api/local-project-id 500 in 3.4s (next.js: 3.0s, application-code: 389ms)
+ GET /api/local-project-id 500 in 3.4s (next.js: 3.0s, application-code: 389ms)
+ GET /api/local-project-id 500 in 2.5s (next.js: 2.5s, application-code: 27ms)
+ GET /api/local-project-id 500 in 2.5s (next.js: 2.5s, application-code: 28ms)
+ GET /api/local-project-id 500 in 2.9s (next.js: 2.6s, application-code: 270ms)
+ GET /api/local-project-id 500 in 2.9s (next.js: 2.6s, application-code: 271ms)
+ GET /forms?q=transport%20forms&focus=1&run=1 500 in 3.0s (next.js: 2.4s, application-code: 534ms)
+ GET /forms?q=transport%20forms&focus=1&run=1 500 in 3.0s (next.js: 2.4s, application-code: 535ms)
+ GET /api/local-project-id 500 in 3.7s (next.js: 3.5s, application-code: 291ms)
+ GET /api/local-project-id 500 in 5.3s (next.js: 2.1s, application-code: 3.2s)
+ GET /api/local-project-id 500 in 5.3s (next.js: 2.1s, application-code: 3.2s)
+ GET /api/local-project-id 500 in 5.3s (next.js: 1920ms, application-code: 3.4s)
+ GET /api/local-project-id 500 in 5.3s (next.js: 1920ms, application-code: 3.4s)
+ GET /forms?q=transport%20forms&focus=1&run=1 500 in 1861ms (next.js: 1332ms, application-code: 529ms)
+ GET /forms?q=transport%20forms&focus=1&run=1 500 in 3.2s (next.js: 2.8s, application-code: 425ms)
+ GET /api/local-project-id 500 in 3.4s (next.js: 2.9s, application-code: 452ms)
+ GET / 500 in 9.4s (next.js: 9.4s, application-code: 26ms)
+ GET / 500 in 9.4s (next.js: 9.4s, application-code: 27ms)
+ GET /api/local-project-id 500 in 4.2s (next.js: 4.2s, application-code: 88ms)
+ GET /api/local-project-id 500 in 4.3s (next.js: 4.2s, application-code: 89ms)
+ GET /api/local-project-id 500 in 8.3s (next.js: 8.2s, application-code: 108ms)
+ GET /api/local-project-id 500 in 8.3s (next.js: 8.2s, application-code: 109ms)
+ GET /forms?q=transport%20forms&focus=1&run=1 500 in 1921ms (next.js: 123ms, application-code: 1799ms)
+ GET /api/local-project-id 500 in 2.6s (next.js: 1584ms, application-code: 1028ms)
+ GET /api/local-project-id 500 in 4.2s (next.js: 3.7s, application-code: 424ms)
+ GET /api/local-project-id 500 in 4.2s (next.js: 3.7s, application-code: 424ms)
+ GET /api/local-project-id 500 in 2.7s (next.js: 2.4s, application-code: 335ms)
+ GET /api/local-project-id 500 in 2.7s (next.js: 2.4s, application-code: 336ms)
+ GET /forms?q=transport%20forms&focus=1&run=1 500 in 2.2s (next.js: 1767ms, application-code: 423ms)
+ GET /forms?q=transport%20forms&focus=1&run=1 500 in 2.2s (next.js: 1767ms, application-code: 423ms)
+ GET /api/local-project-id 500 in 2.4s (next.js: 2.4s, application-code: 27ms)
+ GET /api/local-project-id 500 in 2.4s (next.js: 2.4s, application-code: 28ms)
+ GET /api/local-project-id 500 in 1745ms (next.js: 1678ms, application-code: 67ms)
+ GET /api/local-project-id 500 in 1746ms (next.js: 1678ms, application-code: 67ms)
+ GET /api/local-project-id 500 in 1868ms (next.js: 1829ms, application-code: 39ms)
+ GET /api/local-project-id 500 in 1869ms (next.js: 1829ms, application-code: 40ms)
+ GET /forms?q=transport%20forms&focus=1&run=1 500 in 3.0s (next.js: 2.7s, application-code: 321ms)
+ GET /forms?q=transport%20forms&focus=1&run=1 500 in 3.0s (next.js: 2.7s, application-code: 321ms)
+ GET /api/local-project-id 500 in 3.5s (next.js: 3.3s, application-code: 141ms)
+ GET /api/local-project-id 500 in 3.5s (next.js: 3.3s, application-code: 142ms)
+ GET /api/local-project-id 500 in 3.6s (next.js: 1650ms, application-code: 1989ms)
+ GET /api/local-project-id 500 in 3.6s (next.js: 1650ms, application-code: 1992ms)
+ GET /api/local-project-id 500 in 3.6s (next.js: 1582ms, application-code: 2.1s)
+ GET /api/local-project-id 500 in 3.6s (next.js: 1582ms, application-code: 2.1s)
+ GET /forms?q=transport%20forms&focus=1&run=1 500 in 3.4s (next.js: 2.4s, application-code: 1059ms)
+ GET /api/local-project-id 500 in 2.5s (next.js: 1225ms, application-code: 1266ms)
+ GET /api/local-project-id 500 in 2.5s (next.js: 1461ms, application-code: 1081ms)
+ GET /forms?q=transport%20forms&focus=1&run=1 500 in 2.3s (next.js: 2.1s, application-code: 170ms)
+ GET / 500 in 5.4s (next.js: 5.4s, application-code: 31ms)
+ GET / 500 in 5.4s (next.js: 5.4s, application-code: 31ms)
+ GET /api/local-project-id 500 in 2.4s (next.js: 1119ms, application-code: 1311ms)
+ GET /api/local-project-id 500 in 5.2s (next.js: 4.3s, application-code: 978ms)
+ GET /api/local-project-id 500 in 5.2s (next.js: 4.3s, application-code: 979ms)
+ GET /api/local-project-id 500 in 1899ms (next.js: 1607ms, application-code: 291ms)
+ GET /api/local-project-id 500 in 3.5s (next.js: 3.5s, application-code: 36ms)
+ GET /api/local-project-id 500 in 3.5s (next.js: 3.5s, application-code: 36ms)
+ GET /forms?q=transport%20forms&focus=1&run=1 500 in 2.4s (next.js: 1634ms, application-code: 798ms)
+ GET /forms?q=transport%20forms&focus=1&run=1 500 in 2.4s (next.js: 1634ms, application-code: 799ms)
+ GET /api/local-project-id 500 in 2.8s (next.js: 2.7s, application-code: 120ms)
+ GET /api/local-project-id 500 in 2.8s (next.js: 2.7s, application-code: 121ms)
+ GET /api/local-project-id 500 in 4.8s (next.js: 4.8s, application-code: 39ms)
+ GET /api/local-project-id 500 in 4.8s (next.js: 4.8s, application-code: 39ms)
+ GET /api/local-project-id 500 in 4.7s (next.js: 2.8s, application-code: 1907ms)
+ GET /api/local-project-id 500 in 4.7s (next.js: 2.8s, application-code: 1907ms)
+ GET /forms?q=transport%20forms&focus=1&run=1 500 in 3.0s (next.js: 2.5s, application-code: 505ms)
+ GET /forms?q=transport%20forms&focus=1&run=1 500 in 3.0s (next.js: 2.5s, application-code: 506ms)
+ GET /api/local-project-id 500 in 1494ms (next.js: 1107ms, application-code: 387ms)
+ GET /api/local-project-id 500 in 1495ms (next.js: 1107ms, application-code: 388ms)
+ GET /api/local-project-id 500 in 2.2s (next.js: 1608ms, application-code: 608ms)
+ GET /api/local-project-id 500 in 2.2s (next.js: 1608ms, application-code: 609ms)
+ GET /api/local-project-id 500 in 1668ms (next.js: 1601ms, application-code: 66ms)
+ GET /api/local-project-id 500 in 1668ms (next.js: 1601ms, application-code: 67ms)
+ GET /forms?q=transport%20forms&focus=1&run=1 500 in 1929ms (next.js: 1885ms, application-code: 44ms)
+ GET /forms?q=transport%20forms&focus=1&run=1 500 in 1930ms (next.js: 1885ms, application-code: 44ms)
+ GET /api/local-project-id 500 in 495ms (next.js: 462ms, application-code: 34ms)
+ GET /api/local-project-id 500 in 498ms (next.js: 462ms, application-code: 36ms)
+ GET /forms?q=transport%20forms&focus=1&run=1 500 in 1687ms (next.js: 1652ms, application-code: 35ms)
+ GET /forms?q=transport%20forms&focus=1&run=1 500 in 1687ms (next.js: 1652ms, application-code: 35ms)
+ GET /api/local-project-id 500 in 1305ms (next.js: 1276ms, application-code: 29ms)
+ GET /api/local-project-id 500 in 1306ms (next.js: 1276ms, application-code: 30ms)
+ GET /api/local-project-id 500 in 428ms (next.js: 393ms, application-code: 35ms)
+ GET /api/local-project-id 500 in 459ms (next.js: 393ms, application-code: 66ms)
+ GET /api/local-project-id 500 in 540ms (next.js: 505ms, application-code: 35ms)
+ GET /api/local-project-id 500 in 540ms (next.js: 505ms, application-code: 35ms)
+ GET /api/local-project-id 500 in 1356ms (next.js: 1323ms, application-code: 33ms)
+ GET /api/local-project-id 500 in 1356ms (next.js: 1323ms, application-code: 33ms)
+ GET /api/local-project-id 500 in 1991ms (next.js: 1913ms, application-code: 78ms)
+ GET /api/local-project-id 500 in 1991ms (next.js: 1913ms, application-code: 79ms)
+ GET /api/local-project-id 500 in 1250ms (next.js: 1181ms, application-code: 70ms)
+ GET /api/local-project-id 500 in 1251ms (next.js: 1181ms, application-code: 70ms)
+ GET /api/local-project-id 500 in 1307ms (next.js: 1199ms, application-code: 109ms)
+ GET /api/local-project-id 500 in 1308ms (next.js: 1199ms, application-code: 109ms)
+ GET /api/local-project-id 500 in 1851ms (next.js: 1797ms, application-code: 54ms)
+ GET /api/local-project-id 500 in 1853ms (next.js: 1797ms, application-code: 56ms)
+ GET /api/local-project-id 500 in 1603ms (next.js: 1491ms, application-code: 112ms)
+ GET /api/local-project-id 500 in 1603ms (next.js: 1491ms, application-code: 112ms)
+ GET /api/local-project-id 500 in 1651ms (next.js: 1616ms, application-code: 34ms)
+ GET /api/local-project-id 500 in 1651ms (next.js: 1616ms, application-code: 35ms)
+ GET /api/local-project-id 500 in 627ms (next.js: 590ms, application-code: 37ms)
+ GET /api/local-project-id 500 in 628ms (next.js: 590ms, application-code: 38ms)
+ GET /api/local-project-id 500 in 1319ms (next.js: 1268ms, application-code: 50ms)
+ GET /api/local-project-id 500 in 1319ms (next.js: 1268ms, application-code: 51ms)
+ GET /forms?q=transport%20forms&focus=1&run=1 500 in 2.1s (next.js: 2.0s, application-code: 30ms)
+ GET /forms?q=transport%20forms&focus=1&run=1 500 in 2.1s (next.js: 2.0s, application-code: 31ms)
+ GET /api/local-project-id 500 in 1622ms (next.js: 1594ms, application-code: 28ms)
+ GET /api/local-project-id 500 in 1622ms (next.js: 1594ms, application-code: 28ms)
+ GET /api/local-project-id 500 in 430ms (next.js: 401ms, application-code: 30ms)
+ GET /api/local-project-id 500 in 431ms (next.js: 401ms, application-code: 30ms)
+ GET /api/local-project-id 500 in 324ms (next.js: 299ms, application-code: 26ms)
+ GET /api/local-project-id 500 in 327ms (next.js: 299ms, application-code: 28ms)
+ GET /api/local-project-id 500 in 997ms (next.js: 970ms, application-code: 27ms)
+ GET /api/local-project-id 500 in 997ms (next.js: 970ms, application-code: 27ms)
+ GET /api/local-project-id 500 in 1118ms (next.js: 1048ms, application-code: 70ms)
+ GET /api/local-project-id 500 in 1118ms (next.js: 1048ms, application-code: 70ms)
diff --git a/.codex-screenshots/forms-next-dev.pid b/.codex-screenshots/forms-next-dev.pid
new file mode 100644
index 000000000..4cb79e387
--- /dev/null
+++ b/.codex-screenshots/forms-next-dev.pid
@@ -0,0 +1 @@
+20016
diff --git a/.codex-screenshots/forms-next-start.err.log b/.codex-screenshots/forms-next-start.err.log
new file mode 100644
index 000000000..623df7dca
--- /dev/null
+++ b/.codex-screenshots/forms-next-start.err.log
@@ -0,0 +1,2 @@
+Error: Could not find a production build in the '.next' directory. Try building your app with 'next build' before starting the production server. https://nextjs.org/docs/messages/production-start-no-build-id
+ at ignore-listed frames
diff --git a/.codex-screenshots/forms-next-start.out.log b/.codex-screenshots/forms-next-start.out.log
new file mode 100644
index 000000000..ad27b507d
--- /dev/null
+++ b/.codex-screenshots/forms-next-start.out.log
@@ -0,0 +1,4 @@
+▲ Next.js 16.2.9
+- Local: http://127.0.0.1:4298
+- Network: http://127.0.0.1:4298
+✓ Ready in 5.8s
diff --git a/.codex-screenshots/forms-next-start.pid b/.codex-screenshots/forms-next-start.pid
new file mode 100644
index 000000000..491e6d8ef
--- /dev/null
+++ b/.codex-screenshots/forms-next-start.pid
@@ -0,0 +1 @@
+21564
diff --git a/.codex-screenshots/forms-owned-dev.err.log b/.codex-screenshots/forms-owned-dev.err.log
new file mode 100644
index 000000000..e69de29bb
diff --git a/.codex-screenshots/forms-owned-dev.out.log b/.codex-screenshots/forms-owned-dev.out.log
new file mode 100644
index 000000000..b1ec36440
--- /dev/null
+++ b/.codex-screenshots/forms-owned-dev.out.log
@@ -0,0 +1,16 @@
+▲ Next.js 16.2.9 (Turbopack)
+- Local: http://127.0.0.1:4335
+- Network: http://127.0.0.1:4335
+- Environments: .env.local
+✓ Ready in 2.7s
+
+ GET /api/local-project-id 200 in 180ms (next.js: 118ms, application-code: 61ms)
+ GET /forms?q=transport%20forms&focus=1&run=1 200 in 5.5s (next.js: 1552ms, application-code: 3.9s)
+ GET /api/local-project-id 200 in 62ms (next.js: 49ms, application-code: 13ms)
+ GET /api/setup-status 200 in 3.5s (next.js: 961ms, application-code: 2.6s)
+✓ Compiled in 1330ms
+ GET /api/ingestion/batches 200 in 3.7s (next.js: 820ms, application-code: 2.8s)
+ GET /api/ingestion/jobs 200 in 4.0s (next.js: 547ms, application-code: 3.4s)
+ GET /forms?q=transport+forms&focus=1&run=1 200 in 2.6s (next.js: 1722ms, application-code: 877ms)
+ GET /forms?q=transport+forms&focus=1&run=1 200 in 487ms (next.js: 92ms, application-code: 395ms)
+[?25h
diff --git a/.codex-screenshots/forms-owned-mobile.err.log b/.codex-screenshots/forms-owned-mobile.err.log
new file mode 100644
index 000000000..e69de29bb
diff --git a/.codex-screenshots/forms-owned-mobile.out.log b/.codex-screenshots/forms-owned-mobile.out.log
new file mode 100644
index 000000000..a674d2a7c
--- /dev/null
+++ b/.codex-screenshots/forms-owned-mobile.out.log
@@ -0,0 +1,16 @@
+▲ Next.js 16.2.9 (Turbopack)
+- Local: http://127.0.0.1:4336
+- Network: http://127.0.0.1:4336
+- Environments: .env.local
+✓ Ready in 3.5s
+
+ GET /api/local-project-id 200 in 520ms (next.js: 168ms, application-code: 352ms)
+ GET /api/local-project-id 200 in 14ms (next.js: 4ms, application-code: 10ms)
+ GET /api/local-project-id 200 in 32ms (next.js: 23ms, application-code: 9ms)
+ GET /forms?q=transport%20forms&focus=1&run=1 200 in 6.2s (next.js: 1052ms, application-code: 5.2s)
+ GET /api/local-project-id 200 in 19ms (next.js: 8ms, application-code: 11ms)
+ GET /api/setup-status 200 in 1744ms (next.js: 754ms, application-code: 991ms)
+ GET /api/ingestion/batches 200 in 2.2s (next.js: 1710ms, application-code: 527ms)
+ GET /api/ingestion/jobs 200 in 2.4s (next.js: 827ms, application-code: 1543ms)
+ GET /api/documents?limit=150 200 in 3.1s (next.js: 314ms, application-code: 2.8s)
+ GET /api/ingestion/quality 200 in 4.0s (next.js: 1970ms, application-code: 2.1s)
diff --git a/.codex-screenshots/forms-polish-owned-dev.err.log b/.codex-screenshots/forms-polish-owned-dev.err.log
new file mode 100644
index 000000000..e69de29bb
diff --git a/.codex-screenshots/forms-polish-owned-dev.out.log b/.codex-screenshots/forms-polish-owned-dev.out.log
new file mode 100644
index 000000000..9aa0648d3
--- /dev/null
+++ b/.codex-screenshots/forms-polish-owned-dev.out.log
@@ -0,0 +1,9 @@
+▲ Next.js 16.2.9 (Turbopack)
+- Local: http://127.0.0.1:4341
+- Network: http://127.0.0.1:4341
+- Environments: .env.local
+✓ Ready in 638ms
+
+ GET /api/local-project-id 200 in 240ms (next.js: 212ms, application-code: 28ms)
+ GET /forms/transport-crisis-form 200 in 2.0s (next.js: 1322ms, generate-params: 715ms, application-code: 681ms)
+ GET /forms/transport-crisis-form 200 in 338ms (next.js: 181ms, generate-params: 12ms, application-code: 158ms)
diff --git a/.codex-screenshots/forms-search-current-desktop.png b/.codex-screenshots/forms-search-current-desktop.png
new file mode 100644
index 000000000..9d88d2ae7
Binary files /dev/null and b/.codex-screenshots/forms-search-current-desktop.png differ
diff --git a/.codex-screenshots/forms-search-current-mobile.png b/.codex-screenshots/forms-search-current-mobile.png
new file mode 100644
index 000000000..0316270ee
Binary files /dev/null and b/.codex-screenshots/forms-search-current-mobile.png differ
diff --git a/.codex-screenshots/forms-search-global-desktop.png b/.codex-screenshots/forms-search-global-desktop.png
new file mode 100644
index 000000000..6aa0c7155
Binary files /dev/null and b/.codex-screenshots/forms-search-global-desktop.png differ
diff --git a/.codex-screenshots/forms-search-global-mobile.png b/.codex-screenshots/forms-search-global-mobile.png
new file mode 100644
index 000000000..d0892f4d4
Binary files /dev/null and b/.codex-screenshots/forms-search-global-mobile.png differ
diff --git a/.codex-screenshots/forms-search-mobile-diagnostic.png b/.codex-screenshots/forms-search-mobile-diagnostic.png
new file mode 100644
index 000000000..1224d5288
Binary files /dev/null and b/.codex-screenshots/forms-search-mobile-diagnostic.png differ
diff --git a/.codex-screenshots/forms-search-pass1-desktop.png b/.codex-screenshots/forms-search-pass1-desktop.png
new file mode 100644
index 000000000..bb37aca7b
Binary files /dev/null and b/.codex-screenshots/forms-search-pass1-desktop.png differ
diff --git a/.codex-screenshots/forms-search-pass1-mobile.png b/.codex-screenshots/forms-search-pass1-mobile.png
new file mode 100644
index 000000000..dd0d0ba65
Binary files /dev/null and b/.codex-screenshots/forms-search-pass1-mobile.png differ
diff --git a/.codex-screenshots/forms-search-pass2-desktop.png b/.codex-screenshots/forms-search-pass2-desktop.png
new file mode 100644
index 000000000..f91691a44
Binary files /dev/null and b/.codex-screenshots/forms-search-pass2-desktop.png differ
diff --git a/.codex-screenshots/forms-search-transport-desktop.png b/.codex-screenshots/forms-search-transport-desktop.png
new file mode 100644
index 000000000..28aea79ab
Binary files /dev/null and b/.codex-screenshots/forms-search-transport-desktop.png differ
diff --git a/.codex-screenshots/forms-search-transport-mobile-viewport.png b/.codex-screenshots/forms-search-transport-mobile-viewport.png
new file mode 100644
index 000000000..3bfd6c32b
Binary files /dev/null and b/.codex-screenshots/forms-search-transport-mobile-viewport.png differ
diff --git a/.codex-screenshots/forms-search-transport-mobile.png b/.codex-screenshots/forms-search-transport-mobile.png
new file mode 100644
index 000000000..687af2f6f
Binary files /dev/null and b/.codex-screenshots/forms-search-transport-mobile.png differ
diff --git a/.codex-screenshots/forms-search-wired-desktop.png b/.codex-screenshots/forms-search-wired-desktop.png
new file mode 100644
index 000000000..f4a376f37
Binary files /dev/null and b/.codex-screenshots/forms-search-wired-desktop.png differ
diff --git a/.codex-screenshots/forms-search-wired-mobile.png b/.codex-screenshots/forms-search-wired-mobile.png
new file mode 100644
index 000000000..b38428c65
Binary files /dev/null and b/.codex-screenshots/forms-search-wired-mobile.png differ
diff --git a/.codex-screenshots/header-sidebar-clean-desktop.png b/.codex-screenshots/header-sidebar-clean-desktop.png
new file mode 100644
index 000000000..a8182757a
Binary files /dev/null and b/.codex-screenshots/header-sidebar-clean-desktop.png differ
diff --git a/.codex-screenshots/header-sidebar-clean-medium.png b/.codex-screenshots/header-sidebar-clean-medium.png
new file mode 100644
index 000000000..885ac86e9
Binary files /dev/null and b/.codex-screenshots/header-sidebar-clean-medium.png differ
diff --git a/.codex-screenshots/header-sidebar-clean-mobile-sidebar.png b/.codex-screenshots/header-sidebar-clean-mobile-sidebar.png
new file mode 100644
index 000000000..78022f803
Binary files /dev/null and b/.codex-screenshots/header-sidebar-clean-mobile-sidebar.png differ
diff --git a/.codex-screenshots/header-sidebar-clean-mobile.png b/.codex-screenshots/header-sidebar-clean-mobile.png
new file mode 100644
index 000000000..28c37de95
Binary files /dev/null and b/.codex-screenshots/header-sidebar-clean-mobile.png differ
diff --git a/.codex-screenshots/header-upgrade-desktop-dropdown.png b/.codex-screenshots/header-upgrade-desktop-dropdown.png
new file mode 100644
index 000000000..fe254ec2e
Binary files /dev/null and b/.codex-screenshots/header-upgrade-desktop-dropdown.png differ
diff --git a/.codex-screenshots/header-upgrade-desktop.png b/.codex-screenshots/header-upgrade-desktop.png
new file mode 100644
index 000000000..acca2ea4c
Binary files /dev/null and b/.codex-screenshots/header-upgrade-desktop.png differ
diff --git a/.codex-screenshots/header-upgrade-mobile.png b/.codex-screenshots/header-upgrade-mobile.png
new file mode 100644
index 000000000..db6656938
Binary files /dev/null and b/.codex-screenshots/header-upgrade-mobile.png differ
diff --git a/.codex-screenshots/light-before-desktop.png b/.codex-screenshots/light-before-desktop.png
new file mode 100644
index 000000000..bd2932f25
Binary files /dev/null and b/.codex-screenshots/light-before-desktop.png differ
diff --git a/.codex-screenshots/light-before-mobile.png b/.codex-screenshots/light-before-mobile.png
new file mode 100644
index 000000000..8e803461b
Binary files /dev/null and b/.codex-screenshots/light-before-mobile.png differ
diff --git a/.codex-screenshots/light-final-desktop.png b/.codex-screenshots/light-final-desktop.png
new file mode 100644
index 000000000..66fb22343
Binary files /dev/null and b/.codex-screenshots/light-final-desktop.png differ
diff --git a/.codex-screenshots/light-final-mobile.png b/.codex-screenshots/light-final-mobile.png
new file mode 100644
index 000000000..a890327bc
Binary files /dev/null and b/.codex-screenshots/light-final-mobile.png differ
diff --git a/.codex-screenshots/light-pass1-desktop.png b/.codex-screenshots/light-pass1-desktop.png
new file mode 100644
index 000000000..6de5e015d
Binary files /dev/null and b/.codex-screenshots/light-pass1-desktop.png differ
diff --git a/.codex-screenshots/light-pass1-mobile.png b/.codex-screenshots/light-pass1-mobile.png
new file mode 100644
index 000000000..fbd54e78c
Binary files /dev/null and b/.codex-screenshots/light-pass1-mobile.png differ
diff --git a/.codex-screenshots/light-pass2-desktop.png b/.codex-screenshots/light-pass2-desktop.png
new file mode 100644
index 000000000..97da89aac
Binary files /dev/null and b/.codex-screenshots/light-pass2-desktop.png differ
diff --git a/.codex-screenshots/light-pass2-mobile.png b/.codex-screenshots/light-pass2-mobile.png
new file mode 100644
index 000000000..60f1726ea
Binary files /dev/null and b/.codex-screenshots/light-pass2-mobile.png differ
diff --git a/.codex-screenshots/premium-colour-system-board.png b/.codex-screenshots/premium-colour-system-board.png
new file mode 100644
index 000000000..2063210b3
Binary files /dev/null and b/.codex-screenshots/premium-colour-system-board.png differ
diff --git a/.codex-screenshots/premium-colour-system-dark.png b/.codex-screenshots/premium-colour-system-dark.png
new file mode 100644
index 000000000..4a9f8b230
Binary files /dev/null and b/.codex-screenshots/premium-colour-system-dark.png differ
diff --git a/.codex-screenshots/premium-colour-system-light.png b/.codex-screenshots/premium-colour-system-light.png
new file mode 100644
index 000000000..6db65fd9c
Binary files /dev/null and b/.codex-screenshots/premium-colour-system-light.png differ
diff --git a/.codex-screenshots/premium-colour-system-mobile.png b/.codex-screenshots/premium-colour-system-mobile.png
new file mode 100644
index 000000000..19143a5f8
Binary files /dev/null and b/.codex-screenshots/premium-colour-system-mobile.png differ
diff --git a/.codex-screenshots/premium-dark-sanity-desktop.png b/.codex-screenshots/premium-dark-sanity-desktop.png
new file mode 100644
index 000000000..59aa54bc9
Binary files /dev/null and b/.codex-screenshots/premium-dark-sanity-desktop.png differ
diff --git a/.codex-screenshots/premium-light-before-desktop.png b/.codex-screenshots/premium-light-before-desktop.png
new file mode 100644
index 000000000..b1f86dc76
Binary files /dev/null and b/.codex-screenshots/premium-light-before-desktop.png differ
diff --git a/.codex-screenshots/premium-light-before-mobile.png b/.codex-screenshots/premium-light-before-mobile.png
new file mode 100644
index 000000000..a890327bc
Binary files /dev/null and b/.codex-screenshots/premium-light-before-mobile.png differ
diff --git a/.codex-screenshots/premium-light-final-desktop.png b/.codex-screenshots/premium-light-final-desktop.png
new file mode 100644
index 000000000..a19ac3f1b
Binary files /dev/null and b/.codex-screenshots/premium-light-final-desktop.png differ
diff --git a/.codex-screenshots/premium-light-final-mobile.png b/.codex-screenshots/premium-light-final-mobile.png
new file mode 100644
index 000000000..10278b321
Binary files /dev/null and b/.codex-screenshots/premium-light-final-mobile.png differ
diff --git a/.codex-screenshots/premium-light-pass1-desktop.png b/.codex-screenshots/premium-light-pass1-desktop.png
new file mode 100644
index 000000000..a19ac3f1b
Binary files /dev/null and b/.codex-screenshots/premium-light-pass1-desktop.png differ
diff --git a/.codex-screenshots/premium-light-pass1-mobile.png b/.codex-screenshots/premium-light-pass1-mobile.png
new file mode 100644
index 000000000..ca4be9e72
Binary files /dev/null and b/.codex-screenshots/premium-light-pass1-mobile.png differ
diff --git a/.codex-screenshots/service-detail-after-desktop.png b/.codex-screenshots/service-detail-after-desktop.png
new file mode 100644
index 000000000..80e11ce07
Binary files /dev/null and b/.codex-screenshots/service-detail-after-desktop.png differ
diff --git a/.codex-screenshots/service-detail-after-mobile.png b/.codex-screenshots/service-detail-after-mobile.png
new file mode 100644
index 000000000..8316bfdc0
Binary files /dev/null and b/.codex-screenshots/service-detail-after-mobile.png differ
diff --git a/.codex-screenshots/service-detail-before-desktop.png b/.codex-screenshots/service-detail-before-desktop.png
new file mode 100644
index 000000000..dd3124ce2
Binary files /dev/null and b/.codex-screenshots/service-detail-before-desktop.png differ
diff --git a/.codex-screenshots/service-detail-before-mobile.png b/.codex-screenshots/service-detail-before-mobile.png
new file mode 100644
index 000000000..785948a43
Binary files /dev/null and b/.codex-screenshots/service-detail-before-mobile.png differ
diff --git a/.codex-screenshots/service-detail-build-final-clean.log b/.codex-screenshots/service-detail-build-final-clean.log
new file mode 100644
index 000000000..eb71798ed
--- /dev/null
+++ b/.codex-screenshots/service-detail-build-final-clean.log
@@ -0,0 +1,8 @@
+
+> prompt-for-codex-medical-knowledge-base@0.1.0 build
+> next build
+
+▲ Next.js 16.2.9 (Turbopack)
+- Environments: .env.local
+
+ Creating an optimized production build ...
diff --git a/.codex-screenshots/service-detail-build-final.log b/.codex-screenshots/service-detail-build-final.log
new file mode 100644
index 000000000..eb71798ed
--- /dev/null
+++ b/.codex-screenshots/service-detail-build-final.log
@@ -0,0 +1,8 @@
+
+> prompt-for-codex-medical-knowledge-base@0.1.0 build
+> next build
+
+▲ Next.js 16.2.9 (Turbopack)
+- Environments: .env.local
+
+ Creating an optimized production build ...
diff --git a/.codex-screenshots/service-detail-build-retry.log b/.codex-screenshots/service-detail-build-retry.log
new file mode 100644
index 000000000..b799e72f5
--- /dev/null
+++ b/.codex-screenshots/service-detail-build-retry.log
@@ -0,0 +1,11 @@
+
+> prompt-for-codex-medical-knowledge-base@0.1.0 build
+> next build
+
+⨯ Another next build process is already running.
+ Suggestion: Wait for the build to complete.
+
+ This could be:
+ - A next build still in progress
+ - A previous build that didn't exit cleanly
+
diff --git a/.codex-screenshots/service-detail-build-webpack.log b/.codex-screenshots/service-detail-build-webpack.log
new file mode 100644
index 000000000..e1698d555
--- /dev/null
+++ b/.codex-screenshots/service-detail-build-webpack.log
@@ -0,0 +1,5 @@
+▲ Next.js 16.2.9 (webpack)
+- Environments: .env.local
+
+ Creating an optimized production build ...
+Next.js build worker exited with code: 4294967295 and signal: null
diff --git a/.codex-screenshots/service-detail-build.log b/.codex-screenshots/service-detail-build.log
new file mode 100644
index 000000000..c488e697e
--- /dev/null
+++ b/.codex-screenshots/service-detail-build.log
@@ -0,0 +1,10 @@
+
+> prompt-for-codex-medical-knowledge-base@0.1.0 build
+> next build
+
+▲ Next.js 16.2.9 (Turbopack)
+- Environments: .env.local
+
+ Creating an optimized production build ...
+✓ Compiled successfully in 25.3s
+ Running TypeScript ...
diff --git a/.codex-screenshots/service-detail-complete-current-desktop.png b/.codex-screenshots/service-detail-complete-current-desktop.png
new file mode 100644
index 000000000..e2f0d78c9
Binary files /dev/null and b/.codex-screenshots/service-detail-complete-current-desktop.png differ
diff --git a/.codex-screenshots/service-detail-complete-desktop.png b/.codex-screenshots/service-detail-complete-desktop.png
new file mode 100644
index 000000000..e2f0d78c9
Binary files /dev/null and b/.codex-screenshots/service-detail-complete-desktop.png differ
diff --git a/.codex-screenshots/service-detail-complete-mobile.png b/.codex-screenshots/service-detail-complete-mobile.png
new file mode 100644
index 000000000..458d22249
Binary files /dev/null and b/.codex-screenshots/service-detail-complete-mobile.png differ
diff --git a/.codex-screenshots/service-detail-current-build-clean.log b/.codex-screenshots/service-detail-current-build-clean.log
new file mode 100644
index 000000000..47936fd3f
--- /dev/null
+++ b/.codex-screenshots/service-detail-current-build-clean.log
@@ -0,0 +1,10 @@
+
+> prompt-for-codex-medical-knowledge-base@0.1.0 build
+> next build
+
+▲ Next.js 16.2.9 (Turbopack)
+- Environments: .env.local
+
+ Creating an optimized production build ...
+✓ Compiled successfully in 15.8s
+ Running TypeScript ...
diff --git a/.codex-screenshots/service-detail-current-build-final.log b/.codex-screenshots/service-detail-current-build-final.log
new file mode 100644
index 000000000..3edd29e62
--- /dev/null
+++ b/.codex-screenshots/service-detail-current-build-final.log
@@ -0,0 +1,10 @@
+
+> prompt-for-codex-medical-knowledge-base@0.1.0 build
+> next build
+
+▲ Next.js 16.2.9 (Turbopack)
+- Environments: .env.local
+
+ Creating an optimized production build ...
+✓ Compiled successfully in 15.6s
+ Running TypeScript ...
diff --git a/.codex-screenshots/service-detail-current-build-memory.log b/.codex-screenshots/service-detail-current-build-memory.log
new file mode 100644
index 000000000..eb71798ed
--- /dev/null
+++ b/.codex-screenshots/service-detail-current-build-memory.log
@@ -0,0 +1,8 @@
+
+> prompt-for-codex-medical-knowledge-base@0.1.0 build
+> next build
+
+▲ Next.js 16.2.9 (Turbopack)
+- Environments: .env.local
+
+ Creating an optimized production build ...
diff --git a/.codex-screenshots/service-detail-current-build.log b/.codex-screenshots/service-detail-current-build.log
new file mode 100644
index 000000000..f3be467c1
--- /dev/null
+++ b/.codex-screenshots/service-detail-current-build.log
@@ -0,0 +1,10 @@
+
+> prompt-for-codex-medical-knowledge-base@0.1.0 build
+> next build
+
+▲ Next.js 16.2.9 (Turbopack)
+- Environments: .env.local
+
+ Creating an optimized production build ...
+✓ Compiled successfully in 19.0s
+ Running TypeScript ...
diff --git a/.codex-screenshots/service-detail-desktop-edge.png b/.codex-screenshots/service-detail-desktop-edge.png
new file mode 100644
index 000000000..8f4da8836
Binary files /dev/null and b/.codex-screenshots/service-detail-desktop-edge.png differ
diff --git a/.codex-screenshots/service-detail-desktop.png b/.codex-screenshots/service-detail-desktop.png
new file mode 100644
index 000000000..71947f671
Binary files /dev/null and b/.codex-screenshots/service-detail-desktop.png differ
diff --git a/.codex-screenshots/service-detail-final-desktop.png b/.codex-screenshots/service-detail-final-desktop.png
new file mode 100644
index 000000000..ada9842d2
Binary files /dev/null and b/.codex-screenshots/service-detail-final-desktop.png differ
diff --git a/.codex-screenshots/service-detail-final-mobile.png b/.codex-screenshots/service-detail-final-mobile.png
new file mode 100644
index 000000000..aaf989900
Binary files /dev/null and b/.codex-screenshots/service-detail-final-mobile.png differ
diff --git a/.codex-screenshots/service-detail-final-polished-desktop.png b/.codex-screenshots/service-detail-final-polished-desktop.png
new file mode 100644
index 000000000..e2f0d78c9
Binary files /dev/null and b/.codex-screenshots/service-detail-final-polished-desktop.png differ
diff --git a/.codex-screenshots/service-detail-final-polished-mobile.png b/.codex-screenshots/service-detail-final-polished-mobile.png
new file mode 100644
index 000000000..7748c4d18
Binary files /dev/null and b/.codex-screenshots/service-detail-final-polished-mobile.png differ
diff --git a/.codex-screenshots/service-detail-mobile-debug-buttons.png b/.codex-screenshots/service-detail-mobile-debug-buttons.png
new file mode 100644
index 000000000..32a89f80b
Binary files /dev/null and b/.codex-screenshots/service-detail-mobile-debug-buttons.png differ
diff --git a/.codex-screenshots/service-detail-mobile.png b/.codex-screenshots/service-detail-mobile.png
new file mode 100644
index 000000000..f43791334
Binary files /dev/null and b/.codex-screenshots/service-detail-mobile.png differ
diff --git a/.codex-screenshots/service-detail-polish-desktop.png b/.codex-screenshots/service-detail-polish-desktop.png
new file mode 100644
index 000000000..a328ca619
Binary files /dev/null and b/.codex-screenshots/service-detail-polish-desktop.png differ
diff --git a/.codex-screenshots/service-detail-polish-mobile.png b/.codex-screenshots/service-detail-polish-mobile.png
new file mode 100644
index 000000000..9d728e114
Binary files /dev/null and b/.codex-screenshots/service-detail-polish-mobile.png differ
diff --git a/.codex-screenshots/service-detail-polished-desktop.png b/.codex-screenshots/service-detail-polished-desktop.png
new file mode 100644
index 000000000..e2f0d78c9
Binary files /dev/null and b/.codex-screenshots/service-detail-polished-desktop.png differ
diff --git a/.codex-screenshots/service-detail-polished-final-desktop.png b/.codex-screenshots/service-detail-polished-final-desktop.png
new file mode 100644
index 000000000..1358e4520
Binary files /dev/null and b/.codex-screenshots/service-detail-polished-final-desktop.png differ
diff --git a/.codex-screenshots/service-detail-polished-final-mobile.png b/.codex-screenshots/service-detail-polished-final-mobile.png
new file mode 100644
index 000000000..b0b8dd27d
Binary files /dev/null and b/.codex-screenshots/service-detail-polished-final-mobile.png differ
diff --git a/.codex-screenshots/service-detail-polished-mobile-2.png b/.codex-screenshots/service-detail-polished-mobile-2.png
new file mode 100644
index 000000000..ef9154ae8
Binary files /dev/null and b/.codex-screenshots/service-detail-polished-mobile-2.png differ
diff --git a/.codex-screenshots/service-detail-polished-mobile.png b/.codex-screenshots/service-detail-polished-mobile.png
new file mode 100644
index 000000000..35bee1811
Binary files /dev/null and b/.codex-screenshots/service-detail-polished-mobile.png differ
diff --git a/.codex-screenshots/service-detail-qa-desktop.png b/.codex-screenshots/service-detail-qa-desktop.png
new file mode 100644
index 000000000..84a4f655e
Binary files /dev/null and b/.codex-screenshots/service-detail-qa-desktop.png differ
diff --git a/.codex-screenshots/service-detail-qa-mobile.png b/.codex-screenshots/service-detail-qa-mobile.png
new file mode 100644
index 000000000..5963a29a1
Binary files /dev/null and b/.codex-screenshots/service-detail-qa-mobile.png differ
diff --git a/.codex-screenshots/service-detail-review-desktop.png b/.codex-screenshots/service-detail-review-desktop.png
new file mode 100644
index 000000000..84a4f655e
Binary files /dev/null and b/.codex-screenshots/service-detail-review-desktop.png differ
diff --git a/.codex-screenshots/service-detail-review-mobile.png b/.codex-screenshots/service-detail-review-mobile.png
new file mode 100644
index 000000000..689638359
Binary files /dev/null and b/.codex-screenshots/service-detail-review-mobile.png differ
diff --git a/.codex-screenshots/service-detail-source-backed-desktop.png b/.codex-screenshots/service-detail-source-backed-desktop.png
new file mode 100644
index 000000000..23c3082ec
Binary files /dev/null and b/.codex-screenshots/service-detail-source-backed-desktop.png differ
diff --git a/.codex-screenshots/service-detail-source-backed-mobile.png b/.codex-screenshots/service-detail-source-backed-mobile.png
new file mode 100644
index 000000000..150929631
Binary files /dev/null and b/.codex-screenshots/service-detail-source-backed-mobile.png differ
diff --git a/.codex-screenshots/service-detail-verified-desktop.png b/.codex-screenshots/service-detail-verified-desktop.png
new file mode 100644
index 000000000..b95df64ce
Binary files /dev/null and b/.codex-screenshots/service-detail-verified-desktop.png differ
diff --git a/.codex-screenshots/service-detail-verified-mobile.png b/.codex-screenshots/service-detail-verified-mobile.png
new file mode 100644
index 000000000..c381d7cf7
Binary files /dev/null and b/.codex-screenshots/service-detail-verified-mobile.png differ
diff --git a/.codex-screenshots/service-pathway-debug-mobile.png b/.codex-screenshots/service-pathway-debug-mobile.png
new file mode 100644
index 000000000..e369f7b48
Binary files /dev/null and b/.codex-screenshots/service-pathway-debug-mobile.png differ
diff --git a/.codex-screenshots/service-pathway-desktop.png b/.codex-screenshots/service-pathway-desktop.png
new file mode 100644
index 000000000..37f72dff9
Binary files /dev/null and b/.codex-screenshots/service-pathway-desktop.png differ
diff --git a/.codex-screenshots/service-pathway-dialog-desktop.png b/.codex-screenshots/service-pathway-dialog-desktop.png
new file mode 100644
index 000000000..92256940d
Binary files /dev/null and b/.codex-screenshots/service-pathway-dialog-desktop.png differ
diff --git a/.codex-screenshots/service-pathway-dialog-final-desktop.png b/.codex-screenshots/service-pathway-dialog-final-desktop.png
new file mode 100644
index 000000000..6819b1c0a
Binary files /dev/null and b/.codex-screenshots/service-pathway-dialog-final-desktop.png differ
diff --git a/.codex-screenshots/service-pathway-dialog-final-mobile.png b/.codex-screenshots/service-pathway-dialog-final-mobile.png
new file mode 100644
index 000000000..a4cd1865b
Binary files /dev/null and b/.codex-screenshots/service-pathway-dialog-final-mobile.png differ
diff --git a/.codex-screenshots/service-pathway-dialog-mobile.png b/.codex-screenshots/service-pathway-dialog-mobile.png
new file mode 100644
index 000000000..855a4e936
Binary files /dev/null and b/.codex-screenshots/service-pathway-dialog-mobile.png differ
diff --git a/.codex-screenshots/service-pathway-final-desktop.png b/.codex-screenshots/service-pathway-final-desktop.png
new file mode 100644
index 000000000..37f72dff9
Binary files /dev/null and b/.codex-screenshots/service-pathway-final-desktop.png differ
diff --git a/.codex-screenshots/service-pathway-final-mobile.png b/.codex-screenshots/service-pathway-final-mobile.png
new file mode 100644
index 000000000..c381d7cf7
Binary files /dev/null and b/.codex-screenshots/service-pathway-final-mobile.png differ
diff --git a/.codex-screenshots/service-pathway-mobile.png b/.codex-screenshots/service-pathway-mobile.png
new file mode 100644
index 000000000..c381d7cf7
Binary files /dev/null and b/.codex-screenshots/service-pathway-mobile.png differ
diff --git a/.codex-screenshots/services-home-desktop.png b/.codex-screenshots/services-home-desktop.png
new file mode 100644
index 000000000..13fbe4793
Binary files /dev/null and b/.codex-screenshots/services-home-desktop.png differ
diff --git a/.codex-screenshots/services-home-mode-selection-desktop.png b/.codex-screenshots/services-home-mode-selection-desktop.png
new file mode 100644
index 000000000..2c7b03437
Binary files /dev/null and b/.codex-screenshots/services-home-mode-selection-desktop.png differ
diff --git a/.codex-screenshots/services-home-mode-selection-mobile.png b/.codex-screenshots/services-home-mode-selection-mobile.png
new file mode 100644
index 000000000..6e07d3920
Binary files /dev/null and b/.codex-screenshots/services-home-mode-selection-mobile.png differ
diff --git a/.codex-screenshots/services-info-fixed-compact-desktop.png b/.codex-screenshots/services-info-fixed-compact-desktop.png
new file mode 100644
index 000000000..9e861d795
Binary files /dev/null and b/.codex-screenshots/services-info-fixed-compact-desktop.png differ
diff --git a/.codex-screenshots/services-info-perfection-desktop.png b/.codex-screenshots/services-info-perfection-desktop.png
new file mode 100644
index 000000000..35c6d7848
Binary files /dev/null and b/.codex-screenshots/services-info-perfection-desktop.png differ
diff --git a/.codex-screenshots/services-info-perfection-mobile.png b/.codex-screenshots/services-info-perfection-mobile.png
new file mode 100644
index 000000000..f4ab1f9ae
Binary files /dev/null and b/.codex-screenshots/services-info-perfection-mobile.png differ
diff --git a/.codex-screenshots/services-info-review-desktop.png b/.codex-screenshots/services-info-review-desktop.png
new file mode 100644
index 000000000..ae1235d3f
Binary files /dev/null and b/.codex-screenshots/services-info-review-desktop.png differ
diff --git a/.codex-screenshots/services-info-review-mobile.png b/.codex-screenshots/services-info-review-mobile.png
new file mode 100644
index 000000000..aafd7f72f
Binary files /dev/null and b/.codex-screenshots/services-info-review-mobile.png differ
diff --git a/.codex-screenshots/sidebar-review-desktop-collapsed.png b/.codex-screenshots/sidebar-review-desktop-collapsed.png
new file mode 100644
index 000000000..f1513dcc8
Binary files /dev/null and b/.codex-screenshots/sidebar-review-desktop-collapsed.png differ
diff --git a/.codex-screenshots/sidebar-review-desktop.png b/.codex-screenshots/sidebar-review-desktop.png
new file mode 100644
index 000000000..d827b9039
Binary files /dev/null and b/.codex-screenshots/sidebar-review-desktop.png differ
diff --git a/.codex-screenshots/sidebar-review-mobile-open.png b/.codex-screenshots/sidebar-review-mobile-open.png
new file mode 100644
index 000000000..0c2ef0ffd
Binary files /dev/null and b/.codex-screenshots/sidebar-review-mobile-open.png differ
diff --git a/.codex-screenshots/style-fix-dark-desktop.png b/.codex-screenshots/style-fix-dark-desktop.png
new file mode 100644
index 000000000..575881a52
Binary files /dev/null and b/.codex-screenshots/style-fix-dark-desktop.png differ
diff --git a/.codex-screenshots/style-fix-dark-mobile.png b/.codex-screenshots/style-fix-dark-mobile.png
new file mode 100644
index 000000000..707516e0a
Binary files /dev/null and b/.codex-screenshots/style-fix-dark-mobile.png differ
diff --git a/.codex-screenshots/style-fix-dark-utility-menu.png b/.codex-screenshots/style-fix-dark-utility-menu.png
new file mode 100644
index 000000000..d561a22fe
Binary files /dev/null and b/.codex-screenshots/style-fix-dark-utility-menu.png differ
diff --git a/.codex-screenshots/style-fix-light-desktop.png b/.codex-screenshots/style-fix-light-desktop.png
new file mode 100644
index 000000000..b9819ee7d
Binary files /dev/null and b/.codex-screenshots/style-fix-light-desktop.png differ
diff --git a/.codex-screenshots/style-fix-light-utility-menu.png b/.codex-screenshots/style-fix-light-utility-menu.png
new file mode 100644
index 000000000..ed989e18a
Binary files /dev/null and b/.codex-screenshots/style-fix-light-utility-menu.png differ
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 623f370e6..8fd84ae3b 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -68,10 +68,11 @@ jobs:
run: npm run build
- name: Deployment boot smoke
- run: npm run check:deployment-readiness
+ if: github.event_name == 'workflow_dispatch' || github.event_name == 'schedule' || github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/heads/release/')
env:
- SUPABASE_SERVICE_ROLE_KEY: placeholder-ci-service-role
- OPENAI_API_KEY: placeholder-ci-openai
+ SUPABASE_SERVICE_ROLE_KEY: ${{ secrets.SUPABASE_SERVICE_ROLE_KEY || 'placeholder-ci-service-role' }}
+ OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY || 'placeholder-ci-openai' }}
+ run: npm run check:deployment-readiness
- name: Restore Chromium browser cache
uses: actions/cache@v4
diff --git a/.qa-smoke/desktop-browser-toggle-default.png b/.qa-smoke/desktop-browser-toggle-default.png
new file mode 100644
index 000000000..8595f8899
Binary files /dev/null and b/.qa-smoke/desktop-browser-toggle-default.png differ
diff --git a/.qa-smoke/desktop-browser-toggle-zoom-keyboard.png b/.qa-smoke/desktop-browser-toggle-zoom-keyboard.png
new file mode 100644
index 000000000..8595f8899
Binary files /dev/null and b/.qa-smoke/desktop-browser-toggle-zoom-keyboard.png differ
diff --git a/.qa-smoke/desktop-canvas-default-default.png b/.qa-smoke/desktop-canvas-default-default.png
new file mode 100644
index 000000000..e05170485
Binary files /dev/null and b/.qa-smoke/desktop-canvas-default-default.png differ
diff --git a/.qa-smoke/desktop-canvas-default-zoom-keyboard.png b/.qa-smoke/desktop-canvas-default-zoom-keyboard.png
new file mode 100644
index 000000000..e92dcdef5
Binary files /dev/null and b/.qa-smoke/desktop-canvas-default-zoom-keyboard.png differ
diff --git a/.qa-smoke/desktop-canvas-initial-default.png b/.qa-smoke/desktop-canvas-initial-default.png
new file mode 100644
index 000000000..97ba5b04e
Binary files /dev/null and b/.qa-smoke/desktop-canvas-initial-default.png differ
diff --git a/.qa-smoke/desktop-canvas-initial-zoom-keyboard.png b/.qa-smoke/desktop-canvas-initial-zoom-keyboard.png
new file mode 100644
index 000000000..97ba5b04e
Binary files /dev/null and b/.qa-smoke/desktop-canvas-initial-zoom-keyboard.png differ
diff --git a/.qa-smoke/desktop-home-next-combined.log b/.qa-smoke/desktop-home-next-combined.log
new file mode 100644
index 000000000..e1cdfe439
Binary files /dev/null and b/.qa-smoke/desktop-home-next-combined.log differ
diff --git a/.qa-smoke/desktop-home-next.err.log b/.qa-smoke/desktop-home-next.err.log
new file mode 100644
index 000000000..e69de29bb
diff --git a/.qa-smoke/desktop-home-next.out.log b/.qa-smoke/desktop-home-next.out.log
new file mode 100644
index 000000000..f085802c1
--- /dev/null
+++ b/.qa-smoke/desktop-home-next.out.log
@@ -0,0 +1,7 @@
+▲ Next.js 16.2.9 (Turbopack)
+- Local: http://127.0.0.1:4311
+- Network: http://127.0.0.1:4311
+- Environments: .env.local
+✓ Ready in 7.3s
+
+[?25h
diff --git a/.qa-smoke/desktop-initial-only.png b/.qa-smoke/desktop-initial-only.png
new file mode 100644
index 000000000..0139420b5
Binary files /dev/null and b/.qa-smoke/desktop-initial-only.png differ
diff --git a/.qa-smoke/eslint.err.txt b/.qa-smoke/eslint.err.txt
new file mode 100644
index 000000000..e69de29bb
diff --git a/.qa-smoke/eslint.out.txt b/.qa-smoke/eslint.out.txt
new file mode 100644
index 000000000..e69de29bb
diff --git a/.qa-smoke/inspect-1-dom-ready.png b/.qa-smoke/inspect-1-dom-ready.png
new file mode 100644
index 000000000..7f6a1536e
Binary files /dev/null and b/.qa-smoke/inspect-1-dom-ready.png differ
diff --git a/.qa-smoke/mobile-browser-default-after-canvas-toggle.png b/.qa-smoke/mobile-browser-default-after-canvas-toggle.png
new file mode 100644
index 000000000..0cd8ec080
Binary files /dev/null and b/.qa-smoke/mobile-browser-default-after-canvas-toggle.png differ
diff --git a/.qa-smoke/mobile-browser-zoom-after-canvas-toggle.png b/.qa-smoke/mobile-browser-zoom-after-canvas-toggle.png
new file mode 100644
index 000000000..ff04321c6
Binary files /dev/null and b/.qa-smoke/mobile-browser-zoom-after-canvas-toggle.png differ
diff --git a/.qa-smoke/mobile-canvas-default-default.png b/.qa-smoke/mobile-canvas-default-default.png
new file mode 100644
index 000000000..b03c3e2c9
Binary files /dev/null and b/.qa-smoke/mobile-canvas-default-default.png differ
diff --git a/.qa-smoke/mobile-canvas-default-zoom-keyboard.png b/.qa-smoke/mobile-canvas-default-zoom-keyboard.png
new file mode 100644
index 000000000..b03c3e2c9
Binary files /dev/null and b/.qa-smoke/mobile-canvas-default-zoom-keyboard.png differ
diff --git a/.qa-smoke/mobile-canvas-initial-default.png b/.qa-smoke/mobile-canvas-initial-default.png
new file mode 100644
index 000000000..cb2f53fe9
Binary files /dev/null and b/.qa-smoke/mobile-canvas-initial-default.png differ
diff --git a/.qa-smoke/mobile-canvas-initial-zoom-keyboard.png b/.qa-smoke/mobile-canvas-initial-zoom-keyboard.png
new file mode 100644
index 000000000..cb2f53fe9
Binary files /dev/null and b/.qa-smoke/mobile-canvas-initial-zoom-keyboard.png differ
diff --git a/.qa-smoke/mobile-initial-only.png b/.qa-smoke/mobile-initial-only.png
new file mode 100644
index 000000000..1132d72bf
Binary files /dev/null and b/.qa-smoke/mobile-initial-only.png differ
diff --git a/.qa-smoke/pdf-current/desktop-default.png b/.qa-smoke/pdf-current/desktop-default.png
new file mode 100644
index 000000000..68625777c
Binary files /dev/null and b/.qa-smoke/pdf-current/desktop-default.png differ
diff --git a/.qa-smoke/pdf-current/desktop-toggled.png b/.qa-smoke/pdf-current/desktop-toggled.png
new file mode 100644
index 000000000..242a7452d
Binary files /dev/null and b/.qa-smoke/pdf-current/desktop-toggled.png differ
diff --git a/.qa-smoke/pdf-current/mobile-canvas-settled.png b/.qa-smoke/pdf-current/mobile-canvas-settled.png
new file mode 100644
index 000000000..c7fec3fbc
Binary files /dev/null and b/.qa-smoke/pdf-current/mobile-canvas-settled.png differ
diff --git a/.qa-smoke/pdf-current/mobile-default.png b/.qa-smoke/pdf-current/mobile-default.png
new file mode 100644
index 000000000..3711e3174
Binary files /dev/null and b/.qa-smoke/pdf-current/mobile-default.png differ
diff --git a/.qa-smoke/pdf-current/mobile-toggled.png b/.qa-smoke/pdf-current/mobile-toggled.png
new file mode 100644
index 000000000..db40df6f3
Binary files /dev/null and b/.qa-smoke/pdf-current/mobile-toggled.png differ
diff --git a/.qa-smoke/pdf-qa-smoke.mjs b/.qa-smoke/pdf-qa-smoke.mjs
new file mode 100644
index 000000000..829584b40
--- /dev/null
+++ b/.qa-smoke/pdf-qa-smoke.mjs
@@ -0,0 +1,183 @@
+import fs from 'fs';
+import path from 'path';
+import { chromium, devices } from 'playwright';
+
+(async () => {
+ const outputDir = 'C:/Dev/Apps/Database/.qa-smoke';
+ if (!fs.existsSync(outputDir)) fs.mkdirSync(outputDir, { recursive: true });
+
+ const baseUrl = process.env.CQA_BASE_URL || '';
+ const docId = process.env.CQA_DOC_ID || '';
+
+ const docUrl = `${baseUrl}/documents/${docId}`;
+
+ const browser = await chromium.launch({ headless: true });
+ const runs = [
+ {
+ key: 'desktop-canvas-default',
+ viewport: { width: 1440, height: 2100 },
+ deviceScaleFactor: 1,
+ isMobile: false,
+ mode: 'canvas',
+ targetUrl: docUrl,
+ mobile: false,
+ },
+ {
+ key: 'mobile-canvas-default',
+ viewport: { width: 390, height: 844 },
+ deviceScaleFactor: 2,
+ isMobile: true,
+ mode: 'canvas',
+ targetUrl: docUrl,
+ mobile: true,
+ },
+ ];
+
+ let signedUrl = null;
+ try {
+ const signedRes = await fetch(`${baseUrl}/api/documents/${docId}/signed-url?download=true`);
+ const signedJson = await signedRes.json();
+ signedUrl = signedJson?.data?.signedUrl || signedJson?.signedUrl || signedJson?.url || null;
+ } catch (err) {
+ console.warn('Could not fetch signed URL:', err?.message || err);
+ }
+
+ const browserModeRuns = [
+ {
+ key: 'desktop-browser',
+ viewport: { width: 1440, height: 2100 },
+ deviceScaleFactor: 1,
+ isMobile: false,
+ mode: 'browser',
+ targetUrl: signedUrl,
+ mobile: false,
+ },
+ {
+ key: 'mobile-browser',
+ viewport: { width: 390, height: 844 },
+ deviceScaleFactor: 2,
+ isMobile: true,
+ mode: 'browser',
+ targetUrl: signedUrl,
+ mobile: true,
+ },
+ ].filter((run) => Boolean(run.targetUrl));
+
+ const allRuns = [...runs, ...browserModeRuns];
+ const results = [];
+
+ for (const run of allRuns) {
+ const context = await browser.newContext({
+ viewport: run.viewport,
+ deviceScaleFactor: run.deviceScaleFactor,
+ isMobile: run.isMobile,
+ hasTouch: run.isMobile,
+ permissions: ['clipboard-read', 'clipboard-write'],
+ userAgent: run.isMobile ? devices['Pixel 5'].userAgent : undefined,
+ });
+
+ const page = await context.newPage();
+ const started = Date.now();
+
+ try {
+ const nav = page.goto(run.targetUrl, { waitUntil: 'domcontentloaded', timeout: 120000 });
+ const apiWait = page.waitForResponse((resp) => {
+ const url = resp.url();
+ return (url.includes(`/api/documents/${docId}`) || url.includes(`/api/documents/${docId}/signed-url`)) && resp.status() === 200;
+ }, { timeout: 120000 }).catch(() => null);
+
+ const [response] = await Promise.all([nav, apiWait]);
+ const status = response ? response.status() : null;
+
+ const marker = await Promise.race([
+ page.waitForSelector('canvas', { timeout: 120000 }).then(() => 'canvas'),
+ page.waitForSelector('iframe', { timeout: 120000 }).then(() => 'iframe'),
+ page.waitForSelector('embed,object,embed[type="application/pdf"]', { timeout: 120000 }).then(() => 'pdf-embed'),
+ page.waitForFunction(() => {
+ const text = document.body?.innerText || '';
+ return !text.includes('Preparing PDF preview') && !text.includes('Loading source metadata');
+ }, { timeout: 120000 }).then(() => 'loaded'),
+ ]).catch(() => 'timeout-marker');
+
+ await page.waitForTimeout(1200);
+
+ const uiSummary = await page.$$eval('button, a[role="button"]', (els) => {
+ const labels = [];
+ for (const el of els) {
+ const txt = (el.textContent || '').replace(/\s+/g, ' ').trim();
+ if (txt) labels.push(txt);
+ }
+ const filtered = labels
+ .filter((t) => t.length > 1 && t.length < 80)
+ .filter((t) => /pdf|zoom|download|browser|canvas|open|view/i.test(t));
+ const uniq = [...new Set(filtered)];
+
+ return {
+ allControls: labels.slice(0, 50),
+ relevantControls: uniq,
+ modeCandidates: uniq.filter((t) => /browser|canvas|open pdf|new tab|download pdf/i.test(t)),
+ };
+ });
+
+ const zoomButton = await page.$('button:has-text("Zoom In")');
+ const zoomPlus = await page.$('button:has-text("+")');
+
+ let zoomMode = 'none';
+ const shotPaths = [];
+
+ const defaultShot = path.join(outputDir, `${run.key}-default.png`);
+ await page.screenshot({ path: defaultShot, fullPage: true });
+ shotPaths.push({ step: 'default', path: defaultShot });
+
+ if (zoomButton || zoomPlus) {
+ const btn = zoomButton || zoomPlus;
+ await btn.click({ trial: false }).catch(() => {});
+ await page.waitForTimeout(900);
+ const zoomShot = path.join(outputDir, `${run.key}-zoom-step-1.png`);
+ await page.screenshot({ path: zoomShot, fullPage: true });
+ shotPaths.push({ step: 'ui-zoom', path: zoomShot });
+ zoomMode = 'ui-button';
+ } else if (run.mode === 'browser') {
+ await page.keyboard.down('Control');
+ await page.keyboard.press('Equal');
+ await page.keyboard.press('Equal');
+ await page.keyboard.up('Control');
+ await page.waitForTimeout(900);
+ const zoomShot = path.join(outputDir, `${run.key}-zoom-keyboard.png`);
+ await page.screenshot({ path: zoomShot, fullPage: true });
+ shotPaths.push({ step: 'ctrl-plus', path: zoomShot });
+ zoomMode = 'keyboard';
+ }
+
+ const bodyText = await page.textContent('body').catch(() => null);
+ const pdfState = {
+ hasErrorText: !!(bodyText && (bodyText.includes('500') || bodyText.includes('Something went wrong') || bodyText.includes('error'))),
+ loadingText: !!(bodyText && (bodyText.includes('Preparing PDF preview') || bodyText.includes('Loading source metadata'))),
+ };
+
+ results.push({
+ run: run.key,
+ mode: run.mode,
+ targetUrl: run.targetUrl,
+ status,
+ marker,
+ loadMs: Date.now() - started,
+ zoomMode,
+ uiSummary,
+ pdfState,
+ shots: shotPaths,
+ });
+ } catch (err) {
+ results.push({ run: run.key, mode: run.mode, error: String(err?.message || err) });
+ } finally {
+ await page.close().catch(() => {});
+ await context.close().catch(() => {});
+ }
+ }
+
+ await browser.close();
+
+ console.log('CQA_RESULT_START');
+ console.log(JSON.stringify(results, null, 2));
+ console.log('CQA_RESULT_END');
+})();
diff --git a/.qa-smoke/pdf-small-review-after/iphone-se.png b/.qa-smoke/pdf-small-review-after/iphone-se.png
new file mode 100644
index 000000000..47a9647e8
Binary files /dev/null and b/.qa-smoke/pdf-small-review-after/iphone-se.png differ
diff --git a/.qa-smoke/pdf-small-review-after/pixel-5.png b/.qa-smoke/pdf-small-review-after/pixel-5.png
new file mode 100644
index 000000000..2266a35cc
Binary files /dev/null and b/.qa-smoke/pdf-small-review-after/pixel-5.png differ
diff --git a/.qa-smoke/pdf-small-review-before/iphone-se.png b/.qa-smoke/pdf-small-review-before/iphone-se.png
new file mode 100644
index 000000000..312196662
Binary files /dev/null and b/.qa-smoke/pdf-small-review-before/iphone-se.png differ
diff --git a/.qa-smoke/pdf-small-review-before/pixel-5.png b/.qa-smoke/pdf-small-review-before/pixel-5.png
new file mode 100644
index 000000000..3711e3174
Binary files /dev/null and b/.qa-smoke/pdf-small-review-before/pixel-5.png differ
diff --git a/.qa-smoke/ux-review/desktop-answer.png b/.qa-smoke/ux-review/desktop-answer.png
new file mode 100644
index 000000000..05d1341f4
Binary files /dev/null and b/.qa-smoke/ux-review/desktop-answer.png differ
diff --git a/.qa-smoke/ux-review/desktop-documents.png b/.qa-smoke/ux-review/desktop-documents.png
new file mode 100644
index 000000000..38257c2e6
Binary files /dev/null and b/.qa-smoke/ux-review/desktop-documents.png differ
diff --git a/.qa-smoke/ux-review/desktop-tools.png b/.qa-smoke/ux-review/desktop-tools.png
new file mode 100644
index 000000000..a41a37572
Binary files /dev/null and b/.qa-smoke/ux-review/desktop-tools.png differ
diff --git a/.qa-smoke/ux-review/mobile-answer.png b/.qa-smoke/ux-review/mobile-answer.png
new file mode 100644
index 000000000..c50f43c7b
Binary files /dev/null and b/.qa-smoke/ux-review/mobile-answer.png differ
diff --git a/.qa-smoke/ux-review/mobile-documents.png b/.qa-smoke/ux-review/mobile-documents.png
new file mode 100644
index 000000000..5f1807b19
Binary files /dev/null and b/.qa-smoke/ux-review/mobile-documents.png differ
diff --git a/.qa-smoke/ux-review/mobile-service-detail.png b/.qa-smoke/ux-review/mobile-service-detail.png
new file mode 100644
index 000000000..ee28bdf09
Binary files /dev/null and b/.qa-smoke/ux-review/mobile-service-detail.png differ
diff --git a/.qa-smoke/ux-review/mobile-services.png b/.qa-smoke/ux-review/mobile-services.png
new file mode 100644
index 000000000..0c46e78b9
Binary files /dev/null and b/.qa-smoke/ux-review/mobile-services.png differ
diff --git a/.qa-smoke/ux-review/mobile-tools.png b/.qa-smoke/ux-review/mobile-tools.png
new file mode 100644
index 000000000..3cd2f12c1
Binary files /dev/null and b/.qa-smoke/ux-review/mobile-tools.png differ
diff --git a/.qa-smoke/ux-review/mobile-upload-drawer.png b/.qa-smoke/ux-review/mobile-upload-drawer.png
new file mode 100644
index 000000000..bb9ade2c0
Binary files /dev/null and b/.qa-smoke/ux-review/mobile-upload-drawer.png differ
diff --git a/.tmp_read_security_files.ps1 b/.tmp_read_security_files.ps1
new file mode 100644
index 000000000..6aa49236a
--- /dev/null
+++ b/.tmp_read_security_files.ps1
@@ -0,0 +1,21 @@
+# files to inspect for security stack audit
+$files = @(
+ 'src/lib/app-modes.ts',
+ 'src/lib/reindex-pipeline.ts',
+ 'src/app/api/answer/route.ts',
+ 'src/app/api/answer/stream/route.ts',
+ 'src/app/api/documents/[id]/labels/route.ts',
+ 'src/app/api/documents/[id]/signed-url/route.ts',
+ 'src/app/api/documents/[id]/table-facts/route.ts',
+ 'src/app/api/documents/bulk/reindex/route.ts',
+ 'src/app/api/documents/bulk/route.ts',
+ 'src/app/api/eval-cases/route.ts',
+ 'src/app/api/search/interaction/route.ts',
+ 'src/app/api/search/route.ts'
+)
+foreach ($rel in $files) {
+ $path = Join-Path 'C:\Dev\Apps\Database' $rel
+ Write-Output "--- START $rel"
+ Get-Content -Path $path
+ Write-Output "--- END $rel"
+}
diff --git a/docs/redesign/clinical-white-aegean-master-implementation-plan.md b/docs/redesign/clinical-white-aegean-master-implementation-plan.md
new file mode 100644
index 000000000..2fd822a22
--- /dev/null
+++ b/docs/redesign/clinical-white-aegean-master-implementation-plan.md
@@ -0,0 +1,443 @@
+# Clinical White / Aegean Graphite Master Implementation Plan
+
+## Final Review Verdict
+
+The permanent direction should be **Clinical White / Aegean Graphite**.
+
+The strongest version of this app is not cream, not green-led, and not a colourful dashboard. It should read as a precise clinical workbench: crisp white canvas, graphite command hierarchy, cool Aegean clinical identity, and restrained semantic status colours.
+
+The final colour system should communicate:
+
+- **Crispness:** true white primary canvas, not porcelain, cream, beige, or mint.
+- **Professional weight:** graphite command controls instead of green primary buttons.
+- **Clinical identity:** a cool blue-teal Aegean accent used with discipline.
+- **Semantic clarity:** green means success only, amber means caution, red means critical, blue means information.
+- **Dark-mode continuity:** black polish remains, but the light-mode system becomes cleaner and more premium.
+
+No further palette pivot is recommended. The final perfection is architectural: split command, clinical accent, and success roles so one colour is not doing multiple jobs.
+
+## Permanent Palette
+
+### Light Mode
+
+| Role | Token | Value | Use |
+| --- | --- | --- | --- |
+| Canvas | `--background` | `#FFFFFF` | Main page background |
+| Chrome | `--surface-chrome` | `#F7F8FA` | Sidebar, header bands, secondary app frame |
+| Raised surface | `--surface-raised` | `#FCFCFD` | Cards, popovers, menus |
+| Inset surface | `--surface-inset` | `#F1F4F6` | Inputs, inactive chips, recessed controls |
+| Border | `--border` | `#E5E7EB` | Default lines |
+| Strong border | `--border-strong` | `#CDD5DF` | Focused panels, active boundaries |
+| Ink | `--foreground` | `#101418` | Body text |
+| Heading | `--heading` | `#080B0F` | High-emphasis headings |
+| Muted text | `--muted-foreground` | `#475467` | Secondary copy |
+| Soft text | `--soft-foreground` | `#667085` | Captions and quiet metadata |
+| Command | `--command` | `#111827` | Primary command buttons |
+| Command hover | `--command-hover` | `#0B1220` | Primary command hover |
+| Clinical accent | `--clinical-accent` | `#0B6F86` | Clinical identity, selected state, send action, evidence rail |
+| Accent hover | `--clinical-accent-hover` | `#095D70` | Accent hover |
+| Accent soft | `--clinical-accent-soft` | `#E7F6F8` | Tiny chips, icon wells, selected hints |
+| Accent border | `--clinical-accent-border` | `#B9E4EA` | Subtle selected borders |
+| Info | `--info` | `#2563EB` | Informational status |
+| Success | `--success` | `#0F7A49` | Ready, connected, passed, complete |
+| Warning | `--warning` | `#A15C07` | Caution and missing setup |
+| Danger | `--destructive` | `#B42318` | Errors and destructive actions |
+
+### Dark Mode
+
+| Role | Token | Value | Use |
+| --- | --- | --- | --- |
+| Canvas | `--background` | `#060708` | Main dark canvas |
+| Chrome | `--surface-chrome` | `#0B0D0F` | Sidebar and header frame |
+| Surface | `--surface` | `#101214` | Default panels |
+| Raised surface | `--surface-raised` | `#171A1D` | Popovers and cards |
+| Inset surface | `--surface-inset` | `#040506` | Inputs and composer body |
+| Border | `--border` | `#23282C` | Default dark lines |
+| Strong border | `--border-strong` | `#3B454B` | Active/focused dark lines |
+| Ink | `--foreground` | `#F5F7F7` | Primary text |
+| Muted text | `--muted-foreground` | `#A7B0AD` | Secondary text |
+| Soft text | `--soft-foreground` | `#7F8987` | Captions |
+| Command | `--command` | `#F5F7F7` | Dark primary command text/surfaces where needed |
+| Clinical accent | `--clinical-accent` | `#4CCFD0` | Dark selected/send/evidence identity |
+| Accent soft | `--clinical-accent-soft` | `#12383B` | Dark accent wash |
+| Accent border | `--clinical-accent-border` | `#235B60` | Dark selected borders |
+| Success | `--success` | `#7DE0A3` | Success status |
+| Warning | `--warning` | `#F0C15A` | Warning status |
+| Danger | `--destructive` | `#FF8D96` | Error/destructive status |
+
+## Final Design Rules
+
+1. **White is the product surface.** The page canvas is `#FFFFFF`. Use `#F7F8FA` only for rails, header bands, quiet chrome, and nested utility zones.
+2. **Graphite owns command.** New chat, primary CTAs, high-emphasis neutral actions, and destructive-confirm-safe defaults should not be teal or green.
+3. **Aegean owns clinical identity.** Selected mode, evidence/source affordances, focus rails, send action, and clinical scope indicators use `--clinical-accent`.
+4. **Green is success only.** Do not use green for brand, active navigation, primary buttons, composer send, selected mode, empty-state hero marks, or evidence surfaces.
+5. **Large soft-tinted panels are avoided.** Accent soft backgrounds belong on small chips, icon wells, rails, or tight state badges, not whole cards or page sections.
+6. **Use lines before fills.** Premium selected states should prefer a 2px rail, slim underline, icon colour, or border over broad coloured tiles.
+7. **Neutral cards stay neutral.** Repeated content cards should be white or raised off-white with nickel borders. The content, icon, or rail can carry the accent.
+8. **Dark mode stays black-polished.** Do not copy light-mode glare, white inset highlights, or metallic gradients into dark mode.
+
+## Current Issues To Fix
+
+### 1. Light tokens are still too warm
+
+`src/app/globals.css` still sets the light mode around porcelain and teal. Values like `--background: #f7f7f4` keep the app reading warm and slightly cream instead of crisp white.
+
+### 2. Teal/green is overused
+
+The same colour family appears in sidebar brand elements, sidebar CTA, active tools, header mode controls, menu options, composer send, chips, empty state, and evidence states. This makes the system feel less premium because the accent has no hierarchy.
+
+### 3. `--primary` is overloaded
+
+`src/components/ui-primitives.tsx` uses `--primary` for both primary controls and evidence surfaces. That conflates "do this command" with "this is clinical evidence". This must be split before the palette can feel deliberate.
+
+### 4. Active states rely too much on filled tint
+
+Active navigation and tool states should use rails, borders, icon colour, and type weight. Large teal fills should be reduced.
+
+### 5. Composer must become the best light-mode object
+
+The composer is the most important object on the screen. In light mode it should be a white floating command capsule with nickel border, graphite text, restrained shadow, and Aegean send button. It should not glow green or look washed.
+
+## Implementation Sequence
+
+### Phase 0 - Safety And Baseline
+
+Before app edits:
+
+1. Inspect `git status --short` and avoid overwriting unrelated user work.
+2. Keep all current screenshots and mockup artifacts untouched unless explicitly cleaning them later.
+3. Read the current diff for these files before editing:
+ - `src/app/globals.css`
+ - `src/components/ui-primitives.tsx`
+ - `src/components/clinical-dashboard/ClinicalSidebar.tsx`
+ - `src/components/clinical-dashboard/master-search-header.tsx`
+ - `src/components/clinical-dashboard/answer-status.tsx`
+ - `src/components/ClinicalDashboard.tsx`
+4. Because this is UI work, use `npm run ensure` before browser validation and only attach after `/api/local-project-id` confirms this project.
+
+### Phase 1 - Token Architecture
+
+Edit `src/app/globals.css`.
+
+Add the permanent role tokens in `:root` and `.dark`:
+
+```css
+--surface-chrome: #f7f8fa;
+--surface: #ffffff;
+--surface-raised: #fcfcfd;
+--surface-inset: #f1f4f6;
+--border: #e5e7eb;
+--border-strong: #cdd5df;
+
+--heading: #080b0f;
+--foreground: #101418;
+--muted-foreground: #475467;
+--soft-foreground: #667085;
+
+--command: #111827;
+--command-hover: #0b1220;
+
+--clinical-accent: #0b6f86;
+--clinical-accent-hover: #095d70;
+--clinical-accent-soft: #e7f6f8;
+--clinical-accent-border: #b9e4ea;
+
+--info: #2563eb;
+--success: #0f7a49;
+--warning: #a15c07;
+--destructive: #b42318;
+```
+
+Use compatibility aliases during migration:
+
+```css
+--clinical-chat-teal: var(--clinical-accent);
+--clinical-chat-teal-dark: var(--clinical-accent-hover);
+--clinical-chat-teal-soft: var(--clinical-accent-soft);
+```
+
+Migration rule:
+
+- Do **not** remap `--primary` to `--command` until evidence/source surfaces have moved off `--primary`.
+- First add `--command` and `--clinical-accent`.
+- Then update callers.
+- Then decide whether `--primary` should remain an alias for `--command` or be deprecated.
+
+### Phase 2 - Global Materials
+
+Edit global selectors in `src/app/globals.css`.
+
+Header:
+
+- `.edge-glass-header` uses a flatter white or chrome surface, not a warm translucent gradient.
+- `.universal-header` becomes crisp white with a subtle nickel bottom border.
+- `.universal-header-mode-button` becomes neutral white/chrome with small Aegean selected details.
+- `.universal-header-icon-control` uses neutral hover by default.
+- The header "New chat" hover should be graphite/neutral, not teal-filled.
+
+Composer:
+
+- `.answer-footer-search-pill` becomes a white floating capsule.
+- Use `border: 1px solid var(--border-strong)` with soft graphite shadow.
+- Remove green glow and heavy inset white highlight.
+- Focus state uses a restrained Aegean ring or border.
+- `.answer-footer-search-send` uses `--clinical-accent` and `--clinical-accent-hover`.
+- `.answer-footer-search-action` stays neutral.
+- `.answer-footer-search-chip` uses neutral surfaces with optional Aegean icons, not large tinted fills.
+
+Dark mode:
+
+- Keep black surfaces.
+- Composer uses `#040506`/`#101214` material, not silver glare.
+- Accent becomes `#4CCFD0`.
+- Dark chips and controls stay low-glare with clear contrast.
+
+### Phase 3 - Primitive Role Split
+
+Edit `src/components/ui-primitives.tsx`.
+
+Split roles:
+
+- `primaryControl` uses `--command` and `--command-hover`.
+- `evidenceSurface` uses `--clinical-accent`, `--clinical-accent-soft`, and `--clinical-accent-border`.
+- Success, warning, danger, and info surfaces use semantic tokens only.
+
+Expected outcome:
+
+- Primary command buttons no longer look clinical-accent green.
+- Evidence/source affordances no longer inherit command styling.
+- Semantic success is visually distinct from selected/evidence.
+
+### Phase 4 - Sidebar Refinement
+
+Edit `src/components/clinical-dashboard/ClinicalSidebar.tsx` and associated CSS.
+
+Sidebar shell:
+
+- Use `--surface-chrome` for the rail.
+- Use white/raised nested panels only where content needs elevation.
+- Keep borders cool grey.
+
+Brand:
+
+- Brand text is graphite.
+- Brand icon can use a small Aegean icon well.
+- Avoid making the brand block look like a green status badge.
+
+Primary CTA:
+
+- `.clinical-sidebar-primary` uses graphite command.
+- Hover deepens to `--command-hover`.
+- Avoid teal/green primary CTA styling.
+
+Navigation/tool states:
+
+- Default items are neutral.
+- Active item uses:
+ - white tile or very light chrome tile
+ - 2px Aegean left rail
+ - graphite label
+ - Aegean icon
+ - no broad teal fill
+- Collapsed active buttons follow the same pattern with border/rail/icon treatment.
+
+Status utilities:
+
+- Ready/connected/complete states use `--success`.
+- Tool availability or selected clinical modes use `--clinical-accent`.
+
+### Phase 5 - Header And Composer Wiring
+
+Edit `src/components/clinical-dashboard/master-search-header.tsx`.
+
+Header:
+
+- Selected mode icon uses `--clinical-accent`.
+- Mode pill itself remains neutral.
+- Active menu option should use a left rail, icon colour, or subtle border rather than a full accent wash.
+- Header utility buttons stay neutral.
+- Header New Chat uses command/graphite styling where it is a primary action.
+
+Composer:
+
+- Send button uses Aegean, not success green.
+- Attachment, scope, tools, and mode actions stay neutral until selected.
+- Selected chips use accent border or small icon colour, not filled teal blocks.
+- Text and placeholder colours use `--foreground`, `--muted-foreground`, and `--soft-foreground`.
+
+Mobile:
+
+- Keep the composer visually light, but with enough border definition against white.
+- Confirm footer safe-area spacing and no overlap with mobile navigation.
+
+### Phase 6 - Empty, Answer, Evidence, And Source States
+
+Edit as needed:
+
+- `src/components/clinical-dashboard/answer-status.tsx`
+- `src/components/ClinicalDashboard.tsx`
+- source/evidence cards or renderers that use `ui-primitives.tsx`
+
+Rules:
+
+- Empty state: white canvas, graphite heading, neutral starter cards, Aegean icons or rails only.
+- Evidence/source cards: neutral white cards with Aegean left rail or small status chip.
+- Completion/ready badges: success green.
+- Missing source/setup: warning amber.
+- Errors: destructive red.
+- Informational notices: info blue.
+
+Avoid:
+
+- green empty-state hero icons unless the state is complete/success
+- full accent-tinted answer cards
+- mixed blue/green evidence semantics
+
+### Phase 7 - Component Audit
+
+Search and classify every remaining use of:
+
+```text
+--clinical-chat-teal
+--clinical-chat-teal-soft
+--primary
+--emerald
+green-
+teal-
+bg-[var(--primary)]
+text-[var(--primary)]
+```
+
+For each usage, assign one role:
+
+- command
+- clinical accent
+- success
+- info
+- warning
+- danger
+- neutral
+
+Then migrate to the correct token.
+
+Do not replace mechanically. Some teal usages are correct clinical accent usages; many green usages should become success only or neutral.
+
+### Phase 8 - Accessibility And Contrast
+
+Run contrast checks for:
+
+- graphite on white
+- muted text on white
+- soft text on white
+- white on graphite command
+- Aegean on white
+- Aegean on accent soft
+- success on white
+- warning on white
+- danger on white
+- dark text on dark canvas
+- dark accent on dark surfaces
+
+Required minimums:
+
+- Body text: 4.5:1 or better.
+- Small UI labels: 4.5:1 or better unless purely decorative.
+- Large text and icon-only affordances: 3:1 or better.
+- Focus outlines: visible against adjacent background.
+
+Known selected values already pass spot checks, including:
+
+- `#101418` on white: strong body contrast.
+- `#475467` on white: strong secondary contrast.
+- `#667085` on white: acceptable soft text contrast.
+- `#0B6F86` on white and `#E7F6F8`: acceptable accent contrast.
+- `#0F7A49` on white: acceptable success contrast.
+
+### Phase 9 - Browser QA Matrix
+
+Use `npm run ensure` first, then verify the project identity through `/api/local-project-id`.
+
+Capture and review:
+
+- Light desktop dashboard.
+- Light mobile dashboard.
+- Dark desktop dashboard.
+- Dark mobile dashboard.
+- Sidebar expanded and collapsed.
+- Sidebar mobile drawer.
+- Header mode menu.
+- Composer focused, empty, with chips, and with long prompt text.
+- Empty state.
+- Generated answer with evidence/source cards.
+- Documents/search/results surfaces.
+- Settings/account/theme utility area if reachable.
+
+Specific visual checks:
+
+- No cream cast on the main canvas.
+- No large teal/green washed panels.
+- Primary command action reads graphite.
+- Send action reads Aegean.
+- Green appears only for success/ready/connected/complete.
+- Header and sidebar feel quieter than the main content.
+- Composer is the most polished object on the page.
+- Dark composer has no metallic glare.
+- No text overlap or mobile horizontal scroll.
+
+### Phase 10 - Verification Commands
+
+Recommended sequence after edits:
+
+```powershell
+npm run ensure
+git diff --check
+npm run verify:cheap
+npm run verify:ui
+```
+
+If `verify:ui` is too broad or already running in another process, run the smallest relevant Playwright targets first, then widen:
+
+```powershell
+npx playwright test tests/ui-smoke.spec.ts --project=chromium
+npx playwright test tests/ui-accessibility.spec.ts --project=chromium
+```
+
+If CSS or Tailwind class generation changes are extensive, also run:
+
+```powershell
+npm run build
+```
+
+Do not claim release readiness unless `npm run verify:release` is run successfully.
+
+## Acceptance Criteria
+
+The implementation is complete when:
+
+1. Light mode page canvas is true white.
+2. Cream/porcelain background tokens are removed from primary app chrome.
+3. Graphite is the primary command colour.
+4. Aegean is the clinical accent and send/evidence identity colour.
+5. Green is limited to success-only states.
+6. `--primary` is no longer used for both command controls and evidence surfaces.
+7. Sidebar active states use rail/border/icon treatment instead of broad teal fills.
+8. Header is calmer and neutral, with only small clinical-accent details.
+9. Composer is polished in light and dark mode.
+10. Empty, answer, evidence, and source states use role-correct colours.
+11. Desktop and mobile screenshots confirm the direction.
+12. UI verification and contrast checks pass, or any residual failures are documented as pre-existing or unrelated.
+
+## Implementation Notes
+
+- Keep the first implementation pass token-led and component-scoped.
+- Avoid introducing a parallel design system or new dependency.
+- Prefer CSS variable role tokens over one-off hex values.
+- Avoid broad layout changes unless a colour change exposes spacing or hierarchy problems.
+- Preserve the current black-polish dark mode while aligning names and semantics.
+- Update screenshots after the implementation so stale mockups do not mislead future review.
+
+## Final Recommendation
+
+Proceed with this palette and token architecture as the permanent direction.
+
+The app should become a crisp white clinical command surface with graphite controls and a disciplined Aegean accent. That combination is the cleanest, most premium, and most durable option for this product.
diff --git a/docs/redesign/crisp-white-colour-system-plan.md b/docs/redesign/crisp-white-colour-system-plan.md
new file mode 100644
index 000000000..6fee9f8a5
--- /dev/null
+++ b/docs/redesign/crisp-white-colour-system-plan.md
@@ -0,0 +1,202 @@
+# Crisp white colour system plan
+
+## Goal
+
+Replace the warm cream/porcelain light-mode direction with a cleaner, whiter, more polished clinical interface. The target is a premium white workspace: crisp like ChatGPT/Apple-style product surfaces, but still clinical, source-backed, and operational rather than decorative.
+
+The product is Clinical Guide: a source-backed clinical knowledge workspace for repeated question answering, document search, medication guidance, and safety review. The design job is to make the user trust the answer surface, understand source status quickly, and feel that the app is modern and precise.
+
+## Current design findings
+
+### Medium: the current light foundation still reads warm rather than crisp
+
+Evidence:
+- `src/app/globals.css:68` describes light mode as "porcelain workspace".
+- `src/app/globals.css:94` sets `--background: #f7f7f4`.
+- `src/app/globals.css:99-105` uses off-white raised/subtle/inset surfaces.
+
+Why it matters:
+- The user's newer direction is explicitly crisp white, not cream.
+- A warm base can look softer and more editorial, but this app needs to feel precise, clean, and instrument-grade.
+
+Recommended fix:
+- Move the light canvas to true white.
+- Use cool neutral rails and panels only where hierarchy is needed.
+- Let depth come from hairline borders, low-alpha graphite shadows, and spacing, not a tinted page background.
+
+Verification:
+- A full-page light screenshot should read white first, not ivory or mint.
+
+### Medium: teal is still doing too much visual work
+
+Evidence:
+- `src/app/globals.css:113-122` maps primary and clinical chat aliases to teal.
+- `src/components/clinical-dashboard/ClinicalSidebar.tsx:136` uses teal for the primary sidebar CTA.
+- `src/components/clinical-dashboard/master-search-header.tsx:719-725` uses teal in the main answer-mode control.
+
+Why it matters:
+- Teal should communicate clinical evidence, source state, selected mode, and send intent.
+- If the primary CTA, selected tile, source chip, icon tile, and composer all glow teal, the UI reads themed instead of premium.
+
+Recommended fix:
+- Use graphite for the strongest normal action.
+- Use teal as an instrument accent: selected state rail, source confidence, send, and evidence-backed marks.
+- Keep amber/red reserved for safety and setup, never for decoration.
+
+Verification:
+- In light mode, the dominant colours should be white, graphite, and cool neutral. Teal should appear as a deliberate signal.
+
+### Low: existing component hooks are good enough for a token-led implementation
+
+Evidence:
+- `src/app/globals.css:40-64` already exposes semantic Tailwind colour bridge tokens.
+- `src/components/clinical-dashboard/master-search-header.tsx:800-884` centralises header actions and the answer footer composer shell.
+- `src/components/clinical-dashboard/ClinicalSidebar.tsx:330` and `src/components/clinical-dashboard/ClinicalSidebar.tsx:422` centralise sidebar rails.
+
+Why it matters:
+- This should not need a component rewrite.
+- The safest implementation path is token replacement plus a few targeted material overrides.
+
+Recommended fix:
+- Apply the new colour system first in `:root`.
+- Then tune the sidebar, header, composer, empty state, answer cards, and source chips through existing class hooks.
+
+Verification:
+- The app should visually change without changing answer generation, routing, or data contracts.
+
+## Proposed design direction: Clinical White
+
+Clinical White is a clean white workspace with graphite command weight, nickel borders, and restrained clinical teal. It removes the cream page base and avoids broad mint washes.
+
+### Core tokens
+
+| Role | Token | Hex | Use |
+| --- | --- | --- | --- |
+| Canvas | `white-0` | `#FFFFFF` | Main app background |
+| Rail | `white-rail` | `#F7F8FA` | Sidebar/header bands, subtle separated regions |
+| Paper | `paper` | `#FFFFFF` | Cards, popovers, answer surfaces |
+| Raised | `raised` | `#FCFCFD` | Floating controls and composer |
+| Inset | `inset` | `#F1F3F5` | Search fields, subtle chip backgrounds |
+| Border | `line` | `#E5E7EB` | Default hairline |
+| Strong border | `line-strong` | `#D0D5DD` | Focused/selected outer lines |
+| Ink | `ink` | `#101418` | Primary text |
+| Graphite | `graphite` | `#111827` | Primary CTA, high-emphasis controls |
+| Muted text | `muted` | `#475467` | Secondary text |
+| Soft text | `soft` | `#667085` | Metadata, placeholders |
+| Clinical teal | `teal` | `#0B7A75` | Evidence, selected rail, send |
+| Soft teal | `teal-soft` | `#E6F7F5` | Low-emphasis evidence chips |
+| Information blue | `blue` | `#2563EB` | Document/search information where teal would imply evidence |
+| Safety amber | `amber` | `#A15C07` | Warnings and setup |
+| Critical red | `red` | `#B42318` | Safety-critical states |
+
+### Colour rules
+
+- Page background is true white.
+- Sidebars and header bands use `#F7F8FA`, not cream.
+- Normal elevated surfaces stay white, with nickel borders.
+- Graphite is the main command colour.
+- Teal is a signal, not a theme wash.
+- Blue is allowed for document/search metadata so teal stays clinical.
+- Amber/red are semantic only.
+
+## Type and spacing
+
+- Keep the existing system font stack for implementation safety.
+- Use compact, high-confidence headings: semibold, no negative letter spacing.
+- Use 8px radius for most controls/cards, 12px only for larger sheets/composer.
+- Reduce glow and blur in light mode. White UIs feel premium when details are exact, not when they are glossy.
+- Use clear vertical rhythm: dense enough for a clinical workspace, with generous breathing room around the composer and answer surface.
+
+## Signature element
+
+Use a "clinical focus rail":
+
+- A 2px teal rail appears only on the selected mode, active source group, or evidence-backed answer card.
+- The rail gives the design a memorable clinical instrument detail without tinting the whole page.
+- It is more precise than a soft teal background and should replace broad mint active fills where possible.
+
+## Mockup structure
+
+Desktop:
+
+```text
++ Sidebar rail --+-- White header ------------------------------+
+| Graphite CTA | Mode control Utility buttons |
+| Search +-----------------------------------------------+
+| Tools | |
+| Focus rail | Answer workspace on white canvas |
+| | Cards use nickel borders |
+| Account | |
++----------------+------------- Floating white composer ---------+
+```
+
+Mobile:
+
+```text
++--------------------------------+
+| Header: mode + new chat |
+| White canvas |
+| Answer cards with focus rail |
+| Source chips |
+| Floating white composer |
++--------------------------------+
+```
+
+## Implementation plan
+
+1. Approve this mockup direction.
+2. Replace the light `:root` palette in `src/app/globals.css`:
+ - `--background` to `#FFFFFF`.
+ - `--surface-subtle` to `#F7F8FA`.
+ - `--surface-inset` to `#F1F3F5`.
+ - borders to nickel greys.
+ - graphite as the primary command colour.
+3. Re-map clinical chat aliases:
+ - `--clinical-chat-teal` remains teal.
+ - `--clinical-chat-teal-soft` becomes a very pale clinical tint.
+ - primary CTA should be graphite unless the control is specifically source/evidence/send.
+4. Tune material selectors:
+ - `.edge-glass-header`
+ - `.universal-header`
+ - `.universal-header-mode-button`
+ - `.universal-header-icon-control`
+ - `.answer-footer-search-pill`
+ - `.answer-footer-search-action`
+ - `.answer-footer-search-chip`
+5. Tune clinical hooks:
+ - `.clinical-sidebar-primary`
+ - `.clinical-sidebar-search-input`
+ - `.clinical-sidebar-secondary`
+ - `.clinical-sidebar-tool-tile`
+ - `.answer-empty-state`
+ - `.answer-empty-icon`
+ - `.answer-empty-action`
+6. Add the clinical focus rail to selected/evidence cards where the component structure allows it without behavioural changes.
+7. Verify dark mode after light changes so black polish does not inherit white material rules.
+
+## Verification plan
+
+- Light desktop screenshot: main dashboard.
+- Light mobile screenshot: 390px wide.
+- Dark desktop screenshot: regression check.
+- Route smoke for the mockup.
+- `git diff --check`.
+- Targeted ESLint on changed mockup route.
+- `npm run typecheck` if no existing repo-owned typecheck is already running.
+- Contrast spot checks for text, muted text, teal chip, graphite CTA, amber warning, and red critical state.
+
+## Acceptance criteria
+
+- Light mode reads crisp white, not cream, beige, or mint.
+- The app feels cleaner and more premium without becoming blank.
+- Graphite carries command emphasis.
+- Teal communicates clinical evidence/source/action only.
+- Borders and shadows create enough hierarchy on a white canvas.
+- Mobile stays clean with no horizontal overflow.
+- Dark mode remains a paired black-polish system.
+
+## Self-critique and revision
+
+Initial idea: use a faint cool-grey app canvas behind white cards.
+
+Revision: the user asked for crisp white, so the final proposal makes the true app canvas `#FFFFFF` and uses cool grey only for rails, fields, and nested regions. This is a stricter, cleaner direction and a better match for the requested Apple/ChatGPT-inspired polish.
diff --git a/docs/redesign/permanent-colour-direction.md b/docs/redesign/permanent-colour-direction.md
new file mode 100644
index 000000000..4a52a4e1d
--- /dev/null
+++ b/docs/redesign/permanent-colour-direction.md
@@ -0,0 +1,192 @@
+# Permanent colour direction
+
+## Decision
+
+Adopt **Clinical White / Aegean Graphite** as the permanent colour direction.
+
+This is a crisp white, graphite-led interface with a cool blue-teal clinical accent. It replaces the warm cream/porcelain base and demotes green to success-only states.
+
+## Why this direction wins
+
+The app is a source-backed clinical workspace. It should feel precise, calm, premium, and operational. The interface should not feel like a generic medical brand, a mint healthcare template, or a soft editorial product.
+
+The strongest long-term direction is:
+
+- White for clarity.
+- Graphite for command and product weight.
+- Aegean blue-teal for clinical evidence and source confidence.
+- Green only for completion/success.
+- Amber and red only for safety states.
+
+This keeps the app clean and crisp while preserving a clinical identity.
+
+## Final palette
+
+### Light mode
+
+| Role | Token | Hex | Purpose |
+| --- | --- | --- | --- |
+| Canvas | `--background` | `#FFFFFF` | Main app canvas; no cream tint |
+| Rail | `--surface-subtle` | `#F7F8FA` | Sidebar rail, header band, quiet nested areas |
+| Surface | `--surface` | `#FFFFFF` | Cards, menus, answer panels |
+| Raised surface | `--surface-raised` | `#FCFCFD` | Composer, floating controls |
+| Inset surface | `--surface-inset` | `#F1F4F6` | Inputs, recessed chips, skeletons |
+| Border | `--border` | `#E5E7EB` | Default hairline |
+| Strong border | `--border-strong` | `#CDD5DF` | Active/focused boundaries |
+| Text | `--text` | `#101418` | Body text |
+| Heading | `--text-heading` | `#080B0F` | High-emphasis headings |
+| Muted text | `--text-muted` | `#475467` | Secondary text |
+| Soft text | `--text-soft` | `#667085` | Metadata and placeholders |
+| Command | `--command` | `#111827` | Primary actions and high-emphasis command controls |
+| Command hover | `--command-hover` | `#0B1220` | Hover/pressed command state |
+| Clinical accent | `--clinical-accent` | `#0B6F86` | Evidence, selected mode, source confidence, send action |
+| Clinical accent hover | `--clinical-accent-hover` | `#095D70` | Hover/pressed clinical action |
+| Clinical accent soft | `--clinical-accent-soft` | `#E7F6F8` | Small evidence chips and icon tiles only |
+| Clinical accent border | `--clinical-accent-border` | `#B9E4EA` | Selected/evidence borders |
+| Info | `--info` | `#2563EB` | Document/search information where clinical confidence is not implied |
+| Success | `--success` | `#0F7A49` | Ready, complete, connected, passed |
+| Warning | `--warning` | `#A15C07` | Setup, caution, review required |
+| Danger | `--danger` | `#B42318` | Critical/safety states |
+
+### Dark mode
+
+Keep the black-polish direction and pair it with a brighter cyan-blue accent.
+
+| Role | Token | Hex |
+| --- | --- | --- |
+| Canvas | `--background` | `#060708` |
+| Surface | `--surface` | `#101214` |
+| Raised surface | `--surface-raised` | `#171A1D` |
+| Inset surface | `--surface-inset` | `#040506` |
+| Text | `--text` | `#F5F7F7` |
+| Muted text | `--text-muted` | `#A7B0AD` |
+| Clinical accent | `--clinical-accent` | `#4CCFD0` |
+| Clinical accent soft | `--clinical-accent-soft` | `#12383B` |
+| Success | `--success` | `#7DE0A3` |
+| Warning | `--warning` | `#F0C15A` |
+| Danger | `--danger` | `#FF8D96` |
+
+## Role contract
+
+Do not map every important UI element to the same accent colour.
+
+```css
+--command: #111827;
+--command-hover: #0B1220;
+
+--clinical-accent: #0B6F86;
+--clinical-accent-hover: #095D70;
+--clinical-accent-soft: #E7F6F8;
+--clinical-accent-border: #B9E4EA;
+
+--success: #0F7A49;
+```
+
+Mapping:
+
+- Primary command buttons: `--command`
+- Sidebar `New chat`: `--command`
+- Selected mode icon: `--clinical-accent`
+- Send button: `--clinical-accent`
+- Evidence/source state: `--clinical-accent`
+- Small evidence chip/icon backgrounds: `--clinical-accent-soft`
+- Ready/complete/connected/passed: `--success`
+- Document/search metadata: `--info`
+- Warnings: `--warning`
+- Critical states: `--danger`
+
+## Element decisions
+
+### Sidebar
+
+- Background: rail `#F7F8FA`.
+- Brand tile: small clinical accent icon on soft accent.
+- `New chat`: graphite command button.
+- Active item: white card with a 2px clinical accent rail.
+- Tool icons: neutral by default, clinical accent only when active or clinically meaningful.
+
+### Header
+
+- Header material: white or near-white glass, low shadow, nickel border.
+- Mode button: neutral white surface with a small clinical accent icon.
+- Header action buttons: neutral/graphite, not green.
+- Do not use broad accent backgrounds in the header.
+
+### Composer
+
+- White floating capsule.
+- Nickel border.
+- Graphite text.
+- Soft graphite shadow.
+- Send button uses clinical accent.
+- Remove green glow and broad teal gradients.
+
+### Empty state
+
+- White canvas.
+- Graphite heading.
+- Neutral starter cards.
+- Accent appears only in icons or a 2px focus rail.
+- No washed green/mint cards.
+
+### Evidence and sources
+
+- Evidence-backed answer panels use a 2px clinical accent rail.
+- Evidence chips can use clinical accent soft.
+- Source readiness that means "success" uses success green, not clinical accent.
+
+### Status colours
+
+- Green is only success.
+- Amber is only caution/setup/review.
+- Red is only critical/safety.
+- Blue is information/document/search.
+
+## Contrast check
+
+Spot checks against the final palette:
+
+| Pair | Ratio |
+| --- | --- |
+| Ink on white | 18.50:1 |
+| Muted on white | 7.69:1 |
+| Soft on white | 4.97:1 |
+| White on graphite | 17.74:1 |
+| Clinical accent on white | 5.78:1 |
+| Clinical accent on soft accent | 5.21:1 |
+| Success on white | 5.38:1 |
+| Warning on white | 5.19:1 |
+| Danger on white | 6.57:1 |
+| Dark text on dark canvas | 18.75:1 |
+| Dark accent on dark surface | 9.96:1 |
+
+## Rejected directions
+
+### Warm porcelain
+
+Rejected because it still reads cream/ivory and softens the app too much.
+
+### Green clinical
+
+Rejected because it feels generic healthcare and gives the same colour too many meanings.
+
+### Blue corporate SaaS
+
+Rejected because it loses the clinical/source-backed identity and feels less distinctive.
+
+### Pure monochrome
+
+Rejected because the app still needs a visible evidence/source signal.
+
+## Implementation order
+
+1. Add command and clinical accent tokens to `src/app/globals.css`.
+2. Replace the light root palette with the final crisp white values.
+3. Keep existing `--primary` temporarily mapped to command for backwards compatibility.
+4. Move evidence/source styles from `--primary` to `--clinical-accent`.
+5. Update sidebar/header/composer/empty-state hooks.
+6. Verify light desktop, light mobile, dark desktop, and generated-answer states.
+
+## Final rule
+
+The app should read as **white, graphite, and precise blue-teal**. Green should only appear when the system is saying something has succeeded.
diff --git a/docs/redesign/premium-colour-system-plan.md b/docs/redesign/premium-colour-system-plan.md
new file mode 100644
index 000000000..e94fae685
--- /dev/null
+++ b/docs/redesign/premium-colour-system-plan.md
@@ -0,0 +1,158 @@
+# Premium colour system plan
+
+## Goal
+
+Create a light mode that feels modern, premium, calm, and clinically trustworthy without becoming sterile, washed out, or over-teal. Preserve the existing black-polish direction for dark mode, but make both modes feel like one system.
+
+The product context is Clinical Guide: a source-backed clinical workspace used for repeated question answering, document review, medication guidance, and safety checks. The interface should feel like a polished professional tool, not a marketing page.
+
+## Current design findings
+
+### Medium: light mode is still too dependent on teal/mint
+
+Evidence:
+- `src/app/globals.css` defines the global light tokens and currently makes `--clinical-chat-teal-soft`, sidebar active states, empty-state cards, mode controls, and composer accents all read from the same teal family.
+- `src/components/clinical-dashboard/ClinicalSidebar.tsx` and `src/components/clinical-dashboard/answer-status.tsx` now expose styling hooks, but the system still needs a more disciplined token contract.
+
+Why it matters:
+- When the background, active controls, icon tiles, and status chips all share the same green-teal family, light mode reads themed rather than premium.
+- Teal should signal clinical action, evidence, and source state. It should not be the whole environment.
+
+Fix:
+- Move light mode to a neutral porcelain/graphite foundation.
+- Keep teal as an instrument accent for selected mode, source state, send, and clinical evidence.
+- Use amber/red only for setup/safety/escalation states.
+
+Verification:
+- Desktop and mobile screenshots should read as white/graphite first, teal second.
+
+### Medium: light surfaces need clearer material hierarchy
+
+Evidence:
+- The main hierarchy is shared between `globals.css`, `ui-primitives.tsx`, and dashboard-specific overrides in `master-search-header.tsx`, `ClinicalSidebar.tsx`, and `answer-status.tsx`.
+- Existing cards, composer, and header use similar borders and shadows, so light mode can look flat or generically frosted.
+
+Why it matters:
+- Premium light UIs depend on precise separation: canvas, paper, floating glass, selected control, and warning state need distinct surface rules.
+
+Fix:
+- Define four light surfaces: canvas, paper, glass, elevated, and inset.
+- Use low-alpha graphite shadows, not teal shadows, for normal elevation.
+- Reserve colored shadows for focused/selected controls only.
+
+Verification:
+- Empty-state cards should sit above the canvas without looking boxed-in.
+- The composer should feel like a floating white glass tool, not a bright pill or a heavy panel.
+
+### Low: dark mode can regress when base header/composer rules are changed
+
+Evidence:
+- `globals.css` has shared `.edge-glass-header`, `.universal-header`, and `.answer-footer-search-*` selectors plus `.dark` overrides.
+
+Why it matters:
+- Light-mode improvements can accidentally bleed into dark mode if base selectors are changed without matching `.dark` overrides.
+
+Fix:
+- Every material-level change to global base selectors must have a paired `.dark` review.
+- Add a final dark screenshot after applying the light scheme.
+
+Verification:
+- Dark desktop screenshot: header remains black glass, composer remains black-polished, no white glare.
+
+## Proposed colour system
+
+### Light mode: Clinical Porcelain
+
+- Canvas: `#F7F7F4`
+- Paper: `#FFFFFF`
+- Raised paper: `#FCFCFA`
+- Graphite ink: `#111714`
+- Muted graphite: `#53605A`
+- Hairline border: `#DFDFD8`
+- Instrument teal: `#0F766E`
+- Soft teal: `#E6F2EF`
+- Safety amber: `#8F5408`
+- Critical red: `#B23A48`
+- Optional cool info: `#2F6F91`
+
+Design role:
+- Graphite primary CTA and text give the Apple/ChatGPT-style premium feel.
+- Teal is used for clinical/source affordances only.
+- Warm porcelain prevents the app from reading as hospital-mint or generic SaaS blue-grey.
+
+### Dark mode: Obsidian Glass
+
+- Canvas: `#070808`
+- Surface: `#101214`
+- Raised surface: `#171A1D`
+- Glass edge: `rgba(255,255,255,0.08)`
+- Text: `#F4F7F6`
+- Muted text: `#A7B0AD`
+- Instrument teal: `#4CCFD0`
+- Soft teal: `#12383B`
+- Safety amber: `#F0C15A`
+- Critical red: `#FF8D96`
+
+Design role:
+- Dark remains the black-polished system.
+- The same semantic accents are preserved, but lifted for contrast.
+
+## Type and spacing direction
+
+- Keep the existing app font stack for implementation safety.
+- Use weight, size, and spacing to create polish rather than introducing a new font dependency.
+- Main answer/empty-state headings should use compact, high-confidence typography: semibold, no negative tracking.
+- Utility labels stay small, uppercase only where they label system groups such as `Sources`, `Safety`, or `Mode`.
+
+## Signature element
+
+Use a “frosted clinical tray” for the composer and header controls:
+- White/dark glass surface.
+- Single hairline border.
+- Soft graphite elevation.
+- Teal send/action affordance.
+- No decorative orbs or broad gradients.
+
+This is the memorable material treatment. Everything else should be quiet.
+
+## Implementation sequence
+
+1. Approve a mockup direction.
+2. Replace light `:root` tokens in `src/app/globals.css` with the Clinical Porcelain palette.
+3. Pair every base material selector with `.dark` review/overrides:
+ - `.edge-glass-header`
+ - `.universal-header`
+ - `.universal-header-mode-button`
+ - `.universal-header-icon-control`
+ - `.answer-footer-search-pill`
+ - `.answer-footer-search-action`
+ - `.answer-footer-search-chip`
+4. Keep sidebar and empty-state hooks:
+ - `.clinical-sidebar-primary`
+ - `.clinical-sidebar-search-input`
+ - `.clinical-sidebar-secondary`
+ - `.clinical-sidebar-tool-tile`
+ - `.answer-empty-state`
+ - `.answer-empty-icon`
+ - `.answer-empty-action`
+5. Apply the palette in one pass to dashboard surfaces and source/document panels.
+6. Run screenshots:
+ - Light desktop home
+ - Light mobile home
+ - Dark desktop home
+ - Documents page light
+ - Answer generated light
+7. Run checks:
+ - `git diff --check`
+ - `npm run check:runtime`
+ - `npm run typecheck`
+ - Focused Playwright screenshot smoke if install state is healthy.
+
+## Acceptance criteria
+
+- Light mode reads neutral premium first, clinical teal second.
+- No large green/mint wash over the canvas.
+- Header, sidebar, empty state, and composer feel like the same material system.
+- Warning/setup states are readable and visually separate from teal action states.
+- Dark mode does not inherit light glass or white glare.
+- No horizontal overflow on 390px mobile and 1280px desktop.
diff --git a/eslint.config.mjs b/eslint.config.mjs
index cea1650b8..db058f597 100644
--- a/eslint.config.mjs
+++ b/eslint.config.mjs
@@ -12,6 +12,10 @@ const eslintConfig = defineConfig([
"out/**",
"build/**",
"coverage/**",
+ "output/**",
+ ".codex-screenshots/**",
+ ".qa-smoke/**",
+ ".tmp-playwright-*/**",
".claude/**",
"playwright-report/**",
"test-results/**",
diff --git a/next.config.ts b/next.config.ts
index 4f15443cc..f4ddb45c0 100644
--- a/next.config.ts
+++ b/next.config.ts
@@ -40,6 +40,9 @@ const securityHeaders = [
const nextConfig: NextConfig = {
devIndicators: false,
+ experimental: {
+ cpus: 1,
+ },
poweredByHeader: false,
turbopack: {
root: projectRoot,
diff --git a/package.json b/package.json
index c55c1ad54..b8a99eaec 100644
--- a/package.json
+++ b/package.json
@@ -11,17 +11,17 @@
"dev": "node scripts/dev-free-port.mjs",
"preinstall": "node scripts/check-node-engine.cjs",
"ensure": "node scripts/ensure-local-server.mjs",
- "build": "next build",
+ "build": "node scripts/guard-next-build.mjs && node --max-old-space-size=8192 ./node_modules/next/dist/bin/next build --webpack",
"start": "node scripts/dev-free-port.mjs start",
- "lint": "node --max-old-space-size=8192 ./node_modules/eslint/bin/eslint.js",
- "typecheck": "tsc --noEmit",
- "test": "vitest run",
- "test:coverage": "vitest run --coverage",
- "test:e2e": "node ./node_modules/playwright/cli.js test",
- "test:e2e:all": "node ./node_modules/playwright/cli.js test",
- "test:e2e:accessibility": "node ./node_modules/playwright/cli.js test tests/ui-accessibility.spec.ts --project=chromium",
- "test:e2e:chromium": "node ./node_modules/playwright/cli.js test --project=chromium",
- "test:e2e:visual": "node ./node_modules/playwright/cli.js test --config=playwright.visual.config.ts",
+ "lint": "node --max-old-space-size=8192 ./node_modules/eslint/bin/eslint.js src tests scripts worker supabase playwright eslint.config.mjs next.config.ts playwright.config.ts playwright.visual.config.ts vitest.config.mts --no-error-on-unmatched-pattern",
+ "typecheck": "node ./node_modules/typescript/bin/tsc --noEmit",
+ "test": "node scripts/run-vitest.mjs run --reporter=dot",
+ "test:coverage": "node scripts/run-vitest.mjs run --coverage",
+ "test:e2e": "node scripts/run-playwright.mjs",
+ "test:e2e:all": "node scripts/run-playwright.mjs",
+ "test:e2e:accessibility": "node scripts/run-playwright.mjs tests/ui-accessibility.spec.ts --project=chromium",
+ "test:e2e:chromium": "node scripts/run-playwright.mjs --project=chromium",
+ "test:e2e:visual": "node scripts/run-playwright.mjs --config=playwright.visual.config.ts",
"verify:cheap": "npm run check:runtime && npm run lint && npm run typecheck && npm run test",
"verify:ui": "npm run check:runtime && npm run test:e2e:chromium",
"verify:release": "npm run check:runtime && npm run lint && npm run typecheck && npm run test && npm run build && npm run test:e2e && npm run check:production-readiness && npm run eval:quality:release",
@@ -52,12 +52,12 @@
"reindex:cleanup-staged": "tsx scripts/cleanup-abandoned-reindex-generations.ts",
"supabase:recovery-status": "tsx scripts/supabase-recovery-status.ts",
"promote:query-misses": "tsx scripts/promote-query-misses.ts",
- "eval:rag": "tsx scripts/eval-rag.ts",
- "eval:quality": "tsx scripts/eval-quality.ts",
+ "eval:rag": "node scripts/run-eval-safe.mjs scripts/eval-rag.ts",
+ "eval:quality": "node scripts/run-eval-safe.mjs scripts/eval-quality.ts",
"eval:quality:release": "npm run eval:quality -- --fail-on-threshold --source-metadata-debt docs/release-source-metadata-debt-2026-06-30.json",
- "eval:retrieval": "tsx scripts/eval-retrieval.ts",
- "eval:retrieval:quality": "tsx scripts/eval-retrieval.ts --mode quality",
- "eval:retrieval:latency": "tsx scripts/eval-retrieval.ts --mode latency --case-timeout-ms 25000 --p90-ms 20000",
+ "eval:retrieval": "node scripts/run-eval-safe.mjs scripts/eval-retrieval.ts",
+ "eval:retrieval:quality": "node scripts/run-eval-safe.mjs scripts/eval-retrieval.ts --mode quality",
+ "eval:retrieval:latency": "node scripts/run-eval-safe.mjs scripts/eval-retrieval.ts --mode latency --case-timeout-ms 25000 --p90-ms 20000",
"eval:search": "tsx scripts/eval-search.ts",
"eval:search:api": "tsx scripts/eval-search-api.ts",
"retrieval:health": "tsx scripts/retrieval-health.ts",
diff --git a/playwright.config.ts b/playwright.config.ts
index 1d3a04371..73b3ee1e4 100644
--- a/playwright.config.ts
+++ b/playwright.config.ts
@@ -7,6 +7,7 @@ export default defineConfig({
testDir: "./tests",
testMatch: /.*ui-(smoke|stress|accessibility|tools)\.spec\.ts/,
timeout: 60_000,
+ retries: process.env.CI ? 1 : 0,
expect: {
timeout: 10_000,
},
diff --git a/public/mockups/crisp-white-colour-system-desktop.png b/public/mockups/crisp-white-colour-system-desktop.png
new file mode 100644
index 000000000..5c256d8b1
Binary files /dev/null and b/public/mockups/crisp-white-colour-system-desktop.png differ
diff --git a/public/mockups/crisp-white-colour-system-mobile.png b/public/mockups/crisp-white-colour-system-mobile.png
new file mode 100644
index 000000000..d4d3e0aee
Binary files /dev/null and b/public/mockups/crisp-white-colour-system-mobile.png differ
diff --git a/public/mockups/premium-colour-system-mobile.png b/public/mockups/premium-colour-system-mobile.png
new file mode 100644
index 000000000..19143a5f8
Binary files /dev/null and b/public/mockups/premium-colour-system-mobile.png differ
diff --git a/scripts/backfill-source-metadata.ts b/scripts/backfill-source-metadata.ts
index 7f2543e97..8f6a13c31 100644
--- a/scripts/backfill-source-metadata.ts
+++ b/scripts/backfill-source-metadata.ts
@@ -71,9 +71,6 @@ function titleWithoutExtension(fileName: string) {
}
function publisherCodeFor(document: DocumentRow, text = "") {
- if (/\bBM[J)]\s+Best\s+Practice\b/i.test(text) || /\bStraight\s+to\s+the\s+point\s+of\s+care\b/i.test(text)) {
- return "BMJ";
- }
const haystack = `${document.file_name} ${document.title} ${document.source_path ?? ""}`;
const parentheticalCodes = [...haystack.matchAll(/\(([A-Z]{2,8})\)/g)].map((match) => match[1]);
for (const code of parentheticalCodes) {
@@ -82,6 +79,9 @@ function publisherCodeFor(document: DocumentRow, text = "") {
for (const code of Object.keys(publisherByCode).sort((a, b) => b.length - a.length)) {
if (new RegExp(`(?:^|[\\\\/\\s])${code}(?:[\\\\/\\s]|$)`, "i").test(haystack)) return code;
}
+ if (/\bBM[J)]\s+Best\s+Practice\b/i.test(text) || /\bStraight\s+to\s+the\s+point\s+of\s+care\b/i.test(text)) {
+ return "BMJ";
+ }
return null;
}
@@ -200,14 +200,41 @@ function parseClinicalDate(raw: string, options: { endOfMonth?: boolean } = {})
function firstMatchDate(text: string, labels: string[], endOfMonth: boolean) {
const datePattern =
"([0-3]?\\d[/-][01]?\\d[/-]20\\d{2}|[01]?\\d[/-]20\\d{2}|(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|Jun(?:e)?|Jul(?:y)?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\\s+[0-3]?\\d,?\\s+20\\d{2}|(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|Jun(?:e)?|Jul(?:y)?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\\s+20\\d{2}|[0-3]?\\d\\s+(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|Jun(?:e)?|Jul(?:y)?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\\s+20\\d{2})";
+ const labelSeparator = "[\\s:;,*()\\-]*";
for (const label of labels) {
- const pattern = new RegExp(`${label}\\s*:?\\s*${datePattern}`, "i");
+ const pattern = new RegExp(`${label}${labelSeparator}${datePattern}`, "i");
const match = text.match(pattern);
if (match) {
const parsed = parseClinicalDate(match[1], { endOfMonth });
if (parsed) return { date: parsed, raw: normalizeWhitespace(match[0]) };
}
- if (/^(?:Review Due|Revision Due)$/i.test(label)) {
+
+ if (/^(?:Review Due|Revision Due|Revision Date|Next Review|Review Date)$/i.test(label)) {
+ const monthThenYearPattern = new RegExp(
+ `${label}[\\s\\S]{0,100}?\\b(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|Jun(?:e)?|Jul(?:y)?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\\b[\\s\\S]{0,50}?\\b(20\\d{2})\\b`,
+ "i",
+ );
+ const monthThenYearMatch = text.match(monthThenYearPattern);
+ if (monthThenYearMatch) {
+ const parsed = parseClinicalDate(`${monthThenYearMatch[1]} ${monthThenYearMatch[2]}`, { endOfMonth });
+ if (parsed) return { date: parsed, raw: normalizeWhitespace(monthThenYearMatch[0]) };
+ }
+ }
+
+ if (
+ /^(?:Review Due|Revision Due|Revision Date|Next Review|Review Date|Last Reviewed|Authorisation date|Published date|First Issued|Approved by|Endorsed by|Authorised by)$/i.test(
+ label,
+ )
+ ) {
+ const nearLabelPattern = new RegExp(`${label}[\\s\\S]{0,120}?${datePattern}`, "i");
+ const nearLabelMatch = text.match(nearLabelPattern);
+ if (nearLabelMatch) {
+ const parsed = parseClinicalDate(nearLabelMatch[1], { endOfMonth });
+ if (parsed) return { date: parsed, raw: normalizeWhitespace(nearLabelMatch[0]) };
+ }
+ }
+
+ if (/^(?:Review Due|Revision Due|Revision Date|Review Date)$/i.test(label)) {
const labelIndex = text.toLowerCase().indexOf(label.toLowerCase());
if (labelIndex >= 0) {
const window = text.slice(labelIndex, labelIndex + 320);
@@ -235,8 +262,30 @@ function firstMatchDate(text: string, labels: string[], endOfMonth: boolean) {
return null;
}
+function standaloneReviewDate(text: string) {
+ const datePattern =
+ "([0-3]?\\d[/-][01]?\\d[/-]20\\d{2}|[01]?\\d[/-]20\\d{2}|(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|Jun(?:e)?|Jul(?:y)?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\\s+[0-3]?\\d,?\\s+20\\d{2}|(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|Jun(?:e)?|Jul(?:y)?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\\s+20\\d{2}|[0-3]?\\d\\s+(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|Jun(?:e)?|Jul(?:y)?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\\s+20\\d{2})";
+ const reviewedThenReview = text.match(new RegExp(`\\bReviewed\\s+${datePattern}[\\s\\S]{0,100}?\\bReview\\s+${datePattern}`, "i"));
+ if (reviewedThenReview?.[2]) {
+ const parsed = parseClinicalDate(reviewedThenReview[2], { endOfMonth: true });
+ if (parsed) return { date: parsed, raw: normalizeWhitespace(reviewedThenReview[0]) };
+ }
+
+ const review = text.match(new RegExp(`\\bReview\\s*[:,]?\\s*${datePattern}`, "i"));
+ if (review?.[1]) {
+ const parsed = parseClinicalDate(review[1], { endOfMonth: true });
+ if (parsed) return { date: parsed, raw: normalizeWhitespace(review[0]) };
+ }
+
+ return null;
+}
+
function extractDates(text: string) {
- const review = firstMatchDate(text, ["Review Due", "Revision Due", "Review Date", "Next Review"], true);
+ const review = firstMatchDate(
+ text,
+ ["Review Due", "Revision Due", "Revision Date", "Review Date", "Next Review"],
+ true,
+ ) ?? standaloneReviewDate(text);
const publication =
firstMatchDate(
text,
@@ -245,6 +294,9 @@ function extractDates(text: string) {
"Published date",
"First Issued",
"Date Compiled",
+ "Date of Issue",
+ "Date First Issued",
+ "Issue Date",
"Last updated",
"Last Reviewed",
"Authorised by",
@@ -322,17 +374,17 @@ function clinicalValidationEvidenceFor(args: {
{
type: "committee_endorsement",
pattern:
- /\b(?:committee\/consumer\s+endorsed\s+by|endorsed\s+by|endorsed)\b[\s\S]{0,260}\b(?:committee|clinical|governance|safety|quality|risk|drug|therapeutics|executive|service\s+director|director|co-?director|nurse\s+director|medical\s+director|commissioning|assurance|group|DONM|DCS|CPC|HoLAA)\b/i,
+ /\b(?:committee\/consumer\s+endorsed\s+by|endorsed\s+by|endorsed)\b[\s\S]{0,260}\b(?:committee|clinical|governance|safety|quality|risk|drug|therapeutics|executive|service\s+director|director|co-?director|nurse\s+director|medical\s+director|head\s+of\s+department|HOD|NUM|CNC|CN|consultant|physiotherapy|pharmacy|haematology|respiratory|transfusion|commissioning|assurance|group|DONM|DCS|CPC|HoLAA)\b/i,
},
{
type: "committee_approval",
pattern:
- /\b(?:approved\s+by|approval\s+by|approved)\b[\s\S]{0,260}\b(?:committee|clinical|governance|safety|quality|risk|drug|therapeutics|executive|service\s+director|director|co-?director|nurse\s+director|medical\s+director|commissioning|assurance|group|DONM|DCS|CPC|HoLAA)\b/i,
+ /\b(?:approved\s+by|approval\s+by|approved)\b[\s\S]{0,260}\b(?:committee|clinical|governance|safety|quality|risk|drug|therapeutics|executive|service\s+director|director|co-?director|nurse\s+director|medical\s+director|head\s+of\s+department|HOD|NUM|CNC|CN|consultant|physiotherapy|pharmacy|haematology|respiratory|transfusion|commissioning|assurance|group|DONM|DCS|CPC|HoLAA)\b/i,
},
{
type: "authorisation",
pattern:
- /\b(?:authorisation|authorised\s+by|authorized\s+by|executive\s+sponsor)\b[\s\S]{0,300}\b(?:committee|clinical|governance|safety|quality|risk|drug|therapeutics|executive|service\s+director|director|co-?director|nurse\s+director|medical\s+director|sponsor|commissioning|assurance|group|DONM|DCS|CPC|HoLAA)\b/i,
+ /\b(?:authorisation|authorised\s+by|authorized\s+by|executive\s+sponsor)\b[\s\S]{0,300}\b(?:committee|clinical|governance|safety|quality|risk|drug|therapeutics|executive|service\s+director|director|co-?director|nurse\s+director|medical\s+director|head\s+of\s+department|HOD|NUM|CNC|CN|consultant|physiotherapy|pharmacy|haematology|respiratory|transfusion|sponsor|commissioning|assurance|group|DONM|DCS|CPC|HoLAA)\b/i,
},
{
type: "policy_sponsor",
@@ -342,7 +394,7 @@ function clinicalValidationEvidenceFor(args: {
{
type: "document_control_owner",
pattern:
- /\b(?:document\s+owner|policy\s+owner|procedure\s+owner)\b[\s\S]{0,180}\b(?:clinical|medical|nursing|pharmacy|mental\s+health|service|director|committee)\b/i,
+ /\b(?:document\s+owner|policy\s+owner|procedure\s+owner)\b[\s\S]{0,180}\b(?:clinical|medical|nursing|pharmacy|mental\s+health|service|director|committee|head\s+of\s+department|HOD|NUM|CNC|CN|consultant|physiotherapy|haematology|respiratory|transfusion)\b/i,
},
];
@@ -410,7 +462,8 @@ function deriveMetadata(document: DocumentRow, text: string, quality: QualityRow
const changedKeys: string[] = [];
const publisherCode = publisherCodeFor(document, text);
const publisher = publisherCode ? publisherByCode[publisherCode] : null;
- const dates = extractDates(text);
+ const extractedDates = extractDates(text);
+ const dates = publisherCode === "BMJ" ? { ...extractedDates, review: null } : extractedDates;
const documentStatus = documentStatusFor(dates, publisherCode);
const existingValidation = String(metadata.clinical_validation_status ?? "unverified");
const clinicalValidation = clinicalValidationEvidenceFor({
diff --git a/scripts/check-document-label-coverage.ts b/scripts/check-document-label-coverage.ts
index a44bccd7e..c5d49ab08 100644
--- a/scripts/check-document-label-coverage.ts
+++ b/scripts/check-document-label-coverage.ts
@@ -123,7 +123,7 @@ async function loadAllowlist(path: string | undefined) {
return new Set(parseAllowlistValue(raw));
}
-async function fetchAll(
+async function fetchAll(
supabase: SupabaseAdmin,
table: "documents" | "document_labels",
select: string,
@@ -146,8 +146,7 @@ async function fetchAll(
const nextRows = data ?? [];
rows.push(...nextRows);
if (nextRows.length < pageSize) break;
- const lastRow = nextRows[nextRows.length - 1] as { id?: string };
- const lastId = lastRow?.id;
+ const lastId = nextRows[nextRows.length - 1]?.id;
if (!lastId || lastId === cursor) break;
cursor = lastId;
}
@@ -163,6 +162,8 @@ function countByLabelType(labels: LabelRow[]) {
return Object.fromEntries([...counts.entries()].sort());
}
+const smartV2LabelTypes = new Set(["clinical_action", "care_phase", "document_intent", "content_feature"]);
+
async function main() {
const args = parseArgs(process.argv.slice(2));
if (args.help) {
@@ -186,8 +187,11 @@ async function main() {
const documentTypeDocumentIds = new Set(
labels.filter((label) => label.label_type === "document_type").map((label) => label.document_id),
);
+ const smartV2Labels = labels.filter((label) => smartV2LabelTypes.has(label.label_type));
+ const smartV2DocumentIds = new Set(smartV2Labels.map((label) => label.document_id));
const missingGenerated = [...documentIds].filter((id) => !generatedDocumentIds.has(id));
+ const missingSmartV2 = [...documentIds].filter((id) => !smartV2DocumentIds.has(id));
const allowedSiteMissingDocs = [...allowedSiteMissing].filter(
(id) => !siteDocumentIds.has(id) && documentIds.has(id),
);
@@ -208,10 +212,15 @@ async function main() {
indexed_without_generated: missingGenerated.length,
indexed_without_site: missingSite.length,
indexed_without_document_type: missingDocumentType.length,
+ smart_v2_label_rows: smartV2Labels.length,
+ smart_v2_documents: smartV2DocumentIds.size,
+ indexed_without_smart_v2: missingSmartV2.length,
labels_by_type: countByLabelType(labels),
+ smart_v2_labels_by_type: countByLabelType(smartV2Labels),
sample_missing_generated: missingGenerated.slice(0, 10),
sample_missing_site: missingSite.slice(0, 10),
sample_missing_document_type: missingDocumentType.slice(0, 10),
+ sample_missing_smart_v2: missingSmartV2.slice(0, 10),
allowed_site_missing: allowedSiteMissing.size,
allowed_document_type_missing: allowedDocumentTypeMissing.size,
allowed_site_missing_docs: allowedSiteMissingDocs,
@@ -229,11 +238,19 @@ async function main() {
console.log(`Indexed without generated labels: ${report.indexed_without_generated}`);
console.log(`Indexed without site label: ${report.indexed_without_site}`);
console.log(`Indexed without document_type label: ${report.indexed_without_document_type}`);
+ console.log(`Smart-v2 label rows: ${report.smart_v2_label_rows}`);
+ console.log(`Documents with smart-v2 labels: ${report.smart_v2_documents}`);
+ console.log(`Indexed without smart-v2 labels: ${report.indexed_without_smart_v2}`);
console.log(
`Labels by type: ${Object.entries(report.labels_by_type)
.map(([type, count]) => `${type}=${count}`)
.join(", ")}`,
);
+ console.log(
+ `Smart-v2 labels by type: ${Object.entries(report.smart_v2_labels_by_type)
+ .map(([type, count]) => `${type}=${count}`)
+ .join(", ")}`,
+ );
if (allowedSiteMissingDocs.length) {
console.log(`Allowed indexed docs without site labels (from allowlist): ${allowedSiteMissingDocs.length}`);
}
diff --git a/scripts/classify-documents.ts b/scripts/classify-documents.ts
index 14d0c03f1..cf46f4e92 100644
--- a/scripts/classify-documents.ts
+++ b/scripts/classify-documents.ts
@@ -59,6 +59,10 @@ const generatedLabelTypes = [
"workflow",
"medication",
"risk",
+ "clinical_action",
+ "care_phase",
+ "document_intent",
+ "content_feature",
] as const;
async function loadAdminClient() {
@@ -233,7 +237,19 @@ function generatedLabelsForPlan(plan: ClassificationPlan, stampedAt: string): Ge
);
const secondaryLabels = plan.classification.labels.filter(
(label) =>
- ["population", "topic", "setting", "service", "workflow", "medication", "risk"].includes(label.label_type) &&
+ [
+ "population",
+ "topic",
+ "setting",
+ "service",
+ "workflow",
+ "medication",
+ "risk",
+ "clinical_action",
+ "care_phase",
+ "document_intent",
+ "content_feature",
+ ].includes(label.label_type) &&
label.confidence >= 0.5,
);
diff --git a/scripts/deployment-boot-smoke.mjs b/scripts/deployment-boot-smoke.mjs
index 9469c30a1..66950e5b0 100644
--- a/scripts/deployment-boot-smoke.mjs
+++ b/scripts/deployment-boot-smoke.mjs
@@ -27,6 +27,7 @@ const pollDelayMs = parsePositiveInt("DEPLOY_SMOKE_POLL_DELAY_MS", 1000);
const logRoot = mkdtempSync(resolve(tmpdir(), "clinical-kb-deploy-smoke-"));
const logPath = resolve(logRoot, "deploy-smoke.log");
const nextBin = resolve(projectRoot, "node_modules", "next", "dist", "bin", "next");
+const requiredProductionEnv = ["SUPABASE_SERVICE_ROLE_KEY", "OPENAI_API_KEY"];
if (!existsSync(nextBin)) {
throw new Error(`Next.js binary not found at: ${nextBin}`);
@@ -52,6 +53,18 @@ function formatFailureMessage(error) {
return error instanceof Error ? error.message : `Deployment boot smoke failed: ${String(error)}`;
}
+function missingRequiredProductionEnv() {
+ return requiredProductionEnv.filter((name) => !process.env[name]?.trim());
+}
+
+function cleanupLogRoot() {
+ try {
+ rmSync(logRoot, { force: true, recursive: true });
+ } catch {
+ // best-effort cleanup
+ }
+}
+
async function stopServer(child, logStream) {
if (child.exitCode === null) {
if (process.platform === "win32" && child.pid) {
@@ -60,7 +73,9 @@ async function stopServer(child, logStream) {
windowsHide: true,
});
await Promise.race([
- once(killer, "exit").then(() => true).catch(() => true),
+ once(killer, "exit")
+ .then(() => true)
+ .catch(() => true),
delay(5000).then(() => false),
]);
} else {
@@ -68,7 +83,9 @@ async function stopServer(child, logStream) {
}
const terminated = await Promise.race([
- once(child, "exit").then(() => true).catch(() => true),
+ once(child, "exit")
+ .then(() => true)
+ .catch(() => true),
delay(5000).then(() => false),
]);
if (!terminated && child.exitCode === null && process.platform !== "win32") {
@@ -84,29 +101,33 @@ async function stopServer(child, logStream) {
}
async function bootSmoke() {
+ const missingEnv = missingRequiredProductionEnv();
+ if (missingEnv.length > 0) {
+ throw new Error(
+ `Deployment boot smoke requires production server env: ${missingEnv.join(
+ ", ",
+ )}. Configure GitHub Actions secrets for release/main deployment checks or skip this smoke outside those contexts.`,
+ );
+ }
+
const logStream = createWriteStream(logPath, { flags: "a", encoding: "utf8" });
let spawnError = null;
- const child = spawn(
- process.execPath,
- [nextBin, "start", "--hostname", "127.0.0.1", "--port", String(port)],
- {
- cwd: projectRoot,
- env: {
- ...process.env,
- PORT: String(port),
- NEXT_PUBLIC_SUPABASE_URL:
- process.env.NEXT_PUBLIC_SUPABASE_URL ?? "https://sjrfecxgysukkwxsowpy.supabase.co",
- // instrumentation.ts register() requires these in production mode; provide
- // placeholder values so the boot-smoke can verify server identity without
- // needing real secrets. Routes that actually use Supabase/OpenAI will still
- // fail with real errors, but /api/local-project-id does not.
- SUPABASE_SERVICE_ROLE_KEY: process.env.SUPABASE_SERVICE_ROLE_KEY ?? "placeholder-ci-service-role",
- OPENAI_API_KEY: process.env.OPENAI_API_KEY ?? "placeholder-ci-openai",
- },
- stdio: ["ignore", "pipe", "pipe"],
- windowsHide: true,
+ const child = spawn(process.execPath, [nextBin, "start", "--hostname", "127.0.0.1", "--port", String(port)], {
+ cwd: projectRoot,
+ env: {
+ ...process.env,
+ PORT: String(port),
+ NEXT_PUBLIC_SUPABASE_URL: process.env.NEXT_PUBLIC_SUPABASE_URL ?? "https://sjrfecxgysukkwxsowpy.supabase.co",
+ // instrumentation.ts register() requires these in production mode; provide
+ // placeholder values so the boot-smoke can verify server identity without
+ // needing real secrets. Routes that actually use Supabase/OpenAI will still
+ // fail with real errors, but /api/local-project-id does not.
+ SUPABASE_SERVICE_ROLE_KEY: process.env.SUPABASE_SERVICE_ROLE_KEY ?? "placeholder-ci-service-role",
+ OPENAI_API_KEY: process.env.OPENAI_API_KEY ?? "placeholder-ci-openai",
},
- );
+ stdio: ["ignore", "pipe", "pipe"],
+ windowsHide: true,
+ });
child.once("error", (error) => {
spawnError = error;
});
@@ -173,21 +194,13 @@ async function bootSmoke() {
}
}
-function cleanupLogRoot() {
- try {
- rmSync(logRoot, { force: true, recursive: true });
- } catch {
- // best-effort cleanup
- }
-}
-
try {
await bootSmoke();
cleanupLogRoot();
process.exit(0);
} catch (error) {
console.error(formatFailureMessage(error));
- dumpLogTail(); // log still exists here — cleanup happens after the dump
+ dumpLogTail();
cleanupLogRoot();
process.exit(1);
}
diff --git a/scripts/ensure-local-server.mjs b/scripts/ensure-local-server.mjs
index 3d9ffbbb0..57667582c 100644
--- a/scripts/ensure-local-server.mjs
+++ b/scripts/ensure-local-server.mjs
@@ -16,8 +16,11 @@ const projectRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "
const maxPort = 65535;
const identityPath = "/api/local-project-id";
const logPath = path.join(projectRoot, "dev-server.log");
+const startupLockPath = path.join(projectRoot, "tmp", "ensure-local-server.lock");
const printUrlOnly = process.argv.slice(2).includes("--print-url");
const debugEnabled = process.env.ENSURE_DEBUG === "1";
+const startupLockStaleMs = 3 * 60 * 1000;
+const readyStableMs = 5 * 1000;
function debug(message) {
if (debugEnabled) console.error(`[ensure-local-server] ${message}`);
@@ -94,6 +97,36 @@ function requestJson(url, timeoutMs = 3500) {
});
}
+function requestOk(url, timeoutMs = 8000) {
+ return new Promise((resolve) => {
+ let settled = false;
+ let request;
+
+ const settle = (value) => {
+ if (settled) return;
+ settled = true;
+ clearTimeout(fallback);
+ resolve(value);
+ };
+
+ const fallback = setTimeout(() => {
+ request?.destroy();
+ settle(false);
+ }, timeoutMs + 500);
+
+ request = http.get(url, { timeout: timeoutMs }, (response) => {
+ response.resume();
+ response.on("end", () => settle(response.statusCode >= 200 && response.statusCode < 400));
+ });
+
+ request.on("timeout", () => {
+ request.destroy();
+ settle(false);
+ });
+ request.on("error", () => settle(false));
+ });
+}
+
async function isThisProject(port, attempts = 3) {
for (let attempt = 0; attempt < attempts; attempt += 1) {
const payload = await requestJson(`http://localhost:${port}${identityPath}`);
@@ -119,6 +152,41 @@ async function findStartPort(startPort) {
throw new Error(`No free local port found from ${startPort} to ${maxPort}.`);
}
+async function acquireStartupLock() {
+ fs.mkdirSync(path.dirname(startupLockPath), { recursive: true });
+ const startedAt = Date.now();
+
+ while (Date.now() - startedAt < startupLockStaleMs) {
+ try {
+ const fd = fs.openSync(startupLockPath, "wx");
+ fs.writeFileSync(fd, JSON.stringify({ pid: process.pid, createdAt: new Date().toISOString() }));
+ fs.closeSync(fd);
+ debug(`acquired startup lock ${startupLockPath}`);
+ return () => {
+ try {
+ fs.rmSync(startupLockPath, { force: true });
+ debug(`released startup lock ${startupLockPath}`);
+ } catch (error) {
+ debug(`failed to release startup lock: ${error?.message ?? error}`);
+ }
+ };
+ } catch (error) {
+ if (error?.code !== "EEXIST") throw error;
+
+ const ageMs = Date.now() - (fs.statSync(startupLockPath, { throwIfNoEntry: false })?.mtimeMs ?? Date.now());
+ if (ageMs > startupLockStaleMs) {
+ debug(`removing stale startup lock after ${Math.round(ageMs)}ms`);
+ fs.rmSync(startupLockPath, { force: true });
+ continue;
+ }
+
+ await sleep(500);
+ }
+ }
+
+ throw new Error(`Timed out waiting for ${startupLockPath}. Another startup may be stuck.`);
+}
+
function startDevServer(port) {
debug(`starting dev server on ${port}`);
const out = fs.openSync(logPath, "a");
@@ -139,8 +207,20 @@ function startDevServer(port) {
}
async function waitForProject(port) {
- for (let attempt = 0; attempt < 90; attempt += 1) {
- if (await isThisProject(port, 1)) return true;
+ let stableSince = null;
+ for (let attempt = 0; attempt < 120; attempt += 1) {
+ if (await isThisProject(port, 1)) {
+ stableSince ??= Date.now();
+ const stableForMs = Date.now() - stableSince;
+ if (stableForMs >= readyStableMs) {
+ const rootReady = await requestOk(localUrl(port));
+ debug(`root readiness on ${port}: ${rootReady}`);
+ if (rootReady && (await isPortBusy(port))) return true;
+ stableSince = null;
+ }
+ } else {
+ stableSince = null;
+ }
debug(`waiting for project on ${port}: attempt ${attempt + 1}`);
await sleep(500);
}
@@ -154,34 +234,54 @@ async function main() {
debug(`existing port ${existingPort ?? "none"}`);
if (existingPort) {
- console.log(printUrlOnly ? localUrl(existingPort) : `Clinical KB is already running at ${localUrl(existingPort)}`);
- return 0;
+ if (await waitForProject(existingPort)) {
+ console.log(printUrlOnly ? localUrl(existingPort) : `Clinical KB is already running at ${localUrl(existingPort)}`);
+ return 0;
+ }
}
- const target = await findStartPort(stablePort);
- debug(`target ${target.port}, alreadyRunning=${target.alreadyRunning}`);
+ const releaseStartupLock = await acquireStartupLock();
- if (target.alreadyRunning) {
- console.log(printUrlOnly ? localUrl(target.port) : `Clinical KB is already running at ${localUrl(target.port)}`);
- return 0;
- }
+ try {
+ const lockedExistingPort = await findExistingProjectServer(stablePort);
+ debug(`locked existing port ${lockedExistingPort ?? "none"}`);
- if (target.port !== stablePort && !printUrlOnly) {
- console.log(
- `Stable project port ${stablePort} is serving another local project; starting Clinical KB at ${localUrl(target.port)}`,
- );
- }
+ if (lockedExistingPort && (await waitForProject(lockedExistingPort))) {
+ console.log(
+ printUrlOnly ? localUrl(lockedExistingPort) : `Clinical KB is already running at ${localUrl(lockedExistingPort)}`,
+ );
+ return 0;
+ }
- startDevServer(target.port);
+ const target = await findStartPort(stablePort);
+ debug(`target ${target.port}, alreadyRunning=${target.alreadyRunning}`);
- if (await waitForProject(target.port)) {
- console.log(printUrlOnly ? localUrl(target.port) : `Clinical KB is running at ${localUrl(target.port)}`);
- if (!printUrlOnly) console.log(`Server log: ${logPath}`);
- return 0;
- }
+ if (target.alreadyRunning) {
+ if (await waitForProject(target.port)) {
+ console.log(printUrlOnly ? localUrl(target.port) : `Clinical KB is already running at ${localUrl(target.port)}`);
+ return 0;
+ }
+ }
- console.error(`Clinical KB did not become ready at ${localUrl(target.port)}. Check ${logPath}`);
- return 1;
+ if (target.port !== stablePort && !printUrlOnly) {
+ console.log(
+ `Stable project port ${stablePort} is serving another local project; starting Clinical KB at ${localUrl(target.port)}`,
+ );
+ }
+
+ startDevServer(target.port);
+
+ if (await waitForProject(target.port)) {
+ console.log(printUrlOnly ? localUrl(target.port) : `Clinical KB is running at ${localUrl(target.port)}`);
+ if (!printUrlOnly) console.log(`Server log: ${logPath}`);
+ return 0;
+ }
+
+ console.error(`Clinical KB did not become ready at ${localUrl(target.port)}. Check ${logPath}`);
+ return 1;
+ } finally {
+ releaseStartupLock();
+ }
}
process.exitCode = await main();
diff --git a/scripts/guard-next-build.mjs b/scripts/guard-next-build.mjs
new file mode 100644
index 000000000..6006235ee
--- /dev/null
+++ b/scripts/guard-next-build.mjs
@@ -0,0 +1,78 @@
+#!/usr/bin/env node
+import http from "node:http";
+import path from "node:path";
+import { fileURLToPath } from "node:url";
+import { appName, localProjectId, projectPortEnd, stableProjectPort } from "./local-server-utils.mjs";
+
+const projectRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..");
+const expectedProjectId = localProjectId(projectRoot);
+const identityPath = "/api/local-project-id";
+const timeoutMs = 350;
+
+function requestJson(port) {
+ return new Promise((resolve) => {
+ let settled = false;
+ let request;
+
+ const settle = (value) => {
+ if (settled) return;
+ settled = true;
+ clearTimeout(fallback);
+ resolve(value);
+ };
+
+ const fallback = setTimeout(() => {
+ request?.destroy();
+ settle(null);
+ }, timeoutMs + 100);
+
+ request = http.get(`http://localhost:${port}${identityPath}`, { timeout: timeoutMs }, (response) => {
+ let body = "";
+ response.setEncoding("utf8");
+ response.on("data", (chunk) => {
+ body += chunk;
+ });
+ response.on("end", () => {
+ try {
+ settle(JSON.parse(body));
+ } catch {
+ settle(null);
+ }
+ });
+ });
+
+ request.on("timeout", () => {
+ request.destroy();
+ settle(null);
+ });
+ request.on("error", () => settle(null));
+ });
+}
+
+async function findRunningProjectServer() {
+ const stablePort = stableProjectPort(projectRoot);
+
+ for (let port = stablePort; port <= projectPortEnd; port += 1) {
+ const payload = await requestJson(port);
+ if (payload?.appName === appName && payload?.projectId === expectedProjectId) return port;
+ }
+
+ return null;
+}
+
+if (process.env.ALLOW_BUILD_WITH_DEV_SERVER === "1") {
+ console.warn("ALLOW_BUILD_WITH_DEV_SERVER=1 is set; continuing even if the local dev server is running.");
+ process.exit(0);
+}
+
+const runningPort = await findRunningProjectServer();
+
+if (runningPort) {
+ console.error(
+ [
+ `Refusing to run next build while ${appName} dev server is running at http://localhost:${runningPort}.`,
+ "Stop the dev server first, or set ALLOW_BUILD_WITH_DEV_SERVER=1 if this cache churn is intentional.",
+ ].join("\n"),
+ );
+ process.exit(1);
+}
diff --git a/scripts/run-eval-safe.mjs b/scripts/run-eval-safe.mjs
new file mode 100644
index 000000000..e522e9d7e
--- /dev/null
+++ b/scripts/run-eval-safe.mjs
@@ -0,0 +1,267 @@
+#!/usr/bin/env node
+
+import { existsSync } from "node:fs";
+import { spawn, spawnSync } from "node:child_process";
+import { resolve, dirname } from "node:path";
+import { fileURLToPath } from "node:url";
+
+const projectRoot = resolve(dirname(fileURLToPath(import.meta.url)), "..");
+const isWindows = process.platform === "win32";
+const [targetScript, ...forwardArgs] = process.argv.slice(2);
+
+if (!targetScript) {
+ console.error("Usage: node scripts/run-eval-safe.mjs