Per-domain frontier selection + cross-domain meta-selector + novelty trigger
Goal
Wire the grind’s next-cycle selection to the PER-DOMAIN matrices so selection is a pure function of the matrix shape: a cross-domain meta-selector picks which domain to advance, then draws that domain’s frontier top; the novelty trigger fires per-domain when a domain’s frontier empties but its floor is non-empty.
Implementation Sketch
The grind orchestrator’s next-cycle gate: (1) a cross-domain meta-selector ranks domains and picks the active domain UNDER AN ANTI-STARVATION FAIRNESS GUARANTEE — every domain with open floor cells is eventually advanced (no permanent starvation); declared-priority is allowed ONLY as a tiebreak layered over a fairness floor (e.g. aging / least-recently-advanced among domains with open floor, or floor-weighted round-robin), never as a raw priority that can starve a low-priority domain; (2) candidate = that domain’s frontier[0] from read_matrix; (3) a domain whose frontier is empty while its floor is non-empty fires the §11.4 s-351cfcfa novelty trigger (need a new mechanism_class IN THAT DOMAIN). Plan-agnostic per script-first.md §11 — the engine names no plan/domain; the grind opts in by declaring its floor probe + taxonomies.
Spec References
Design v7 D5 + D7 (per-domain selection + fair meta-selector). Round-1 review (opencode-F3 anti-starvation). learning-ledger.md §11.4 novelty trigger. script-first.md §11 plan-agnostic opt-in.
Work Items
- Cross-domain meta-selector with an ANTI-STARVATION fairness guarantee (every domain with open floor eventually advanced; declared-priority is a tiebreak over a fairness floor, never raw); candidate = active domain’s frontier[0]; a starvation test asserts no open-floor domain is permanently skipped.
- Per-domain novelty trigger: a domain’s empty-frontier + non-empty-floor fires the §11.4 trigger for that domain; plan-agnostic (no hardcoded plan/domain terms in the engine).
Fresh intel (regenerated)
{ “schema_version”: 1, “target”: { “kind”: “plan-section”, “ref”: “ledger-matrix/s-3d98a228” }, “generated_at”: “2026-06-29T17:35:02.622325+00:00”, “graph_state”: { “head_sha”: “6b4f84d0”, “last_code_import_at”: “2026-06-29T17:31:57.704Z”, “embedding_stale”: true, “insights_stale”: false, “cpg_stale”: false }, “surfaces”: {}, “summary”: “intel-package[plan-section:ledger-matrix/s-3d98a228] agent-authored dossier”, “degraded”: false, “dossier”: { “objective_symbols”: [], “tiers”: {}, “agent_authored”: true, “constrained_symbols”: [ “read_ranked”, “assemble_corpus”, “_FORBIDDEN_REFERENCES”, “validate_ledger_append_only” ], “difficulty”: { “class”: “routine”, “research_online”: false, “research_mode”: “auto”, “signals”: [], “plan_dir”: “/home/eric/projects/ori_lang/plans/ledger-matrix” } } }
(full dossier: grind-selection—s-3d98a228.intel.json)