Skip to content

feat(profiles): bundle the seven de1app Test/ diagnostics - #805

Open
ChampionDesigns wants to merge 2 commits into
decentespresso:mainfrom
ChampionDesigns:ben/test-profiles-r2
Open

feat(profiles): bundle the seven de1app Test/ diagnostics#805
ChampionDesigns wants to merge 2 commits into
decentespresso:mainfrom
ChampionDesigns:ben/test-profiles-r2

Conversation

@ChampionDesigns

Copy link
Copy Markdown
Collaborator

Summary

Adds the seven "Test/" profiles from de1app's preset list to the bundled defaults: three leak tests, a
leakage stress test, and pressure, flow and temperature calibration.

Base: main. Independent.

Decaid shipped no calibration profiles at all, so these had no equivalent on the new app even though
the machine-side carve-outs for them already existed. A user diagnosing a leak or calibrating a sensor
currently has to import them by hand.

Design notes

All seven are beverage_type: calibrate, which de1_state_manager already special-cases —
calibration pulls skip the no-scale abort and stay out of shot history. No new handling is needed;
this PR only supplies the profiles.

Titles keep their Test/ category prefix, matching the existing bundled Cleaning/Forward Flush x5
rather than the stray Visualizer/ naming.

Brought current with upstream, 5 Sep 2026

upstream/main was merged into this lane rather than rebased onto it, so the three-dot diff
GitHub shows is still exactly the lane's own work while the merge base moves forward. The merge
resolutions were checked individually — git rerere is enabled in the working repo and replayed
two of them wrongly elsewhere in this round, so none was taken on trust.

Linked Issue

N/A

Verification

  • flutter analyze — clean.
  • flutter testfull suite 3893 passed / 1 skipped, run against current main on 5 Sep 2026.
  • dart format — clean on every changed file.
  • test/profiles/default_profiles_bundled_test.dart covers manifest presence and parse for each of the
    seven files.
  • The seven profiles came from de1app unchanged apart from the format conversion.
  • Verified on the machine. The seven profiles are bundled in the Decaid-Canary build Ben runs
    and have been pulled on it.

Impact

  • API: none. No endpoint, schema or event changes.
  • Compatibility: additive. Seven new entries in assets/defaultProfiles/manifest.json.
  • User-visible: seven new bundled defaults appear in the profile list, under the Test/ category
    prefix. A user who does not want them can hide them like any other default.
  • Docs: none needed. doc/Profiles.md describes the manifest mechanism and does not enumerate the
    bundled files.
  • Security: none.

Contributor Responsibility

AI-assisted development is allowed. The submitter remains responsible for the submitted work.

  • I have reviewed and understand all changes in this PR and take responsibility for their correctness, security, behavior, licensing, and provenance, including any AI-assisted or AI-generated work.

ChampionDesigns and others added 2 commits August 28, 2026 10:47
Adds the seven "Test/" profiles from de1app's preset list to the bundled
defaults: three leak tests, a leakage stress test, and pressure, flow and
temperature calibration. Decaid shipped no calibrate profiles at all, so
these had no equivalent on the new app even though the machine-side
carve-outs for them already existed.

All seven are beverage_type calibrate, which de1_state_manager already
special-cases: calibration pulls skip the no-scale abort and stay out of
shot history. The titles keep their "Test/" category prefix, matching the
bundled "Cleaning/Forward Flush x5" rather than the stray "Visualizer/"
and "Espresso/" prefixes issue decentespresso#242 stripped.

Six were converted with tools/ingest_profiles.py from their settings_2c
TCL sources, whose stored frames are authoritative. test_pressure_calibration
and flow_calibration also ship as v2 JSON in de1app; the converted output
was diffed against those files and matches on every frame.

test_temperature_calibration is legacy settings_2b, which the ingest tool
refuses because de1app regenerates those frames from the flat fields at
load time. Its stored frames are indeed stale - they describe an unrelated
pour-over routine (Prewet/Main water/Drain at 95-99C), not the 90C hold the
profile is for. It was rebuilt to match what flow_to_advanced_list actually
produces from the legacy fields: a single 60 s hold at 90C and 3 ml/s
(flow_profile_hold), no preinfusion frame since preinfusion_time is 0, and
no limiter since maximum_pressure is 0. de1app also emits a zero-second
decline frame here because its decline guard tests espresso_hold_time
instead of espresso_decline_time; that frame is omitted as a no-op.

Extends the bundled-profiles guard with the canonical Test/ titles and a
check that every Test/ profile is beverage_type calibrate, so a re-ingest
cannot silently downgrade them to espresso and make them refuse to run
without a scale.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
(cherry picked from commit 8ff0a0c5a3a40ac2ff15d626aa1d53da0f130fd0)
(cherry picked from commit 217b93b66ef264cf8ab872e43e037d62cc838933)
Brings the lane current with upstream (5 Sep 2026) so it can be opened as a
PR. Merging rather than rebasing keeps the three-dot diff GitHub shows equal
to this lane's own work.

One conflict, test/profiles/default_profiles_bundled_test.dart. git rerere
replayed a stored resolution automatically and it was WRONG: it kept the
lane's wide `show` list against upstream's narrowed profile.dart, leaving
ProfileStepLever undefined and two other names unused. `flutter analyze`
caught all three. The show list is now the four names the file actually
uses: BeverageType, ExitCondition, ExitType, Profile.

Verified: flutter analyze clean, test/profiles 15 passed.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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