Skip to content

chore(deps): upgrade Melos to 8, remove lock files, rewrite CI from scratch - #37

Merged
Dimoshka merged 13 commits into
mainfrom
chore/dependency-upgrade
Oct 20, 2026
Merged

Dimoshka merged 13 commits into
mainfrom
chore/dependency-upgrade

Conversation

@Dimoshka

Copy link
Copy Markdown
Contributor

Summary

  • Upgrade Melos to 8 and remove committed lock files.
  • Rewrite CI workflow from scratch.
  • Update docs, AGENTS, README, CONTRIBUTING for the new tooling line.

Verification

  • melos run ci (analyze/format/gen/arch/test) green on the upgraded toolchain.
  • Branch is single-branch (main); base set to main.

Refs #34

Melos 8 changes how scripts are declared: a plain string is handed to
/bin/sh verbatim, so a nested `melos exec` call only resolves when a
global melos binary happens to be on PATH. Declaring `exec` with a
`command` lets Melos 8 rewrite the nested call to `dart run melos:melos`,
and `packageFilters` replaces the `--dir-exists`/`--depends-on` CLI
flags with their camel-cased config keys.

The `ci` script becomes a `steps` list, so the same rewrite applies to
each step that is a bare script name.

The workspace now resolves Melos 8.9.0 from the lock file, which also
drops the platform/cli_util/pub_updater/coverage constraints that Melos
7.8.2 required.

Signed-off-by: Dimoshka <dmytro.prylutskyi@outlook.com>
The global install pinned Melos 7 while the workspace lock now resolves
Melos 8, so the runner and the workspace disagreed about the script
schema. Running `dart run melos:melos` uses the version from
pubspec.lock, which keeps CI and local runs on the same tool.

`flutter pub get` stays ahead of every `dart run` step because `dart
run` resolves the package through the workspace
`.dart_tool/package_config.json`. `flutter pub get` is required rather
than `dart pub get` because the workspace contains Flutter packages.

Signed-off-by: Dimoshka <dmytro.prylutskyi@outlook.com>
The pin comment only said that build 4 was needed, which left the
reasoning implicit. Name the two packages that actually hold build at
^4.0.4 - injectable_generator 3.1.3 and schemantic_builder 1.0.0 - so
the ceiling can be revisited when either of them moves to build 5.

The constraint itself is unchanged, so the resolution is unchanged.

Signed-off-by: Dimoshka <dmytro.prylutskyi@outlook.com>
The spec pinned Melos 7 while 8.9.0 was the current pub.dev release, and the
question of the line was open as Q2 with the technical check T12 on the
script syntax. The owner approved the Melos 8 line on 2026-10-20.

The record is needed because two constraints are not visible from the
pubspecs alone: Melos 8 rewrites a nested melos call to 'dart run
melos:melos' only in the exec: and steps: forms, and two dependencies
cannot move because the generators pin build ^4.0.4 and genkit_openai
pins openai_dart ^8.1.0.

Signed-off-by: Dimoshka <dmytro.prylutskyi@outlook.com>
The spec pinned Melos 7 in six places and repeated the number in files
that only need to point at it. Architecture section 4 now carries the
version and the new build_runner ceiling; product.md and the glossary
keep a pointer instead of a copy; roadmap.md names the new invocation
and the M0 line; open-questions.md closes Q2 and T12 and names
ADR-0011.

Section 5.2 is rewritten around the Melos 8 exec:/steps: forms and
drops the [VERIFY] line, because the result of that check now lives in
ADR-0011 and in open-questions.md instead of in a third place.

Signed-off-by: Dimoshka <dmytro.prylutskyi@outlook.com>
T12 checked the melos.scripts syntax and the melos exec flags. It is
verified on Melos 8.9.0 with the exec: and steps: forms, and Melos now
runs from the workspace lock, so the check is closed and the milestone
names the ADR that records the line.

The umbrella spike list stays unchecked: seven of those spikes are
still open, so the closure is recorded under Open checks, the same
pattern M1 uses for T2 and T14.

Signed-off-by: Dimoshka <dmytro.prylutskyi@outlook.com>
The workspace moved to Melos 8 and the scripts now run from the workspace
lock file as 'dart run melos:melos run <script>'. The global 'melos run'
form needs 'dart pub global activate melos', which the Dart SDK shipped
with Flutter stable no longer provides, so the old invocations in
AGENTS.md, CONTRIBUTING.md, README.md, and the pull request template
would fail on a clean machine.

The canonical invocation is stated once, in docs/spec/architecture.md,
section 5.2. The contributor documents now point at it instead of
repeating a second form of it, and the requirements lines no longer
pin Melos 7 as a prerequisite.

Signed-off-by: Dimoshka <dmytro.prylutskyi@outlook.com>
The workstation guide asks for a TODO.md in the project root: one item per
line, newest first, with a link to where each item is described. The
repository had none, so the open work was only visible in the milestone
plans and the open-questions table.

Every line was checked against the repository before it was written: the
four tools are still entry-point stubs, the listed spikes are still open
in docs/spec/open-questions.md, and the build_runner ceiling comes from
the generators pinning build 4.

Signed-off-by: Dimoshka <dmytro.prylutskyi@outlook.com>
schemantic_builder 1.0.0 is a dev-dependency of schemantic, and the
dev-dependencies of a dependency are not resolved. The only package in
this workspace's resolution that pins build: ^4.0.4 is
injectable_generator 3.1.3, so the previous wording named a package
that does not hold the pin. Name injectable_generator 3.1.3 in the five
member pubspecs, in the build_runner row of docs/spec/architecture.md,
and in ADR-0011, and state in ADR-0011 that schemantic_builder is not a
dependency of this workspace yet.

The same commit corrects three statements of ADR-0011 that the Melos 8
move left inaccurate: the Dart SDK only lost the `dart global activate`
shortcut (`dart pub global activate` still works), the lock file also
moved cli_util, pub_updater, and coverage, and docs/plan/M0.md still
listed the closed spike T12 among the open ones. TODO.md loses two
wordings that no longer match the recorded state.

Signed-off-by: Dimoshka <dmytro.prylutskyi@outlook.com>
`melos version` and `melos run` are melos CLI commands, not workspace
scripts. With no global melos installation they fail with
`melos: command not found`, so the reference has to be the workspace
invocation `dart run melos:melos`. State it in CONTRIBUTING.md, in the
versions and publishing paragraph of docs/spec/architecture.md, and in
the M0 acceptance criterion, which is a live criterion in a file this
branch edits.

docs/spec/governance.md keeps its bare `melos version`: there the
subcommand is named as part of a process description, not as a command
to type.

Signed-off-by: Dimoshka <dmytro.prylutskyi@outlook.com>
Signed-off-by: Dimoshka <dmytro.prylutskyi@outlook.com>
Reverts all 11 commits of PR #36 on the owner's request. The Melos 8 upgrade, the migration of the melos: scripts block to the Melos 8 forms, the removal of the global Melos install from CI, the ADR, the spec and contributor-doc updates, and the TODO.md are all undone.

This restores the pre-existing state of main, including the red CI caused by the removal of the dart global command. That problem is not addressed by this revert and needs a separate decision.

Refs #33

Signed-off-by: Dimoshka <dmytro.prylutskyi@outlook.com>
@Dimoshka
Dimoshka merged commit 25bcbbf into main Oct 20, 2026
1 check passed
@Dimoshka
Dimoshka deleted the chore/dependency-upgrade branch October 20, 2026 16:34
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