Files
2125_GCE/glyphs/super_registry.py
T
GlyphRunner System f5dba41cf2 Implement Supercharged Glyph Registry (LedoGlyph600)
New modules:
- glyphs/super_registry.py: Registry for 600 supercharged glyphs
- tests/test_supercharged_registry.py: Comprehensive test suite

Features:
- load_all_supercharged(): Lazy-load 600 glyphs from LedoGlyph600.json
- get_super(): Retrieve glyph by ID with all supercharged fields
- list_super_ids(): List all 600 glyph IDs (sorted)
- search_super(): Search by query across specified fields
- super_stats(): Registry metadata and statistics
- get_super_field(): Nested field access via dot-notation
- list_super_by_category(): Filter by category
- get_super_by_band(): Filter by frequency band
- get_glyphs_by_score_range(): Filter by score range

Data source: /mnt/d/users/dave/Downloads/LEDONOVA/LedoGlyph600.json

Supercharged fields:
- Symbolic anatomy (originalMetrics: power, complexity, resonance, stability, connectivity, affinity)
- Frequency signatures (praw: P, R, A, W)
- Contributor inheritance (lineage: predecessors, siblings, descendants, signature)
- Activation envelopes (activation: vector, score, signature, modes)
- Resonance profiles (activation modes: dormant, present, resonant, overdrive)
- Routing & governance metadata

All 12 tests passing.
2026-05-20 17:12:30 -04:00

316 lines
8.0 KiB
Python

