LifeStack / core /metric_schema.py
Soham Banerjee
deploy: pure lifestack with partitioned wisdom pool
77da5ce
raw
history blame contribute delete
867 Bytes
from core.life_state import LifeMetrics
VALID_METRIC_PATHS = tuple(sorted(LifeMetrics().flatten().keys()))
LEGACY_METRIC_ALIASES = {
"physical_health.exercise_routine": "physical_health.fitness",
}
def normalize_metric_path(path: str) -> str:
"""Map legacy or malformed metric names onto the current LifeMetrics schema."""
if not isinstance(path, str):
return ""
path = path.strip()
return LEGACY_METRIC_ALIASES.get(path, path)
def is_valid_metric_path(path: str) -> bool:
return normalize_metric_path(path) in VALID_METRIC_PATHS
def format_valid_metrics() -> str:
grouped = {}
for path in VALID_METRIC_PATHS:
domain, metric = path.split(".", 1)
grouped.setdefault(domain, []).append(metric)
return "\n".join(
f"{domain}: {', '.join(metrics)}" for domain, metrics in grouped.items()
)