You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Adrian / admin surface — inspect, configure, diagnose, explain, back up, and safely control the system.
The current dashboard grew feature-by-feature and mixes live public telemetry, child interaction, tool controls, projects, and operator concerns. It should now reflect the architecture SPARK actually has: provenance-aware memory, bounded learned preferences, explicit health/liveness, deterministic action gates, GPIO leases, self-evolution via reviewed PRs, and privacy boundaries.
First phase: audit before redesign
Inventory every existing UI panel, route, button, API endpoint, auth boundary, and state field exposed by the web surfaces. Classify each as:
public/read-only;
Obi-safe interaction;
Adrian/admin operation;
developer/debug only;
obsolete/redundant;
privacy-sensitive and currently overexposed.
Do not preserve controls merely because they exist.
Obi surface principles
The Obi UI should feel like interacting with SPARK, not operating Linux or a robotics console.
Prefer:
conversation and recent shared context;
"My Projects" / things SPARK and Obi are building together;
routines/support tools that are actually used;
understandable learned-preference visibility such as “SPARK has noticed you often choose X after school,” with a simple correction/forget-this path;
clear quiet/sleep/availability state where useful;
safe creative/play interactions;
transparent language about what SPARK knows versus guessed/interpreted;
minimal controls and low cognitive load.
Avoid:
raw daemon/service state;
direct GPIO/motion controls unless part of a deliberately designed activity;
arbitrary tool invocation;
model/backend/config choices;
raw logs, tokens, IPs, filesystem/state files;
adult persona/admin controls;
exposing household/location/private telemetry beyond what the child experience genuinely needs.
Adrian/admin surface principles
The admin UI should answer, quickly:
Is SPARK healthy?
What is running, and is it functionally alive?
What sensors/data are stale?
What is SPARK currently doing and why?
What did SPARK perceive, infer, remember, and learn?
What provenance/evidence supports a durable claim?
Which contextual preferences are active, with confidence, decay, contradictions, and causal record IDs?
What actions were blocked/allowed by deterministic gates?
Who owns GPIO right now and why?
What privacy-sensitive data is retained and where?
Are there pending self-evolution requests/PRs?
What branch/commit is deployed on the Pi versus current master?
What requires operator attention?
Candidate admin areas:
Overview
Health rollup, current activity, battery, connectivity, deployed revision, pending alerts.
Contextual preferences grouped by person/context/options, confidence trajectory, evidence and contradiction records, manual disable/correction without deleting history.
Process state, functional heartbeat, sensor freshness, failure streaks, recent errors/log excerpts, restart controls with explicit confirmation and post-restart verification.
Privacy / data
Retention summary, data sources, disclosure surfaces, export/delete paths consistent with #173 once defined.
Configuration
Only configuration with a real operator need. Avoid turning every constant in spark_config.py into a knob. Separate safe runtime settings from code-reviewed policy.
Audit #38 rather than implementing it literally. Its old settings-panel proposal predates current provenance, health, preference, lease, and trust-boundary architecture and contains stale timing/model assumptions. Salvage useful intent (read-only config, backup/export, carefully bounded admin settings) while replacing obsolete details.
Deliverables
Current-state UI/API/auth inventory.
Information architecture for Public vs Obi vs Admin surfaces.
Wireframe-level design or HTML prototype using the existing visual language where sensible.
Gap analysis: APIs/data needed for the new views versus APIs that should be deprecated.
Security/privacy review.
Implementation plan split into small PRs; prioritize read-only observability before mutation controls.
Acceptance
A child-facing user cannot accidentally enter an operator/debug surface.
An admin can understand SPARK's health, cognition, learned behavior, authority state, and deployed revision without SSH for routine inspection.
Provenance and preference explanations are visible enough to answer “why does SPARK think/do this?”
Health UI distinguishes process state, functional liveness, and sensor freshness.
Exploration intent and GPIO authority are shown as separate concepts.
Old/stale controls are explicitly removed or justified rather than automatically carried forward.
Goal
Redesign SPARK's web UI around two distinct users and jobs:
The current dashboard grew feature-by-feature and mixes live public telemetry, child interaction, tool controls, projects, and operator concerns. It should now reflect the architecture SPARK actually has: provenance-aware memory, bounded learned preferences, explicit health/liveness, deterministic action gates, GPIO leases, self-evolution via reviewed PRs, and privacy boundaries.
First phase: audit before redesign
Inventory every existing UI panel, route, button, API endpoint, auth boundary, and state field exposed by the web surfaces. Classify each as:
Do not preserve controls merely because they exist.
Obi surface principles
The Obi UI should feel like interacting with SPARK, not operating Linux or a robotics console.
Prefer:
Avoid:
Adrian/admin surface principles
The admin UI should answer, quickly:
Candidate admin areas:
Overview
Health rollup, current activity, battery, connectivity, deployed revision, pending alerts.
Cognition / memory
Recent thoughts with provenance labels; durable memories; supersession/correction history; evidence references; retrieval/explanation tools.
Learning
Contextual preferences grouped by person/context/options, confidence trajectory, evidence and contradiction records, manual disable/correction without deleting history.
Body / authority
Motion permission, wheel-on-blocks state, current GPIO lease owner/token generation/expiry, exploration intent separately, safe stop/yield controls.
Services / diagnostics
Process state, functional heartbeat, sensor freshness, failure streaks, recent errors/log excerpts, restart controls with explicit confirmation and post-restart verification.
Privacy / data
Retention summary, data sources, disclosure surfaces, export/delete paths consistent with #173 once defined.
Configuration
Only configuration with a real operator need. Avoid turning every constant in
spark_config.pyinto a knob. Separate safe runtime settings from code-reviewed policy.Evolution
Pending Obi/Adrian change requests, queue/build state, PR links, budgets, review status. Preserve human merge authority.
Backup / recovery
Export state, restore with validation, and clearly distinguish append-only history from ephemeral runtime state.
Security and policy constraints
Relationship to existing issue #38
Audit #38 rather than implementing it literally. Its old settings-panel proposal predates current provenance, health, preference, lease, and trust-boundary architecture and contains stale timing/model assumptions. Salvage useful intent (read-only config, backup/export, carefully bounded admin settings) while replacing obsolete details.
Deliverables
Acceptance