"""Supercharged Glyph Registry (LedoGlyph600)
Registry for 600-glyph supercharged dataset with:
- 112 superpowers per glyph
- frequency signatures (praw: P, R, A, W)
- contributor inheritance (lineage)
- symbolic anatomy (originalMetrics)
- activation envelopes (activation modes)
- resonance profiles (activation signatures)
- extended metadata (governance, routing, storage)
Data source: /mnt/d/users/dave/Downloads/LEDONOVA/LedoGlyph600.json
"""
from typing import Optional, List, Dict, Any
import json
from pathlib import Path
# Module-level cache
_glyphs: Optional[Dict[str, dict]] = None
_glyph_ids: Optional[List[str]] = None
_loaded = False
_load_path: Optional[Path] = None
def load_all_supercharged(path: Optional[str] = None) -> None:
"""Load all 600 supercharged glyphs from JSON file.
Lazy-loads and caches glyphs in module-level variables.
Validates that exactly 600 glyphs are present.
Args:
path: Optional path to LedoGlyph600.json file.
Defaults to /mnt/d/users/dave/Downloads/LEDONOVA/LedoGlyph600.json
Raises:
FileNotFoundError: If file doesn't exist
ValueError: If glyph count != 600
json.JSONDecodeError: If JSON is malformed
"""
global _glyphs, _glyph_ids, _loaded, _load_path
if _loaded:
return
# Resolve path
if path is None:
path = "/mnt/d/users/dave/Downloads/LEDONOVA/LedoGlyph600.json"
filepath = Path(path)
if not filepath.exists():
raise FileNotFoundError(f"Supercharged glyph file not found: {filepath}")
_load_path = filepath
# Load JSON
with open(filepath) as f:
data = json.load(f)
# Extract glyphs
if isinstance(data, dict) and "glyphs" in data:
glyph_list = data["glyphs"]
elif isinstance(data, list):
glyph_list = data
else:
raise ValueError("Invalid glyph data structure")
# Validate count
if len(glyph_list) != 600:
raise ValueError(f"Expected 600 glyphs, got {len(glyph_list)}")
# Build cache dict by ID
_glyphs = {}
for glyph in glyph_list:
glyph_id = glyph.get("id")
if glyph_id:
_glyphs[glyph_id] = glyph
# Build ID list
_glyph_ids = sorted(list(_glyphs.keys()))
_loaded = True
def get_super(glyph_id: str) -> Optional[dict]:
"""Get a single supercharged glyph by ID.
Returns all fields: id, name, category, period, band, originalMetrics,
praw, score, lineage, activation, routing, storage, governance.
Args:
glyph_id: Glyph ID (e.g. "G001")
Returns:
Glyph dict with all supercharged fields, or None if not found
"""
if not _loaded:
load_all_supercharged()
return _glyphs.get(glyph_id) if _glyphs else None
def list_super_ids() -> List[str]:
"""List all supercharged glyph IDs (sorted).
Returns:
List of 600 glyph IDs
"""
if not _loaded:
load_all_supercharged()
return _glyph_ids[:] if _glyph_ids else []
def search_super(
query: str,
*,
fields: Optional[List[str]] = None,
limit: int = 20
) -> List[dict]:
"""Search supercharged glyphs by query across specified fields.
Performs case-insensitive substring matching on string fields and
numeric fields converted to strings.
Args:
query: Search string (case-insensitive substring match)
fields: List of field names to search.
Defaults to ['id', 'name', 'category']
limit: Maximum results to return (default 20)
Returns:
List of matching glyph dicts (up to limit)
"""
if not _loaded:
load_all_supercharged()
if not _glyphs:
return []
if fields is None:
fields = ["id", "name", "category"]
query_lower = query.lower()
results = []
for glyph_id in _glyph_ids:
glyph = _glyphs[glyph_id]
# Search in specified fields
for field in fields:
value = glyph.get(field)
if value is None:
continue
# Convert to string for matching
if isinstance(value, str):
if query_lower in value.lower():
results.append(glyph)
break
elif isinstance(value, (int, float)):
if query_lower in str(value).lower():
results.append(glyph)
break
# Stop if we've hit limit
if len(results) >= limit:
break
return results[:limit]
def super_stats() -> dict:
"""Get statistics about the supercharged glyph registry.
Validates registry integrity and returns metadata.
Returns:
Dict with keys:
- total_glyphs: Count of glyphs (should be 600)
- fields_present: List of all field names found across glyphs
- sample_ids: First 5 glyph IDs
- categories: List of all unique categories
- loaded: Whether registry is loaded
- load_path: Path to data file
"""
if not _loaded:
load_all_supercharged()
if not _glyphs:
return {
"total_glyphs": 0,
"fields_present": [],
"sample_ids": [],
"categories": [],
"loaded": False,
"load_path": None,
}
# Collect all field names
all_fields = set()
all_categories = set()
for glyph in _glyphs.values():
all_fields.update(glyph.keys())
category = glyph.get("category")
if category:
all_categories.add(category)
return {
"total_glyphs": len(_glyphs),
"fields_present": sorted(list(all_fields)),
"sample_ids": _glyph_ids[:5] if _glyph_ids else [],
"categories": sorted(list(all_categories)),
"loaded": _loaded,
"load_path": str(_load_path) if _load_path else None,
}
def get_super_field(glyph_id: str, field_path: str, default: Any = None) -> Any:
"""Get a nested field from a supercharged glyph.
Supports dot-notation for nested fields (e.g. "activation.score",
"praw.P", "lineage.signature").
Args:
glyph_id: Glyph ID
field_path: Field path (supports dots for nesting)
default: Default value if not found
Returns:
Field value or default
"""
glyph = get_super(glyph_id)
if glyph is None:
return default
# Handle nested paths
parts = field_path.split(".")
value = glyph
for part in parts:
if isinstance(value, dict):
value = value.get(part)
if value is None:
return default
else:
return default
return value
def list_super_by_category(category: str) -> List[dict]:
"""List all supercharged glyphs in a category.
Args:
category: Category name (e.g. "neural", "harmonic")
Returns:
List of matching glyphs
"""
if not _loaded:
load_all_supercharged()
if not _glyphs:
return []
return [g for g in _glyphs.values() if g.get("category") == category]
def get_super_by_band(band: int) -> List[dict]:
"""List all supercharged glyphs in a frequency band.
Args:
band: Band number
Returns:
List of matching glyphs sorted by band
"""
if not _loaded:
load_all_supercharged()
if not _glyphs:
return []
return sorted(
[g for g in _glyphs.values() if g.get("band") == band],
key=lambda g: g.get("id", "")
)
def get_glyphs_by_score_range(min_score: int, max_score: int) -> List[dict]:
"""List glyphs with scores in the given range.
Args:
min_score: Minimum score (inclusive)
max_score: Maximum score (inclusive)
Returns:
List of glyphs sorted by score descending
"""
if not _loaded:
load_all_superchattracted()
if not _glyphs:
return []
return sorted(
[
g for g in _glyphs.values()
if min_score <= g.get("score", 0) <= max_score
],
key=lambda g: g.get("score", 0),
reverse=True
)