tidaldb/applications/iknowyou
jordan c97aaa8e5b fleet remediation: make the workspace gate runnable, then fix what it caught
`cargo test --workspace` could not run at all: dependency resolution failed with
"aws-types@1.3.16 requires rustc 1.91.1" on the 1.91.0 default toolchain, so the
gate the project documents was dead. Making it run exposed a compile break and
two wrong tests that had been invisible for months. Now green end to end:
143 suites, 3155 tests, exit 0.

Toolchain
- rust-toolchain.toml pins the DEV toolchain to 1.91.1. The published MSRV stays
  `rust-version = "1.91"` (the engine builds on 1.91.0); only tidalctl's AWS SDK
  chain needs the patch release, and it now declares that itself.

Consumer crates migrated to the current engine API (clean cutover)
- iknowyou-engine: `AgentPolicy` gained five m10 read/profile-override fields;
  the literal now spreads `..AgentPolicy::default()` as the engine's own doc
  example does, so future fields do not break it again.
- forage-engine: `RetrieveResult` gained p1 `reasons`. The app builds its own
  candidate pool, so it now tags what it knows: PreferenceMatch for the
  preference-vector blend, SemanticMatch (with the seed item) for
  similar-to-saved, ExplorationBudget for pinned discoveries.
- forage-engine: `url_to_item_id` folded into the u32 item universe. The engine
  narrows item IDs to a u32 slot in durable per-user state and rejects anything
  above u32::MAX rather than alias two items forever, so every add_item with a
  64-bit FNV hash failed. 9 of 28 smoke tests were failing on this alone.
- forage-engine: bridge items read the top-2 preference CLUSTERS via
  `query_vectors`, not the single centroid from `preference_vectors().get()`.
  Since m12 that accessor returns only the strongest cluster, so a tech+jazz user
  whose interests split into two clusters looked single-interest and never
  bridged. Falls back to top-2 dimensions when a user has one cluster.

Reconcile tests corrected to the shipped contract
- tidal/tests/m8p3_reconcile_production.rs asserted `3 + 5 == 8` for a windowed
  count after heal. `take_crdt_snapshot` deliberately keys signal contributions
  to ONE canonical contributor (ShardId::SINGLE) because signals are relayed from
  a single writer, so per-node attribution double-counted every replicated event
  on every reconcile. Merge is therefore LWW on (last_update_ns, score) plus
  PN-counter per-node max: nodes converge on the more complete accumulator. The
  old expectation was asserting the bug that fix removed.
- Rewrote to assert convergence, count survival (not 0), and no inflation, and
  added `repeated_reconcile_of_converged_nodes_does_not_creep` - the regression
  guard for the creep itself, which nothing covered.

Pre-commit hook unified
- hooks/pre-commit dropped `-D warnings`: each crate's `[lints]` table is the
  source of truth (`clippy::all`/`unwrap_used` deny, `pedantic` warn), and the
  flag promoted ~58 deliberate pedantic warnings in integration tests to errors,
  making every Rust commit impossible.
- It now lints all five tidal crates instead of path-matching `tidal/`, which
  silently skipped tidal-server, tidal-net, tidal-stress, tidalctl and
  applications/ - the rot above lived in exactly those crates. Ported the
  CODING_GUIDELINES file-length, println, and unsafe-SAFETY checks from the
  divergent untracked copy that this replaces.
- CONTRIBUTING.md now documents the real commands and the toolchain/MSRV split.

Fleet recovery and soak
- scripts/restore-fleet.sh: the fail-closed selective restore, promoted out of an
  ignored tmp/ directory into the repository. Preflights retained storage,
  digest-pinned images, parked state, and aggregate plus per-PV-node scheduler
  headroom before the first scale; writes a durable transcript under
  tmp/restore-logs/ with structured start/error/rollback/complete events.
- k8s manifests park the standalone store, the RF3 cluster, and the soak monitor
  at zero replicas with restore-fleet.sh as the only supported scale-up path.
- soak-eval/soak-watch and the nightly CronJob fail closed on stale or missing
  restart evidence instead of silently skipping the restart-aware half of the gate.
