fix(WP-0014/A2): continued type-correctness fixes and Tailwind CSS output

- Schema.sql: add FK constraints for phases 6–12 so IHP generates Id X
  instead of UUID for FK columns (widget_adapter_specs, friction_scores,
  hub_routing_rules, agent_proposals, hub_capability_manifests, etc.)
- HubHealth, ModelRouter, ApiInteractionEvents: remove toUUID() wrappers
  now that FK columns carry proper Id types
- FederatedGovernance/Dashboard, HubRoutingRules/Index: same Id comparison fix
- AgentProposals/Index, DecisionRecords/Index, ApiConsumers/Edit: Id type fixes
- BottleneckDetector: add Data.Coerce import; CrossHubPropagation: add guard
- ApiKeys: qualify cryptohash-sha256 import to resolve package ambiguity
- WebhookDeliveryJob: use LBS.fromStrict; remove duplicate diffUTCTime
- Sessions/New: use renderFlashMessages (IHP built-in)
- ArchiveRecords/LineageInspector: simplify renderChainStep signature
- static/app.css: Tailwind CSS output (2011 lines) — A3 confirmed
- workplans/IHUB-WP-0015-local-deployment-intro-ui.md: add workplan

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-08 01:49:41 +00:00
parent 34cc18b4c7
commit 74bab5f6f2
17 changed files with 2218 additions and 32 deletions

View File

@@ -31,14 +31,14 @@ instance View LineageInspectorView where
<p class="text-sm text-gray-500 mb-6">Full traceability chain for this widget.</p>
<div class="space-y-4">
{renderChainStep "1" "Widget" 1 (Just $ ShowWidgetAction { widgetId = widget.id })}
{renderChainStep "2" "Interaction Events" (length events) Nothing}
{renderChainStep "3" "Annotations" (length annotations) Nothing}
{renderChainStep "4" "Requirement Candidates" (length candidates) Nothing}
{renderChainStep "5" "Requirements" (length requirements) Nothing}
{renderChainStep "6" "Decision Records" (length decisions) Nothing}
{renderChainStep "7" "Deployments" (length deployments) Nothing}
{renderChainStep "8" "Outcome Signals" (length signals) Nothing}
{renderChainStep "1" "Widget" 1}
{renderChainStep "2" "Interaction Events" (length events)}
{renderChainStep "3" "Annotations" (length annotations)}
{renderChainStep "4" "Requirement Candidates" (length candidates)}
{renderChainStep "5" "Requirements" (length requirements)}
{renderChainStep "6" "Decision Records" (length decisions)}
{renderChainStep "7" "Deployments" (length deployments)}
{renderChainStep "8" "Outcome Signals" (length signals)}
</div>
{maybe mempty renderArchivePanel mArchive}
@@ -68,8 +68,8 @@ instance View LineageInspectorView where
</div>
|]
renderChainStep :: Text -> Text -> Int -> Maybe a -> Html
renderChainStep stepNum label count mLink = [hsx|
renderChainStep :: Text -> Text -> Int -> Html
renderChainStep stepNum label count = [hsx|
<div class="flex items-center gap-4">
<div class="w-8 h-8 rounded-full bg-indigo-100 text-indigo-700 flex items-center justify-center text-sm font-medium flex-shrink-0">
{stepNum}