Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .claude/board/ISSUES.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
## ISS-QUALIA-A2B-CLUT-UNMEASURED — no measured transform from convergence 17D to the calibrated PCS 17D (2026-10-16)

**Status:** OPEN. **Basis:** VERIFIED-IN-CODE (`contract::qualia_profile::SHARED_AXES` maps 5 of 17 axes by name; `device_to_pcs_shared` returns `measured = false` for the other 12). HYPOTHESIS: same-named axes mean the same thing.

- The workspace has two 17-axis "qualia" vectors on different axes: `qualia::AXIS_LABELS` (convergence observables, computed) and `qualia_profile::PCS_AXES` (phenomenological, hand-calibrated, 219 patches). Only valence / arousal / tension / warmth / clarity coincide by name.
- `engine_bridge::classification_distance` compares device telemetry to six Ekman archetypes in a 6-axis device subspace — observer vocabulary applied to mechanism signal, no PCS in between — and after D-CSV-5b the stored value is a constant `1.0`.
- **What closes it:** the chart probe. Drive each of the 219 named patches through the thinking engine (Jina lens → convergence 17D), record the pairs, fit the A2B CLUT, and report per-axis Spearman ρ under Jirak's rate (`I-NOISE-FLOOR-JIRAK`). Shared axes with ρ below the floor falsify the HYPOTHESIS. The `.bin1024` file beside the JSON is the proposal side for Haspelmath adjacency (Hamming between patches), not the CLUT.

## ISS-SUPERVISOR-RESPAWN-BACKOFF-NOT-APPLIED — a crashed consumer actor is respawned at once and the respawn is rescheduled forever (2026-10-13)

**Status:** RESOLVED 2026-10-13 by #1540 (merged `f2bf199`). The delayed cast is now the only respawn path and is scheduled from `ActorTerminated`; the `RespawnG` arm spawns once and does nothing if the slot is already live; the crash count is carried and restarts at 1 when the previous crash is more than five minutes old (spec §5.3); more than 10 crashes in that window escalate and the child stays down. TEST-PINNED in `tests/supervisor_respawn_backoff.rs` (one respawn per crash after its backoff; escalation; window reset), each disable-verified red. The bullets below describe the defect as found. **Was:** OPEN. **Basis:** VERIFIED-IN-CODE (`crates/lance-graph-supervisor/src/supervisor.rs`, `RespawnG` arm); found by the codex review of #1536.
Expand Down
9 changes: 9 additions & 0 deletions .claude/board/LATEST_STATE.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,12 @@
## 2026-10-16 — D-QPROF-0 qualia profile (branch `qualia-profile-icc`, in PR)

- **Contract delta (branch):** `lance_graph_contract::qualia_profile` + generated `qualia_profile_table` — the first named-emotion calibration set in the repo (219 rows from Upstash `ada:qualia:calibrated:*`, previously cited in `thinking-engine/src/qualia.rs` as "220 calibrated pairs in Upstash" and absent). Data: `data/qualia/calibrated_219.json` (+ `.bin1024` sign-binarized Jina embeddings), generator `scripts/gen_qualia_profile.py` (deterministic, rustfmt-stable, FNV-pinned).
- Open: the device→PCS CLUT for the 12 non-shared axes is a chart probe, not a constant (`ISS-QUALIA-A2B-CLUT-UNMEASURED`). Σ-codebook slot assignment (64 glyphs vs 219 named) is NOT decided here; the module only defines the palette numbering `0 | 1..=219 | 220..=255 reserved`.

### Current Contract Inventory — net delta (`qualia_profile.rs`, `qualia_profile_table.rs`)

- `lance_graph_contract::qualia_profile::{PCS_AXES, PCS_DIMS, Pcs, NamedQualia, UNNAMED, RESERVED_FROM, named, index_of, pcs_l1, nearest_named, nearest_named_in, Gamut, RenderingIntent, Rendered, render, Mix, SHARED_AXES, device_to_pcs_shared}` and re-exports `{NAMED, NAMED_COUNT, PROFILE_ID, SOURCE_FNV, TABLE_FNV}` — an ICC-style profile for felt states. Three spaces kept apart: **device** (`qualia::AXIS_LABELS`, convergence observables), **PCS** (`PCS_AXES`, 17 phenomenological axes, 219 calibrated patches in hundredths as `[i8; 17]`), **observer** (e.g. the six Ekman archetypes). `nearest_named` is B2A on the PCS side and its residual is the K channel — the `classification_distance` the i4 cutover stopped storing, measured against the inner vocabulary. `Gamut` is a 256-bit mask per rendering device; three intents adapted to a discrete palette (absolute / relative-in-family / perceptual); `Mix` = up to three inks (what `ada:qualia:active` carries). Only the five same-named axes (valence, arousal, tension, warmth, clarity) have a device→PCS mapping, and that is a CONJECTURE until the chart probe runs. 12 tests, each with a stated falsifier (`TABLE_FNV` and `SOURCE_FNV` mutations both verified red — the pair (source, table) is pinned from both sides, after codex P2 on the first push; intent inertness; anti-vacuity on gamut and nearest).

## 2026-10-15 — main after #1567 (merged `b1f1365d`); D-HOLO H6c/H14 and the writer's version clock on main

- **On `main` (#1566, merged `c18aefcb`):** D-HOLO H6c and H14 probes and results; H14b open (awaits the operator).
Expand Down
5 changes: 5 additions & 0 deletions crates/lance-graph-contract/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,11 @@ pub mod plan;
pub mod property;
pub mod proprioception;
pub mod qualia;
/// ICC-style profile for felt states: the 219-row named-qualia table (PCS), palette index,
/// K residual, gamut + rendering intents, mix. See the module doc for the three spaces.
pub mod qualia_profile;
#[doc(hidden)]
pub mod qualia_profile_table;
pub mod rail_geometry;
pub mod rbac;
/// RBAC hot-plug: the [`hotplug`] pattern for authorization — a consumer's
Expand Down
Loading
Loading