- docs/ops/capacity-planning.md corrects the RAM envelope to the real hot-tier
  formula and separates analytic totals from the measured process envelope.
2026-08-16 12:38:14 -06:00
..
app fix: heal_region re-delivers missed WAL batches so partitioned followers converge immediately after heal 2026-02-25 11:57:01 -07:00
components feat(iknowyou): add SSH tunnel script, Synap space header, and hydration fix 2026-02-26 11:18:34 -05:00
engine fleet remediation: make the workspace gate runnable, then fix what it caught 2026-08-16 12:38:14 -06:00
lib feat(iknowyou): add SSH tunnel script, Synap space header, and hydration fix 2026-02-26 11:18:34 -05:00
.eslintrc.json refactor: extract shared SSE parser and add eslint to iknowyou 2026-02-25 16:51:48 -07:00
.gitignore feat: add iknowyou app + complete M8 replication extensions + Aeries agents/skills 2026-02-24 21:09:11 -07:00
architecture.md chore: doc consolidation, seven-dimension review fixes, and commit hooks 2026-06-08 22:46:28 -06:00
devsetup.md fix: heal_region re-delivers missed WAL batches so partitioned followers converge immediately after heal 2026-02-25 11:57:01 -07:00
dump-briefs.mjs fix: heal_region re-delivers missed WAL batches so partitioned followers converge immediately after heal 2026-02-25 11:57:01 -07:00
next-env.d.ts feat: add iknowyou app + complete M8 replication extensions + Aeries agents/skills 2026-02-24 21:09:11 -07:00
next.config.ts refactor: extract shared SSE parser and add eslint to iknowyou 2026-02-25 16:51:48 -07:00
package-lock.json refactor: extract shared SSE parser and add eslint to iknowyou 2026-02-25 16:51:48 -07:00
package.json feat(iknowyou): add SSH tunnel script, Synap space header, and hydration fix 2026-02-26 11:18:34 -05:00
postcss.config.mjs feat: add iknowyou app + complete M8 replication extensions + Aeries agents/skills 2026-02-24 21:09:11 -07:00
README.md chore: doc consolidation, seven-dimension review fixes, and commit hooks 2026-06-08 22:46:28 -06:00
ROADMAP.md fix: heal_region re-delivers missed WAL batches so partitioned followers converge immediately after heal 2026-02-25 11:57:01 -07:00
test-briefs.mjs fix: heal_region re-delivers missed WAL batches so partitioned followers converge immediately after heal 2026-02-25 11:57:01 -07:00
test-briefs.sh fix: heal_region re-delivers missed WAL batches so partitioned followers converge immediately after heal 2026-02-25 11:57:01 -07:00
tsconfig.json feat: add iknowyou app + complete M8 replication extensions + Aeries agents/skills 2026-02-24 21:09:11 -07:00
tsconfig.tsbuildinfo refactor: extract shared SSE parser and add eslint to iknowyou 2026-02-25 16:51:48 -07:00
tunnel.sh feat(iknowyou): add SSH tunnel script, Synap space header, and hydration fix 2026-02-26 11:18:34 -05:00
vision.md chore: doc consolidation, seven-dimension review fixes, and commit hooks 2026-06-08 22:46:28 -06:00

iknowyou

Communication personalization as a signal-processing problem. iknowyou wraps tidalDB's signal ledger, preference vectors, and windowed aggregation with an observation pipeline (LM-as-classifier), a briefing engine (query-to-profile), and a generation interface (brief-to-prompt) — so a system can learn how each person prefers to be communicated with and adapt continuously, without a training loop or feature store.

Design vs shipped. The vision/architecture docs describe the target tidalDB-native design; what runs today is a Next.js + vLLM implementation. See the roadmap and dev setup for current state.

Docs

Doc What it covers
vision.md The problem and the product thesis (target design)
architecture.md Domain model, pipelines, components (target design)
ROADMAP.md Milestones and current build status
devsetup.md Running the engine + Next.js app locally
engine/README.md The personalization engine service

Part of the tidalDB workspace's applications/ example consumers — see the repository root for the database itself.