Lands the Phase C "make cognition legible" slice plus Phase A residue, all backend-reader-first over real engine data (no theater, read-only doctrine intact, zero serving-path imports). C1-a — Cognitive pipeline record (persistence-first, per #729 worthiness edit): - workbench/pipeline_record.py: curated CognitivePipelineRecord over the real CognitiveTurnResult (input → intent → proposition_graph → articulation_target → realizer → walk_telemetry → trace_hash). Raw field multivectors are DELIBERATELY excluded; _assert_no_raw_field_payload recursively rejects raw field keys, and validate_pipeline_record fails closed on missing/duplicate stages, non-recorded status, or dangling edges — the UI can never receive a partial record that claims to be complete. - test_workbench_pipeline_record.py: non-vacuous guards — missing stage, monkeypatched new required stage, and injected raw {"F": [...]} each raise. C2-a — Contemplation as a process: /contemplation route over real persisted contemplation/runs/*.json (glob reader; honest-empty when absent). C4-a — Identity continuity (L10/L11): RunDetail.identity_continuity + Runs Identity tab, sourced from the real core.engine_identity (engine_identity / parent_engine_identity lineage relation, re-derived to verify). Demo Theater: renders backend-owned proof-promotion + entailment DAGs. Phase A residue: density preference wired end-to-end (settings → shell → tokens); cross-route consistency touch-ups. Infra: local API CORS now echoes only validated 127.0.0.1/localhost origins (hostname-checked, not arbitrary reflection) so Vite fallback ports work. Route chunk-split keeps the build warning-free. Cleanup: corrected the stale ADR-0175 practice-lane assertions (build_report is 6 correct / 0 wrong / 44 refused after the current serving lane; wrong=0 held) and the two registry-derived count tests (LeftNav + CommandPalette 12 → 13 for the new Contemplation route). Docs: runtime_contracts.md (pipeline-record contract), UI-UX-GUIDE, api-contract-v1, data-shapes-v1, wave-M-worthiness, phase-a-residue-ledger. Validation: 106 workbench/practice Python tests green (incl. wrong=0 lane + pipeline-record fail-closed guards); 459/459 frontend; pnpm build clean; git diff --check clean. No generate.derivation / reliability_gate / stream / field.propagate / vault.store imports.
81 lines
2.1 KiB
CSS
81 lines
2.1 KiB
CSS
@import "./design/tokens/tokens.css";
|
|
|
|
@tailwind base;
|
|
@tailwind components;
|
|
@tailwind utilities;
|
|
|
|
* {
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
body {
|
|
margin: 0;
|
|
min-width: 320px;
|
|
min-height: 100vh;
|
|
background: var(--color-surface-base);
|
|
color: var(--color-text-primary);
|
|
font-family: var(--font-sans);
|
|
line-height: var(--line-normal);
|
|
}
|
|
|
|
:root {
|
|
--density-main-padding: 1rem;
|
|
--density-shell-padding-x: 1rem;
|
|
--density-shell-gap: 1rem;
|
|
--density-topbar-padding-y: 0.5rem;
|
|
--density-footer-padding-y: 0.25rem;
|
|
--density-nav-padding: 0.5rem;
|
|
--density-nav-gap: 0.25rem;
|
|
--density-nav-item-padding-x: 0.75rem;
|
|
--density-nav-item-padding-y: 0.5rem;
|
|
--density-nav-section-padding-top: 0.5rem;
|
|
--density-panel-padding: 0.75rem;
|
|
--density-panel-padding-x: 0.75rem;
|
|
--density-panel-header-padding-y: 0.5rem;
|
|
--density-row-padding-y: 0.5rem;
|
|
--density-metadata-gap: 0.75rem;
|
|
--density-button-height: 2.25rem;
|
|
--density-control-padding-x: 0.75rem;
|
|
--density-control-padding-y: 0.25rem;
|
|
--density-control-gap: 0.5rem;
|
|
--density-gap: 0.75rem;
|
|
}
|
|
|
|
[data-density="compact"] {
|
|
--density-main-padding: 0.75rem;
|
|
--density-shell-padding-x: 0.75rem;
|
|
--density-shell-gap: 0.75rem;
|
|
--density-topbar-padding-y: 0.375rem;
|
|
--density-footer-padding-y: 0.125rem;
|
|
--density-nav-padding: 0.375rem;
|
|
--density-nav-gap: 0.125rem;
|
|
--density-nav-item-padding-x: 0.625rem;
|
|
--density-nav-item-padding-y: 0.375rem;
|
|
--density-nav-section-padding-top: 0.375rem;
|
|
--density-panel-padding: 0.625rem;
|
|
--density-panel-padding-x: 0.625rem;
|
|
--density-panel-header-padding-y: 0.375rem;
|
|
--density-row-padding-y: 0.375rem;
|
|
--density-metadata-gap: 0.5rem;
|
|
--density-button-height: 2rem;
|
|
--density-control-padding-x: 0.625rem;
|
|
--density-control-padding-y: 0.1875rem;
|
|
--density-control-gap: 0.375rem;
|
|
--density-gap: 0.5rem;
|
|
}
|
|
|
|
button,
|
|
a,
|
|
[tabindex]:not([tabindex="-1"]) {
|
|
outline: none;
|
|
}
|
|
|
|
:focus-visible {
|
|
outline: 2px solid var(--color-focus-ring);
|
|
outline-offset: 2px;
|
|
}
|
|
|
|
.motion-standard {
|
|
transition-duration: var(--motion-duration-standard);
|
|
transition-timing-function: var(--motion-ease-standard);
|
|
}
|