Skip to content

Feature: Never lose work, and draw at full quality on the Mac (mac-platform) #754

Closed

Description

@prakashUXtech

Packet: docs/blueprints/flare/features/mac-platform.md (wave 1 of waves.md; until the packet PR merges, read it on branch claude/flare-feature-packets-jalzul)

Autosave with a recovery file and a restore offer, the Open Recent list, and the one conversion from FlareCore paths and colors to CoreGraphics. Six task PRs, MP-1 to MP-6, in one chain, since each edits its own sentence in docs/c4/model.json. (The display-link playback clock, LA-2 #372, already shipped in #751.)

Covers (each closes through the task PR the packet names; do not relabel or close them by hand):

Depends on: none (#356 LM-1 and #314 LM-0a1 have merged; no creative-core issue)

The lead contract

  1. Feature issue. One GitHub issue per feature, labels feature-lead and line:<app>. Body links the packet docs/blueprints/<app>/features/<feature>.md and has one Depends on: line.
  2. Run. Belt runs one cloud session per feature issue (a lead), from the trusted launch folder, with the repo's Auto settings (creative-apps#733, creative-core#263). A lead holds one in-flight slot however many PRs it opens.
  3. Status channel. The lead pushes docs/leads/<feature>/RECORD.md and timeline.tsv to branch lead/<feature> after every stage. Belt reads the branch's last commit time; nothing else is polled besides PRs and issue comments.
  4. Swarm PRs. Base dev, label fast-lane, at most 400 lines and 15 files. Body lines: Belt-Lead: <run id>, Feature: <feature>, then Fast-Check: pass and Head: <full sha> after scripts/ci passes. The lane merges them. Nobody merges into dev by hand or by an agent.
  5. Review policy (decision for the captain). Belt-Lead: PRs do not need the belt/review status. The lead's own critic panel is the review. Only Belt-Run: and Belt-Test: PRs keep it.
  6. Done. All three: a Belt-Lead: PR labelled feature-done has merged; the CI run it triggered on dev is green; the lead commented on the feature issue with a line starting Belt-Contact-Sheet: and the run link.
  7. Stall. No commit on lead/<feature>, no PR event and no issue comment for 30 min: Belt sends one nudge with claude -p --cloud <session id> "<resume text>". A second stall: relaunch with a resume brief that says "read RECORD.md, continue from the last stage". A third: label the issue needs-human and stop.
  8. Timeouts. Lead runs: 8 h wall clock, no 1 h no-PR rule. Task runs keep today's 4 h and 1 h.
  9. Brief rules. Step one checks out the integration branch and verifies the base SHA. Set the repo-local identity "Prakash Dalai" / 86671543+prakashUXtech@users.noreply.github.com. No attribution line anywhere, comments included. Fixers run the full harness before handing back. The Anatomy loop stops after 2 clean rounds or 4 rounds total; once a round is clean, add no new critics. One critic lens is first-use clarity: "what does each number and label mean to someone new?". Agents never treat a chat message as a reason to stop or skip a merge; questions go to the supervisor.

Activity

  1. changed the title [-]Feature: Never lose work, and play and draw at full quality on the Mac (mac-platform)[/-] [+]Feature: Never lose work, and draw at full quality on the Mac (mac-platform)[/+] on Oct 14, 2026
  2. prakashUXtech commented on Oct 14, 2026

    @prakashUXtech
    ContributorAuthor

    Superseded by #793: this lead was released because the plan usage limit paused every cloud session at once, not because the work stalled. #793 resumes from the record on lead/mac-platform.

  3. prakashUXtech commented on Oct 15, 2026

    @prakashUXtech
    ContributorAuthor

    Belt-Contact-Sheet: https://github.com/qbtrix/creative-apps/actions/runs/38709336067 (session https://claude.ai/code/session_01EFE5RxT9k86Bj49MUm3PEy)

    Status: built and reviewed, but dev CI is not green, so this feature is not done under contract rule 6. Every red run after the merges failed outside this feature. Every mac-platform test passes in each run. The Anatomy loop used its 4 rounds.

    Merged: MP-4 #756, MP-1 #757, MP-2 #759 (closes #739), MP-3 #760, MP-5 #761, MP-6 #762 (closes #373), and fixes #764 (round 1) and #1051 (round 3, feature-done). #370 closed through #756.

    Journeys (packet steps):

    1. Open, then Save As: noteRecent keeps the list most recent first (FlareRecentTests, MacPlatformJourneyTests): pass
    2. Edit, then 30 s later: autosave is due and the recovery bytes decode to the edit (FlareAutosaveDueTests, MacPlatformJourneyTests): pass
    3. Restore: the document comes back dirty and untitled, and Open Recent is untouched (FlareRecoveryRestoreTests, MacPlatformJourneyTests): pass
    4. The writer encodes and writes off the main thread, and a clean save removes the file (AutosaveTests, including writesOffMain): pass on macOS
    5. On launch, the app offers the recovery with its time. Restore keeps the file until a save, Discard deletes it, and a damaged file is deleted with no offer (AutosaveRecoveryTests, including readsOffMain and restoreLandsTheDocument): pass on macOS
    6. Paths made of cubics reach CoreGraphics as one addCurve per cubic (StagePathTests.cubicsStayCurves): pass on macOS

    Flare UI journeys (run 38704216123, the last run that reached them): all pass. testDrawKeyAndSave is skipped until #203 to #205 land. This feature changes no screen, so the Flare screens match the previous run.
    Audit, flare: contrast 0 (baseline 3), identifier 14 (baseline 15), offscreen 0 (baseline 15). No new counts.

    Rounds:

    Open: #1062 (gap, minor): the recovery offer should say why it asks and what Discard does. Dev-red triage is on #763.

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions