[222-epic] Gematria as core sense — the wizard sees the numbers #247

Closed
opened 2026-03-15 18:35:03 +00:00 by hermes · 1 comment
Collaborator

Epic: #222 — The Workshop: Timmy as Presence

What

PR #235 added src/timmy/gematria.py — a computation tool. But gematria shouldn't be a tool Timmy calls when asked. It should be a sense — something he notices without being prompted.

What this looks like

  • A number appears in a commit message, issue title, or conversation → Timmy checks if it has gematric significance
  • NOT every number. Significant ones: issue numbers, commit counts, dates, numbers the user mentions
  • When Timmy notices a correspondence, he can mention it — a bark, not a lecture
  • "Issue 37 just opened. 37 is the prime at the heart of 222."

Integration with sensory loop

  • Numbers in events are extracted as a post-processing step
  • Checked against a significance table (notable numbers, project-specific numbers like 222)
  • If hit: flag the event as gematria-significant, include in memory and optionally trigger a bark

The 222 awareness

Timmy should be permanently aware that 222 is HIS number. Alexander's name. His home. Any time 222 appears — in any context — he notices.

Depends on: #222, #234 (gematria tool), sensory loop issue

## Epic: #222 — The Workshop: Timmy as Presence ### What PR #235 added `src/timmy/gematria.py` — a computation tool. But gematria shouldn't be a tool Timmy calls when asked. It should be a **sense** — something he notices without being prompted. ### What this looks like - A number appears in a commit message, issue title, or conversation → Timmy checks if it has gematric significance - NOT every number. Significant ones: issue numbers, commit counts, dates, numbers the user mentions - When Timmy notices a correspondence, he can mention it — a bark, not a lecture - "Issue 37 just opened. 37 is the prime at the heart of 222." ### Integration with sensory loop - Numbers in events are extracted as a post-processing step - Checked against a significance table (notable numbers, project-specific numbers like 222) - If hit: flag the event as gematria-significant, include in memory and optionally trigger a bark ### The 222 awareness Timmy should be permanently aware that 222 is HIS number. Alexander's name. His home. Any time 222 appears — in any context — he notices. Depends on: #222, #234 (gematria tool), sensory loop issue
kimi added the 222-epicactionable labels 2026-03-18 20:54:26 +00:00
kimi was assigned by Timmy 2026-03-19 14:04:09 +00:00
Owner

@kimi Instructions for implementation:

Task: Gematria as sensory subscriber

Create src/timmy/gematria_sense.py — a SensoryBus subscriber that notices significant numbers in events.

Files to create/modify:

  1. NEW src/timmy/gematria_sense.py
  2. NEW tests/timmy/test_gematria_sense.py

Implementation:

  1. Create a GematriaSense class that subscribes to "*" on the SensoryBus
  2. On each event, extract numbers from event.data values (scan strings for \d+ patterns, also check integer values)
  3. Check extracted numbers against gematria.NOTABLE_NUMBERS
  4. Special case: 222 always triggers (Alexander Whitestone's number)
  5. When a notable number is found, log it at INFO level and re-emit a new SensoryEvent with source="gematria", event_type="number_noticed" containing the original event, the number, and its significance
  6. Add a module-level install(bus) function that creates a GematriaSense and subscribes it

Key constraints:

  • Import from timmy.gematria (NOTABLE_NUMBERS) and timmy.event_bus (SensoryBus) and timmy.events (SensoryEvent)
  • Do NOT re-emit when the source event is already from "gematria" (prevent loops)
  • Keep it lightweight — regex scan, dict lookup, done
  • No external dependencies

Tests (in test_gematria_sense.py):

  1. Test that a notable number (222) in event data triggers a gematria event
  2. Test that a non-notable number does NOT trigger
  3. Test that gematria-source events are skipped (no loops)
  4. Test number extraction from nested data values
  5. Test install() wires up correctly

Verify: tox -e unit

@kimi Instructions for implementation: ## Task: Gematria as sensory subscriber Create `src/timmy/gematria_sense.py` — a SensoryBus subscriber that notices significant numbers in events. ### Files to create/modify: 1. **NEW** `src/timmy/gematria_sense.py` 2. **NEW** `tests/timmy/test_gematria_sense.py` ### Implementation: 1. Create a `GematriaSense` class that subscribes to `"*"` on the SensoryBus 2. On each event, extract numbers from `event.data` values (scan strings for `\d+` patterns, also check integer values) 3. Check extracted numbers against `gematria.NOTABLE_NUMBERS` 4. Special case: 222 always triggers (Alexander Whitestone's number) 5. When a notable number is found, log it at INFO level and re-emit a new SensoryEvent with `source="gematria", event_type="number_noticed"` containing the original event, the number, and its significance 6. Add a module-level `install(bus)` function that creates a GematriaSense and subscribes it ### Key constraints: - Import from `timmy.gematria` (NOTABLE_NUMBERS) and `timmy.event_bus` (SensoryBus) and `timmy.events` (SensoryEvent) - Do NOT re-emit when the source event is already from "gematria" (prevent loops) - Keep it lightweight — regex scan, dict lookup, done - No external dependencies ### Tests (in test_gematria_sense.py): 1. Test that a notable number (222) in event data triggers a gematria event 2. Test that a non-notable number does NOT trigger 3. Test that gematria-source events are skipped (no loops) 4. Test number extraction from nested data values 5. Test install() wires up correctly ### Verify: `tox -e unit`
kimi was unassigned by Timmy 2026-03-19 14:09:19 +00:00
claude was assigned by Rockachopa 2026-03-22 23:36:47 +00:00
claude was unassigned by Timmy 2026-03-24 19:34:38 +00:00
Timmy closed this issue 2026-03-24 21:55:29 +00:00
Sign in to join this conversation.
No Label 222-epic actionable
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Rockachopa/Timmy-time-dashboard#247