Repository navigation
Description
Parent
Profile Portability implementation #882; accepted design #76 / PR #881.
What to build
Human creates and edits a PersonaBot and customizes its independent Assignment Model Plan in the existing DSH UI, then restarts the Host and sees the same identity, appearance, permissions, independent applied plan. These operational facts are owned by the Profile SQLite database, so future complete-core backup does not miss the current JSON-backed registry.
Soul/Memory stays human-readable and Git-backed. This slice is a real existing-UI persistence transition, not a disconnected migration helper or an implemented backup feature.
Acceptance criteria
- Owning Registry module retain their command/query interfaces and own their tables through the existing database owner, Schema Generation and Profile Writer Lease; callers do not receive generic SQL.
- Existing valid registry import once, preserving stable identities, appearance snapshots, pause/Browser/Computer access flags, model routes, Assignment allowlists/defaults, effort choices, plan revisions and independent applied Bot snapshots. Migration-source JSON cannot become a normal-runtime fallback or competing authority after successful import.
- Migration validates source data and commits coherent records with its durable marker; interruption or invalid records never become a silently empty registry. Fail closed with bounded diagnostics and a documented recovery path, retaining Soul and legacy files until verified cutover.
- All current production create/import-from-Git, edit, model-plan apply/edit, pause/access and existing authorized remove paths use the owning database modules. Do not expand destructive deletion policy; 设计:PersonaBot / Channel 破坏性删除与 Purge 依赖契约 #138 owns that design.
- Existing model permission/revision checks remain authoritative. Applied plans retain their independence from later template edits. No credentials enter the records.
- Database recovery or a competing writer prevents operational mutation and Bot execution; reads/recovery diagnostics must not mount a stale JSON writer.
- Real DSH E2E migrates a pre-existing Profile, edits a Bot and its plan through production seams, cold-restarts and verifies unchanged identity/persona and saved plan plus a real model reply. Include screenshot/recording and matched before/after or recovery evidence where interactions change; do not infer UI success from database tests alone.
- Focused migration/crash/revision/second-writer tests and repository checks pass; update current architecture and bilingual Release Ledger around the actual implemented authority.
Blocked by
- None — can start after accepted design handoff. Foundation:operational database owner / writer lease / schema generation #79 provides the delivered owner/lease/schema foundation; Tracer: Edit and switch independent Model Preset snapshots #501/Tracer: Select an allowed model for a new Assignment #504 provide the existing model contracts.
Non-goals
No Profile Backup format, Session-log migration, new preset behavior, new permissions, automatic backup, retention or destructive-policy redesign.
Metadata
Metadata
Assignees
Labels
Type
Projects
- StatusShow more project fieldsDone
Activity
DoodleBears commentedon Oct 5, 2026
Agent work claim
codex/local/01a0f25f-2150-75e3-8895-23d35394b8d8(not a DSH Session)codex/884-registry-database#888 merged after full exact-head CI and Human approval. No prior #884 claim or implementation PR was present when inspected. This slice will stop at its own PR for Human QA; #883's screenshot exception does not automatically apply here.
DoodleBears commentedon Oct 5, 2026
Agent work outcome
codex/local/01a0f25f-2150-75e3-8895-23d35394b8d8(not a DSH Session)3601a9df98864367980bebb70aa6e062b27bf9e2The Registry now owns identity, saved appearance, access switches and independent applied model plans in Profile SQLite, with one-time atomic records/marker import and retained source/Soul files. Real production DSH API verification covered a generation-54 Profile upgrade, edits, reusable-template independence, cold restart with damaged QA legacy files and two actual canonical model replies. Evidence is linked in the PR and explicitly records
browserInteractionVerified:false.The final local suite passed: 313 files, 2560 tests passed and 9 skipped. Typecheck, lint, format, build, release checks and the 326-page docs build passed. Independent exact-head Standards review has 0 remaining findings; Spec review has 0 implementation findings and 1 outstanding genuine visual acceptance requirement. Exact-head remote CI passed its complete lint, format, typecheck, test, build and docs workflow: https://github.com/BotHarness/BotHarness/actions/runs/37339735472 .
Remaining acceptance: genuine screenshots/recording and Human UI QA. The browser tool denied the local QA URL and prohibited alternate capture paths; #883's explicit screenshot exception does not apply to this issue. The isolated QA Profile remains available through private local instructions. No simulated screenshot evidence or new destructive-policy behavior is introduced.
Implementation is handed to Human review in Draft form; this issue stays open. No merge or #885/#886 work will begin without Human approval.
Persist PersonaBot Registry and independent model plans in SQLite (#891)
DoodleBears commentedon Oct 5, 2026
Agent work outcome — merged
codex/local/01a0f25f-2150-75e3-8895-23d35394b8d8(not a DSH Session)3601a9df98864367980bebb70aa6e062b27bf9e2e3dd8a5bac68c0e36eed4fd98b2f34691988617fFull exact-head CI and 2560 local tests passed. Genuine screenshots were not captured; this closure records the Human-approved delivery exception, not a completed browser/UI verification. The public PR retains the limitation. The isolated verification Profile is preserved. No Profile Backup or destructive-policy expansion is claimed.