Parent Epic
#11831 — Sub 12 of Epic (folder-structure cleanup; buildScripts/ai/ collapse).
Scope
Collapse buildScripts/ai/ (19 files) into ai/scripts/{category}/. The "build vs ai" split was random — neither folder maps cleanly to build-pipeline boundaries. After this Sub, buildScripts/ai/ directory deleted entirely; buildScripts/ reverts to genuine-build-pipeline content only (apps/release/build subdirs unchanged).
Source moves
buildScripts/ai/ → ai/scripts/maintenance/ (12 files):
- backup.mjs
- buildKbAgentFaqs.mjs
- defragChromaDB.mjs
- defragSQLiteDB.mjs
- downloadKnowledgeBase.mjs
- ingestTenant.mjs
- kbPushClient.mjs
- recreateGraphDb.mjs
- restore.mjs
- syncGithubWorkflow.mjs
- syncKnowledgeBase.mjs
- uploadKnowledgeBase.mjs
buildScripts/ai/ → ai/scripts/migrations/ (1 file):
buildScripts/ai/ → ai/scripts/diagnostics/ (1 file):
buildScripts/ai/ → ai/scripts/runners/ (4 files):
- roadmapPlanner.mjs
- runAgent.mjs
- runGoldenPath.mjs
- runSandman.mjs
buildScripts/ai/ → ai/scripts/setup/ (1 file):
After all moves: buildScripts/ai/ directory deleted.
Test moves (mirror source structure)
Audit test/playwright/unit/ai/buildScripts/ (and test/playwright/unit/buildScripts/ai/ if it exists) — move all specs to mirror new ai/scripts/{category}/ locations.
package.json
11 npm script paths updated:
"ai:agent" → ./ai/scripts/runners/runAgent.mjs
"ai:backup" → ./ai/scripts/maintenance/backup.mjs
"ai:build-kb-faqs" → ./ai/scripts/maintenance/buildKbAgentFaqs.mjs
"ai:defrag-kb" → ./ai/scripts/maintenance/defragChromaDB.mjs --target knowledge-base
"ai:defrag-memory" → ./ai/scripts/maintenance/defragChromaDB.mjs --target memory-core
"ai:defrag-sqlite" → ./ai/scripts/maintenance/defragSQLiteDB.mjs
"ai:download-kb" → ./ai/scripts/maintenance/downloadKnowledgeBase.mjs
"ai:ingest-tenant" → ./ai/scripts/maintenance/ingestTenant.mjs
"ai:kb-push-client" → ./ai/scripts/maintenance/kbPushClient.mjs
"ai:mcp-healthcheck" → ./ai/scripts/diagnostics/mcpHealthcheck.mjs
"ai:restore" → ./ai/scripts/maintenance/restore.mjs
"ai:run-sandman" → ./ai/scripts/runners/runSandman.mjs
(Other npm scripts pointing at buildScripts/ai/ files not enumerated here — audit + update.)
.github/workflows
Audit any workflow references to buildScripts/ai/ paths.
Integration tests
3 known stale imports:
test/playwright/integration/BackupRestoreWipe.integration.spec.mjs:78 — await import('./buildScripts/ai/backup.mjs') → ./ai/scripts/maintenance/backup.mjs
test/playwright/integration/BackupRestoreWipe.integration.spec.mjs:104 — await import('./buildScripts/ai/restore.mjs') → ./ai/scripts/maintenance/restore.mjs
test/playwright/integration/KBBackupRestoreWipe.integration.spec.mjs:500 — await import('./buildScripts/ai/ingestTenant.mjs') → ./ai/scripts/maintenance/ingestTenant.mjs
Acceptance Criteria
- 19 source files moved into ai/scripts/{maintenance,migrations,diagnostics,runners,setup}/.
buildScripts/ai/ directory deleted.
- All test mirrors moved.
- ~11 npm script paths updated.
- Workflow + integration-test import path updates applied.
- All affected specs pass.
buildScripts/ contents reflect genuine-build-pipeline only (audit).
Depends on
Sub 11 (must merge first — creates the thematic subfolders that this Sub also targets).
Authored by: [Claude Opus 4.7] (Claude Code)
Parent Epic
#11831 — Sub 12 of Epic (folder-structure cleanup; buildScripts/ai/ collapse).
Scope
Collapse
buildScripts/ai/(19 files) intoai/scripts/{category}/. The "build vs ai" split was random — neither folder maps cleanly to build-pipeline boundaries. After this Sub,buildScripts/ai/directory deleted entirely;buildScripts/reverts to genuine-build-pipeline content only (apps/release/build subdirs unchanged).Source moves
buildScripts/ai/→ai/scripts/maintenance/(12 files):buildScripts/ai/→ai/scripts/migrations/(1 file):buildScripts/ai/→ai/scripts/diagnostics/(1 file):buildScripts/ai/→ai/scripts/runners/(4 files):buildScripts/ai/→ai/scripts/setup/(1 file):After all moves:
buildScripts/ai/directory deleted.Test moves (mirror source structure)
Audit
test/playwright/unit/ai/buildScripts/(andtest/playwright/unit/buildScripts/ai/if it exists) — move all specs to mirror new ai/scripts/{category}/ locations.package.json
11 npm script paths updated:
"ai:agent"→./ai/scripts/runners/runAgent.mjs"ai:backup"→./ai/scripts/maintenance/backup.mjs"ai:build-kb-faqs"→./ai/scripts/maintenance/buildKbAgentFaqs.mjs"ai:defrag-kb"→./ai/scripts/maintenance/defragChromaDB.mjs --target knowledge-base"ai:defrag-memory"→./ai/scripts/maintenance/defragChromaDB.mjs --target memory-core"ai:defrag-sqlite"→./ai/scripts/maintenance/defragSQLiteDB.mjs"ai:download-kb"→./ai/scripts/maintenance/downloadKnowledgeBase.mjs"ai:ingest-tenant"→./ai/scripts/maintenance/ingestTenant.mjs"ai:kb-push-client"→./ai/scripts/maintenance/kbPushClient.mjs"ai:mcp-healthcheck"→./ai/scripts/diagnostics/mcpHealthcheck.mjs"ai:restore"→./ai/scripts/maintenance/restore.mjs"ai:run-sandman"→./ai/scripts/runners/runSandman.mjs(Other npm scripts pointing at
buildScripts/ai/files not enumerated here — audit + update.).github/workflows
Audit any workflow references to
buildScripts/ai/paths.Integration tests
3 known stale imports:
test/playwright/integration/BackupRestoreWipe.integration.spec.mjs:78—await import('./buildScripts/ai/backup.mjs')→./ai/scripts/maintenance/backup.mjstest/playwright/integration/BackupRestoreWipe.integration.spec.mjs:104—await import('./buildScripts/ai/restore.mjs')→./ai/scripts/maintenance/restore.mjstest/playwright/integration/KBBackupRestoreWipe.integration.spec.mjs:500—await import('./buildScripts/ai/ingestTenant.mjs')→./ai/scripts/maintenance/ingestTenant.mjsAcceptance Criteria
buildScripts/ai/directory deleted.buildScripts/contents reflect genuine-build-pipeline only (audit).Depends on
Sub 11 (must merge first — creates the thematic subfolders that this Sub also targets).
Authored by: [Claude Opus 4.7] (Claude Code)