The SwiftPM and 16 KB alignment grade for a plugin the Flutter Ready
data doesn't cover (CLI live-check task, 2026-09-27), computed on the
spot from its already-downloaded archive alone. Pub.dev's score tags
can't be fetched for a historical version, so — unlike swiftPmStatus —
this never returns Status.amber.
A pub.dev package kept after discovery (SPEC §3.1.1), carrying the score
tags already fetched so downstream checks (SwiftPM, alignment, Gradle
facts) don't need to re-fetch them.
Data model for the readiness snapshot contract (schemaVersion 1), shared
between the board (site) and the CLI (flutter_ready), so the two
can't disagree (SPEC §2). Kept as a plain, dependency-free parser of the
JSON shape documented in
10xs/workflow/instructions/20260927_05_architect-notes-e2-e6.md.
Whether a plugin is ready for Swift Package Manager, per two independent
signals (SPEC §3.1.2): pub.dev's own score tag, and the package's own
archive.
Colour rules are an architect decision, recorded in
10xs/workflow/instructions/20260927_05_architect-notes-e2-e6.md
(section "e3-s1: Board rendering"). Android has no colour rule
(SPEC open decision 3): it is shown as facts only.
The two searches discovery merges (SPEC §3.1.1, 2026-09-27 owner-approved
rework): the likely reds first — plugins with no is:swiftpm-plugin tag —
then the most-downloaded plugins overall for context.
Reads path's ELF program headers (32-bit or 64-bit, either endianness)
and checks every PT_LOAD segment's alignment against
requiredLoadSegmentAlignment (SPEC §3.1.2).
Whether the resolved package (resolution) ships native iOS code at all
(SPEC e2-s1 rework): true when it declares pluginClass or
ffiPlugin: true for IosResolution.platform itself, or its archive has
a .podspec under ios/, macos/ or darwin/. False when it's
Dart-only (dartPluginClass) with no podspec — nothing to migrate off
CocoaPods, so the CocoaPods deadline can't block it.
Discovers Flutter plugin candidates from pub.dev search, reds first (SPEC
§3.1.1, 2026-09-27): discoveryQueries, sorted by downloads,
resultsPerQuery results each (rounded up to pages of 10 — pub.dev caps
a single query at 100 results). Merges and dedupes both queries, then
folds federated platform packages into their app-facing plugin so a
plugin's downloads/status aren't split across rows.
Reads the Android build settings from whichever of android/build.gradle
/ android/build.gradle.kts is present in androidGradleFileContents
(as produced by extractArchiveEntries(bytes, isAndroidGradleFilePath)).
Grades archiveBytes — the resolved iOS package's archive, at its exact
locked (or, failing that, latest) version — for both checks the nightly
snapshot runs: SwiftPM readiness (resolveNativeIos plus
checkSwiftPmReadiness's archive signal) and .so alignment
(checkSoAlignment).
Resolves which package's archive should be checked for a plugin's iOS
readiness (SPEC e2-s1 rework). Federated plugins declare their real
per-platform implementation via default_package; some declare it
inline via pluginClass/ffiPlugin. iOS is preferred over macOS/darwin,
and falling back to macOS only happens when the app-facing pubspec has
no ios entry at all.
Combines the "not an iOS plugin at all" and "declares iOS but it's
Dart-only" cases (SPEC e2-s1 rework 2). When the app-facing pubspec
(appInfo) declares neither an ios nor a macos platform, Flutter
never registers pods for this plugin on an iOS app, so a leftover
ios/<name>.podspec in its own archive (a flutter create --template=plugin artifact) doesn't apply — declaresNativeIos isn't
even consulted in that case.
Share of plugins with a known SwiftPM status (green/amber/red — excludes
"not checked") that are fully SwiftPM-ready, as a whole percent. Used for
the trend view (SPEC §3.2: "trend over time ... share of top plugins that
ship SwiftPM"). Returns null when no plugin in plugins has a known status.