GET /admin/projects/proposals?min_active=N — on-demand companion to
the nightly scripts/detect_emerging.py cache. Reads SQL + the registry
directly so the result is current.
Each proposal:
- project_id (literal label as captured)
- active_count / candidate_count from current SQL
- sample_memories: 3 most recent active rows with content preview
- suggested_aliases: sibling labels sharing a >=4-char token,
case-insensitive (lead-space + lead-space-exploration-ltd +
space-exploration-ltd cluster; apm and apm-fpga do NOT cluster
via the 3-char 'apm')
- guessed_ingest_root: vault:incoming/projects/<id>/
Workflow: hit /admin/projects/proposals to see "what should I register?",
then POST to existing /admin/projects/register-emerging.
For prod: apm has 165 active memories, openclaw has 17,
hydrotech-mining variants combine to 13. apm is overdue.
Closes Codex's prior P2 from the state-of-service review. Reviewed by
Codex on tip e8ac8bb (verdict GO); two follow-on improvements (stronger
negative-clustering test + case-insensitive tokens) folded into f70fa6b.
10 regression tests covering: registered canonical/alias exclusion,
threshold filtering, sibling clustering, short-token negative,
case-insensitive clustering, registered-token-leak guard, sample shape,
candidate counting, param validation, sort order.
Test count: 586 -> 596.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>