Repository navigation
Feature: Never lose work, and draw at full quality on the Mac (mac-platform) #793
Description
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):
- Flare LM-1b: Open Recent list and autosave due time in FlareFiles (rest of #356) #739 Flare LM-1b: Open Recent list and autosave due time (MP-1, MP-2)
- Flare LA-3: Autosave writer and recovery file, off the main thread #373 Flare LA-3: autosave writer and recovery file (MP-3, MP-5, MP-6)
- Flare LA-0:
StagePath:PathandMatrixtoCGPath, colors toCGColor(srgbRed:…)#370 Flare LA-0:StagePath(MP-4)
Depends on: none (#356 LM-1 and #314 LM-0a1 have merged; no creative-core issue)
The lead contract
- Feature issue. One GitHub issue per feature, labels
feature-leadandline:<app>. Body links the packetdocs/blueprints/<app>/features/<feature>.mdand has oneDepends on:line. - 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.
- Status channel. The lead pushes
docs/leads/<feature>/RECORD.mdandtimeline.tsvto branchlead/<feature>after every stage. Belt reads the branch's last commit time; nothing else is polled besides PRs and issue comments. - Swarm PRs. Base
dev, labelfast-lane, at most 400 lines and 15 files. Body lines:Belt-Lead: <run id>,Feature: <feature>, thenFast-Check: passandHead: <full sha>afterscripts/cipasses. The lane merges them. Nobody merges into dev by hand or by an agent. - Review policy (decision for the captain).
Belt-Lead:PRs do not need thebelt/reviewstatus. The lead's own critic panel is the review. OnlyBelt-Run:andBelt-Test:PRs keep it. - Done. All three: a
Belt-Lead:PR labelledfeature-donehas merged; the CI run it triggered on dev is green; the lead commented on the feature issue with a line startingBelt-Contact-Sheet:and the run link. - Stall. No commit on
lead/<feature>, no PR event and no issue comment for 30 min: Belt sends one nudge withclaude -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 issueneeds-humanand stop. - Timeouts. Lead runs: 8 h wall clock, no 1 h no-PR rule. Task runs keep today's 4 h and 1 h.
- 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.
Resume note: the first lead for this feature (run act-1a13b14336c-tqna) was released when the plan usage limit paused every cloud session at once on 2026-10-14 (factory lesson 96). Its record is on branch lead/mac-platform: read RECORD.md there and continue from its last stage.
Activity
docs(lead): mac-platform resumed as #793, stage 5
fix(flare): build against creative-core's layer owner commands (#801)
docs(flare): mac-platform packet status, built on dev (#806)
prakashUXtech commentedon Oct 14, 2026
Lead status: all six tasks have merged (#756, #757, #759, #760, #761, #762), along with the test fix #764. #801 repaired FlareModel's build against creative-core main, and #806 (feature-done) merged.
The CI run that #806 triggered, 38647662189, is red, but only on two Photo timing budgets. Every mac-platform test passes on Linux and macOS. I filed the Photo failures as #851 (line:photo) and noted them on #763.
The feature is waiting on the next dev CI run, which is round 4 and the last in the budget. The record is on
lead/mac-platform.prakashUXtech commentedon Oct 14, 2026
Belt-Contact-Sheet: https://github.com/qbtrix/creative-apps/actions/runs/38654031210 (lead session https://claude.ai/code/session_01XDcqAwirDk7oW646sjydV8)
The feature is built, but dev CI is not green, so this is not done. The round budget is used up (4 rounds), so I'm closing out the lead under docs/factory/lead.md stage 4: the open findings are filed as gaps and named below.
Dev CI runs after the feature-done PR #806 (head 190e45d):
PhotoBrushCopyCostTestsmouse-up took 19.4 ms against a 16 ms budget. On macOS,PhotoBrushLatencyTestsstrokeStart measured 3.9 ms against a 3.0 ms budget.PhotoBrushLatencyTestsstrokeStart, 3.9 ms against 3.0 ms (line:photo, Photo: brush timing budgets fail dev CI on shared runners #851).GoldenImageTests.compareWithinBudgetp95 (line:suiteui).SnapshotHostTests,FrameProbeTestsandControlInventoryTests, which came in with the suite-harness feature (Feature: suite-harness #778, line:suiteui) and belong to that lead.Journeys and steps from the packet, all macOS
swift test, all passing in both runs:FlareRecentTests,MacPlatformJourneyTestsFlareAutosaveDueTestsFlareRecoveryRestoreTests,MacPlatformJourneyTestsAutosaveTestsAutosaveRecoveryTests(includingreadsOffMain)addCurve, the matrix applies and colors come out in sRGB:StagePathTestsThe audit has no counts for these runs:
scripts/cifailed on macOS beforescripts/ui-test, so the journeys and audit didn't run and there are no ui-screens. This feature changes no screen, since nothing is wired into the window yet; F17a #205 and F17c #393 do that. So it can't raise a Flare audit count.PRs: MP-1 #757, MP-2 #759, MP-3 #760, MP-4 #756, MP-5 #761, MP-6 #762, test fix #764, the creative-core
LayerOwnerbuild fix #801, and feature-done #806.Open: #851 (line:photo timing budgets), plus the suite-harness macOS failures that the #778 lead owns. The next green dev run judges this feature with no Flare change needed. Record:
docs/leads/mac-platform/RECORD.mdonlead/mac-platform.docs(lead): mac-platform done, contact sheet on #793
prakashUXtech commentedon Oct 15, 2026
Supervisor note: Belt landed this lead a little early. A green non-CI run on a later dev commit satisfied its done check while dev CI was still red for failures outside Flare (#763: Photo timing budgets and new SuiteUI harness tests). The feature itself is complete per the contact sheet above. The check now reads only the CI workflow (pocketpaw#2522).
prakashUXtech commentedon Oct 15, 2026
Supervisor: landed by Belt (see the notes above); closing the feature issue (Belt doesn't close feature issues yet, factory lesson 98).
prakashUXtech commentedon Oct 15, 2026
After the landing: the first mac-platform lead session (#754) woke up at 08:20Z, missed the relaunch, and ran two more review rounds on dev runs 38704216123 and 38709336067. They found and fixed one real bug and filed one gap:
FlareAutosave.restoredeleted the recovery file. A second crash before the next edit or save would have lost the restored work. The file now stays until a clean save or Discard. Autosave also encodes the document off the main thread now. Run 38709336067 compiled the fix on macOS and passed every mac-platform suite, includingrestoreLandsTheDocumentandwritesOffMain. That run is red only on HaloLayerListTests (line:halo).The contact sheet that session posted on #754 duplicates this one. RECORD.md on
lead/mac-platformcovers both sessions.docs(flare): UI and integrate packets, usage map, waves 3 and 4 (#1000)