spine-framework 0.4.4 → 0.5.0-rc.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (283) hide show
  1. package/.env.example +13 -3
  2. package/.framework/cli/commands/bootstrap.ts +392 -0
  3. package/.framework/cli/commands/dev.ts +91 -218
  4. package/.framework/cli/commands/doctor.ts +132 -26
  5. package/.framework/cli/commands/generate.ts +38 -298
  6. package/.framework/cli/commands/init.ts +20 -1
  7. package/.framework/cli/commands/migrate.ts +36 -30
  8. package/.framework/cli/commands/migrations.ts +16 -56
  9. package/.framework/cli/commands/upgrade.ts +35 -0
  10. package/.framework/cli/commands/validate-schema.ts +147 -0
  11. package/.framework/cli/context.ts +223 -110
  12. package/.framework/cli/index.ts +6 -0
  13. package/.framework/cli/lib/project-files.ts +241 -1
  14. package/.framework/functions/_shared/hash-api-key.ts +183 -79
  15. package/.framework/functions/_shared/logging.ts +562 -224
  16. package/.framework/functions/_shared/middleware.ts +47 -44
  17. package/.framework/functions/admin-data.ts +39 -28
  18. package/.framework/functions/ai-agents.ts +10 -6
  19. package/.framework/functions/api-keys.ts +301 -122
  20. package/.framework/functions/apps.ts +43 -26
  21. package/.framework/functions/cil-ingest.ts +48 -15
  22. package/.framework/functions/debug-auth.ts +14 -8
  23. package/.framework/functions/deliveries.ts +39 -12
  24. package/.framework/functions/embeddings.ts +145 -76
  25. package/.framework/functions/integration-outbound.ts +67 -27
  26. package/.framework/functions/integrations.ts +254 -127
  27. package/.framework/functions/logs.ts +273 -133
  28. package/.framework/functions/observability.ts +277 -147
  29. package/.framework/functions/pipeline-executions.ts +1 -1
  30. package/.framework/functions/pipelines.ts +14 -9
  31. package/.framework/functions/prompt-configs.ts +7 -4
  32. package/.framework/functions/roles.ts +8 -5
  33. package/.framework/functions/security.ts +30 -17
  34. package/.framework/functions/system-cron.ts +240 -127
  35. package/.framework/functions/tests.ts +7 -6
  36. package/.framework/functions/timers.ts +310 -107
  37. package/.framework/functions/triggers.ts +28 -13
  38. package/.framework/functions/types.ts +13 -10
  39. package/.framework/migrations/069_log_stats_window.sql +54 -0
  40. package/.framework/migrations/070_app_type_schema_rpcs.sql +166 -0
  41. package/.framework/migrations/071_timer_interval_keys.sql +96 -0
  42. package/.framework/migrations/072_slug_autofill.sql +77 -0
  43. package/.framework/migrations/073_seed_member_roles.sql +26 -0
  44. package/.framework/src/apps/admin/index.tsx +1141 -775
  45. package/.framework/src/components/ErrorBoundary.tsx +136 -0
  46. package/.framework/src/components/admin/AdminListPage.tsx +81 -73
  47. package/.framework/src/components/admin/AdminSidebar.tsx +88 -79
  48. package/.framework/src/components/admin/EntitySelect.tsx +181 -0
  49. package/.framework/src/components/admin/PageInstructions.tsx +86 -127
  50. package/.framework/src/components/app-shell/GenericDetailPage.tsx +37 -13
  51. package/.framework/src/components/app-shell/GenericListPage.tsx +28 -32
  52. package/.framework/src/components/layout/Sidebar.tsx +300 -177
  53. package/.framework/src/components/runtime/DataDetailPage.tsx +67 -35
  54. package/.framework/src/components/runtime/DataHeader.tsx +96 -48
  55. package/.framework/src/components/runtime/DataListPage.tsx +3 -26
  56. package/.framework/src/components/runtime/DataStats.tsx +10 -10
  57. package/.framework/src/components/runtime/DataTable.tsx +12 -10
  58. package/.framework/src/components/ui/sheet.tsx +24 -26
  59. package/.framework/src/components/ui/textarea.tsx +74 -48
  60. package/.framework/src/hooks/useEntityList.ts +12 -9
  61. package/.framework/src/hooks/useListSchema.ts +108 -58
  62. package/.framework/src/instructions/README.md +57 -0
  63. package/.framework/src/instructions/ai-agents.md +69 -0
  64. package/.framework/src/instructions/alerts.md +80 -0
  65. package/.framework/src/instructions/api-keys.md +87 -0
  66. package/.framework/src/instructions/apps.md +77 -0
  67. package/.framework/src/instructions/concepts/ai-and-prompts.md +150 -0
  68. package/.framework/src/instructions/concepts/apps-and-renderers.md +162 -0
  69. package/.framework/src/instructions/concepts/auth-and-api-keys.md +133 -0
  70. package/.framework/src/instructions/concepts/automation.md +186 -0
  71. package/.framework/src/instructions/concepts/concurrency-and-idempotency.md +125 -0
  72. package/.framework/src/instructions/concepts/core-vs-custom.md +124 -0
  73. package/.framework/src/instructions/concepts/design-schema.md +152 -0
  74. package/.framework/src/instructions/concepts/integrations-and-webhooks.md +127 -0
  75. package/.framework/src/instructions/concepts/observability.md +116 -0
  76. package/.framework/src/instructions/concepts/permissions.md +150 -0
  77. package/.framework/src/instructions/concepts/runtime-records.md +111 -0
  78. package/.framework/src/instructions/concepts/scope-and-accounts.md +112 -0
  79. package/.framework/src/instructions/concepts/spine-way.md +172 -0
  80. package/.framework/src/instructions/deliveries.md +59 -0
  81. package/.framework/src/instructions/guide/00-orientation.md +106 -0
  82. package/.framework/src/instructions/guide/01-install-and-first-run.md +253 -0
  83. package/.framework/src/instructions/guide/02-project-map.md +147 -0
  84. package/.framework/src/instructions/guide/03-domain-model.md +223 -0
  85. package/.framework/src/instructions/guide/04-first-app.md +227 -0
  86. package/.framework/src/instructions/guide/05-glossary.md +183 -0
  87. package/.framework/src/instructions/integrations.md +96 -0
  88. package/.framework/src/instructions/internal/cil-markers.md +83 -0
  89. package/.framework/src/instructions/invites.md +60 -0
  90. package/.framework/src/instructions/kb.md +80 -0
  91. package/.framework/src/instructions/logs.md +77 -0
  92. package/.framework/src/instructions/observability.md +61 -0
  93. package/.framework/src/instructions/operations/deployment.md +115 -0
  94. package/.framework/src/instructions/operations/migrations.md +125 -0
  95. package/.framework/src/instructions/operations/security-checklist.md +148 -0
  96. package/.framework/src/instructions/operations/troubleshooting.md +170 -0
  97. package/.framework/src/instructions/operations/upgrade.md +116 -0
  98. package/.framework/src/instructions/pipeline-executions.md +62 -0
  99. package/.framework/src/instructions/pipelines.md +78 -0
  100. package/.framework/src/instructions/prompts.md +95 -0
  101. package/.framework/src/instructions/reference/api/admin-data.md +162 -0
  102. package/.framework/src/instructions/reference/api/auth.md +113 -0
  103. package/.framework/src/instructions/reference/api/errors-and-envelopes.md +113 -0
  104. package/.framework/src/instructions/reference/app-manifest.md +150 -0
  105. package/.framework/src/instructions/reference/cli.md +124 -0
  106. package/.framework/src/instructions/reference/database.md +132 -0
  107. package/.framework/src/instructions/reference/design-schema.md +280 -0
  108. package/.framework/src/instructions/reference/env-vars.md +133 -0
  109. package/.framework/src/instructions/reference/functions/account-nodes.md +75 -0
  110. package/.framework/src/instructions/reference/functions/admin-data.md +195 -0
  111. package/.framework/src/instructions/reference/functions/admin-funnel.md +90 -0
  112. package/.framework/src/instructions/reference/functions/admin-install-funnel.md +107 -0
  113. package/.framework/src/instructions/reference/functions/admin-signals.md +102 -0
  114. package/.framework/src/instructions/reference/functions/ai-agents.md +148 -0
  115. package/.framework/src/instructions/reference/functions/ai-interactions.md +156 -0
  116. package/.framework/src/instructions/reference/functions/api-keys.md +130 -0
  117. package/.framework/src/instructions/reference/functions/apps.md +140 -0
  118. package/.framework/src/instructions/reference/functions/auth.md +99 -0
  119. package/.framework/src/instructions/reference/functions/debug-auth.md +91 -0
  120. package/.framework/src/instructions/reference/functions/deliveries.md +110 -0
  121. package/.framework/src/instructions/reference/functions/embeddings.md +166 -0
  122. package/.framework/src/instructions/reference/functions/eval-harness.md +149 -0
  123. package/.framework/src/instructions/reference/functions/index.md +103 -0
  124. package/.framework/src/instructions/reference/functions/integration-outbound.md +200 -0
  125. package/.framework/src/instructions/reference/functions/integration-routes.md +151 -0
  126. package/.framework/src/instructions/reference/functions/integrations.md +130 -0
  127. package/.framework/src/instructions/reference/functions/invites.md +182 -0
  128. package/.framework/src/instructions/reference/functions/item-progress.md +107 -0
  129. package/.framework/src/instructions/reference/functions/kb.md +166 -0
  130. package/.framework/src/instructions/reference/functions/logs.md +141 -0
  131. package/.framework/src/instructions/reference/functions/observability.md +105 -0
  132. package/.framework/src/instructions/reference/functions/pipeline-executions.md +132 -0
  133. package/.framework/src/instructions/reference/functions/pipeline-runner-background.md +121 -0
  134. package/.framework/src/instructions/reference/functions/pipelines.md +136 -0
  135. package/.framework/src/instructions/reference/functions/prompt-configs.md +121 -0
  136. package/.framework/src/instructions/reference/functions/roles.md +121 -0
  137. package/.framework/src/instructions/reference/functions/security.md +140 -0
  138. package/.framework/src/instructions/reference/functions/system-cron.md +136 -0
  139. package/.framework/src/instructions/reference/functions/system.md +106 -0
  140. package/.framework/src/instructions/reference/functions/tests.md +97 -0
  141. package/.framework/src/instructions/reference/functions/timers.md +117 -0
  142. package/.framework/src/instructions/reference/functions/trigger-scheduler.md +102 -0
  143. package/.framework/src/instructions/reference/functions/triggers.md +140 -0
  144. package/.framework/src/instructions/reference/functions/types.md +146 -0
  145. package/.framework/src/instructions/reference/seeds.md +126 -0
  146. package/.framework/src/instructions/reference/shared-modules.md +127 -0
  147. package/.framework/src/instructions/reference/spine-config.md +114 -0
  148. package/.framework/src/instructions/roles.md +80 -0
  149. package/.framework/src/instructions/runtime-detail.md +70 -0
  150. package/.framework/src/instructions/runtime-list.md +77 -0
  151. package/.framework/src/instructions/security.md +67 -0
  152. package/.framework/src/instructions/tasks/add-a-pipeline.md +110 -0
  153. package/.framework/src/instructions/tasks/add-a-role.md +96 -0
  154. package/.framework/src/instructions/tasks/add-a-timer.md +114 -0
  155. package/.framework/src/instructions/tasks/add-a-trigger.md +106 -0
  156. package/.framework/src/instructions/tasks/add-a-type.md +151 -0
  157. package/.framework/src/instructions/tasks/add-a-webhook.md +108 -0
  158. package/.framework/src/instructions/tasks/add-an-ai-agent.md +108 -0
  159. package/.framework/src/instructions/tasks/add-an-integration.md +124 -0
  160. package/.framework/src/instructions/tasks/build-a-custom-page.md +118 -0
  161. package/.framework/src/instructions/tasks/package-and-install-an-app.md +127 -0
  162. package/.framework/src/instructions/tasks/test-your-code.md +108 -0
  163. package/.framework/src/instructions/tasks/write-a-function.md +132 -0
  164. package/.framework/src/instructions/tasks/write-a-migration.md +110 -0
  165. package/.framework/src/instructions/testing.md +59 -0
  166. package/.framework/src/instructions/timers.md +82 -0
  167. package/.framework/src/instructions/triggers.md +69 -0
  168. package/.framework/src/instructions/types.md +93 -0
  169. package/.framework/src/pages/NotFoundPage.tsx +62 -31
  170. package/.framework/src/pages/admin/AIAgentDetailPage.tsx +117 -106
  171. package/.framework/src/pages/admin/AIAgentsPage.tsx +86 -48
  172. package/.framework/src/pages/admin/APIKeyDetailPage.tsx +153 -152
  173. package/.framework/src/pages/admin/APIKeysPage.tsx +91 -90
  174. package/.framework/src/pages/admin/AlertsConfigPage.tsx +29 -18
  175. package/.framework/src/pages/admin/AppDetailPage.tsx +6 -60
  176. package/.framework/src/pages/admin/AppsPage.tsx +104 -66
  177. package/.framework/src/pages/admin/DeliveriesPage.tsx +5 -5
  178. package/.framework/src/pages/admin/EmbeddingDetailPage.tsx +5 -23
  179. package/.framework/src/pages/admin/EmbeddingsPage.tsx +5 -26
  180. package/.framework/src/pages/admin/IntegrationDetailPage.tsx +7 -7
  181. package/.framework/src/pages/admin/IntegrationsPage.tsx +85 -43
  182. package/.framework/src/pages/admin/LogsPage.tsx +144 -76
  183. package/.framework/src/pages/admin/ObservabilityDashboard.tsx +223 -140
  184. package/.framework/src/pages/admin/PipelineDetailPage.tsx +134 -113
  185. package/.framework/src/pages/admin/PipelineExecutionsPage.tsx +108 -45
  186. package/.framework/src/pages/admin/PipelinesPage.tsx +160 -115
  187. package/.framework/src/pages/admin/PromptConfigDetailPage.tsx +96 -98
  188. package/.framework/src/pages/admin/PromptConfigsPage.tsx +101 -59
  189. package/.framework/src/pages/admin/RoleDetailPage.tsx +90 -79
  190. package/.framework/src/pages/admin/RolesPage.tsx +86 -43
  191. package/.framework/src/pages/admin/SecurityPage.tsx +1 -1
  192. package/.framework/src/pages/admin/TestingDashboard.tsx +16 -28
  193. package/.framework/src/pages/admin/TimerDetailPage.tsx +117 -100
  194. package/.framework/src/pages/admin/TimersPage.tsx +90 -62
  195. package/.framework/src/pages/admin/TriggerDetailPage.tsx +90 -83
  196. package/.framework/src/pages/admin/TriggersPage.tsx +124 -99
  197. package/.framework/src/pages/admin/TypeDetailPage.tsx +152 -138
  198. package/.framework/src/pages/admin/TypesPage.tsx +90 -48
  199. package/.framework/src/pages/admin/cil/CILAgentPage.tsx +17 -25
  200. package/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx +17 -27
  201. package/.framework/src/pages/admin/cil/CILDashboardPage.tsx +72 -40
  202. package/.framework/src/pages/admin/cil/CILFileListPage.tsx +321 -129
  203. package/.framework/src/pages/admin/cil/CILFileSelectPage.tsx +18 -29
  204. package/.framework/src/pages/admin/cil/CILGraphPage.tsx +26 -38
  205. package/.framework/src/pages/admin/cil/CILIngestionPage.tsx +34 -46
  206. package/.framework/src/pages/admin/cil/CILProjectsPage.tsx +189 -103
  207. package/.framework/src/pages/admin/cil/CILSearchPage.tsx +246 -136
  208. package/.framework/src/pages/admin/cil/CILSuggestionsPage.tsx +11 -22
  209. package/.framework/src/pages/admin/cil/CILVersionsPage.tsx +9 -20
  210. package/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx +26 -38
  211. package/.framework/src/pages/admin/kb/KBAdminPage.tsx +7 -26
  212. package/.framework/templates/agent/AGENTS.md +150 -0
  213. package/.framework/templates/agent/skills/spine-add-ai-agent/SKILL.md +58 -0
  214. package/.framework/templates/agent/skills/spine-add-automation/SKILL.md +62 -0
  215. package/.framework/templates/agent/skills/spine-add-integration/SKILL.md +63 -0
  216. package/.framework/templates/agent/skills/spine-architect/SKILL.md +86 -0
  217. package/.framework/templates/agent/skills/spine-install-app/SKILL.md +72 -0
  218. package/.framework/templates/agent/skills/spine-migration/SKILL.md +75 -0
  219. package/.framework/templates/agent/skills/spine-new-app/SKILL.md +67 -0
  220. package/.framework/templates/agent/skills/spine-new-function/SKILL.md +65 -0
  221. package/.framework/templates/agent/skills/spine-new-type/SKILL.md +65 -0
  222. package/.framework/templates/agent/skills/spine-schema/SKILL.md +77 -0
  223. package/.framework/templates/agent/skills/spine-test/SKILL.md +67 -0
  224. package/.framework/templates/agent/skills/spine-troubleshoot/SKILL.md +74 -0
  225. package/.framework/templates/agent/skills/spine-upgrade/SKILL.md +69 -0
  226. package/.framework/templates/project.json +4 -1
  227. package/.framework/tests/unit/account-scoping-gates.test.ts +392 -0
  228. package/.framework/tests/unit/agent-files.test.ts +355 -0
  229. package/.framework/tests/unit/agent-runner.test.ts +479 -44
  230. package/.framework/tests/unit/api-keys-create-scope-gate.test.ts +160 -0
  231. package/.framework/tests/unit/api-keys-omit-secret-fields.test.ts +38 -0
  232. package/.framework/tests/unit/bootstrap.test.ts +242 -0
  233. package/.framework/tests/unit/cli-context-api-key.test.ts +114 -0
  234. package/.framework/tests/unit/debug-auth.test.ts +38 -0
  235. package/.framework/tests/unit/deliveries-account-scoping.test.ts +185 -0
  236. package/.framework/tests/unit/integration-outbound-credentials.test.ts +167 -0
  237. package/.framework/tests/unit/integrations-audit-redaction.test.ts +130 -0
  238. package/.framework/tests/unit/logging-app-id.test.ts +75 -0
  239. package/.framework/tests/unit/system-context-denial.test.ts +145 -0
  240. package/.framework/tests/unit/system-cron.test.ts +240 -0
  241. package/.framework/tests/unit/timers.test.ts +159 -0
  242. package/README.md +125 -166
  243. package/config/tsconfig.cli.json +2 -2
  244. package/package.json +15 -4
  245. package/templates/project/package-lock.json +2 -2
  246. package/.framework/docs/admin-routes.md +0 -76
  247. package/.framework/docs/api-docs-progress.md +0 -38
  248. package/.framework/docs/api-governance.md +0 -146
  249. package/.framework/docs/api-testing-results.md +0 -212
  250. package/.framework/docs/assembly-launch-guide.md +0 -138
  251. package/.framework/docs/audit-results.md +0 -590
  252. package/.framework/docs/db-api-inventory.md +0 -95
  253. package/.framework/docs/gap-remediation-backlog.md +0 -103
  254. package/.framework/docs/ui-adoption-verification.md +0 -111
  255. package/.framework/docs/ui-api-coverage.md +0 -84
  256. package/.framework/docs/v2-compatibility-audit.md +0 -228
  257. package/.framework/mcp/index.ts +0 -133
  258. package/.framework/mcp/load-env.ts +0 -60
  259. package/.framework/mcp/shared/app-manifest.ts +0 -275
  260. package/.framework/mcp/shared/db.ts +0 -477
  261. package/.framework/mcp/shared/kb.ts +0 -118
  262. package/.framework/mcp/tools/architect.ts +0 -431
  263. package/.framework/mcp/tools/cil/context.ts +0 -345
  264. package/.framework/mcp/tools/cil/graph.ts +0 -242
  265. package/.framework/mcp/tools/cil/ingest.ts +0 -1217
  266. package/.framework/mcp/tools/cil/pipeline-orchestrator.ts +0 -693
  267. package/.framework/mcp/tools/cil/pipeline.ts +0 -767
  268. package/.framework/mcp/tools/cil/project.ts +0 -791
  269. package/.framework/mcp/tools/cil/retrieval.ts +0 -336
  270. package/.framework/mcp/tools/cil/search-core.ts +0 -454
  271. package/.framework/mcp/tools/cil/search.ts +0 -97
  272. package/.framework/mcp/tools/cil/suggest.ts +0 -186
  273. package/.framework/mcp/tools/cil/validate.ts +0 -1369
  274. package/.framework/mcp/tools/kb/delete.ts +0 -139
  275. package/.framework/mcp/tools/kb/index.ts +0 -52
  276. package/.framework/mcp/tools/kb/ingest.ts +0 -84
  277. package/.framework/mcp/tools/kb/list-types.ts +0 -102
  278. package/.framework/mcp/tools/kb/publish.ts +0 -100
  279. package/.framework/mcp/tools/kb/reindex.ts +0 -86
  280. package/.framework/mcp/tools/kb/revoke.ts +0 -85
  281. package/.framework/mcp/tools/kb/search.ts +0 -101
  282. package/.framework/mcp/tools/kb/upsert.ts +0 -125
  283. package/.framework/mcp/tools/observability.ts +0 -510
