unified Process source of truth and better screenshot tests

This commit is contained in:
Nick Sweeting
2026-01-02 04:20:34 -08:00
parent 3672174dad
commit dd77511026
44 changed files with 3369 additions and 1919 deletions

View File

@@ -96,33 +96,45 @@ ARCHIVERESULT_MACHINE_DIAGRAM = """
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ │
│ │ QUEUED │◄────────────────┐
│ │ (initial) │ │
│ └──────┬──────┘ │
│ │ │ tick() unless can_start()
│ tick() when
│ │ can_start()
│ ▼
│ ┌─────────────┐
│ │ STARTED │─────────────────┘
│◄────────────────┐
│ enter: │ │ tick() unless is_finished()
│ result.run()│─────────────────┘
│ (execute │
│ hook via
│ run_hook())│
────────────┘
│ tick() checks status set by hook output
├────────────────┬────────────────┬────────────────┐
▼ ▼
┌───────────┐ ┌───────────┐ ┌─────────── ┌───────────┐
│ │ SUCCEEDED FAILED SKIPPED BACKOFF
│ (final) (final) (final)
└───────────┘ └───────────┘ └───────────┘ └─────┬─────┘
can_start()───┘
loops back to STARTED
│ │ QUEUED │◄────────────────┐ │
│ │ (initial) │ │ │
│ └──┬───────┬──┘ │ │
│ │ tick() unless can_start() │
│ │ exceeded_max_ │ │
attempts │ │
┌──────────┐
SKIPPED │ │
│ │ (final)
│ └──────────┘ │
│ tick() when │
│ can_start()
┌─────────────┐
│ STARTED │──────────────────┘ │
│ │ │◄─────────────────────────────────────────────────┐
│ enter: │ │
│ result.run()│ tick() unless
│ (execute │ is_finished()
│ hook via │──────────────────────
│ │ run_hook())
└──────┬──────┘ │ │
│ │
│ tick() checks status set by hook output │ │
├─────────────┬─────────────┬─────────────┐
▼ │
│ ┌───────────┐ ┌───────────┐ ┌───────────┐ ┌───────────┐ │ │
│ │ SUCCEEDED │ │ FAILED │ │ SKIPPED │ │ BACKOFF │ │ │
│ │ (final) │ │ (final) │ │ (final) │ │ │ │ │
│ └───────────┘ └───────────┘ └───────────┘ └──┬──────┬─┘ │ │
│ │ │ │ │
│ exceeded_max_ │ │ can_start()│ │
│ attempts │ │ loops back │ │
│ ▼ │ └────────────┘ │
│ ┌──────────┐ │ │
│ │ SKIPPED │◄─┘ │
│ │ (final) │ │
│ └──────────┘ │
│ │
│ Each ArchiveResult runs ONE specific hook (stored in .hook_name field) │
└─────────────────────────────────────────────────────────────────────────────┘
@@ -137,35 +149,38 @@ BINARY_MACHINE_DIAGRAM = """
│ │ QUEUED │◄────────────────┐ │
│ │ (initial) │ │ │
│ └──────┬──────┘ │ │
│ │ │ tick() unless can_start()
│ │ │ tick() unless can_install()
│ │ │ (stays queued if failed) │
│ │ tick() when │ │
│ │ can_start() │ │
│ │
┌─────────────┐ │ │
│ STARTED │─────────────────┘
│◄────────────────┐
│ enter: │ │
│ binary.run()│ │ tick() unless is_finished()
│ (discover │─────────────────┘
Binary
hooks,
│ try each │
│ provider) │ │
└──────┬──────┘
│ │ can_install() │ │
│ │
│ on_install() runs │ │
│ during transition: │
• binary.run() │
(discover Binary │ │
│ hooks, try each │
│ provider until │
│ │ one succeeds)
│ │ • Sets abspath,
version, sha256
│ If install fails:
│ │ raises exception──────┘ │
│ │ (retry_at bumped) │
│ │ │
│ tick() checks status set by hook output
├────────────────────────────────┐
┌─────────────┐ ┌─────────────┐
│ │ SUCCEEDED FAILED │
│ │ (final) (final)
│ │
│ │ abspath,│ no provider │
│ version set │ │ succeeded
│ └─────────────┘ └─────────────┘ │
┌─────────────┐
INSTALLED │
│ (final)
│ │
│ │ Binary is
│ │ ready to
│ │ use
└─────────────┘
│ │
│ Hooks triggered: on_Binary__* (provider hooks during STARTED.enter)
│ Hooks triggered: on_Binary__* (provider hooks during transition)
│ Providers tried in sequence until one succeeds: apt, brew, pip, npm, etc. │
│ Installation is synchronous - no intermediate STARTED state │
└─────────────────────────────────────────────────────────────────────────────┘
"""