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
@@ -18,6 +18,7 @@ import { Skeleton } from '@core/components/ui/skeleton'
18
18
  import { Textarea } from '@core/components/ui/textarea'
19
19
  import { Label } from '@core/components/ui/label'
20
20
  import {
21
+ // CIL[END stable_id="~/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx:module_header:module_header"]
21
22
  Select,
22
23
  SelectContent,
23
24
  SelectItem,
@@ -46,16 +47,13 @@ import {
46
47
 
47
48
 
48
49
 
49
- import { PageInstructions } from '../../../components/admin/PageInstructions'
50
50
  // CIL[DOC-VECTOR type="context" content="purpose='Imports and page scaffolding for the CIL chunk detail admin page'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
51
51
  // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
52
52
  // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
53
53
  // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
54
54
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
55
55
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
56
- // CIL[END stable_id="~/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx:module_header:module_header"]
57
56
 
58
- // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx:ChunkContract:interface" type="interface" identity="ChunkContract" parent="~/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx"]
59
57
  // CIL[DOC-MACRO purpose="Defines the data contract for a CIL chunk record"]
60
58
  // CIL[DOC-RESPONSIBILITY responsibility="Provide a TypeScript shape for chunk contract fields"]
61
59
  // CIL[DOC-CONTEXT module="CIL admin UI" layer="domain" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/label.tsx,.framework/src/components/ui/select.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tabs.tsx,.framework/src/components/ui/textarea.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/CILChunkDetailPage.tsx"]
@@ -63,6 +61,7 @@ import { PageInstructions } from '../../../components/admin/PageInstructions'
63
61
  // CIL[DOC-MICRO logic_summary="Maps all chunk contract fields including identifiers, doc status, tests, call lists, and hashes" notable_decisions="[]"]
64
62
  // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
65
63
  // CIL[DOC-STABILITY stability="stable"]
64
+ // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx:ChunkContract:interface" type="interface" identity="ChunkContract" parent="~/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx"]
66
65
  interface ChunkContract {
67
66
  id: string
68
67
  chunk_name: string
@@ -88,16 +87,15 @@ interface ChunkContract {
88
87
  callers: { chunk_id: string; chunk_name: string; file_path: string }[]
89
88
  callees: { chunk_id: string; chunk_name: string; file_path: string }[]
90
89
  }
90
+ // CIL[END stable_id="~/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx:ChunkContract:interface"]
91
91
  // CIL[DOC-VECTOR type="context" content="purpose='Defines the data contract for a CIL chunk record'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
92
92
  // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
93
93
  // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
94
94
  // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
95
95
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
96
96
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
97
- // CIL[END stable_id="~/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx:ChunkContract:interface"]
98
97
 
99
98
 
100
- // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx:EmbeddingStatus:interface" type="interface" identity="EmbeddingStatus" parent="~/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx"]
101
99
  // CIL[DOC-MACRO purpose="Tracks vector embedding coverage for a project"]
102
100
  // CIL[DOC-RESPONSIBILITY responsibility="Declare the shape of embedding coverage metrics"]
103
101
  // CIL[DOC-CONTEXT module="CIL admin UI" layer="domain" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/label.tsx,.framework/src/components/ui/select.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tabs.tsx,.framework/src/components/ui/textarea.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/CILChunkDetailPage.tsx"]
@@ -105,24 +103,24 @@ interface ChunkContract {
105
103
  // CIL[DOC-MICRO logic_summary="Defines coverage_pct, embedded_chunks, and total_chunks fields" notable_decisions="[]"]
106
104
  // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
107
105
  // CIL[DOC-STABILITY stability="stable"]
106
+ // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx:EmbeddingStatus:interface" type="interface" identity="EmbeddingStatus" parent="~/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx"]
108
107
  interface EmbeddingStatus {
109
108
  coverage_pct: number
110
109
  embedded_chunks: number
111
110
  total_chunks: number
112
111
  }
112
+ // CIL[END stable_id="~/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx:EmbeddingStatus:interface"]
113
113
  // CIL[DOC-VECTOR type="context" content="purpose='Tracks vector embedding coverage 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"]
114
114
  // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
115
115
  // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
116
116
  // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
117
117
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
118
118
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
119
- // CIL[END stable_id="~/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx:EmbeddingStatus:interface"]
120
119
 
121
120
 
122
121
 
123
122
 
124
123
 
125
- // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx:doc_and_stability:constant" type="constant" identity="doc_and_stability" parent="~/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx"]
126
124
  // CIL[DOC-MACRO purpose="Provides badge configuration for documentation confidence and stability labels"]
127
125
  // CIL[DOC-RESPONSIBILITY responsibility="Map doc_confidence and stability enum values to UI labels, colors, and badge variants"]
128
126
  // CIL[DOC-CONTEXT module="CIL admin UI" layer="presentation" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/label.tsx,.framework/src/components/ui/select.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tabs.tsx,.framework/src/components/ui/textarea.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/CILChunkDetailPage.tsx"]
@@ -130,21 +128,25 @@ interface EmbeddingStatus {
130
128
  // CIL[DOC-MICRO logic_summary="Defines DOC_CONFIDENCE_CONFIG with label, color, and icon; STABILITY_BADGE maps stability to Badge variant strings" notable_decisions="[]"]
131
129
  // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
132
130
  // CIL[DOC-STABILITY stability="stable"]
131
+ // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx:DOC_CONFIDENCE_CONFIG:constant" type="constant" identity="DOC_CONFIDENCE_CONFIG" parent="~/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx"]
133
132
  const DOC_CONFIDENCE_CONFIG: Record<string, { label: string; color: string; icon: React.ElementType }> = {
134
133
  human_verified: { label: 'Human Verified', color: 'text-green-600', icon: CheckCircle2 },
135
134
  ai_generated: { label: 'AI Generated', color: 'text-blue-600', icon: Zap },
136
135
  unverified_legacy: { label: 'Unverified', color: 'text-amber-600', icon: AlertTriangle },
137
136
  }
137
+ // CIL[END stable_id="~/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx:DOC_CONFIDENCE_CONFIG:constant"]
138
138
 
139
139
 
140
140
 
141
141
 
142
142
 
143
+ // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx:STABILITY_BADGE:constant" type="constant" identity="STABILITY_BADGE" parent="~/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx"]
143
144
  const STABILITY_BADGE: Record<string, 'default' | 'secondary' | 'outline'> = {
144
145
  stable: 'default',
145
146
  internal: 'secondary',
146
147
  experimental: 'outline',
147
148
  }
149
+ // CIL[END stable_id="~/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx:STABILITY_BADGE:constant"]
148
150
 
149
151
 
150
152
 
@@ -155,8 +157,6 @@ const STABILITY_BADGE: Record<string, 'default' | 'secondary' | 'outline'> = {
155
157
  // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
156
158
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
157
159
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
158
- // CIL[END stable_id="~/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx:doc_and_stability:constant"]
159
- // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx:HashStatusBadge:component" type="component" identity="HashStatusBadge" parent="~/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx"]
160
160
  // CIL[DOC-MACRO purpose="Render a Badge indicating the current hash status of a CIL chunk"]
161
161
  // CIL[DOC-RESPONSIBILITY responsibility="Display current, drift_detected, or unknown hash status with an icon"]
162
162
  // CIL[DOC-CONTEXT module="CIL admin UI" layer="presentation" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/label.tsx,.framework/src/components/ui/select.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tabs.tsx,.framework/src/components/ui/textarea.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/CILChunkDetailPage.tsx"]
@@ -164,6 +164,7 @@ const STABILITY_BADGE: Record<string, 'default' | 'secondary' | 'outline'> = {
164
164
  // CIL[DOC-MICRO logic_summary="Branches on status string and returns a Badge variant with matching icon and label" notable_decisions="[]"]
165
165
  // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
166
166
  // CIL[DOC-STABILITY stability="stable"]
167
+ // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx:HashStatusBadge:component" type="component" identity="HashStatusBadge" parent="~/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx"]
167
168
  function HashStatusBadge({ status }: { status: string }) {
168
169
  if (status === 'current') return (
169
170
  <Badge variant="default" className="bg-green-600 text-white gap-1">
@@ -181,17 +182,16 @@ function HashStatusBadge({ status }: { status: string }) {
181
182
  </Badge>
182
183
  )
183
184
  }
185
+ // CIL[END stable_id="~/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx:HashStatusBadge:component"]
184
186
  // CIL[DOC-VECTOR type="context" content="purpose='Render a Badge indicating the current hash status of a CIL chunk'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
185
187
  // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
186
188
  // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
187
189
  // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
188
190
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
189
191
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
190
- // CIL[END stable_id="~/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx:HashStatusBadge:component"]
191
192
 
192
193
 
193
194
 
194
- // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx:ChunkLinkCard:component" type="component" identity="ChunkLinkCard" parent="~/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx"]
195
195
  // CIL[DOC-MACRO purpose="Render a clickable card linking to another CIL chunk"]
196
196
  // CIL[DOC-RESPONSIBILITY responsibility="Format chunk reference as a compact link card"]
197
197
  // CIL[DOC-CONTEXT module="CIL admin UI" layer="presentation" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/label.tsx,.framework/src/components/ui/select.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tabs.tsx,.framework/src/components/ui/textarea.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/CILChunkDetailPage.tsx"]
@@ -199,6 +199,7 @@ function HashStatusBadge({ status }: { status: string }) {
199
199
  // CIL[DOC-MICRO logic_summary="Builds admin path, renders file icon, name, path, and hover arrow" notable_decisions="[]"]
200
200
  // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
201
201
  // CIL[DOC-STABILITY stability="stable"]
202
+ // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx:ChunkLinkCard:component" type="component" identity="ChunkLinkCard" parent="~/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx"]
202
203
  function ChunkLinkCard({
203
204
  chunk,
204
205
  label,
@@ -224,6 +225,7 @@ function ChunkLinkCard({
224
225
  </a>
225
226
  )
226
227
  }
228
+ // CIL[END stable_id="~/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx:ChunkLinkCard:component"]
227
229
 
228
230
 
229
231
 
@@ -233,8 +235,6 @@ function ChunkLinkCard({
233
235
  // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
234
236
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
235
237
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
236
- // CIL[END stable_id="~/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx:ChunkLinkCard:component"]
237
- // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx:ContractEditor:component" type="component" identity="ContractEditor" parent="~/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx"]
238
238
  // CIL[DOC-MACRO purpose="Edit and persist a CIL chunk contract"]
239
239
  // CIL[DOC-RESPONSIBILITY responsibility="Provide a controlled form for macro, micro, I/O, side effects, stability, tests, and confidence"]
240
240
  // CIL[DOC-CONTEXT module="CIL admin UI" layer="presentation" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/label.tsx,.framework/src/components/ui/select.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tabs.tsx,.framework/src/components/ui/textarea.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/CILChunkDetailPage.tsx"]
@@ -242,6 +242,7 @@ function ChunkLinkCard({
242
242
  // CIL[DOC-MICRO logic_summary="Maintains local form state, renders labeled Textareas and Selects, submits a PATCH when user clicks Save" notable_decisions="[]"]
243
243
  // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
244
244
  // CIL[DOC-STABILITY stability="stable"]
245
+ // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx:ContractEditor:component" type="component" identity="ContractEditor" parent="~/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx"]
245
246
  function ContractEditor({
246
247
  contract,
247
248
  projectId,
@@ -359,6 +360,7 @@ function ContractEditor({
359
360
  </div>
360
361
  )
361
362
  }
363
+ // CIL[END stable_id="~/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx:ContractEditor:component"]
362
364
 
363
365
 
364
366
 
@@ -368,8 +370,6 @@ function ContractEditor({
368
370
  // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
369
371
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
370
372
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
371
- // CIL[END stable_id="~/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx:ContractEditor:component"]
372
- // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx:CILChunkDetailPage:component" type="component" identity="CILChunkDetailPage" parent="~/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx"]
373
373
  // CIL[DOC-MACRO purpose="Admin page for inspecting a single CIL chunk contract, code, callers, and blast radius"]
374
374
  // CIL[DOC-RESPONSIBILITY responsibility="Fetch and display chunk contract, validate hash, embed chunk, render graph and blast radius"]
375
375
  // CIL[DOC-CONTEXT module="CIL admin UI" layer="presentation" related_files=".framework/src/components/admin/PageInstructions.tsx,.framework/src/components/ui/badge.tsx,.framework/src/components/ui/button.tsx,.framework/src/components/ui/card.tsx,.framework/src/components/ui/label.tsx,.framework/src/components/ui/select.tsx,.framework/src/components/ui/skeleton.tsx,.framework/src/components/ui/tabs.tsx,.framework/src/components/ui/textarea.tsx,.framework/src/lib/api.ts,.framework/src/pages/admin/cil/CILChunkDetailPage.tsx"]
@@ -377,6 +377,7 @@ function ContractEditor({
377
377
  // CIL[DOC-MICRO logic_summary="Loads chunk contract and code, renders hash actions, tabs for contract/graph/code/blast, and link cards for callers/callees" notable_decisions="[]"]
378
378
  // CIL[DOC-CONFIDENCE pass="second" score="0.90" flags="none"]
379
379
  // CIL[DOC-STABILITY stability="stable"]
380
+ // CIL[BEGIN stable_id="~/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx:CILChunkDetailPage:component" type="component" identity="CILChunkDetailPage" parent="~/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx"]
380
381
  export default function CILChunkDetailPage() {
381
382
  const { id: projectId, chunkId } = useParams<{ id: string; chunkId: string }>()
382
383
  const appPath = (path: string) => '/spine-framework/admin' + (path.startsWith('/') ? path : '/' + path)
@@ -526,17 +527,6 @@ export default function CILChunkDetailPage() {
526
527
  </span>
527
528
  </div>
528
529
  </div>
529
-
530
- <PageInstructions
531
- description="Inspect a single CIL chunk, its contract, and its relationships."
532
- sections={[
533
- { title: 'What this page is for', content: 'This page displays one indexed code chunk, including its contract, code, call graph, and hash/embed status.' },
534
- { title: 'How to read this page', content: 'The Contract tab shows macro and micro summaries plus documentation status. The Graph tab lists callers and callees. The Code tab shows the source. Blast Radius appears after calculation.' },
535
- { title: 'How to use this page', content: 'Click Validate Hash to confirm the stored hash matches the current file contents. Click Embed Chunk to regenerate its vector embeddings. Click Blast Radius to see impacted chunks.' },
536
- { title: 'Important notes', content: 'Dead-code chunks are marked with a destructive badge. Documentation coverage is shown as AI-generated, human-verified, or undocumented.' },
537
- ]}
538
- />
539
-
540
530
  {}
541
531
  <div className="flex items-center gap-3 flex-wrap">
542
532
  <HashStatusBadge status={hashStatus} />
@@ -781,11 +771,11 @@ export default function CILChunkDetailPage() {
781
771
  </div>
782
772
  )
783
773
  }
774
+ // CIL[END stable_id="~/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx:CILChunkDetailPage:component"]
784
775
  // CIL[DOC-VECTOR type="context" content="purpose='Admin page for inspecting a single CIL chunk contract, code, callers, and blast radius'; No verified external callers; imports: .framework/src/lib/api.ts,.framework/src/components/ui/card.tsx,.framework/src/components/ui/button.tsx"]
785
776
  // CIL[DOC-VECTOR type="blast_radius" content="No direct caller data from CIL graph; local impact only"]
786
777
  // CIL[DOC-VECTOR type="configuration" content="No environment or build configuration dependencies identified"]
787
778
  // CIL[DOC-VECTOR type="constraint" content="Standard runtime; no special invariants documented"]
788
779
  // CIL[DOC-VECTOR type="implementation_pattern" content="" status="pending_human_input"]
789
780
  // CIL[DOC-VECTOR type="user_journey" content="" status="pending_human_input"]
790
- // CIL[END stable_id="~/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx:CILChunkDetailPage:component"]
791
781