diff --git a/admin/site-setup.html b/admin/site-setup.html index 62dde9bab..72ea05158 100644 --- a/admin/site-setup.html +++ b/admin/site-setup.html @@ -88,8 +88,8 @@
DDL remains under docs_build/database/ddl/.
-Setup review DML is grouped under docs_build/database/dml/. Runtime setup checks run through the server API.
+DDL remains under dev/docs_build/database/ddl/.
+Setup review DML is grouped under dev/docs_build/database/dml/. Runtime setup checks run through the server API.
DDL remains under docs_build/database/ddl/.
+-Setup review DML is grouped under docs_build/database/dml/. Runtime setup checks run through the server API.
++DDL remains under dev/docs_build/database/ddl/.
++Setup review DML is grouped under dev/docs_build/database/dml/. Runtime setup checks run through the server API.
+Dev-only notes loaded from docs_build/dev/admin-notes/.
++Dev-only notes loaded from dev/archive/docs_build/dev/admin-notes/.
+Loading docs_build/dev/admin-notes/index.txt.
++Loading dev/archive/docs_build/dev/admin-notes/index.txt.
+ + + +diff --git a/src/dev-runtime/seed/server-seed-loader.mjs b/src/dev-runtime/seed/server-seed-loader.mjs +index f67e53065..c7691d741 100644 +--- a/src/dev-runtime/seed/server-seed-loader.mjs ++++ b/src/dev-runtime/seed/server-seed-loader.mjs +@@ -15,7 +15,7 @@ import { REQUIRED_LEGAL_DOCUMENTS } from "../legal/legal-document-service.mjs"; + import { SEED_DB_KEYS } from "./seed-db-keys.mjs"; + + const ULID_ALPHABET = "0123456789ABCDEFGHJKMNPQRSTVWXYZ"; +-const SEED_SOURCE_DIRECTORY = path.join("docs_build", "database", "seed"); ++const SEED_SOURCE_DIRECTORY = path.join("dev", "docs_build", "database", "seed"); + const DEV_SEED_AUDIT_USER_KEY = SEED_DB_KEYS.users.admin; + + function encodeBase32(value, length) { +diff --git a/src/dev-runtime/server/local-api-router.mjs b/src/dev-runtime/server/local-api-router.mjs +index b1c8e6852..34586b819 100644 +--- a/src/dev-runtime/server/local-api-router.mjs ++++ b/src/dev-runtime/server/local-api-router.mjs +@@ -723,7 +723,7 @@ function systemHealthPostgresMetrics(databaseStatus = {}, checkedAt = new Date() + } + + function projectPackageReadinessStatus() { +- const decisionPath = path.join(process.cwd(), "docs_build", "codex", "decisions", "project-packages.md"); ++ const decisionPath = path.join(process.cwd(), "dev", "docs_build", "codex", "decisions", "project-packages.md"); + const contract = projectPackageReadinessContract(); + try { + const contents = readFileSync(decisionPath, "utf8"); +@@ -742,7 +742,7 @@ function projectPackageReadinessStatus() { + const missing = requiredContent.filter((item) => !contents.includes(item)); + return { + contract, +- decisionPath: "docs_build/codex/decisions/project-packages.md", ++ decisionPath: "dev/docs_build/codex/decisions/project-packages.md", + message: missing.length + ? `Project package decision note is missing: ${missing.join(", ")}.` + : "Project package decision note and runtime scaffold are ready for .gfsp export/import/validate package workflows.", +@@ -751,8 +751,8 @@ function projectPackageReadinessStatus() { + } catch { + return { + contract, +- decisionPath: "docs_build/codex/decisions/project-packages.md", +- message: "Project package decision note is missing. Restore docs_build/codex/decisions/project-packages.md.", ++ decisionPath: "dev/docs_build/codex/decisions/project-packages.md", ++ message: "Project package decision note is missing. Restore dev/docs_build/codex/decisions/project-packages.md.", + status: "WARN", + }; + } +@@ -2235,7 +2235,7 @@ function providerFailureMessage(providerContract, providerId) { + } + + function readDocsBuildGuestSeedPackages() { +- const guestSeedDir = path.join(process.cwd(), "docs_build", "database", "seed", "guest"); ++ const guestSeedDir = path.join(process.cwd(), "dev", "docs_build", "database", "seed", "guest"); + try { + return readdirSync(guestSeedDir) + .filter((fileName) => fileName.endsWith(".json")) +@@ -2248,7 +2248,7 @@ function readDocsBuildGuestSeedPackages() { + group: seed.group, + groupKey: seed.groupKey, + readOnly: true, +- source: `docs_build/database/seed/guest/${fileName}`, ++ source: `dev/docs_build/database/seed/guest/${fileName}`, + writableByGuest: false, + })); + }); +@@ -3914,7 +3914,7 @@ class ApiRuntimeDataSource { + } catch (error) { + const rawMessage = String(error?.message || error || ""); + const setupDiagnostic = rawMessage.includes("Supabase Postgres") && rawMessage.includes("HTTP 404") +- ? "Identity tables are missing. Run docs_build/database/ddl/account/supabase-identity-tables.sql through the approved Supabase SQL setup path." ++ ? "Identity tables are missing. Run dev/docs_build/database/ddl/account/supabase-identity-tables.sql through the approved Supabase SQL setup path." + : ""; + const diagnostic = sanitizedAuthErrorDiagnostic(error); + const fallbackDiagnostic = diagnostic.httpStatus +@@ -5942,10 +5942,10 @@ SELECT pg_database_size(current_database()) AS database_size_bytes, + return { + readOnly: true, + route: "/api/guest/seed", +- source: "docs_build/database/seed/guest/", ++ source: "dev/docs_build/database/seed/guest/", + packages, + status: packages.length ? "PASS" : "WARN", +- warning: packages.length ? "" : "No docs_build guest seed packages were found.", ++ warning: packages.length ? "" : "No dev/docs_build guest seed packages were found.", + }; + } + +diff --git a/tests/dev-runtime/AdminNotesBoundary.test.mjs b/tests/dev-runtime/AdminNotesBoundary.test.mjs +index 3bbc6e06b..66c1bbf97 100644 +--- a/tests/dev-runtime/AdminNotesBoundary.test.mjs ++++ b/tests/dev-runtime/AdminNotesBoundary.test.mjs +@@ -24,14 +24,14 @@ const productionRoots = [ + ]; + + const expectedDevNotes = [ +- "docs_build/dev/admin-notes/BusinessPlan.txt", +- "docs_build/dev/admin-notes/index.txt", +- "docs_build/dev/admin-notes/notes/index.txt", +- "docs_build/dev/admin-notes/other/index.txt", +- "docs_build/dev/admin-notes/PS_commands.txt", +- "docs_build/dev/admin-notes/roadmap2MVP.txt", +- "docs_build/dev/admin-notes/sample.txt", +- "docs_build/dev/admin-notes/tools/index.txt", ++ "dev/archive/docs_build/dev/admin-notes/BusinessPlan.txt", ++ "dev/archive/docs_build/dev/admin-notes/index.txt", ++ "dev/archive/docs_build/dev/admin-notes/notes/index.txt", ++ "dev/archive/docs_build/dev/admin-notes/other/index.txt", ++ "dev/archive/docs_build/dev/admin-notes/PS_commands.txt", ++ "dev/archive/docs_build/dev/admin-notes/roadmap2MVP.txt", ++ "dev/archive/docs_build/dev/admin-notes/sample.txt", ++ "dev/archive/docs_build/dev/admin-notes/tools/index.txt", + "src/dev-runtime/admin/notes.html", + ]; + +@@ -40,7 +40,7 @@ const retiredProductionFiles = [ + "src/dev-runtime/admin/admin-notes.html", + "admin/notes/index.txt", + "admin/notes/other/index.txt", +- "docs_build/dev/admin-notes/notes/Other/index.txt", ++ "dev/archive/docs_build/dev/admin-notes/notes/Other/index.txt", + ]; + + const devOnlyAdminLabels = [ +@@ -220,16 +220,16 @@ test("production-facing paths only expose Admin Notes through Owner Notes", () = + assert.deepEqual(violations, [], "production-facing paths must not expose Admin Notes"); + }); + +-test("Admin Notes directory API is read-only, sorted, and restricted to docs_build/dev/admin-notes", async () => { +- assert.equal(fs.existsSync(repoPath("docs_build/dev/admin-notes")), true, "Admin Notes source directory exists"); ++test("Admin Notes directory API is read-only, sorted, and restricted to dev/archive/docs_build/dev/admin-notes", async () => { ++ assert.equal(fs.existsSync(repoPath("dev/archive/docs_build/dev/admin-notes")), true, "Admin Notes source directory exists"); + +- const rootListing = await adminNotesDirectoryPayload("docs_build/dev/admin-notes"); ++ const rootListing = await adminNotesDirectoryPayload("dev/archive/docs_build/dev/admin-notes"); + assert.equal(rootListing.statusCode, 200); + assert.equal(rootListing.payload.ok, true); +- assert.equal(rootListing.payload.folderPath, "docs_build/dev/admin-notes"); ++ assert.equal(rootListing.payload.folderPath, "dev/archive/docs_build/dev/admin-notes"); + assert.ok(rootListing.payload.entries.length > 0, "Admin Notes directory has entries"); + assert.ok( +- rootListing.payload.entries.every((entry) => entry.path.startsWith("docs_build/dev/admin-notes/")), ++ rootListing.payload.entries.every((entry) => entry.path.startsWith("dev/archive/docs_build/dev/admin-notes/")), + "Admin Notes entries stay under the source folder", + ); + assert.deepEqual( +@@ -238,22 +238,22 @@ test("Admin Notes directory API is read-only, sorted, and restricted to docs_bui + "Admin Notes entries are sorted alphabetically", + ); + assert.ok( +- rootListing.payload.entries.some((entry) => entry.path === "docs_build/dev/admin-notes/sample.txt"), ++ rootListing.payload.entries.some((entry) => entry.path === "dev/archive/docs_build/dev/admin-notes/sample.txt"), + "Admin Notes list includes an existing text file from the source folder", + ); + assert.ok( +- rootListing.payload.entries.some((entry) => entry.path === "docs_build/dev/admin-notes/notes/index.txt"), ++ rootListing.payload.entries.some((entry) => entry.path === "dev/archive/docs_build/dev/admin-notes/notes/index.txt"), + "Admin Notes list includes a folder index from the source folder", + ); + +- const traversal = await adminNotesDirectoryPayload("docs_build/dev/admin-notes/../../reports"); ++ const traversal = await adminNotesDirectoryPayload("dev/archive/docs_build/dev/admin-notes/../../reports"); + assert.equal(traversal.statusCode, 403); + assert.equal(traversal.payload.ok, false); +- assert.match(traversal.payload.error, /restricted to docs_build\/dev\/admin-notes/); ++ assert.match(traversal.payload.error, /restricted to dev\/archive\/docs_build\/dev\/admin-notes/); + + const missingRoot = makeTempRepoRoot(); + try { +- const missing = await adminNotesDirectoryPayload("docs_build/dev/admin-notes", missingRoot); ++ const missing = await adminNotesDirectoryPayload("dev/archive/docs_build/dev/admin-notes", missingRoot); + assert.equal(missing.statusCode, 404); + assert.equal(missing.payload.ok, false); + assert.match(missing.payload.error, /folder not found/i); +@@ -263,8 +263,8 @@ test("Admin Notes directory API is read-only, sorted, and restricted to docs_bui + + const emptyRoot = makeTempRepoRoot(); + try { +- fs.mkdirSync(path.join(emptyRoot, "docs_build/dev/admin-notes"), { recursive: true }); +- const empty = await adminNotesDirectoryPayload("docs_build/dev/admin-notes", emptyRoot); ++ fs.mkdirSync(path.join(emptyRoot, "dev/archive/docs_build/dev/admin-notes"), { recursive: true }); ++ const empty = await adminNotesDirectoryPayload("dev/archive/docs_build/dev/admin-notes", emptyRoot); + assert.equal(empty.statusCode, 200); + assert.equal(empty.payload.ok, true); + assert.deepEqual(empty.payload.entries, []); +diff --git a/tests/dev-runtime/DbSeedIntegrity.test.mjs b/tests/dev-runtime/DbSeedIntegrity.test.mjs +index aecb59368..0376b3b66 100644 +--- a/tests/dev-runtime/DbSeedIntegrity.test.mjs ++++ b/tests/dev-runtime/DbSeedIntegrity.test.mjs +@@ -192,7 +192,7 @@ test("server Local DB seed includes runtime timestamps, read-only guest packages + + assert.deepEqual(guestToolKeys, GUEST_SEED_GROUP_KEYS, "guest seed data should include every required grouped seed file"); + assert.equal(guestSeed.readOnly, true); +- assert.equal(guestSeed.source, "docs_build/database/seed/guest/"); ++ assert.equal(guestSeed.source, "dev/docs_build/database/seed/guest/"); + assert.equal((guestSeed.packages || []).every((sample) => sample.loadablePath && sample.sampleKind === "toolSeed"), true); + assert.equal((guestSeed.packages || []).every((sample) => sample.readOnly === true && sample.writableByGuest === false), true); + assert.equal(samples.some((sample) => sample.audience === "guest"), false); +diff --git a/tests/helpers/playwrightV8CoverageReporter.mjs b/tests/helpers/playwrightV8CoverageReporter.mjs +index fffd23a70..861869633 100644 +--- a/tests/helpers/playwrightV8CoverageReporter.mjs ++++ b/tests/helpers/playwrightV8CoverageReporter.mjs +@@ -6,8 +6,8 @@ import path from "node:path"; + export class PlaywrightV8CoverageReporter { + constructor({ + repoRoot = process.cwd(), +- reportPath = "docs_build/dev/reports/playwright_v8_coverage_report.txt", +- guardrailReportPath = "docs_build/dev/reports/coverage_changed_js_guardrail.txt", ++ reportPath = "dev/docs_build/dev/reports/playwright_v8_coverage_report.txt", ++ guardrailReportPath = "dev/docs_build/dev/reports/coverage_changed_js_guardrail.txt", + advisoryLowCoveragePercent = 50 + } = {}) { + this.repoRoot = repoRoot; +diff --git a/tests/index.html b/tests/index.html +index 42add0ef6..ab65a1bb0 100644 +--- a/tests/index.html ++++ b/tests/index.html +@@ -48,7 +48,7 @@ npm run test:launch-smoke -- --games --tools +[launch-smoke ...] summary: PASS=220 FAIL=4 TOTAL=224 +-[launch-smoke ...] report: <project>/docs_build/dev/reports/launch_smoke_report.md ++[launch-smoke ...] report: <project>/dev/docs_build/dev/reports/launch_smoke_report.md + [launch-smoke ...] isolated node_modules: <project>/tmp/node_modules + [launch-smoke ...] failed entries: none+
Dev-only notes loaded from docs_build/dev/admin-notes/.
+Dev-only notes loaded from dev/archive/docs_build/dev/admin-notes/.
Loading docs_build/dev/admin-notes/index.txt.
+Loading dev/archive/docs_build/dev/admin-notes/index.txt.
diff --git a/src/dev-runtime/seed/server-seed-loader.mjs b/src/dev-runtime/seed/server-seed-loader.mjs index f67e53065..c7691d741 100644 --- a/src/dev-runtime/seed/server-seed-loader.mjs +++ b/src/dev-runtime/seed/server-seed-loader.mjs @@ -15,7 +15,7 @@ import { REQUIRED_LEGAL_DOCUMENTS } from "../legal/legal-document-service.mjs"; import { SEED_DB_KEYS } from "./seed-db-keys.mjs"; const ULID_ALPHABET = "0123456789ABCDEFGHJKMNPQRSTVWXYZ"; -const SEED_SOURCE_DIRECTORY = path.join("docs_build", "database", "seed"); +const SEED_SOURCE_DIRECTORY = path.join("dev", "docs_build", "database", "seed"); const DEV_SEED_AUDIT_USER_KEY = SEED_DB_KEYS.users.admin; function encodeBase32(value, length) { diff --git a/src/dev-runtime/server/local-api-router.mjs b/src/dev-runtime/server/local-api-router.mjs index b1c8e6852..34586b819 100644 --- a/src/dev-runtime/server/local-api-router.mjs +++ b/src/dev-runtime/server/local-api-router.mjs @@ -723,7 +723,7 @@ function systemHealthPostgresMetrics(databaseStatus = {}, checkedAt = new Date() } function projectPackageReadinessStatus() { - const decisionPath = path.join(process.cwd(), "docs_build", "codex", "decisions", "project-packages.md"); + const decisionPath = path.join(process.cwd(), "dev", "docs_build", "codex", "decisions", "project-packages.md"); const contract = projectPackageReadinessContract(); try { const contents = readFileSync(decisionPath, "utf8"); @@ -742,7 +742,7 @@ function projectPackageReadinessStatus() { const missing = requiredContent.filter((item) => !contents.includes(item)); return { contract, - decisionPath: "docs_build/codex/decisions/project-packages.md", + decisionPath: "dev/docs_build/codex/decisions/project-packages.md", message: missing.length ? `Project package decision note is missing: ${missing.join(", ")}.` : "Project package decision note and runtime scaffold are ready for .gfsp export/import/validate package workflows.", @@ -751,8 +751,8 @@ function projectPackageReadinessStatus() { } catch { return { contract, - decisionPath: "docs_build/codex/decisions/project-packages.md", - message: "Project package decision note is missing. Restore docs_build/codex/decisions/project-packages.md.", + decisionPath: "dev/docs_build/codex/decisions/project-packages.md", + message: "Project package decision note is missing. Restore dev/docs_build/codex/decisions/project-packages.md.", status: "WARN", }; } @@ -2235,7 +2235,7 @@ function providerFailureMessage(providerContract, providerId) { } function readDocsBuildGuestSeedPackages() { - const guestSeedDir = path.join(process.cwd(), "docs_build", "database", "seed", "guest"); + const guestSeedDir = path.join(process.cwd(), "dev", "docs_build", "database", "seed", "guest"); try { return readdirSync(guestSeedDir) .filter((fileName) => fileName.endsWith(".json")) @@ -2248,7 +2248,7 @@ function readDocsBuildGuestSeedPackages() { group: seed.group, groupKey: seed.groupKey, readOnly: true, - source: `docs_build/database/seed/guest/${fileName}`, + source: `dev/docs_build/database/seed/guest/${fileName}`, writableByGuest: false, })); }); @@ -3914,7 +3914,7 @@ class ApiRuntimeDataSource { } catch (error) { const rawMessage = String(error?.message || error || ""); const setupDiagnostic = rawMessage.includes("Supabase Postgres") && rawMessage.includes("HTTP 404") - ? "Identity tables are missing. Run docs_build/database/ddl/account/supabase-identity-tables.sql through the approved Supabase SQL setup path." + ? "Identity tables are missing. Run dev/docs_build/database/ddl/account/supabase-identity-tables.sql through the approved Supabase SQL setup path." : ""; const diagnostic = sanitizedAuthErrorDiagnostic(error); const fallbackDiagnostic = diagnostic.httpStatus @@ -5942,10 +5942,10 @@ SELECT pg_database_size(current_database()) AS database_size_bytes, return { readOnly: true, route: "/api/guest/seed", - source: "docs_build/database/seed/guest/", + source: "dev/docs_build/database/seed/guest/", packages, status: packages.length ? "PASS" : "WARN", - warning: packages.length ? "" : "No docs_build guest seed packages were found.", + warning: packages.length ? "" : "No dev/docs_build guest seed packages were found.", }; } diff --git a/tests/dev-runtime/AdminNotesBoundary.test.mjs b/tests/dev-runtime/AdminNotesBoundary.test.mjs index 3bbc6e06b..66c1bbf97 100644 --- a/tests/dev-runtime/AdminNotesBoundary.test.mjs +++ b/tests/dev-runtime/AdminNotesBoundary.test.mjs @@ -24,14 +24,14 @@ const productionRoots = [ ]; const expectedDevNotes = [ - "docs_build/dev/admin-notes/BusinessPlan.txt", - "docs_build/dev/admin-notes/index.txt", - "docs_build/dev/admin-notes/notes/index.txt", - "docs_build/dev/admin-notes/other/index.txt", - "docs_build/dev/admin-notes/PS_commands.txt", - "docs_build/dev/admin-notes/roadmap2MVP.txt", - "docs_build/dev/admin-notes/sample.txt", - "docs_build/dev/admin-notes/tools/index.txt", + "dev/archive/docs_build/dev/admin-notes/BusinessPlan.txt", + "dev/archive/docs_build/dev/admin-notes/index.txt", + "dev/archive/docs_build/dev/admin-notes/notes/index.txt", + "dev/archive/docs_build/dev/admin-notes/other/index.txt", + "dev/archive/docs_build/dev/admin-notes/PS_commands.txt", + "dev/archive/docs_build/dev/admin-notes/roadmap2MVP.txt", + "dev/archive/docs_build/dev/admin-notes/sample.txt", + "dev/archive/docs_build/dev/admin-notes/tools/index.txt", "src/dev-runtime/admin/notes.html", ]; @@ -40,7 +40,7 @@ const retiredProductionFiles = [ "src/dev-runtime/admin/admin-notes.html", "admin/notes/index.txt", "admin/notes/other/index.txt", - "docs_build/dev/admin-notes/notes/Other/index.txt", + "dev/archive/docs_build/dev/admin-notes/notes/Other/index.txt", ]; const devOnlyAdminLabels = [ @@ -220,16 +220,16 @@ test("production-facing paths only expose Admin Notes through Owner Notes", () = assert.deepEqual(violations, [], "production-facing paths must not expose Admin Notes"); }); -test("Admin Notes directory API is read-only, sorted, and restricted to docs_build/dev/admin-notes", async () => { - assert.equal(fs.existsSync(repoPath("docs_build/dev/admin-notes")), true, "Admin Notes source directory exists"); +test("Admin Notes directory API is read-only, sorted, and restricted to dev/archive/docs_build/dev/admin-notes", async () => { + assert.equal(fs.existsSync(repoPath("dev/archive/docs_build/dev/admin-notes")), true, "Admin Notes source directory exists"); - const rootListing = await adminNotesDirectoryPayload("docs_build/dev/admin-notes"); + const rootListing = await adminNotesDirectoryPayload("dev/archive/docs_build/dev/admin-notes"); assert.equal(rootListing.statusCode, 200); assert.equal(rootListing.payload.ok, true); - assert.equal(rootListing.payload.folderPath, "docs_build/dev/admin-notes"); + assert.equal(rootListing.payload.folderPath, "dev/archive/docs_build/dev/admin-notes"); assert.ok(rootListing.payload.entries.length > 0, "Admin Notes directory has entries"); assert.ok( - rootListing.payload.entries.every((entry) => entry.path.startsWith("docs_build/dev/admin-notes/")), + rootListing.payload.entries.every((entry) => entry.path.startsWith("dev/archive/docs_build/dev/admin-notes/")), "Admin Notes entries stay under the source folder", ); assert.deepEqual( @@ -238,22 +238,22 @@ test("Admin Notes directory API is read-only, sorted, and restricted to docs_bui "Admin Notes entries are sorted alphabetically", ); assert.ok( - rootListing.payload.entries.some((entry) => entry.path === "docs_build/dev/admin-notes/sample.txt"), + rootListing.payload.entries.some((entry) => entry.path === "dev/archive/docs_build/dev/admin-notes/sample.txt"), "Admin Notes list includes an existing text file from the source folder", ); assert.ok( - rootListing.payload.entries.some((entry) => entry.path === "docs_build/dev/admin-notes/notes/index.txt"), + rootListing.payload.entries.some((entry) => entry.path === "dev/archive/docs_build/dev/admin-notes/notes/index.txt"), "Admin Notes list includes a folder index from the source folder", ); - const traversal = await adminNotesDirectoryPayload("docs_build/dev/admin-notes/../../reports"); + const traversal = await adminNotesDirectoryPayload("dev/archive/docs_build/dev/admin-notes/../../reports"); assert.equal(traversal.statusCode, 403); assert.equal(traversal.payload.ok, false); - assert.match(traversal.payload.error, /restricted to docs_build\/dev\/admin-notes/); + assert.match(traversal.payload.error, /restricted to dev\/archive\/docs_build\/dev\/admin-notes/); const missingRoot = makeTempRepoRoot(); try { - const missing = await adminNotesDirectoryPayload("docs_build/dev/admin-notes", missingRoot); + const missing = await adminNotesDirectoryPayload("dev/archive/docs_build/dev/admin-notes", missingRoot); assert.equal(missing.statusCode, 404); assert.equal(missing.payload.ok, false); assert.match(missing.payload.error, /folder not found/i); @@ -263,8 +263,8 @@ test("Admin Notes directory API is read-only, sorted, and restricted to docs_bui const emptyRoot = makeTempRepoRoot(); try { - fs.mkdirSync(path.join(emptyRoot, "docs_build/dev/admin-notes"), { recursive: true }); - const empty = await adminNotesDirectoryPayload("docs_build/dev/admin-notes", emptyRoot); + fs.mkdirSync(path.join(emptyRoot, "dev/archive/docs_build/dev/admin-notes"), { recursive: true }); + const empty = await adminNotesDirectoryPayload("dev/archive/docs_build/dev/admin-notes", emptyRoot); assert.equal(empty.statusCode, 200); assert.equal(empty.payload.ok, true); assert.deepEqual(empty.payload.entries, []); diff --git a/tests/dev-runtime/DbSeedIntegrity.test.mjs b/tests/dev-runtime/DbSeedIntegrity.test.mjs index aecb59368..0376b3b66 100644 --- a/tests/dev-runtime/DbSeedIntegrity.test.mjs +++ b/tests/dev-runtime/DbSeedIntegrity.test.mjs @@ -192,7 +192,7 @@ test("server Local DB seed includes runtime timestamps, read-only guest packages assert.deepEqual(guestToolKeys, GUEST_SEED_GROUP_KEYS, "guest seed data should include every required grouped seed file"); assert.equal(guestSeed.readOnly, true); - assert.equal(guestSeed.source, "docs_build/database/seed/guest/"); + assert.equal(guestSeed.source, "dev/docs_build/database/seed/guest/"); assert.equal((guestSeed.packages || []).every((sample) => sample.loadablePath && sample.sampleKind === "toolSeed"), true); assert.equal((guestSeed.packages || []).every((sample) => sample.readOnly === true && sample.writableByGuest === false), true); assert.equal(samples.some((sample) => sample.audience === "guest"), false); diff --git a/tests/helpers/playwrightV8CoverageReporter.mjs b/tests/helpers/playwrightV8CoverageReporter.mjs index fffd23a70..861869633 100644 --- a/tests/helpers/playwrightV8CoverageReporter.mjs +++ b/tests/helpers/playwrightV8CoverageReporter.mjs @@ -6,8 +6,8 @@ import path from "node:path"; export class PlaywrightV8CoverageReporter { constructor({ repoRoot = process.cwd(), - reportPath = "docs_build/dev/reports/playwright_v8_coverage_report.txt", - guardrailReportPath = "docs_build/dev/reports/coverage_changed_js_guardrail.txt", + reportPath = "dev/docs_build/dev/reports/playwright_v8_coverage_report.txt", + guardrailReportPath = "dev/docs_build/dev/reports/coverage_changed_js_guardrail.txt", advisoryLowCoveragePercent = 50 } = {}) { this.repoRoot = repoRoot; diff --git a/tests/index.html b/tests/index.html index 42add0ef6..ab65a1bb0 100644 --- a/tests/index.html +++ b/tests/index.html @@ -48,7 +48,7 @@[launch-smoke ...] summary: PASS=220 FAIL=4 TOTAL=224 -[launch-smoke ...] report: <project>/docs_build/dev/reports/launch_smoke_report.md +[launch-smoke ...] report: <project>/dev/docs_build/dev/reports/launch_smoke_report.md [launch-smoke ...] isolated node_modules: <project>/tmp/node_modules [launch-smoke ...] failed entries: none