ADR 016: Layout merge registry¶
Estado¶
Aceptado — 2026-07
Relacionado con ADR 003, ADR 012 y ADR 013.
Contexto¶
Paneles y dashboards se ensamblan desde múltiples plugins. Sin un contrato de composición, cada plugin duplicaría layouts o el panel host tendría que conocer todos los módulos.
Decisión¶
- Tipos en
core/cortex_core/spi.py:LayoutHandle,LayoutFragment,LayoutSlotOp,LayoutSlotOps. - Hook
register_layouts(registry)en plugins;LayoutRegistrarencortex_core.registrar. LayoutRegistry(framework) recoge fragmentos;merge_layouts()fusiona porpanel_id+layout_id.- Operaciones:
- extend — antepone nodos al slot (menor
sortprimero; empate por orden de registro demodule_id). - append — añade nodos al final con la misma regla de orden.
load_pluginsinvocaregister_layoutsjunto al resto de hooks de extensión.
Consecuencias¶
- Plugins extienden layouts sin editar el panel host.
- Fusión determinista y testeable en
framework/tests/test_layout_merge.py. - La API HTTP de layouts queda para una iteración posterior; esta wave define el registro y el merge.
Referencias¶
framework/cortex_framework/layout/framework/cortex_framework/plugins/loader.py