@@ -1,4 +1,4 @@
1
- // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:module_header:module_header" type="module_header" identity="module_header" parent="none"]
1
+ // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:module_header:module_header" type="module_header" identity="module_header" parent="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
2
2
  // CIL[DOC-MACRO purpose="React admin page for visualizing and controlling the CIL flexible pipeline for a project."]
3
3
  // CIL[DOC-RESPONSIBILITY responsibility="Import dependencies, set up the admin page module, and render the root page instructions."]
4
4
  // CIL[DOC-CONTEXT module="pages.admin.cil" layer="presentation" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/alert.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tabs.tsx,.framework/src/lib/api.ts"]
@@ -19,6 +19,7 @@ import { Progress } from '@core/components/ui/progress'
19
19
  import { Alert, AlertDescription } from '@core/components/ui/alert'
20
20
  import { Tabs, TabsContent, TabsList, TabsTrigger } from '@core/components/ui/tabs'
21
21
  import {
22
+ // CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:module_header:module_header"]
22
23
  CheckCircle2,
23
24
  RefreshCw,
24
25
  Play,
@@ -36,16 +37,13 @@ import {
36
37
  FileCode2,
37
38
  } from 'lucide-react'
38
39
 
39
- import { PageInstructions } from '../../../components/admin/PageInstructions'
40
40
  // CIL[DOC-VECTOR type="context" content="purpose='React admin page for visualizing and controlling the CIL flexible pipeline for a project.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
41
41
  // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
42
42
  // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
43
43
  // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
44
44
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
45
45
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
46
- // CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:module_header:module_header"]
47
46
 
48
- // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:filepipelinestate:interface" type="interface" identity="FilePipelineState" parent="none"]
49
47
  // CIL[DOC-MACRO purpose="TypeScript interface describing the shape of FilePipelineState."]
50
48
  // CIL[DOC-RESPONSIBILITY responsibility="Define the data contract for FilePipelineState."]
51
49
  // CIL[DOC-CONTEXT module="pages.admin.cil" layer="presentation" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/alert.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tabs.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
@@ -53,6 +51,7 @@ import { PageInstructions } from '../../../components/admin/PageInstructions'
53
51
  // CIL[DOC-MICRO logic_summary="Describes the per-file state including path, current status, completed/ready/blocked steps, and progress percentage." notable_decisions="[]"]
54
52
  // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
55
53
  // CIL[DOC-STABILITY stability="stable"]
54
+ // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:FilePipelineState:interface" type="interface" identity="FilePipelineState" parent="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
56
55
  interface FilePipelineState {
57
56
  file_path: string
58
57
  current_status: string
@@ -61,15 +60,14 @@ interface FilePipelineState {
61
60
  blocked_by: number[]
62
61
  progress_percentage: number
63
62
  }
63
+ // CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:FilePipelineState:interface"]
64
64
  // CIL[DOC-VECTOR type="context" content="purpose='TypeScript interface describing the shape of FilePipelineState.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
65
65
  // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
66
66
  // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
67
67
  // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
68
68
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
69
69
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
70
- // CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:filepipelinestate:interface"]
71
70
 
72
- // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:pipelinestatus:interface" type="interface" identity="PipelineStatus" parent="none"]
73
71
  // CIL[DOC-MACRO purpose="TypeScript interface describing the shape of PipelineStatus."]
74
72
  // CIL[DOC-RESPONSIBILITY responsibility="Define the data contract for PipelineStatus."]
75
73
  // CIL[DOC-CONTEXT module="pages.admin.cil" layer="presentation" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/alert.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tabs.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
@@ -77,21 +75,21 @@ interface FilePipelineState {
77
75
  // CIL[DOC-MICRO logic_summary="Describes the overall pipeline status for a project, including all files and a step summary." notable_decisions="[]"]
78
76
  // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
79
77
  // CIL[DOC-STABILITY stability="stable"]
78
+ // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:PipelineStatus:interface" type="interface" identity="PipelineStatus" parent="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
80
79
  interface PipelineStatus {
81
80
  project_id: string
82
81
  files: FilePipelineState[]
83
82
  step_summary: Record<number, { completed: number; pending: number; in_progress: number }>
84
83
  overall_progress: number
85
84
  }
85
+ // CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:PipelineStatus:interface"]
86
86
  // CIL[DOC-VECTOR type="context" content="purpose='TypeScript interface describing the shape of PipelineStatus.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
87
87
  // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
88
88
  // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
89
89
  // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
90
90
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
91
91
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
92
- // CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:pipelinestatus:interface"]
93
92
 
94
- // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:filesreadyforstep:interface" type="interface" identity="FilesReadyForStep" parent="none"]
95
93
  // CIL[DOC-MACRO purpose="TypeScript interface describing the shape of FilesReadyForStep."]
96
94
  // CIL[DOC-RESPONSIBILITY responsibility="Define the data contract for FilesReadyForStep."]
97
95
  // CIL[DOC-CONTEXT module="pages.admin.cil" layer="presentation" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/alert.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tabs.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
@@ -99,6 +97,7 @@ interface PipelineStatus {
99
97
  // CIL[DOC-MICRO logic_summary="Describes the response for files that are ready to be processed for a specific step, including blocking info." notable_decisions="[]"]
100
98
  // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
101
99
  // CIL[DOC-STABILITY stability="stable"]
100
+ // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:FilesReadyForStep:interface" type="interface" identity="FilesReadyForStep" parent="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
102
101
  interface FilesReadyForStep {
103
102
  ok: boolean
104
103
  project_id: string
@@ -118,15 +117,14 @@ interface FilesReadyForStep {
118
117
  blocking_reasons: string[]
119
118
  }>
120
119
  }
120
+ // CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:FilesReadyForStep:interface"]
121
121
  // CIL[DOC-VECTOR type="context" content="purpose='TypeScript interface describing the shape of FilesReadyForStep.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
122
122
  // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
123
123
  // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
124
124
  // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
125
125
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
126
126
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
127
- // CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:filesreadyforstep:interface"]
128
127
 
129
- // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:bottleneckanalysis:interface" type="interface" identity="BottleneckAnalysis" parent="none"]
130
128
  // CIL[DOC-MACRO purpose="TypeScript interface describing the shape of BottleneckAnalysis."]
131
129
  // CIL[DOC-RESPONSIBILITY responsibility="Define the data contract for BottleneckAnalysis."]
132
130
  // CIL[DOC-CONTEXT module="pages.admin.cil" layer="presentation" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/alert.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tabs.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
@@ -134,6 +132,7 @@ interface FilesReadyForStep {
134
132
  // CIL[DOC-MICRO logic_summary="Describes the bottleneck analysis result with bottlenecks, recommendations, and optimal processing order." notable_decisions="[]"]
135
133
  // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
136
134
  // CIL[DOC-STABILITY stability="stable"]
135
+ // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:BottleneckAnalysis:interface" type="interface" identity="BottleneckAnalysis" parent="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
137
136
  interface BottleneckAnalysis {
138
137
  project_id: string
139
138
  bottlenecks: Array<{
@@ -158,15 +157,14 @@ interface BottleneckAnalysis {
158
157
  ready_for_processing: number
159
158
  }
160
159
  }
160
+ // CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:BottleneckAnalysis:interface"]
161
161
  // CIL[DOC-VECTOR type="context" content="purpose='TypeScript interface describing the shape of BottleneckAnalysis.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
162
162
  // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
163
163
  // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
164
164
  // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
165
165
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
166
166
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
167
- // CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:bottleneckanalysis:interface"]
168
167
 
169
- // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:step_labels:constant" type="constant" identity="STEP_LABELS" parent="none"]
170
168
  // CIL[DOC-MACRO purpose="Named constant mapping used across the pipeline UI."]
171
169
  // CIL[DOC-RESPONSIBILITY responsibility="Provide a lookup table for STEP_LABELS."]
172
170
  // CIL[DOC-CONTEXT module="pages.admin.cil" layer="presentation" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/alert.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tabs.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
@@ -174,6 +172,7 @@ interface BottleneckAnalysis {
174
172
  // CIL[DOC-MICRO logic_summary="Maps each pipeline step index to a human-readable label." notable_decisions="[]"]
175
173
  // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
176
174
  // CIL[DOC-STABILITY stability="stable"]
175
+ // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:STEP_LABELS:constant" type="constant" identity="STEP_LABELS" parent="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
177
176
  const STEP_LABELS: Record<number, string> = {
178
177
  0: 'Discover Files',
179
178
  1: 'Select Files',
@@ -185,15 +184,14 @@ const STEP_LABELS: Record<number, string> = {
185
184
  7: 'Embed & Map',
186
185
  8: 'Publish',
187
186
  }
187
+ // CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:STEP_LABELS:constant"]
188
188
  // CIL[DOC-VECTOR type="context" content="purpose='Named constant mapping used across the pipeline UI.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
189
189
  // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
190
190
  // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
191
191
  // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
192
192
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
193
193
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
194
- // CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:step_labels:constant"]
195
194
 
196
- // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:step_colors:constant" type="constant" identity="STEP_COLORS" parent="none"]
197
195
  // CIL[DOC-MACRO purpose="Named constant mapping used across the pipeline UI."]
198
196
  // CIL[DOC-RESPONSIBILITY responsibility="Provide a lookup table for STEP_COLORS."]
199
197
  // CIL[DOC-CONTEXT module="pages.admin.cil" layer="presentation" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/alert.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tabs.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
@@ -201,6 +199,7 @@ const STEP_LABELS: Record<number, string> = {
201
199
  // CIL[DOC-MICRO logic_summary="Maps each pipeline step index to a Tailwind color class string for badges and progress." notable_decisions="[]"]
202
200
  // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
203
201
  // CIL[DOC-STABILITY stability="stable"]
202
+ // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:STEP_COLORS:constant" type="constant" identity="STEP_COLORS" parent="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
204
203
  const STEP_COLORS: Record<number, string> = {
205
204
  0: 'bg-slate-100 text-slate-700',
206
205
  1: 'bg-gray-100 text-gray-700',
@@ -212,15 +211,14 @@ const STEP_COLORS: Record<number, string> = {
212
211
  7: 'bg-indigo-100 text-indigo-700',
213
212
  8: 'bg-violet-100 text-violet-700',
214
213
  }
214
+ // CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:STEP_COLORS:constant"]
215
215
  // CIL[DOC-VECTOR type="context" content="purpose='Named constant mapping used across the pipeline UI.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
216
216
  // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
217
217
  // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
218
218
  // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
219
219
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
220
220
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
221
- // CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:step_colors:constant"]
222
221
 
223
- // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:priority_colors:constant" type="constant" identity="PRIORITY_COLORS" parent="none"]
224
222
  // CIL[DOC-MACRO purpose="Named constant mapping used across the pipeline UI."]
225
223
  // CIL[DOC-RESPONSIBILITY responsibility="Provide a lookup table for PRIORITY_COLORS."]
226
224
  // CIL[DOC-CONTEXT module="pages.admin.cil" layer="presentation" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/alert.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tabs.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
@@ -228,20 +226,20 @@ const STEP_COLORS: Record<number, string> = {
228
226
  // CIL[DOC-MICRO logic_summary="Maps priority levels to Tailwind color class strings." notable_decisions="[]"]
229
227
  // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
230
228
  // CIL[DOC-STABILITY stability="stable"]
229
+ // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:PRIORITY_COLORS:constant" type="constant" identity="PRIORITY_COLORS" parent="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
231
230
  const PRIORITY_COLORS: Record<string, string> = {
232
231
  high: 'bg-red-100 text-red-700',
233
232
  medium: 'bg-yellow-100 text-yellow-700',
234
233
  low: 'bg-gray-100 text-gray-700',
235
234
  }
235
+ // CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:PRIORITY_COLORS:constant"]
236
236
  // CIL[DOC-VECTOR type="context" content="purpose='Named constant mapping used across the pipeline UI.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
237
237
  // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
238
238
  // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
239
239
  // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
240
240
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
241
241
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
242
- // CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:priority_colors:constant"]
243
242
 
244
- // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:fileprogresscard:function" type="function" identity="FileProgressCard" parent="none"]
245
243
  // CIL[DOC-MACRO purpose="React/TypeScript function for rendering FileProgressCard."]
246
244
  // CIL[DOC-RESPONSIBILITY responsibility="Render the FileProgressCard UI and handle user interactions."]
247
245
  // CIL[DOC-CONTEXT module="pages.admin.cil" layer="presentation" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/alert.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tabs.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
@@ -249,6 +247,7 @@ const PRIORITY_COLORS: Record<string, string> = {
249
247
  // CIL[DOC-MICRO logic_summary="Shows a single file's progress, completed/ready/blocked steps, and a button to process the next available step." notable_decisions="[]"]
250
248
  // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
251
249
  // CIL[DOC-STABILITY stability="stable"]
250
+ // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:FileProgressCard:component" type="component" identity="FileProgressCard" parent="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
252
251
  function FileProgressCard({ file, onProcess }: {
253
252
  file: FilePipelineState
254
253
  onProcess: (filePath: string, step: number) => void
@@ -302,15 +301,14 @@ function FileProgressCard({ file, onProcess }: {
302
301
  </Card>
303
302
  )
304
303
  }
304
+ // CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:FileProgressCard:component"]
305
305
  // CIL[DOC-VECTOR type="context" content="purpose='React/TypeScript function for rendering FileProgressCard.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
306
306
  // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
307
307
  // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
308
308
  // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
309
309
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
310
310
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
311
- // CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:fileprogresscard:function"]
312
311
 
313
- // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:stepsummarycard:function" type="function" identity="StepSummaryCard" parent="none"]
314
312
  // CIL[DOC-MACRO purpose="React/TypeScript function for rendering StepSummaryCard."]
315
313
  // CIL[DOC-RESPONSIBILITY responsibility="Render the StepSummaryCard UI and handle user interactions."]
316
314
  // CIL[DOC-CONTEXT module="pages.admin.cil" layer="presentation" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/alert.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tabs.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
@@ -318,6 +316,7 @@ function FileProgressCard({ file, onProcess }: {
318
316
  // CIL[DOC-MICRO logic_summary="Renders a step summary with completion stats, a progress bar, and a button to process all ready files in that step." notable_decisions="[]"]
319
317
  // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
320
318
  // CIL[DOC-STABILITY stability="stable"]
319
+ // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:StepSummaryCard:component" type="component" identity="StepSummaryCard" parent="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
321
320
  function StepSummaryCard({ step, summary, onProcess }: {
322
321
  step: number
323
322
  summary: { completed: number; pending: number; in_progress: number }
@@ -363,15 +362,14 @@ function StepSummaryCard({ step, summary, onProcess }: {
363
362
  </Card>
364
363
  )
365
364
  }
365
+ // CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:StepSummaryCard:component"]
366
366
  // CIL[DOC-VECTOR type="context" content="purpose='React/TypeScript function for rendering StepSummaryCard.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
367
367
  // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
368
368
  // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
369
369
  // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
370
370
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
371
371
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
372
- // CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:stepsummarycard:function"]
373
372
 
374
- // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:bottleneckalert:function" type="function" identity="BottleneckAlert" parent="none"]
375
373
  // CIL[DOC-MACRO purpose="React/TypeScript function for rendering BottleneckAlert."]
376
374
  // CIL[DOC-RESPONSIBILITY responsibility="Render the BottleneckAlert UI and handle user interactions."]
377
375
  // CIL[DOC-CONTEXT module="pages.admin.cil" layer="presentation" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/alert.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tabs.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
@@ -379,6 +377,7 @@ function StepSummaryCard({ step, summary, onProcess }: {
379
377
  // CIL[DOC-MICRO logic_summary="Displays a bottleneck step with ready/blocked counts and a list of blocking reasons." notable_decisions="[]"]
380
378
  // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
381
379
  // CIL[DOC-STABILITY stability="stable"]
380
+ // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:BottleneckAlert:component" type="component" identity="BottleneckAlert" parent="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
382
381
  function BottleneckAlert({ bottleneck }: { bottleneck: BottleneckAnalysis['bottlenecks'][0] }) {
383
382
  return (
384
383
  <Alert className="mb-3">
@@ -409,15 +408,14 @@ function BottleneckAlert({ bottleneck }: { bottleneck: BottleneckAnalysis['bottl
409
408
  </Alert>
410
409
  )
411
410
  }
411
+ // CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:BottleneckAlert:component"]
412
412
  // CIL[DOC-VECTOR type="context" content="purpose='React/TypeScript function for rendering BottleneckAlert.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
413
413
  // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
414
414
  // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
415
415
  // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
416
416
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
417
417
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
418
- // CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:bottleneckalert:function"]
419
418
 
420
- // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:recommendationcard:function" type="function" identity="RecommendationCard" parent="none"]
421
419
  // CIL[DOC-MACRO purpose="React/TypeScript function for rendering RecommendationCard."]
422
420
  // CIL[DOC-RESPONSIBILITY responsibility="Render the RecommendationCard UI and handle user interactions."]
423
421
  // CIL[DOC-CONTEXT module="pages.admin.cil" layer="presentation" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/alert.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tabs.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
@@ -425,6 +423,7 @@ function BottleneckAlert({ bottleneck }: { bottleneck: BottleneckAnalysis['bottl
425
423
  // CIL[DOC-MICRO logic_summary="Renders a single recommendation with a priority badge." notable_decisions="[]"]
426
424
  // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
427
425
  // CIL[DOC-STABILITY stability="stable"]
426
+ // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:RecommendationCard:component" type="component" identity="RecommendationCard" parent="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
428
427
  function RecommendationCard({ recommendation }: { recommendation: BottleneckAnalysis['recommendations'][0] }) {
429
428
  return (
430
429
  <Card className="mb-2">
@@ -443,15 +442,14 @@ function RecommendationCard({ recommendation }: { recommendation: BottleneckAnal
443
442
  </Card>
444
443
  )
445
444
  }
445
+ // CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:RecommendationCard:component"]
446
446
  // CIL[DOC-VECTOR type="context" content="purpose='React/TypeScript function for rendering RecommendationCard.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
447
447
  // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
448
448
  // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
449
449
  // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
450
450
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
451
451
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
452
- // CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:recommendationcard:function"]
453
452
 
454
- // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:flexiblepipelinepage:function" type="function" identity="FlexiblePipelinePage" parent="none"]
455
453
  // CIL[DOC-MACRO purpose="React/TypeScript function for rendering FlexiblePipelinePage."]
456
454
  // CIL[DOC-RESPONSIBILITY responsibility="Render the FlexiblePipelinePage UI and handle user interactions."]
457
455
  // CIL[DOC-CONTEXT module="pages.admin.cil" layer="presentation" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/alert.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/progress.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tabs.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
@@ -459,6 +457,7 @@ function RecommendationCard({ recommendation }: { recommendation: BottleneckAnal
459
457
  // CIL[DOC-MICRO logic_summary="Fetches pipeline status, files ready per step, and bottleneck analysis; renders tabbed dashboard with overview, files, steps, and bottlenecks." notable_decisions="[]"]
460
458
  // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
461
459
  // CIL[DOC-STABILITY stability="stable"]
460
+ // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:FlexiblePipelinePage:component" type="component" identity="FlexiblePipelinePage" parent="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx"]
462
461
  export default function FlexiblePipelinePage() {
463
462
  const { id: projectId } = useParams<{ id: string }>()
464
463
 
@@ -585,17 +584,6 @@ export default function FlexiblePipelinePage() {
585
584
  Refresh
586
585
  </Button>
587
586
  </div>
588
-
589
- <PageInstructions
590
- description="View the flexible pipeline status and identify bottlenecks."
591
- sections={[
592
- { title: 'What this page is for', content: 'This page shows the dependency-aware file processing pipeline for the selected CIL project, including overall progress and per-step status.' },
593
- { title: 'How to read this page', content: 'The Overall Progress card shows the completion percentage and counts for total, complete, and in-progress files. Tabs provide Overview, Files, Steps, and Bottlenecks views.' },
594
- { title: 'How to use this page', content: 'Switch tabs to inspect step summaries, individual file progress, and which files are ready for the next step. Use the Process buttons to advance selected files.' },
595
- { title: 'Important notes', content: 'Bottlenecks are files that cannot proceed until another step completes. Refresh the page to see live progress during ingestion.' },
596
- ]}
597
- />
598
-
599
587
  <Card>
600
588
  <CardHeader>
601
589
  <CardTitle className="flex items-center gap-2">
@@ -727,10 +715,10 @@ export default function FlexiblePipelinePage() {
727
715
  </div>
728
716
  )
729
717
  }
718
+ // CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:FlexiblePipelinePage:component"]
730
719
  // CIL[DOC-VECTOR type="context" content="purpose='React/TypeScript function for rendering FlexiblePipelinePage.'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
731
720
  // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
732
721
  // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
733
722
  // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
734
723
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
735
724
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
736
- // CIL[END stable_id="~/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx:flexiblepipelinepage:function"]
@@ -11,15 +11,13 @@
11
11
  import { useParams, useNavigate } from 'react-router-dom'
12
12
  import { KBArticleList } from '../../../components/kb/KBArticleList'
13
13
  import { KBArticleEditor } from '../../../components/kb/KBArticleEditor'
14
- import { PageInstructions } from '../../../components/admin/PageInstructions'
14
+ // CIL[END stable_id="~/.framework/src/pages/admin/kb/KBAdminPage.tsx:module_header:module_header"]
15
15
  // CIL[DOC-VECTOR type="context" content="purpose='Renders the admin knowledge base page with article list and editor.'; No verified external callers; imports: .framework/src/components/kb/KBArticleList.tsx,.framework/src/components/kb/KBArticleEditor.tsx,.framework/src/components/admin/PageInstructions.tsx"]
16
16
  // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
17
17
  // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
18
18
  // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
19
19
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
20
20
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
21
- // CIL[END stable_id="~/.framework/src/pages/admin/kb/KBAdminPage.tsx:module_header:module_header"]
22
- // CIL[BEGIN stable_id="~/.framework/src/pages/admin/kb/KBAdminPage.tsx:kb_type_slugs:constant" type="constant" identity="KB_TYPE_SLUGS" parent="~/.framework/src/pages/admin/kb/KBAdminPage.tsx"]
23
21
  // CIL[DOC-MACRO purpose="Defines the allowed knowledge base type slugs."]
24
22
  // CIL[DOC-RESPONSIBILITY responsibility="Enumerate valid KB categories used by the admin page and article list."]
25
23
  // CIL[DOC-CONTEXT module="admin/kb" layer="data" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/kb/KBArticleEditor.tsx,.framework/src/components/kb/KBArticleList.tsx,.framework/src/pages/admin/kb/KBAdminPage.tsx"]
@@ -28,17 +26,17 @@ import { PageInstructions } from '../../../components/admin/PageInstructions'
28
26
  // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
29
27
  // CIL[DOC-STABILITY stability="stable"]
30
28
 
29
+ // CIL[BEGIN stable_id="~/.framework/src/pages/admin/kb/KBAdminPage.tsx:KB_TYPE_SLUGS:constant" type="constant" identity="KB_TYPE_SLUGS" parent="~/.framework/src/pages/admin/kb/KBAdminPage.tsx"]
31
30
  const KB_TYPE_SLUGS = ['kb-spine-admin', 'kb-spine-internal', 'kb-spine-public', 'kb-account']
31
+ // CIL[END stable_id="~/.framework/src/pages/admin/kb/KBAdminPage.tsx:KB_TYPE_SLUGS:constant"]
32
32
  // CIL[DOC-VECTOR type="context" content="purpose='Defines the allowed knowledge base type slugs.'; No verified external callers; imports: .framework/src/components/kb/KBArticleList.tsx,.framework/src/components/kb/KBArticleEditor.tsx,.framework/src/components/admin/PageInstructions.tsx"]
33
33
  // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
34
34
  // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
35
35
  // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
36
36
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
37
37
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
38
- // CIL[END stable_id="~/.framework/src/pages/admin/kb/KBAdminPage.tsx:kb_type_slugs:constant"]
39
38
 
40
39
 
41
- // CIL[BEGIN stable_id="~/.framework/src/pages/admin/kb/KBAdminPage.tsx:KBAdminPageProps:interface" type="interface" identity="KBAdminPageProps" parent="~/.framework/src/pages/admin/kb/KBAdminPage.tsx"]
42
40
  // CIL[DOC-MACRO purpose="Defines the props accepted by the KBAdminPage component."]
43
41
  // CIL[DOC-RESPONSIBILITY responsibility="Declare the optional mode prop for view/edit/new state."]
44
42
  // CIL[DOC-CONTEXT module="admin/kb" layer="interface" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/kb/KBArticleEditor.tsx,.framework/src/components/kb/KBArticleList.tsx,.framework/src/pages/admin/kb/KBAdminPage.tsx"]
@@ -46,19 +44,19 @@ const KB_TYPE_SLUGS = ['kb-spine-admin', 'kb-spine-internal', 'kb-spine-public',
46
44
  // CIL[DOC-MICRO logic_summary="Optional mode union type supporting view, edit, and new modes." notable_decisions="[]"]
47
45
  // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
48
46
  // CIL[DOC-STABILITY stability="stable"]
47
+ // CIL[BEGIN stable_id="~/.framework/src/pages/admin/kb/KBAdminPage.tsx:KBAdminPageProps:interface" type="interface" identity="KBAdminPageProps" parent="~/.framework/src/pages/admin/kb/KBAdminPage.tsx"]
49
48
  interface KBAdminPageProps {
50
49
  mode?: 'view' | 'edit' | 'new'
51
50
  }
51
+ // CIL[END stable_id="~/.framework/src/pages/admin/kb/KBAdminPage.tsx:KBAdminPageProps:interface"]
52
52
  // CIL[DOC-VECTOR type="context" content="purpose='Defines the props accepted by the KBAdminPage component.'; No verified external callers; imports: .framework/src/components/kb/KBArticleList.tsx,.framework/src/components/kb/KBArticleEditor.tsx,.framework/src/components/admin/PageInstructions.tsx"]
53
53
  // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
54
54
  // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
55
55
  // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
56
56
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
57
57
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
58
- // CIL[END stable_id="~/.framework/src/pages/admin/kb/KBAdminPage.tsx:KBAdminPageProps:interface"]
59
58
 
60
59
 
61
- // CIL[BEGIN stable_id="~/.framework/src/pages/admin/kb/KBAdminPage.tsx:kbadminpage:function" type="function" identity="KBAdminPage" parent="~/.framework/src/pages/admin/kb/KBAdminPage.tsx"]
62
60
  // CIL[DOC-MACRO purpose="Displays the knowledge base article list or editor based on route mode and id."]
63
61
  // CIL[DOC-RESPONSIBILITY responsibility="Render the admin KB page and route user actions to the appropriate editor/list views."]
64
62
  // CIL[DOC-CONTEXT module="admin/kb" layer="page" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/kb/KBArticleEditor.tsx,.framework/src/components/kb/KBArticleList.tsx,.framework/src/pages/admin/kb/KBAdminPage.tsx"]
@@ -66,6 +64,7 @@ interface KBAdminPageProps {
66
64
  // CIL[DOC-MICRO logic_summary="Determines list mode from the mode prop and absence of id, then renders list or editor with navigation callbacks." notable_decisions="[]"]
67
65
  // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
68
66
  // CIL[DOC-STABILITY stability="stable"]
67
+ // CIL[BEGIN stable_id="~/.framework/src/pages/admin/kb/KBAdminPage.tsx:KBAdminPage:component" type="component" identity="KBAdminPage" parent="~/.framework/src/pages/admin/kb/KBAdminPage.tsx"]
69
68
  export function KBAdminPage({ mode = 'view' }: KBAdminPageProps) {
70
69
  const { typeSlug, id } = useParams<{ typeSlug: string; id: string }>()
71
70
  const navigate = useNavigate()
@@ -75,15 +74,6 @@ export function KBAdminPage({ mode = 'view' }: KBAdminPageProps) {
75
74
  if (isList) {
76
75
  return (
77
76
  <>
78
- <PageInstructions
79
- description="Manage knowledge base articles, categories, and their lifecycle."
80
- sections={[
81
- { title: 'What this page is for', content: 'This page lists the articles and categories for the selected knowledge base type and provides the editor for creating or updating content.' },
82
- { title: 'How to read this page', content: 'In list mode you see existing records and can filter or select one. In edit or new mode the article editor shows the content fields and save controls for the selected type slug.' },
83
- { title: 'How to create / edit / delete', content: 'Click New to create an article, select an existing record to view it, click Edit to change it, and use the editor\'s delete action to remove it.' },
84
- { title: 'Important notes', content: 'Knowledge base records are typed by slug (kb-spine-admin, kb-spine-internal, kb-spine-public, kb-account). Make sure you are editing under the correct category.' },
85
- ]}
86
- />
87
77
  <KBArticleList
88
78
  typeSlugs={KB_TYPE_SLUGS}
89
79
  typeName="Knowledge Base"
@@ -97,15 +87,6 @@ export function KBAdminPage({ mode = 'view' }: KBAdminPageProps) {
97
87
 
98
88
  return (
99
89
  <>
100
- <PageInstructions
101
- description="Manage knowledge base articles, categories, and their lifecycle."
102
- sections={[
103
- { title: 'What this page is for', content: 'This page lists the articles and categories for the selected knowledge base type and provides the editor for creating or updating content.' },
104
- { title: 'How to read this page', content: 'In list mode you see existing records and can filter or select one. In edit or new mode the article editor shows the content fields and save controls for the selected type slug.' },
105
- { title: 'How to create / edit / delete', content: 'Click New to create an article, select an existing record to view it, click Edit to change it, and use the editor\'s delete action to remove it.' },
106
- { title: 'Important notes', content: 'Knowledge base records are typed by slug (kb-spine-admin, kb-spine-internal, kb-spine-public, kb-account). Make sure you are editing under the correct category.' },
107
- ]}
108
- />
109
90
  <KBArticleEditor
110
91
  typeSlug={typeSlug}
111
92
  mode={mode}
@@ -119,10 +100,10 @@ export function KBAdminPage({ mode = 'view' }: KBAdminPageProps) {
119
100
  </>
120
101
  )
121
102
  }
103
+ // CIL[END stable_id="~/.framework/src/pages/admin/kb/KBAdminPage.tsx:KBAdminPage:component"]
122
104
  // CIL[DOC-VECTOR type="context" content="purpose='Displays the knowledge base article list or editor based on route mode and id.'; No verified external callers; imports: .framework/src/components/kb/KBArticleList.tsx,.framework/src/components/kb/KBArticleEditor.tsx,.framework/src/components/admin/PageInstructions.tsx"]
123
105
  // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
124
106
  // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
125
107
  // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
126
108
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
127
109
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
128
- // CIL[END stable_id="~/.framework/src/pages/admin/kb/KBAdminPage.tsx:kbadminpage:function"]