Skip to content

refactor: give the build status one owner and repair the tooling - #110

Merged
leoafarias merged 3 commits into
refactor/generation-lifecyclefrom
refactor/build-lifecycle
Sep 8, 2026
Merged

refactor: give the build status one owner and repair the tooling#110
leoafarias merged 3 commits into
refactor/generation-lifecyclefrom
refactor/build-lifecycle

Conversation

@leoafarias

@leoafarias leoafarias commented Sep 8, 2026

Copy link
Copy Markdown
Member

Intent

Build failure status had two writers, FileDeckLoader read the status file twice per cycle, and two melos aliases pointed at scripts that no longer exist.

This is PR 3 of a three-PR stack. It targets refactor/generation-lifecycle (#109). Review the incremental diff against that branch.

Changes

One build-status ownerDeckBuilder publishes the failure status for a direct build and for a watch build. The watch stream and the CLI no longer write it. The CLI keeps reporting failures raised before a builder starts, which is the only case a builder cannot own. A failed status write is logged and no longer replaces the original build error.

Loader reads onceFileDeckLoader._processStatus takes the snapshot the cycle already read and compares later, so one cycle cannot emit events for content the build replaced after the comparison started.

Toolingbrb and brbc call build_runner:build and build_runner:clean again. The custom_lint_analyze command is removed: its --depends-on=mix_lint filter selected zero packages, and no package depends on mix_lint. The custom_lint analyzer plugin in shared_analysis_options.yaml is untouched.

Command clarity — the melos test script descriptions and the AGENTS.md testing section now state which command covers the package, desktop, browser, and live generation layers, and that no melos command runs the live generation tests. The live example selects the intended 10-slide fixture explicitly and explains the define-file requirement. Package responsibilities and internal-import guidance now match the workspace. All 16 documented Melos script names were checked against pubspec.yaml.

Remaining review work — the maintainer review plan now records the completed cleanup and keeps only the Markdown behavior contract, renderer comparison, and shared parser assembly review. Those changes remain a separate effort.

Plugin ordering, build serialization, watcher fallback behaviour, and CLI output formats are unchanged.

Impacted packages

  • packages/builder
  • packages/cli
  • packages/superdeck
  • workspace pubspec.yaml, AGENTS.md, and the remaining Markdown review plan

Tests

  • deck_builder_test.dart — failure status for a direct build, a later successful build replacing the failure status, and the build error surviving a failed status write.
  • deck_builder_watch_test.dart — failure status for a watch build.
  • file_deck_loader_snapshot_test.dart — the cycle emits the snapshot it read. It uses IOOverrides to script the status reads and fails on the pre-change double read.

Commands run

fvm dart run melos run analyze --no-select         # Dart/DCM clean
fvm dart run melos run contracts:check --no-select # SUCCESS
fvm dart run melos run test --no-select            # 2,148 package tests passed on the combined stack

Earlier platform validation reported both build aliases passing with no generated diff, 39/39 macOS integration tests, and 10/10 Chromium/WebKit tests. Those checks were not rerun locally for the documentation follow-up; the updated stack now gets fresh CI at every level.

Not covered

  • The manual Computer Use pass over Playground generation, editing, deck switching, navigation, and thumbnails did not run.

The live 10-slide smoke test has also passed for this stack: 18.778 seconds, three artworks, and 10/10 captures. The focused macOS notice layout/dismissal check passed with attached logs; the broader authoring walkthrough above is still outstanding.

The follow-up also passed code generation, melos run fix, contract schema checks, and workflow lint, with no generated-file changes.

@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown

Visit the preview URL for this PR (updated for commit c2eb121):

https://superdeck-dev--pr110-refactor-build-lifec-sp7omb78.web.app

(expires Thu, 08 Oct 2026 19:27:08 GMT)

🔥 via Firebase Hosting GitHub Action 🌎

Sign: bd68fc230762285849207e7e120aaf87cd4ca2f9

@leoafarias
leoafarias force-pushed the refactor/build-lifecycle branch 2 times, most recently from ff15282 to 4ccab97 Compare September 8, 2026 19:00
DeckBuilder now publishes the failure status for a direct build and for a
watch build, so the CLI and the watch stream no longer write it themselves.
The CLI keeps reporting failures raised before a builder starts. A failed
status write no longer replaces the original build error.

FileDeckLoader processes the status snapshot it already read, so one cycle
cannot emit events for content that arrived after the comparison started.

The `brb` and `brbc` aliases call the existing build-runner scripts again,
and the unused `mix_lint` command is gone. The test scripts and AGENTS.md now
state which command covers the package, desktop, browser, and live generation
layers.
@leoafarias
leoafarias force-pushed the refactor/build-lifecycle branch from 4ccab97 to cc55ed3 Compare September 8, 2026 19:19
@leoafarias
leoafarias merged commit 06064ec into main Sep 8, 2026
6 checks passed
@leoafarias
leoafarias deleted the refactor/build-lifecycle branch September 8, 2026 19:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant