You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(temporal): created_at als Meta-Anker — multiple anchors per block
User-Prinzip (Session 20): "der blockinhalt kann ja auch zeiten
referenzieren. ergo kann ein block mehrere temporale anker haben".
Vorher: ein Block bekam temporale Dimensionen NUR aus Datums-
Erwaehnungen im Content. Ohne Date-Match im Text: nur _none Sentinel.
Bloecke mit abstraktem Inhalt waren temporal unauffindbar.
Jetzt: jeder Block hat MINDESTENS einen temporalen Anker (created_at).
Content-Anchors + Meta-Anchor koexistieren als Union. Ein Block mit
"Meeting am Dienstag" erstellt am Freitag hat:
- weekday=2 (content, semantic)
- weekday=5 (created_at, meta)
Beide Signale tragen unabhaengige Dimensionen bei.
Go:
- PopulateTemporal(..., createdAt time.Time) als neuer Pflicht-Parameter
- allTimes = [createdAt] + contentTimes (SQL ON CONFLICT handelt Overlap)
- isZero-Check als defensiver Fallback
- BackfillTemporal: SELECT erweitert um cb.created_at
- 3 Handler-Caller (context_store, context_manage, ingest) passen
block.CreatedAt durch
- Branch "len(times) > 0" entfernt — createdAt ist immer da
Migration 021:
- Backfill: 8 Dimensionen pro aktivem Block aus created_at via
EXTRACT(YEAR/MONTH/WEEK/ISODOW/QUARTER/DAY/DOY/HOUR)
- LATERAL + VALUES statt 8 separate INSERTs
- Cleanup: _none Sentinels entfernt wo echte Dimensionen existieren
- Archivierte Bloecke bleiben mit _none (nicht retrieved anyway)
Verifikation:
- 158 → 603 Dimensionen pro Dimension-Typ (+281% Coverage)
- 28 _none verbleibend (nur archivierte Bloecke)
- "abends"-Query: blocks_with_dims 46 → 98 (alle aktiven Bloecke
mit daily-Dim via created_at.Hour())
- test.sh 16/16, eval.sh 43/43, keine Regression
- Retrieval P95: 64ms
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
0 commit comments