Skip to content

Tracer: migrate roster arrangement to its SQLite owner #885

Closed

Description

@DoodleBears

Parent

Profile Portability implementation #882; accepted design #76 / PR #881.

What to build

Human organizes Channels into sections, pins/hides items and changes arrangement through the existing roster UI, then reopens the Profile in another Client or after Host restart and sees the same arrangement. Move this BotHarness-owned arrangement from the legacy DSH storage domain to its owning SQLite module so one complete operational snapshot includes it.

Acceptance criteria

  • One-time import preserves section IDs/names/members/order, pins, hidden entries and root arrangement. Import an empty database target coherently with a durable marker; an existing target is not overwritten.
  • Normal reads/writes, seven existing roster commands and subsequent arrangement commands retain their production Host↔Client contract, single-membership/idempotency rules and post-commit refresh behavior while using the shared owner/lease/schema lifecycle.
  • Source-domain import failure, database recovery and competing writer are explicit and cannot silently become an empty editable arrangement. Preserve migration input for documented recovery; no normal-runtime dual-write or domain fallback.
  • Sorting preferences remain in native DSH Settings and per-Client collapse stays local; no invented second settings authority. Neither hiding nor arranging a Channel deletes its content.
  • Real DSH E2E migrates a populated source, reorganizes/pins/hides through production UI, reopens another Client and cold-restarts with the same arrangement. Provide actual screenshot/recording, focused migration/rollback tests and required checks.
  • Update current persistence documentation and bilingual Release Ledger; label this as arrangement ownership delivery, not Profile Backup delivery.

Blocked by

Activity

  1. added this to the v1.1 milestone on Oct 5, 2026
  2. added
    ready-for-agentFully specified, ready for an AFK agent
    area:fullstackEnd-to-end Host and Client implementation
    feature:exportExport, import, backup, and transfer
    scope:tracerHuman-testable implementation slice
    on Oct 5, 2026
  3. DoodleBears commented on Oct 5, 2026

    @DoodleBears
    ContributorAuthor

    Agent work claim

    • Agent: Codex
    • Task: codex/local/01a0f25f-2150-75e3-8895-23d35394b8d8 (not a DSH Session)
    • Issue scope: migrate the existing roster arrangement into its owning SQLite module, one-time validated Storage Domain import, unchanged production commands and post-commit refresh, focused failure/restart verification. Sorting stays native and collapse stays Client-local; no Profile Backup or deletion policy changes.
    • Branch: codex/885-roster-database
    • Started: 2026-10-05 16:39 UTC
    • State: active

    #891 merged after Human approval and complete exact-head CI. At claim time #885 had no existing claim, assignee or implementation PR. Stop at this issue's PR for genuine visual evidence/Human QA; earlier screenshot exceptions do not carry forward.

  4. added
    agent:activeOne or more coding-agent tasks currently claim this issue; see claim comments for task IDs
    on Oct 5, 2026
  5. self-assigned this
    on Oct 5, 2026
  6. DoodleBears commented on Oct 5, 2026

    @DoodleBears
    ContributorAuthor

    Agent work outcome

    Schema Generation 56 moves the existing roster arrangement into its owning Profile SQLite module. Validated one-time import commits the arrangement and marker together, retains source input, refuses conflicting/unavailable targets and preserves production commands, source independence, native sorting and per-Client collapse. Whole-command transactions preserve Channel content and publish after commit.

    Real DSH verification covered a populated generation-55 baseline, upgrade, all arrangement commands/batches, a separate authenticated HTTP/SSE connection receiving the post-commit invalidation, and cold restart with a deliberately damaged disposable QA legacy source. Exact arrangement and all five Channels' original messages remained. Evidence is linked in the PR; it explicitly records browserInteractionVerified:false and actualSecondBrowserClientVerified:false.

    The local full suite passed: 314 files, 2570 tests passed and 9 skipped. Lint, format, typecheck, build, release checks, font regeneration and the 332-page docs build passed. Independent final-head Standards review has 0 hard violations/remaining findings; Spec review has 0 implementation findings and 1 remaining visual acceptance criterion. Exact-head remote CI is running: https://github.com/BotHarness/BotHarness/actions/runs/37345492452 .

    Remaining acceptance: real production UI reorganization, an actual second browser Client, genuine screenshots/recording and Human QA. Browser tool policy denies the local QA URL and prohibits alternate capture paths. The restriction is preserved; no simulated evidence is offered. Earlier exceptions for #883/#884 do not apply here. The isolated Host remains available through private local review instructions.

    This issue stays open in Draft handoff form. No merge or #886 implementation will begin without Human approval.

  7. added and removed
    ready-for-agentFully specified, ready for an AFK agent
    agent:activeOne or more coding-agent tasks currently claim this issue; see claim comments for task IDs
    on Oct 5, 2026
  8. DoodleBears commented on Oct 5, 2026

    @DoodleBears
    ContributorAuthor

    Agent work outcome

    • Agent: Codex
    • Task: codex/local/01a0f25f-2150-75e3-8895-23d35394b8d8 (not a DSH Session)
    • State: completed under the Human-approved delivery limitation
    • PR: Persist Channel roster arrangement in the Profile database #892, merged
    • Reviewed head: 8642de8dbe86b1e9cf36c97381deb464e177e357
    • Merge commit: 8f216948d3f24abab35edd370834737ec348eef2

    The Human explicitly approved merge after the genuine UI / actual second browser Client / screenshot gap had been disclosed. These items remain unverified; this is not a visual acceptance claim or an evidence exception for subsequent tickets.

    Exact-head CI passed in attempt 2, including lint, format, typecheck, all tests, build, generated Client consistency and docs. Attempt 1 exceeded the source-policy test timeout; the successful rerun did not change code: https://github.com/BotHarness/BotHarness/actions/runs/37345492452/attempts/2 . Final independent Standards review found 0 violations/findings; Spec review found 0 implementation findings and the disclosed visual acceptance gap. CodeRabbit's Draft skip was not treated as a code review.

    Real DSH production API/SSE, migration, complete arrangement commands and cold restart evidence remain linked in #892. #886 remains blocked by #138's accepted deletion/Purge contract and any actual canonical ledger implementation prerequisite; no destructive implementation or placeholder purge protection is introduced here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:fullstackEnd-to-end Host and Client implementationfeature:exportExport, import, backup, and transferready-for-humanRequires human implementationscope:tracerHuman-testable implementation slice

Type

No type

Projects

  • Status
    Done

Relationships

None yet

Development

No branches or pull requests

Issue actions