feat(cosmobiologia): GR — cómputo de triggers y eventos de rectificación

Primer incremento del Sistema GR (García Rosas): la engine, además del
dual-ring directo/converso, ahora computa los triggers de rectificación
y detecta las convergencias directo+converso sobre un mismo punto natal.

- cosmobiologia-render: módulo `gr` agnóstico — tipos GrTrigger/GrDirection
  + compute_gr_triggers (emparejamiento puro, 7 tests). Campo gr_triggers
  en RenderModel (serde-default, back-compat).
- cosmobiologia-engine: build_primary_directions_overlay computa los
  triggers contra cuerpos natales + 4 ángulos; orbe HUD 2°, micro-orbe
  de evento 5'. Test end-to-end con eternal.

Falta: resaltado del evento en el canvas, HUD lateral, scrubbing live.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
sergio
2026-05-22 13:40:09 +00:00
parent e77a32f4d6
commit 15e45ace9b
4 changed files with 363 additions and 32 deletions
@@ -31,12 +31,14 @@ use serde::{Deserialize, Serialize};
pub use cosmobiologia_model::{Chart, ChartId, ChartKind};
pub mod draw;
pub mod gr;
pub mod math;
pub mod palette;
pub use draw::{
compose_wheel, draw_commands_to_svg, CompositionOpts, DrawCommand, Rgba, TextAnchor,
};
pub use gr::{compute_gr_triggers, GrDirection, GrTrigger};
pub use math::{
find_clusters, format_coord_compact, polar_to_screen, spread_angles, Radii,
};
@@ -82,6 +84,12 @@ pub struct RenderModel {
/// Vacío sino se activó el módulo Uranian.
#[serde(default)]
pub uranian_groups: Vec<UranianGroup>,
/// Triggers del Sistema GR (direcciones primarias). Poblado sólo
/// cuando el módulo `primary_directions` está activo; ordenado por
/// `orb_deg` ascendente. La UI lo lista en el HUD de rectificación
/// y resalta los `event = true` (convergencias directo+converso).
#[serde(default)]
pub gr_triggers: Vec<GrTrigger>,
}
/// Etiqueta legible de un overlay para el footer del canvas. La engine