From 1eb60f96fc316e94831997ff477727d4fbefde05 Mon Sep 17 00:00:00 2001 From: Bernd Helm Date: Tue, 18 Aug 2026 04:42:12 +0200 Subject: [PATCH 1/2] Parity runners: bare case exercises the language defaults (#17) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The coverage proof exposed a real blind spot: both runners always passed stepSec/minBeatsPerWindow explicitly, so the languages' own default expressions never executed — a drifted Kotlin default would have been invisible to the differential. Cases whose args carry only rr now call the production function bare on both sides; the cross-comparison itself checks default parity. windowSec stays explicit on the Swift side, which deliberately has no default for it (the documented one-sided default; Kotlin's is cross-checked by its runner's existing constant assertion). Co-Authored-By: Claude Fable 5 --- .../StrandAnalyticsTests/ParityRunner.swift | 22 ++++++++++++++----- .../java/com/noop/analytics/ParityRunner.kt | 8 ++++++- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/Packages/StrandAnalytics/Tests/StrandAnalyticsTests/ParityRunner.swift b/Packages/StrandAnalytics/Tests/StrandAnalyticsTests/ParityRunner.swift index b2379b449e..b378e8839f 100644 --- a/Packages/StrandAnalytics/Tests/StrandAnalyticsTests/ParityRunner.swift +++ b/Packages/StrandAnalytics/Tests/StrandAnalyticsTests/ParityRunner.swift @@ -110,12 +110,22 @@ final class ParityRunner: XCTestCase { throw RunnerError.invalidInput("invalid rollingRmssd case \(record.id)") } let rr = inputRR.map { RRInterval(ts: $0.ts, rrMs: $0.rrMs) } - let points = HRVAnalyzer.rollingRmssd( - rr: rr, - windowSec: windowSec, - stepSec: stepSec, - minBeatsPerWindow: minBeats - ) + let points: [HRVAnalyzer.RollingRmssdPoint] + if record.args.windowSec == nil, record.args.stepSec == nil, + record.args.minBeatsPerWindow == nil { + // Bare case: every omittable argument omitted, so the language's own default + // expressions execute and the cross-comparison itself checks default parity. + // windowSec stays explicit — Swift deliberately has no default for it (the + // documented one-sided default; Kotlin's default is cross-checked by its runner). + points = HRVAnalyzer.rollingRmssd(rr: rr, windowSec: windowSec) + } else { + points = HRVAnalyzer.rollingRmssd( + rr: rr, + windowSec: windowSec, + stepSec: stepSec, + minBeatsPerWindow: minBeats + ) + } var values: [[String: Any]] = [] for point in points { guard point.rmssd.isFinite else { diff --git a/android/app/src/test/java/com/noop/analytics/ParityRunner.kt b/android/app/src/test/java/com/noop/analytics/ParityRunner.kt index 8f2bde3c6b..2b3f37665e 100644 --- a/android/app/src/test/java/com/noop/analytics/ParityRunner.kt +++ b/android/app/src/test/java/com/noop/analytics/ParityRunner.kt @@ -80,7 +80,13 @@ class ParityRunner { val stepSec = effective.getInt("stepSec") val minBeats = effective.getInt("minBeatsPerWindow") val windowSec = effective.getInt("windowSec") - val points = if (args.has("windowSec")) { + val points = if (!args.has("windowSec") && !args.has("stepSec") && + !args.has("minBeatsPerWindow") + ) { + // Bare case: every optional argument omitted, so the language's own default + // expressions execute and the cross-comparison itself checks default parity. + HrvAnalyzer.rollingRmssd(rr = rr) + } else if (args.has("windowSec")) { HrvAnalyzer.rollingRmssd( rr = rr, windowSec = windowSec, From ae0535c133ef0b3e6312a51569d448d121d70725 Mon Sep 17 00:00:00 2001 From: Bernd Helm Date: Tue, 18 Aug 2026 04:42:12 +0200 Subject: [PATCH 2/2] Completeness ratchet with executed-lines coverage proof (#17) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Tools/parity_ratchet.py (stdlib, reusing the ledger's parser primitives): a declaration-level lexer that fails closed on unknown syntax — including Kotlin init blocks, secondary constructors, operator functions and getter forms; inverted, sharded exemption files (only exceptions are checked in, per module directory, every entry carrying a reason and an issue reference); differential membership derived from the runner dispatchers at runtime. A module pair without shards at the merge base is "not yet covered" (notice); a pair whose merge-base shards disappear is disarmed and red. Armed module by module, starting with StrandAnalytics <-> com.noop.analytics (differential=2, platform-test=0, exempt=2719). Coverage is proof, not a label: parity_ratchet verify reads llvm-cov lcov (FN/FNDA function records) and JaCoCo XML (method counters with descriptor-arity disambiguation, so an executed overload can never vouch for an unexecuted same-name sibling); line coverage is only a fallback for method-less reports and says so. The proof caught a real gap before landing: the runners never executed the Kotlin default-parameter lines (fixed in the previous commit). The merge-base ratchet compares shards and entries against the actual git merge-base; counters may only fall, every entry needs an issue (checked in CI via gh api; --offline in CI is a hard error). CI runs on every pull request and push to main with the path decision inside the job — "no-op" instead of "skipped" — and the touched-set includes the harness, tools, shards and the workflow itself, not only the production twin trees. Two independent review rounds hardened all of the above (round 1: lexer fail-closed holes incl. 297 phantom inventory entries from bodyless Kotlin type spans, CI filter blind to its own tooling, shard deletion as silent disarm, issue-field removal, same-line coverage greenwashing, offline-in-CI; round 2: JaCoCo descriptor matching). Verified on this machine: 51 unittest probes green; ratchet clean against drift/meta; verify green with fresh real coverage from both runners (errors=0). Part of the drift-control plan in #17 (step 6). Co-Authored-By: Codex Co-Authored-By: Claude Fable 5 --- .github/workflows/parity-ratchet.yml | 174 + .../StrandAnalytics/parity-exempt.json | 6542 +++++++++++++++ Tools/parity_ratchet.py | 1277 +++ Tools/tests/test_parity_ratchet.py | 547 ++ android/app/build.gradle.kts | 35 + .../com/noop/analytics/parity-exempt.json | 7067 +++++++++++++++++ android/gradle/verification-metadata.xml | 66 + 7 files changed, 15708 insertions(+) create mode 100644 .github/workflows/parity-ratchet.yml create mode 100644 Packages/StrandAnalytics/Sources/StrandAnalytics/parity-exempt.json create mode 100644 Tools/parity_ratchet.py create mode 100644 Tools/tests/test_parity_ratchet.py create mode 100644 android/app/src/main/java/com/noop/analytics/parity-exempt.json diff --git a/.github/workflows/parity-ratchet.yml b/.github/workflows/parity-ratchet.yml new file mode 100644 index 0000000000..4939c411e5 --- /dev/null +++ b/.github/workflows/parity-ratchet.yml @@ -0,0 +1,174 @@ +name: Parity Coverage Ratchet + +on: + pull_request: + push: + branches: [main] + workflow_dispatch: + +permissions: + contents: read + issues: read + +concurrency: + group: parity-ratchet-${{ github.ref }} + cancel-in-progress: true + +jobs: + fast: + runs-on: ubuntu-24.04 + env: + GH_TOKEN: ${{ github.token }} + steps: + - name: Checkout full history + uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 # v5.1.0 + with: + fetch-depth: 0 + + - name: Resolve merge base in the job + id: changes + env: + EVENT_NAME: ${{ github.event_name }} + EVENT_BEFORE: ${{ github.event.before }} + BASE_REF: ${{ github.base_ref }} + run: | + if [ "$EVENT_NAME" = "pull_request" ]; then + MERGE_BASE=$(git merge-base HEAD "origin/${BASE_REF:-main}") + elif [ -n "$EVENT_BEFORE" ] && [ "$EVENT_BEFORE" != "0000000000000000000000000000000000000000" ]; then + MERGE_BASE="$EVENT_BEFORE" + else + MERGE_BASE=$(git rev-parse HEAD^) + fi + echo "MERGE_BASE=$MERGE_BASE" >> "$GITHUB_ENV" + echo "Changed paths since $MERGE_BASE:" + git diff --name-only "$MERGE_BASE" + + - name: Always-on lexer, ratchet, ledger, and Python tests + run: | + python3 Tools/parity_ratchet.py ratchet --base "$MERGE_BASE" + python3 Tools/parity_ledger.py + python3 -m unittest discover -s Tools/tests -v + + coverage: + runs-on: ubuntu-24.04 + env: + SQLITE_SNAPSHOT_DIR: ${{ github.workspace }}/.ci/sqlite-snapshot + steps: + - name: Checkout full history + uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 # v5.1.0 + with: + fetch-depth: 0 + + - name: Decide from changed paths inside the job + id: changes + env: + EVENT_NAME: ${{ github.event_name }} + EVENT_BEFORE: ${{ github.event.before }} + BASE_REF: ${{ github.base_ref }} + run: | + if [ "$EVENT_NAME" = "pull_request" ]; then + MERGE_BASE=$(git merge-base HEAD "origin/${BASE_REF:-main}") + elif [ -n "$EVENT_BEFORE" ] && [ "$EVENT_BEFORE" != "0000000000000000000000000000000000000000" ]; then + MERGE_BASE="$EVENT_BEFORE" + else + MERGE_BASE=$(git rev-parse HEAD^) + fi + touched=false + while IFS= read -r path; do + case "$path" in + Packages/*/Sources/*.swift|Packages/*/Sources/**/*.swift|\ + Packages/*/Tests/**/*ParityRunner*|\ + android/app/src/main/java/com/noop/*.kt|android/app/src/main/java/com/noop/**/*.kt|\ + android/app/src/test/**|\ + Tools/parity_*.py|Tools/parity_cases/**|Tools/tests/**|\ + **/parity-exempt.json|\ + android/app/build.gradle.kts|android/gradle/verification-metadata.xml|\ + .github/workflows/parity-ratchet.yml) + touched=true + ;; + esac + done < <(git diff --name-only "$MERGE_BASE") + echo "twins=$touched" >> "$GITHUB_OUTPUT" + if [ "$touched" = true ]; then + echo "Twin trees changed; running the coverage proof." + else + echo "no-op: no Swift/Kotlin twin tree changed since $MERGE_BASE" + fi + + - name: Set up Java + if: steps.changes.outputs.twins == 'true' + uses: actions/setup-java@03ad4de0992f5dab5e18fcb136590ce7c4a0ac95 # v5.6.0 + with: + distribution: temurin + java-version: '17' + + - name: Set up Gradle + if: steps.changes.outputs.twins == 'true' + uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5.0.2 + + - name: Restore snapshot SQLite + if: steps.changes.outputs.twins == 'true' + id: sqlite-cache + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 + with: + path: ${{ env.SQLITE_SNAPSHOT_DIR }} + key: sqlite-snapshot-3.53.4-r1-${{ runner.os }}-${{ runner.arch }}-b1dd5d74 + + - name: Build snapshot SQLite + if: steps.changes.outputs.twins == 'true' && steps.sqlite-cache.outputs.cache-hit != 'true' + env: + SQLITE_AMALGAMATION_SHA256: b1dd5d74ec7f29055a6684fa06fb3c2f6821c87dd38f9a458dfd2e8a1db28189 + run: | + archive="$RUNNER_TEMP/sqlite-amalgamation-3530400.zip" + source="$RUNNER_TEMP/sqlite3.c" + curl --fail --location --proto '=https' --tlsv1.2 \ + https://sqlite.org/2026/sqlite-amalgamation-3530400.zip \ + --output "$archive" + unzip -p "$archive" sqlite-amalgamation-3530400/sqlite3.c > "$source" + echo "$SQLITE_AMALGAMATION_SHA256 $source" | sha256sum --check --strict + mkdir -p "$SQLITE_SNAPSHOT_DIR" + gcc -shared -fPIC -DSQLITE_ENABLE_SNAPSHOT=1 "$source" \ + -o "$SQLITE_SNAPSHOT_DIR/libsqlite3.so.0" + ln -s libsqlite3.so.0 "$SQLITE_SNAPSHOT_DIR/libsqlite3.so" + + - name: Generate differential input + if: steps.changes.outputs.twins == 'true' + run: python3 Tools/parity_diff.py generate --output "$RUNNER_TEMP/parity-input.jsonl" + + - name: Run Swift differential coverage + if: steps.changes.outputs.twins == 'true' + env: + LD_LIBRARY_PATH: ${{ env.SQLITE_SNAPSHOT_DIR }} + PARITY_INPUT: ${{ runner.temp }}/parity-input.jsonl + PARITY_OUTPUT: ${{ runner.temp }}/parity-swift.jsonl + run: | + swift test --package-path Packages/StrandAnalytics --enable-code-coverage \ + --filter ParityRunner -Xlinker "-L${SQLITE_SNAPSHOT_DIR}" + /opt/swift/usr/bin/llvm-cov export -format=lcov \ + -instr-profile=Packages/StrandAnalytics/.build/debug/codecov/default.profdata \ + Packages/StrandAnalytics/.build/debug/StrandAnalyticsPackageTests.xctest \ + > "$RUNNER_TEMP/swift.lcov" + + - name: Run Kotlin differential coverage + if: steps.changes.outputs.twins == 'true' + env: + PARITY_INPUT: ${{ runner.temp }}/parity-input.jsonl + PARITY_OUTPUT: ${{ runner.temp }}/parity-kotlin.jsonl + run: ./android/gradlew -p android :app:testFullDebugUnitTest --tests com.noop.analytics.ParityRunner + + - name: Export Kotlin JaCoCo XML + if: steps.changes.outputs.twins == 'true' + run: | + ./android/gradlew -p android :app:jacocoFullDebugUnitTestReport \ + -x :app:testFullDebugUnitTest + + - name: Compare outputs and prove source coverage + if: steps.changes.outputs.twins == 'true' + run: | + python3 Tools/parity_diff.py compare \ + --input "$RUNNER_TEMP/parity-input.jsonl" \ + --swift "$RUNNER_TEMP/parity-swift.jsonl" \ + --kotlin "$RUNNER_TEMP/parity-kotlin.jsonl" + python3 Tools/parity_ratchet.py verify \ + --swift-lcov "$RUNNER_TEMP/swift.lcov" \ + --kotlin-jacoco android/app/build/reports/jacoco/jacocoFullDebugUnitTestReport/jacocoFullDebugUnitTestReport.xml diff --git a/Packages/StrandAnalytics/Sources/StrandAnalytics/parity-exempt.json b/Packages/StrandAnalytics/Sources/StrandAnalytics/parity-exempt.json new file mode 100644 index 0000000000..d55f351f4d --- /dev/null +++ b/Packages/StrandAnalytics/Sources/StrandAnalytics/parity-exempt.json @@ -0,0 +1,6542 @@ +{ + "schema_version": 1, + "module": "StrandAnalytics", + "exempt": [ + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ActivityCostEngine.swift::init/7[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ActivityCostEngine.swift::sentence/0[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ActivityCostEngine.swift::minSessions@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ActivityCostEngine.swift::solidSessions@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ActivityCostEngine.swift::maxLookahead@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ActivityCostEngine.swift::tolerance@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ActivityCostEngine.swift::barelyMovesPoints@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ActivityCostEngine.swift::evaluate/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ActivityCostEngine.swift::forwardDaysToBaseline/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ActivityCostEngine.swift::rank/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ActivityCostEngine.swift::confidenceRank/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ActivityCostEngine.swift::mean/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ActivityCostEngine.swift::roundToInt/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ActivityHeatmap.swift::defaultWeeks@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ActivityHeatmap.swift::init/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ActivityHeatmap.swift::init/5[defaults=4,5]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ActivityHeatmap.swift::isEmpty@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ActivityHeatmap.swift::rampFloorKcal@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ActivityHeatmap.swift::rampPercentile@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ActivityHeatmap.swift::build/3[defaults=3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ActivityHeatmap.swift::rampScale/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ActivityHeatmap.swift::levelFor/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ActivityHeatmap.swift::mondayFirstWeekday/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ActivityHeatmap.swift::epochDay/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ActivityHeatmap.swift::civilDay/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ActivityHeatmap.swift::daysFromCivil/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AnalyticsEngine.swift::offWristIntervals/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AnalyticsEngine.swift::init/4[defaults=1,2,3,4]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AnalyticsEngine.swift::init/15[defaults=7,8,9,10,11,12,13,14,15]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AnalyticsEngine.swift::isoDay@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AnalyticsEngine.swift::dayString/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AnalyticsEngine.swift::dayString/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AnalyticsEngine.swift::dayStartUtcSeconds/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AnalyticsEngine.swift::daySliceFromNight/7[defaults=6]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AnalyticsEngine.swift::encodeStages/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AnalyticsEngine.swift::decodeStages/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AnalyticsEngine.swift::sleepSession/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AnalyticsEngine.swift::analyzeDay/30[defaults=2,3,4,5,6,7,8,9,10,11,12,13,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AnalyticsEngine.swift::defaultNeedHours@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AnalyticsEngine.swift::restorativeTarget@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AnalyticsEngine.swift::deepShareTarget@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AnalyticsEngine.swift::deepFloorFactor@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AnalyticsEngine.swift::neutralConsistency@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AnalyticsEngine.swift::wDuration@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AnalyticsEngine.swift::wEfficiency@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AnalyticsEngine.swift::wRestorative@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AnalyticsEngine.swift::wConsistency@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AnalyticsEngine.swift::minNeedNights@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AnalyticsEngine.swift::maxNeedHours@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AnalyticsEngine.swift::populationNeedFloorHours/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AnalyticsEngine.swift::personalizedNeedHours/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AnalyticsEngine.swift::composite/7[defaults=7]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AnalyticsEngine.swift::composite/3[defaults=2,3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AnalyticsEngine.swift::round2/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AnalyticsEngine.swift::minSkinTempSamples@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AnalyticsEngine.swift::skinTempMinC@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AnalyticsEngine.swift::skinTempMaxC@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AnalyticsEngine.swift::wornNightlySkinTempC/6[defaults=4,5,6]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AnalyticsEngine.swift::nightlySpo2RawMeans/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AnalyticsEngine.swift::nightlySpo2CandidateMean/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AnalyticsEngine.swift::primarySessionRestingHR/4[defaults=3,4]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AnalyticsEngine.swift::primarySessionRestingHRCoverage/4[defaults=3,4]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AnalyticsEngine.swift::primarySessions/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AnalyticsEngine.swift::primarySessionRestingHRWithCoverage/4[defaults=3,4]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AnalyticsEngine.swift::init/13[defaults=8,9,10,11,12,13]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AnalyticsEngine.swift::isAbsent@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AnalyticsEngine.swift::summary@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AnalyticsEngine.swift::skinTempFunnel/6[defaults=4,5,6]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AnalyticsMemo.swift::lock@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AnalyticsMemo.swift::store@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AnalyticsMemo.swift::order@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AnalyticsMemo.swift::init/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AnalyticsMemo.swift::value/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AnalyticsMemo.swift::of/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AnalyzeRecentDayCache.swift::cacheKey/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AutoWorkoutDetector+Trace.swift::detectTrace/5[defaults=3,4,5]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AutoWorkoutDetector+Trace.swift::sessionLine/5[defaults=4,5]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AutoWorkoutDetector+Trace.swift::gpsLine/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AutoWorkoutDetector+Trace.swift::detectedBoutLine/4[defaults=4]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AutoWorkoutDetector+Trace.swift::dedupLine/5[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AutoWorkoutDetector+Trace.swift::lastSessionSummary/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AutoWorkoutDetector.swift::init/5[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AutoWorkoutDetector.swift::init/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AutoWorkoutDetector.swift::elevatedMarginBPM@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AutoWorkoutDetector.swift::minSustainedMin@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AutoWorkoutDetector.swift::maxDipS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AutoWorkoutDetector.swift::mergeGapS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AutoWorkoutDetector.swift::motionConfirmMean@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AutoWorkoutDetector.swift::defaultRestingHR@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AutoWorkoutDetector.swift::init/2[defaults=-]#2", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AutoWorkoutDetector.swift::motionPoints/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AutoWorkoutDetector.swift::detect/4[defaults=3,4]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/AutoWorkoutDetector.swift::overlaps/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/Baselines.swift::init/5[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/Baselines.swift::init/5[defaults=-]#2", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/Baselines.swift::trusted@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/Baselines.swift::usable@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/Baselines.swift::init/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/Baselines.swift::winsorK@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/Baselines.swift::hardOutlierK@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/Baselines.swift::minNightsSeed@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/Baselines.swift::minNightsTrust@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/Baselines.swift::staleDays@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/Baselines.swift::vitalCarryDays@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/Baselines.swift::freshestCarried/3[defaults=3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/Baselines.swift::cutoffKey/2[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/Baselines.swift::utcCalendar@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/Baselines.swift::dayKeyFormatter@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/Baselines.swift::earlyAdaptNights@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/Baselines.swift::earlyHalfLifeB@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/Baselines.swift::earlySpreadInflate@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/Baselines.swift::hrvBaselineEpochKey@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/Baselines.swift::recoveryBaselineEpochKey@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/Baselines.swift::metricCfg@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/Baselines.swift::hrvCfg@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/Baselines.swift::restingHRCfg@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/Baselines.swift::respCfg@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/Baselines.swift::readinessHRVLnCfg@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/Baselines.swift::strainCfg@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/Baselines.swift::daytimeHRCfg@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/Baselines.swift::daytimeRMSSDCfg@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/Baselines.swift::lambda/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/Baselines.swift::computeStatus/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/Baselines.swift::nightsSinceNewestValidNight/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/Baselines.swift::isoEpochDay/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/Baselines.swift::update/4[defaults=4]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/Baselines.swift::foldHistory/3[defaults=3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/Baselines.swift::hrvBaselineEpoch/1[defaults=1]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/Baselines.swift::recoveryBaselineEpoch/1[defaults=1]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/Baselines.swift::recalibrateRecoveryBaselines/2[defaults=1,2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/Baselines.swift::epochDropDiagnostic/2[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/Baselines.swift::foldHistory/4[defaults=4]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/Baselines.swift::deviceEraEpoch/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/Baselines.swift::brandBucket/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/Baselines.swift::sigma/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/Baselines.swift::deviation/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/Baselines.swift::rollingMeanSD/3[defaults=3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BatteryEstimator.swift::ratedLifeHoursWhoop4@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BatteryEstimator.swift::ratedLifeHoursWhoop5@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BatteryEstimator.swift::minSpanHours@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BatteryEstimator.swift::minDropPct@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BatteryEstimator.swift::chargeStepPct@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BatteryEstimator.swift::nearFullPct@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BatteryEstimator.swift::init/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BatteryEstimator.swift::daysRemaining@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BatteryEstimator.swift::hoursRemaining@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BatteryEstimator.swift::estimate/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BatteryEstimator.swift::dischargeFitWindow/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BatteryEstimator.swift::estimateTrace/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BatteryEstimator.swift::socText/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BatteryEstimator.swift::hoursText/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BatteryEstimator.swift::slopeText/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BatteryEstimator.swift::label/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BatteryEstimator.swift::runtimeAlertHours@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BatteryEstimator.swift::runtimeRearmHours@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BatteryEstimator.swift::runtimeAlert/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BatteryEstimator.swift::cutoffSocPct@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BatteryEstimator.swift::usableRemainingHours/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BatteryEstimator.swift::usableRemainingHours/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BatteryEstimator.swift::criticalSocPct@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BatteryEstimator.swift::criticalRearmAbovePct@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BatteryEstimator.swift::criticalAlert/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BatteryEstimator.swift::bedtimeLeadHours@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BatteryEstimator.swift::bedtimeMarginHours@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BatteryEstimator.swift::bedtimeMinNights@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BatteryEstimator.swift::init/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BatteryEstimator.swift::shortfallHours@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BatteryEstimator.swift::typicalSleepHours/2[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BatteryEstimator.swift::bedtimeAlert/6[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BatteryEstimator.swift::secondsPerDay@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BatteryEstimator.swift::floorMod/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BehaviorInsights.swift::init/11[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BehaviorInsights.swift::minGroupForSignificance@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BehaviorInsights.swift::alpha@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BehaviorInsights.swift::effect/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BehaviorInsights.swift::rank/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BehaviorInsights.swift::sentence/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BehaviorInsights.swift::sampleVariance/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BehaviorInsights.swift::cohensD/6[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BehaviorInsights.swift::welchP/6[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BehaviorInsights.swift::roundedInt/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BehaviorInsights.swift::round1/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BreathPacer.swift::init/4[defaults=4]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BreathPacer.swift::inhaleLoops@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BreathPacer.swift::exhaleLoops@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BreathPacer.swift::defaultInhaleFraction@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BreathPacer.swift::minBpm@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BreathPacer.swift::maxBpm@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BreathPacer.swift::schedule/3[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BreathPacer.swift::sessionDurationMs/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BreathProtocol.swift::init/3[defaults=3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BreathProtocol.swift::init/10[defaults=5,6,10]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BreathProtocol.swift::cycleDurationMs@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BreathProtocol.swift::holdLoops@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BreathProtocol.swift::textOnlyLoops@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BreathProtocol.swift::loops/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BreathProtocol.swift::schedule/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BreathProtocolCatalog.swift::presenceIntroTitle@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BreathProtocolCatalog.swift::presenceIntroBody@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BreathProtocolCatalog.swift::all@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BreathProtocolCatalog.swift::protocolById/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BreathProtocolCatalog.swift::pickerProtocols@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BreathProtocolCatalog.swift::watchSubsetIds@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BreathProtocolCatalog.swift::watchSubset@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BreathProtocolCatalog.swift::legacyNoop@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BreathProtocolCatalog.swift::ansPlayable@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BreathProtocolCatalog.swift::ansGuided@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/BreathProtocolCatalog.swift::presence@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CaptureAccumulator.swift::markers@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CaptureAccumulator.swift::dayKeyRegex@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CaptureAccumulator.swift::epochRegex@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CaptureAccumulator.swift::capturedDays/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CaptureAccumulator.swift::capturedDayKeys/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CaptureAccumulator.swift::firstDayKey/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CaptureAccumulator.swift::firstEpoch/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CaptureCompleteness.swift::init/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CaptureCompleteness.swift::tokens@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CaptureCompleteness.swift::expectedTokens/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CaptureCompleteness.swift::countMatches/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CaptureCompleteness.swift::evaluate/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CaptureCompleteness.swift::reportSection/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CaptureCompleteness.swift::anyIncomplete/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ChargeDrivers.swift::init/5[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ChargeDrivers.swift::init/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ChargeDrivers.swift::skinTempTypicalBandC@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ChargeDrivers.swift::skinTempRelative/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ChargeDrivers.swift::chargeDrivers/8[defaults=8]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ChargeDrivers.swift::hrvVerdict/3[defaults=3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ChargeDrivers.swift::rhrVerdict/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ChargeDrivers.swift::respVerdict/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ChargeDrivers.swift::sleepVerdict/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ChargeDrivers.swift::skinTempVerdict/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ChargeDrivers.swift::skinTempDevText/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CircadianEngine.swift::minDaysForFit@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CircadianEngine.swift::goodDaysForFit@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CircadianEngine.swift::minRelativeAmplitude@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CircadianEngine.swift::maxShiftPerDayHours@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CircadianEngine.swift::cbtMinBeforeWakeHours@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CircadianEngine.swift::acrophaseAfterCbtMinHours@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CircadianEngine.swift::init/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CircadianEngine.swift::init/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CircadianEngine.swift::cosinor/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CircadianEngine.swift::init/5[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CircadianEngine.swift::estimatePhase/4[defaults=4]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CircadianEngine.swift::init/7[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CircadianEngine.swift::init/5[defaults=-]#2", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CircadianEngine.swift::planShift/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CircadianEngine.swift::wrap24/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CircadianEngine.swift::signedHourDelta/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CircadianEngine.swift::clock/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ComparisonEngine.swift::init/7[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ComparisonEngine.swift::empty@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ComparisonEngine.swift::init/5[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ComparisonEngine.swift::stat/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ComparisonEngine.swift::compare/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ComparisonEngine.swift::monthOverMonth/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ComparisonEngine.swift::median/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ComparisonEngine.swift::leastSquaresSlope/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ComparisonEngine.swift::yearMonth/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ComparisonEngine.swift::previousMonth/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ComparisonEngine.swift::monthPrefix/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ConnectionReadout.swift::sessionHeldSuffix/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ConnectionReadout.swift::clockDriftLine/5[defaults=4,5]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ConnectionReadout.swift::rtcEpochCeilingUnix@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ConnectionReadout.swift::behindToleranceDefault@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ConnectionReadout.swift::clockVerdict/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ConnectionReadout.swift::firmwareLine/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ConnectionReadout.swift::noCursorLine/0[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ConnectionReadout.swift::isoDate/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ConnectionReadout.swift::signed/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ConnectionReadout.swift::uptimeLabel/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ConnectionReadout.swift::reconnectCount/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ConnectionReadout.swift::lastOffloadResult/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ConnectionReadout.swift::sessionRows/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ConnectionReadout.swift::drainedRowsFromSummary/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ConnectionReadout.swift::clockCorrelatedDevice/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ConnectionReadout.swift::clockLatchedLabel/2[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ConnectionReadout.swift::rtcWarning/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ConnectionReadout.swift::lastFrameLabel/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ConnectionReadout.swift::intField/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ConnectionReadout.swift::durationLabel/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CorrelationEngine.swift::init/5[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CorrelationEngine.swift::pearson/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CorrelationEngine.swift::alignByDay/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CorrelationEngine.swift::lagged/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CorrelationEngine.swift::pValue/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CorrelationEngine.swift::normalCDF/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CorrelationEngine.swift::erfApprox/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CorrelationEngine.swift::shiftDay/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CyclePhaseEngine.swift::wTemp@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CyclePhaseEngine.swift::wRHR@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CyclePhaseEngine.swift::wHRV@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CyclePhaseEngine.swift::elevationK@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CyclePhaseEngine.swift::minCycleDays@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CyclePhaseEngine.swift::maxCycleDays@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CyclePhaseEngine.swift::defaultCycleDays@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CyclePhaseEngine.swift::minNightsToClassify@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CyclePhaseEngine.swift::periOvulatoryHalfWidth@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CyclePhaseEngine.swift::init/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CyclePhaseEngine.swift::init/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CyclePhaseEngine.swift::init/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CyclePhaseEngine.swift::init/8[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CyclePhaseEngine.swift::awarenessLine@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CyclePhaseEngine.swift::classify/3[defaults=3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CyclePhaseEngine.swift::fusedIndex/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CyclePhaseEngine.swift::phaseNote/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CyclePhaseEngine.swift::median/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CyclePhaseEngine.swift::medianAbsoluteDeviation/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CyclePhaseEngine.swift::daysBetween/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CyclePhaseEngine.swift::mostRecentOnOrBefore/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CyclePhaseEngine.swift::parseDay/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/CyclePhaseEngine.swift::shiftDay/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DayOwnerResolver.swift::init/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DayOwnerResolver.swift::resolve/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DaytimeBaselines.swift::daytimeHRAggregatePercentile@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DaytimeBaselines.swift::daytimeRMSSDAggregatePercentile@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DaytimeBaselines.swift::init/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DaytimeBaselines.swift::dayDaytimeAggregate/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DaytimeBaselines.swift::foldDaytimeBaselines/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DaytimeBaselines.swift::scoringMode/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DaytimeStress.swift::minHourHRSamples@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DaytimeStress.swift::bucketSeconds@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DaytimeStress.swift::highBandFloor@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DaytimeStress.swift::sustainedHours@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DaytimeStress.swift::wakingStartHour@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DaytimeStress.swift::wakingEndHour@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DaytimeStress.swift::activityMaskFraction@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DaytimeStress.swift::postActivityShadowBPM@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DaytimeStress.swift::baselineRelativeHighMarginBPM@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DaytimeStress.swift::daytimeRMSSDScoringEnabled@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DaytimeStress.swift::hasData@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DaytimeStress.swift::init/6[defaults=6]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DaytimeStress.swift::init/8[defaults=6,7,8]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DaytimeStress.swift::scored@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DaytimeStress.swift::empty@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DaytimeStress.swift::mean/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DaytimeStress.swift::std/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DaytimeStress.swift::rawScore/6[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DaytimeStress.swift::squash/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DaytimeStress.swift::marginToSigma/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DaytimeStress.swift::analyze/5[defaults=3,4,5]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DaytimeStress.swift::analyzeCache@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DaytimeStress.swift::analyzeUncached/5[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DaytimeStress.swift::floorDiv/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DaytimeStress.swift::isWakingHour/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DaytimeStress.swift::calmReference/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DaytimeStress.swift::quantile/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DisplayTrace.swift::init/12[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DisplayTrace.swift::init/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DisplayTrace.swift::dataVolumeLine/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DisplayTrace.swift::deviceMetricsLine/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DisplayTrace.swift::frameSummaryLine/6[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DisplayTrace.swift::memoryHighWaterLine/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DisplayTrace.swift::pt/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DisplayTrace.swift::scaleLabel/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DisplayTrace.swift::ms/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DisplayTrace.swift::deviceMetricsNow/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DisplayTrace.swift::frameSummaryNow/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DoseResponseEngine.swift::init/11[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DoseResponseEngine.swift::delta/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DoseResponseEngine.swift::sentence/0[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DoseResponseEngine.swift::init/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DoseResponseEngine.swift::shrinkageK@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DoseResponseEngine.swift::minDoseDays@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DoseResponseEngine.swift::solidDoseDays@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DoseResponseEngine.swift::maxCurveDose@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DoseResponseEngine.swift::estimate/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DoseResponseEngine.swift::estimate/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DoseResponseEngine.swift::confidenceFor/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DoseResponseEngine.swift::sameSign/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DoseResponseEngine.swift::clamp/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DoseResponseEngine.swift::round1/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DoseResponsePriors.swift::init/5[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DoseResponsePriors.swift::defaultOutcome/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DoseResponsePriors.swift::table@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DoseResponsePriors.swift::prior/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/DoseResponsePriors.swift::prior/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/EffectRanker.swift::init/5[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/EffectRanker.swift::leadLagText@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/EffectRanker.swift::sentence/0[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/EffectRanker.swift::lagSet@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/EffectRanker.swift::calibratingBelow@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/EffectRanker.swift::solidPairs@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/EffectRanker.swift::rank/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/EffectRanker.swift::bestLag/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/EffectRanker.swift::shiftedOutcome/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/EffectRanker.swift::confidence/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/EffectRanker.swift::sorted/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/FitnessAgeEngine.swift::menIntercept@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/FitnessAgeEngine.swift::womenIntercept@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/FitnessAgeEngine.swift::seeMen@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/FitnessAgeEngine.swift::restingHRReference@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/FitnessAgeEngine.swift::paiReference@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/FitnessAgeEngine.swift::displayBandYears@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/FitnessAgeEngine.swift::minAge@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/FitnessAgeEngine.swift::isFemale/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/FitnessAgeEngine.swift::coeffs/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/FitnessAgeEngine.swift::bmi/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/FitnessAgeEngine.swift::estimateVO2max/5[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/FitnessAgeEngine.swift::fitnessAge/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/FitnessAgeEngine.swift::physicalActivityIndex/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/FitnessAgeEngine.swift::physicalActivityIndexFromStrain/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/FitnessAgeEngine.swift::compute/6[defaults=5,6]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/FitnessAgeEngine.swift::init/6[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/FitnessAgeEngine.swift::canCompute@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/FitnessAgeEngine.swift::init/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/FitnessAgeEngine.swift::minCoverageDays@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/FitnessAgeEngine.swift::goodCoverageDays@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/FitnessAgeEngine.swift::nightsUntilReady/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/FitnessAgeEngine.swift::coverageStatus/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/FitnessAgeEngine.swift::assessReadiness/6[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/FitnessAgeEngine.swift::init/6[defaults=-]#2", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/FusionResolver.swift::resolve/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/FusionResolver.swift::classify/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/FusionResolver.swift::severity/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/FusionResolver.swift::worse/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/FusionTypes.swift::displayName@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/FusionTypes.swift::init/5[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/FusionTypes.swift::init/5[defaults=-]#2", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/FusionTypes.swift::init/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/GuidedCaptureProgress.swift::evaluate/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/GuidedCaptureProgress.swift::label/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/GuidedCaptureProgress.swift::gapNudge/0[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRDownPacer.swift::init/7[defaults=1,2,3,4,5,6,7]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRDownPacer.swift::default@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRDownPacer.swift::init/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRDownPacer.swift::next/3[defaults=3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRDownPacer.swift::rampedDelta/2[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVAnalyzer+Trace.swift::analyzeTrace/3[defaults=2,3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVAnalyzer.swift::rrMinMs@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVAnalyzer.swift::rrMaxMs@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVAnalyzer.swift::minBeats@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVAnalyzer.swift::ectopicThreshold@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVAnalyzer.swift::ectopicWindowRadius@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVAnalyzer.swift::defaultSpotMaxRejectedFraction@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVAnalyzer.swift::init/6[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVAnalyzer.swift::empty/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVAnalyzer.swift::rmssdRaw/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVAnalyzer.swift::sdnnRaw/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVAnalyzer.swift::rangeFilter/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVAnalyzer.swift::rejectEctopic/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVAnalyzer.swift::cleanRR/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVAnalyzer.swift::cleanRRGapAware/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVAnalyzer.swift::rmssdGapAware/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVAnalyzer.swift::pnn50GapAware/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVAnalyzer.swift::analyze/3[defaults=2,3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVAnalyzer.swift::analyze/2[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVAnalyzer.swift::sdnnIndex/2[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVAnalyzer.swift::init/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVAnalyzer.swift::beatSpreadIsTrustworthy/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVAnalyzer.swift::beatAccurateFraction/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVAnalyzer.swift::beatAccuracyToleranceS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVAnalyzer.swift::beatAccuracyMinFraction@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVAnalyzer.swift::beatValuesAreTrustworthy/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVAnalyzer.swift::coveragePlausibleFloor@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVAnalyzer.swift::coveragePlausibleCeiling@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVAnalyzer.swift::classifyCoverage/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVAnalyzer.swift::rrCoverage/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVAnalyzer.swift::duplicateBeatCount/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVAnalyzer.swift::collapseOverCount/4[defaults=3,4]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVAnalyzer.swift::collapsedCoverage/3[defaults=3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVAnalyzer.swift::densestSecondWindowSample/5[defaults=4,5]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVAnalyzer.swift::median/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVFreqDomain.swift::vlfLowHz@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVFreqDomain.swift::lfLowHz@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVFreqDomain.swift::lfHighHz@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVFreqDomain.swift::hfLowHz@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVFreqDomain.swift::hfHighHz@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVFreqDomain.swift::minSpanForHFSec@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVFreqDomain.swift::minSpanForLFSec@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVFreqDomain.swift::minBeats@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVFreqDomain.swift::freqStepHz@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVFreqDomain.swift::init/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVFreqDomain.swift::freqDomain/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVFreqDomain.swift::freqDomain/1[defaults=-]#2", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVFreqDomain.swift::bandPower/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVFreqDomain.swift::lombScarglePower/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVReadiness.swift::init/5[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVReadiness.swift::rollWindow@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVReadiness.swift::longWindow@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVReadiness.swift::longWindowFallback@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVReadiness.swift::swcK@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVReadiness.swift::minNights@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVReadiness.swift::cvTrendWindow@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVReadiness.swift::longSDFloor@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRVReadiness.swift::evaluate/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRZones.swift::init/5[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRZones.swift::init/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRZones.swift::zoneNumber/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRZones.swift::init/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRZones.swift::total@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRZones.swift::seconds/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRZones.swift::zoneEdges@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRZones.swift::customBPMRange@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRZones.swift::tanakaMaxHR/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRZones.swift::zones/3[defaults=2,3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRZones.swift::zones/3[defaults=2,3]#2", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRZones.swift::defaultLowerBounds/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRZones.swift::validCustomLowerBounds/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRZones.swift::timeInZone/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HRZones.swift::medianInterval/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HeartRateRecovery.swift::init/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HeartRateRecovery.swift::hasMeasurement@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HeartRateRecovery.swift::eligibilityFractionOfMaxHR@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HeartRateRecovery.swift::minimumHighIntensitySeconds@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HeartRateRecovery.swift::eligibilityLookbackSeconds@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HeartRateRecovery.swift::cessationWindowSeconds@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HeartRateRecovery.swift::measurementToleranceSeconds@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HeartRateRecovery.swift::minimumSamplesPerReading@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HeartRateRecovery.swift::maximumContinuousGapSeconds@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HeartRateRecovery.swift::calculate/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HeartRateRecovery.swift::sustainedSeconds/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HeartRateRecovery.swift::median/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HydrationGoal.swift::baselineMaleML@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HydrationGoal.swift::baselineFemaleML@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HydrationGoal.swift::baselineOtherML@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HydrationGoal.swift::maxEffortBumpML@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HydrationGoal.swift::roundToML@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HydrationGoal.swift::sipML@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HydrationGoal.swift::cupML@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HydrationGoal.swift::bottleML@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HydrationGoal.swift::baselineForSex/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HydrationGoal.swift::effortBump/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HydrationGoal.swift::roundToNearest/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HydrationGoal.swift::dailyGoalML/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HydrationGoal.swift::litres/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HydrationGoal.swift::cardValueString/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/HydrationGoal.swift::fraction/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/IllnessDistance.swift::distanceThreshold@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/IllnessDistance.swift::minDeviatingFeatures@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/IllnessDistance.swift::featureZThreshold@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/IllnessDistance.swift::ridge@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/IllnessDistance.swift::init/4[defaults=1,2,3,4]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/IllnessDistance.swift::present@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/IllnessDistance.swift::init/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/IllnessDistance.swift::evaluate/2[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/IllnessDistance.swift::identity/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/IllnessDistance.swift::invertOrDiagonal/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/IllnessDistance.swift::diagonalInverse/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/IllnessSignalEngine.swift::raiseThreshold@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/IllnessSignalEngine.swift::mildThreshold@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/IllnessSignalEngine.swift::minCorroboratingSignals@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/IllnessSignalEngine.swift::signalZThreshold@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/IllnessSignalEngine.swift::kZToScore@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/IllnessSignalEngine.swift::perSignalCap@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/IllnessSignalEngine.swift::confounderDampen@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/IllnessSignalEngine.swift::init/2[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/IllnessSignalEngine.swift::init/4[defaults=1,2,3,4]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/IllnessSignalEngine.swift::init/7[defaults=1,2,3,4,5,6,7]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/IllnessSignalEngine.swift::init/6[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/IllnessSignalEngine.swift::disclaimerTail@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/IllnessSignalEngine.swift::evaluate/3[defaults=3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/IllnessSignalEngine.swift::joinReasons/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ImuFeatureExtractor.swift::init/6[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ImuFeatureExtractor.swift::cadenceBand@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ImuFeatureExtractor.swift::minCadenceStrength@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ImuFeatureExtractor.swift::extract/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ImuFeatureExtractor.swift::extract/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/LabBookProjection.swift::init/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/LabBookProjection.swift::init/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/LabBookProjection.swift::init/4[defaults=-]#2", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/LabBookProjection.swift::sourceId@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/LabBookProjection.swift::bpSystolicKey@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/LabBookProjection.swift::bpDiastolicKey@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/LabBookProjection.swift::defaultWindowDays@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/LabBookProjection.swift::project/2[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/LabBookProjection.swift::pairMarkerToWearable/3[defaults=3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/LabBookProjection.swift::correlationInput/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/LiveSessionEngine.swift::ceilingPctAtLowCharge@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/LiveSessionEngine.swift::ceilingPctAtHighCharge@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/LiveSessionEngine.swift::bandWidthPctHRR@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/LiveSessionEngine.swift::minFloorPctHRR@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/LiveSessionEngine.swift::defaultChargeFraction@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/LiveSessionEngine.swift::smoothingWindowSec@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/LiveSessionEngine.swift::staleAfterSec@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/LiveSessionEngine.swift::warmupSec@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/LiveSessionEngine.swift::climbGraceSec@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/LiveSessionEngine.swift::dwellSec@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/LiveSessionEngine.swift::cooldownSec@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/LiveSessionEngine.swift::hysteresisMarginBpm@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/LiveSessionEngine.swift::maxAccrualDtSec@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/LiveSessionEngine.swift::stepChangeBpm@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/LiveSessionEngine.swift::stepChangeWindowSec@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/LiveSessionEngine.swift::climbAttributionSec@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/LiveSessionEngine.swift::ceilingDriftAfterSec@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/LiveSessionEngine.swift::ceilingDriftStepBpm@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/LiveSessionEngine.swift::ceilingDriftMaxBpm@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/LiveSessionEngine.swift::minPlausibleBpm@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/LiveSessionEngine.swift::aboveHRmaxRejectBpm@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/LiveSessionEngine.swift::maxJumpBpm@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/LiveSessionEngine.swift::init/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/LiveSessionEngine.swift::init/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/LiveSessionEngine.swift::init/7[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/LiveSessionEngine.swift::band/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/LiveSessionEngine.swift::buffer@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/LiveSessionEngine.swift::smoothedHistory@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/LiveSessionEngine.swift::currentPosition@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/LiveSessionEngine.swift::inBandSeconds@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/LiveSessionEngine.swift::ceilingDriftBpm@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/LiveSessionEngine.swift::init/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/LiveSessionEngine.swift::update/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/LiveSessionEngine.swift::currentBand/0[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/LiveSessionEngine.swift::isPlausible/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/LiveSessionEngine.swift::classify/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/LiveSessionEngine.swift::median/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ManualWorkoutRescore.swift::init/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ManualWorkoutRescore.swift::underScoredKcalThreshold@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ManualWorkoutRescore.swift::improvementMarginKcal@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ManualWorkoutRescore.swift::looksUnderScored/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ManualWorkoutRescore.swift::scored/4[defaults=4]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ManualWorkoutRescore.swift::improves/4[defaults=3,4]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/MetricArbitrationPolicy.swift::kind/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/MetricArbitrationPolicy.swift::tier/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/MetricArbitrationPolicy.swift::sourcePriority/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/MetricArbitrationPolicy.swift::reason/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/MetricArbitrationPolicy.swift::init/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/MetricArbitrationPolicy.swift::tolerance/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/MetricArbitrationPolicy.swift::tolerance/1[defaults=-]#2", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/PrimarySessionRestingHR.swift::init/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/PrimarySessionRestingHR.swift::defaultValidBpm@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/PrimarySessionRestingHR.swift::defaultMinValidSamples@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/PrimarySessionRestingHR.swift::meanHR/3[defaults=2,3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/PrimarySessionRestingHR.swift::init/2[defaults=-]#2", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/PrimarySessionRestingHR.swift::coverage/3[defaults=2,3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RangeReport.swift::label@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RangeReport.swift::unit@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RangeReport.swift::usesOneDecimal@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RangeReport.swift::higherIsBetter@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RangeReport.swift::framesGoodBad@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RangeReport.swift::trendSlopeThreshold@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RangeReport.swift::init/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RangeReport.swift::init/9[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RangeReport.swift::halfDelta@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RangeReport.swift::init/5[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RangeReport.swift::stat/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RangeReport.swift::isEmpty@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RangeReport.swift::build/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RangeReport.swift::makeHeadlines/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RangeReport.swift::salience/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RangeReport.swift::headline/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RangeReport.swift::trendFromSlope/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RangeReport.swift::dayCount/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RangeReport.swift::parseYMD/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RangeReport.swift::daysInMonth/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RangeReport.swift::isLeap/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RangeReport.swift::julianDayNumber/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RangeReport.swift::mean/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RangeReport.swift::leastSquaresSlope/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RangeReport.swift::round1/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ReadinessEngine.swift::init/5[defaults=3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ReadinessEngine.swift::init/7[defaults=7]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ReadinessEngine.swift::baselineWindow@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ReadinessEngine.swift::minBaseline@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ReadinessEngine.swift::acuteWindow@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ReadinessEngine.swift::chronicWindow@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ReadinessEngine.swift::minChronic@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ReadinessEngine.swift::evaluate/2[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ReadinessEngine.swift::evaluateCache@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ReadinessEngine.swift::rowsFingerprint/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ReadinessEngine.swift::evaluateUncached/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ReadinessEngine.swift::zSignal/13[defaults=8]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ReadinessEngine.swift::acwrSignal/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ReadinessEngine.swift::evidence/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ReadinessEngine.swift::format/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ReadinessEngine.swift::synthesize/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ReadinessEngine.swift::mean/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ReadinessEngine.swift::sampleSD/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryForecast.swift::init/7[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryForecast.swift::low@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryForecast.swift::high@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryForecast.swift::baselineWindow@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryForecast.swift::minBaselineNights@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryForecast.swift::effortWindow@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryForecast.swift::strainWeight@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryForecast.swift::effortSpread@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryForecast.swift::strainAdjCap@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryForecast.swift::sleepWeight@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryForecast.swift::sleepOverCap@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryForecast.swift::reversionWeight@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryForecast.swift::reversionAdjCap@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryForecast.swift::minBandPoints@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryForecast.swift::thinBandPoints@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryForecast.swift::trustedNights@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryForecast.swift::solidNeedNights@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryForecast.swift::defaultNeedHours@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryForecast.swift::forecast/6[defaults=2,5,6]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryForecast.swift::mean/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryForecast.swift::sampleSD/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryForecast.swift::leastSquaresSlope/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryForecast.swift::clamp/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryScorer+Trace.swift::recoveryTrace/8[defaults=8]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryScorer.swift::wHRV@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryScorer.swift::wRHR@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryScorer.swift::wResp@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryScorer.swift::wSleep@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryScorer.swift::wSkinTemp@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryScorer.swift::skinTempScaleC@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryScorer.swift::wRecoveryIndex@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryScorer.swift::recoveryIndexScaleBpmPerHr@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryScorer.swift::wActivityBalance@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryScorer.swift::logisticK@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryScorer.swift::logisticZ0@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryScorer.swift::populationMean@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryScorer.swift::bandRedMax@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryScorer.swift::bandYellowMax@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryScorer.swift::sleepPerfCenter@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryScorer.swift::sleepPerfScale@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryScorer.swift::satEnterZ@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryScorer.swift::satFullZ@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryScorer.swift::satMaxDampFraction@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryScorer.swift::parasympatheticSaturation/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryScorer.swift::restingHRWindowS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryScorer.swift::restingHRMinBinSamples@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryScorer.swift::restingHRMinPlausibleBpm@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryScorer.swift::restingHR/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryScorer.swift::recoveryIndexMinBins@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryScorer.swift::recoveryIndexSlope/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryScorer.swift::band/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryScorer.swift::calibrationNights/6[defaults=4,5,6]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryScorer.swift::init/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryScorer.swift::init/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryScorer.swift::zScore/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryScorer.swift::recovery/12[defaults=8,9,10,11,12]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryScorer.swift::logisticScore/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RecoveryScorer.swift::recovery/11[defaults=8,9,10,11]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ResonanceEngine.swift::fullSweepPaces@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ResonanceEngine.swift::quickSweepPaces@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ResonanceEngine.swift::fallbackBpm@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ResonanceEngine.swift::transientDropSeconds@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ResonanceEngine.swift::minBeatsPerPace@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ResonanceEngine.swift::minCyclesPerPace@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ResonanceEngine.swift::minScoredPaces@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ResonanceEngine.swift::init/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ResonanceEngine.swift::init/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ResonanceEngine.swift::scored@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ResonanceEngine.swift::init/5[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ResonanceEngine.swift::init/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ResonanceEngine.swift::scorePace/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ResonanceEngine.swift::sweep/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ResonanceEngine.swift::repairTimestamps/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RestSubScoreTrace.swift::wire@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RestSubScoreTrace.swift::sleepProvenanceLine/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RestSubScoreTrace.swift::sleepMotionLine/6[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RestSubScoreTrace.swift::onsetTraceWindowSec@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RestSubScoreTrace.swift::medianBpm/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RestSubScoreTrace.swift::sleepOnsetLine/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RestSubScoreTrace.swift::subScoreLine/9[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RhythmExport.swift::disclaimer@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RhythmExport.swift::header@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RhythmExport.swift::csv/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RhythmExport.swift::num/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RhythmScreener.swift::windowMinBeats@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RhythmScreener.swift::restingHrMinBpm@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RhythmScreener.swift::restingHrMaxBpm@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RhythmScreener.swift::tauRatio@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RhythmScreener.swift::tauNRmssd@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RhythmScreener.swift::tauTP@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RhythmScreener.swift::tauEctopicLow@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RhythmScreener.swift::nightMinVariedWindows@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RhythmScreener.swift::nightMinSpanSeconds@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RhythmScreener.swift::solidBeats@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RhythmScreener.swift::init/5[defaults=2,3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RhythmScreener.swift::init/3[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RhythmScreener.swift::init/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RhythmScreener.swift::init/11[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RhythmScreener.swift::unreadable/2[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RhythmScreener.swift::init/6[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RhythmScreener.swift::screenWindow/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RhythmScreener.swift::summarizeNight/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RhythmScreener.swift::nightBeatsAreBanked/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RhythmScreener.swift::classifyEmptyState/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RhythmScreener.swift::computeStats/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RhythmScreener.swift::turningPointRate/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RhythmScreener.swift::ectopicFraction/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RhythmScreener.swift::poincareCloud/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RhythmScreener.swift::classify/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/RhythmScreener.swift::confidence/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ScoreConfidence.swift::charge/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ScoreConfidence.swift::readiness/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ScoreConfidence.swift::solidEffortReadings@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ScoreConfidence.swift::effort/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ScoreConfidence.swift::rest/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ScoreConfidence.swift::restorativeLowConfidenceShare@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ScoreConfidence.swift::highEfficiencyThreshold@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/ScoreConfidence.swift::rest/6[defaults=6]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SedentaryDetector.swift::init/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SedentaryDetector.swift::init/4[defaults=1,2,3,4]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SedentaryDetector.swift::initial@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SedentaryDetector.swift::init/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SedentaryDetector.swift::init/14[defaults=1,2,3,4,5,6,7,8,9,10,11,12,13,14]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SedentaryDetector.swift::defaultMoveThresholdG@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SedentaryDetector.swift::defaultSmoothWindowS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SedentaryDetector.swift::maxGapS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SedentaryDetector.swift::defaultThresholdMinutes@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SedentaryDetector.swift::defaultMinMinutes@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SedentaryDetector.swift::defaultReNudgeMinutes@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SedentaryDetector.swift::defaultBuzzLoops@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SedentaryDetector.swift::defaultActiveStartMin@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SedentaryDetector.swift::defaultActiveEndMin@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SedentaryDetector.swift::defaultQuietStartMin@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SedentaryDetector.swift::defaultQuietEndMin@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SedentaryDetector.swift::detectSedentaryBouts/4[defaults=2,3,4]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SedentaryDetector.swift::localMinuteOfDay/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SedentaryDetector.swift::windowContains/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SedentaryDetector.swift::mayBuzz/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SedentaryDetector.swift::evaluate/6[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SkinTempDisplay.swift::kind/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SkinTempDisplay.swift::unitSymbol/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SkinTempDisplay.swift::numberString/4[defaults=4]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SkinTempDisplay.swift::format/3[defaults=3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepDebt.swift::init/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepDebt.swift::init/3[defaults=-]#2", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepDebt.swift::nightCount@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepDebt.swift::isDebt@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepDebt.swift::magnitudeMin@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepDebt.swift::defaultWindowNights@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepDebt.swift::onTargetBandMin@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepDebt.swift::creditedSleepMin/2[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepDebt.swift::ledger/3[defaults=2,3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepDebt.swift::round1/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepEditGuard.swift::maxAutoCorrectNightSec@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepEditGuard.swift::autoCorrectedBed/5[defaults=5]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepEditGuard.swift::isDisjoint/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepEditGuard.swift::maxEditWindowSec@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepEditGuard.swift::clampedEditWindow/4[defaults=4]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepReadout.swift::hrDensityPerMinute/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepReadout.swift::gravityCoverageFraction/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepReadout.swift::lastGateFired/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepReadout.swift::lastChargeBreakdown/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepReadout.swift::lastHrvComputation/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepReadout.swift::stepsToday/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepReadout.swift::calibrationState/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepReadout.swift::intField/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStageTotals.swift::asleep@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStageTotals.swift::inBed@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStageTotals.swift::init/4[defaults=1,2,3,4]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStageTotals.swift::minutes/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStageTotals.swift::clampStagesToOnset/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStageTotals.swift::dailyAggregate/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStageTotals.swift::dailyAggregate/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStageTotals.swift::interFragmentAwakeSeconds/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStageTotals.swift::overnightStartHour@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStageTotals.swift::overnightEndHour@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStageTotals.swift::secondsPerDay@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStageTotals.swift::alignmentBonusMin@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStageTotals.swift::alignmentFullWindowSec@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStageTotals.swift::alignmentZeroSec@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStageTotals.swift::gapBridgeMaxMin@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStageTotals.swift::nightTailBridgeMaxMin@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStageTotals.swift::init/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStageTotals.swift::durationS@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStageTotals.swift::midpointSec@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStageTotals.swift::meaningfulBonusEpsilon@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStageTotals.swift::init/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStageTotals.swift::asleepMinutes@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStageTotals.swift::isOvernightOnset/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStageTotals.swift::localSecOfDay/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStageTotals.swift::circularDistanceSec/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStageTotals.swift::coldStartAnchorSec@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStageTotals.swift::alignmentBonusMinutes/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStageTotals.swift::targetMidsleepSec/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStageTotals.swift::bridgeAdjacent/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStageTotals.swift::init/2[defaults=-]#2", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStageTotals.swift::init/2[defaults=-]#3", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStageTotals.swift::bridgedNightGroups/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStageTotals.swift::mainNightGroupIndices/3[defaults=3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStageTotals.swift::mainNightIndex/3[defaults=3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStageTotals.swift::mainNightSelection/3[defaults=3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStageTotals.swift::durationOnlyWinnerOnset/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStageTotals.swift::mainNightReason/8[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStageTotals.swift::dailyAggregateHonoringEdits/6[defaults=3,4,5,6]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStageTotals.swift::mainNightGroupIndicesByStages/4[defaults=4]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStageTotals.swift::summedStagesJSON/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStageTotals.swift::mainNightIndexByStages/4[defaults=4]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStageTotals.swift::mainNightSelectionByStages/4[defaults=4]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStageTotals.swift::init/3[defaults=-]#2", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStageTotals.swift::durationS@computed-property#2", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStageTotals.swift::midpointSec@computed-property#2", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStageTotals.swift::habitualMinDays@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStageTotals.swift::habitualMidsleepSec/3[defaults=3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStageTotals.swift::circularMeanMinResultant@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStageTotals.swift::circularMeanSec/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStageVocabulary.swift::isWake/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager+Trace.swift::runLine/6[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager+Trace.swift::flipLine/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager+Trace.swift::round2/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::init/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::init/6[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::gravityStillThresholdG@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::stillWindowMin@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::stillFraction@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::maxGapMin@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::mergeMin@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::minSleepMin@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::defaultIntervalS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::daytimeBandStartHour@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::daytimeBandEndHour@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::nightContinuationGapMin@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::daytimeMinSleepMin@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::daytimeRestingHRMult@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::maxMainSleepSpanS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::morningStillnessWindowMin@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::morningReonsetRestingHRMult@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::bandStateAsleep@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::morningReonsetBandAsleepFrac@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::secondsPerDay@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::minWindowSamples@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::hrSleepBaselineMult@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::hrRefineMinSamples@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::onsetPersistEpochs@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::offWristHRGapMin@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::maxOffWristSleepFraction@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::hrDenseSpacingS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::sparseGravitySpanFrac@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::hrSleepBandMult@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::sparseBridgeGapMin@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::epochS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::featureWindowS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::ckCountDivisor@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::ckCountClip@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::moveDeltaThresholdG@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::hrDogSigma1S@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::hrDogSigma2S@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::stageHRLowPct@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::stageHRHighPct@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::stageHRVHighPct@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::stageHRVarHighPct@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::stageRRVHighPct@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::stageRRVLowPct@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::stageWakeMoveFrac@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::stageStillMoveFrac@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::cardiacSparseEpochFrac@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::smoothEpochs@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::noREMAfterOnsetMin@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::deepFirstFraction@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::fragmentMergeMin@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::fragmentMergeEpochs@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::ckWeights@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::ckScale@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::ckBack@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::ckFwd@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::gravityDeltas/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::medianIntervalS/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::windowSize/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::largestGapS/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::isGravitySparse/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::hrSleepBandAcross/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::classifyStill/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::buildRuns/5[defaults=3,4,5]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::mergePeriods/2[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::sparseBridgeAttempts/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::bridgeSparseSleep/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::rowsBetween/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::hrBaseline/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::confirmSleepWithHR/5[defaults=4,5]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::quiescentHRSleepMult@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::quiescentPostureVarG2@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::quiescentStableFrac@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::quiescentMinStableMinutes@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::runIsDeeplyQuiescent/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::posturVarianceG2/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::adaptiveBaselineFloor@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::adaptiveOvernightHRBaseline/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::isDaytimeCenter/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::isOvernightOnset/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::passesDaytimeGuard/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::passesMorningStillnessGuard/5[defaults=5]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::bandStateConfirmsAsleep/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::bandStateWakeVetoEnabled@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::bandStateWakeVetoCutoffTs@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::bandVetoRecoverStage@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::bandVetoShadowLine/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::applyBandStateWakeVeto/6[defaults=5,6]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::offWristHRGapSpans/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::offWristFraction/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::detectSleep/10[defaults=1,2,3,5,6,7,8,9,10]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::detectSleepCache@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::detectSleepUncached/10[defaults=9,10]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::efficiency/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::onsetAndFinalWake/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::stageSession/6[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::stageSessionCache@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::stageSessionUncached/6[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::sessionEpochMotion/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::sessionEpochSleepState/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::nEpochs@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::epochMid/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::buildEpochGrid/7[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::rescaleCounts/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::coleKripke/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::gaussianKernel/2[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::convolveReflect/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::dogHRVariability/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::respRateAndRRV/2[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::findPeaks/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::rsaResampleHz@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::rsaDetrendWindowS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::rsaMinPeakDistanceS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::rsaWindowS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::rsaGapToleranceS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::rsaMinBreathIntervalS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::rsaMaxBreathIntervalS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::respPlausibleRangeBpm@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::respRateFromRR/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::extractFeatures/5[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::percentile/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::classifyEpochs/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::isCardiacSparse/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::of/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::contradictsDepth@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::meetsIrregularBar@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::classifyOne/8[defaults=8]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::smoothLabels/2[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::reimposePhysiology/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::init/10[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::isZeroREM@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::summary@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::remRejectReason/8[defaults=8]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::remFunnelDiagnostic/6[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::stageDepthRank/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::mergeFragments/2[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::sessionRestingHR/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::sessionAvgHRV/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::sessionHrvWindows/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::lastDeepRun/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::hypnogramMetrics/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStager.swift::standardDeviation/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStagerV2.swift::stageSession/6[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStagerV2.swift::padLo@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStagerV2.swift::padHi@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStagerV2.swift::clipToWindow/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStagerV2.swift::stageCache@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStagerV2.swift::stageSessionUncached/6[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStagerV2.swift::stageNames@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStagerV2.swift::baseLogPrior@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStagerV2.swift::deepGateThresh@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStagerV2.swift::deepGateSlope@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStagerV2.swift::jerkFloorMoveMult@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStagerV2.swift::jerkFloorGateMult@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStagerV2.swift::motionGateBoost@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStagerV2.swift::motionQuiescent/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStagerV2.swift::respWeight@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStagerV2.swift::transition@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStagerV2.swift::features/5[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStagerV2.swift::respRegularity/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStagerV2.swift::remLatencyPenalty@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStagerV2.swift::remLatencyMinutes@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStagerV2.swift::remLatencyGuard/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStagerV2.swift::cyclePrior/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStagerV2.swift::onsetSustainedEpochs@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStagerV2.swift::sustainedSleepOnset/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStagerV2.swift::viterbi/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepStagerV2.swift::stageEpochs/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepWindowReclip.swift::reclip/5[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepWindowReclip.swift::reclipSegments/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SleepWindowReclip.swift::reclipMinutes/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/Spo2ReTrace.swift::maxSamples@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/Spo2ReTrace.swift::recordLine/6[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SpotHrvReading.swift::compute/2[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SpotHrvReading.swift::meanHrFromNN/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/SpotHrvReading.swift::caveatFor/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StagePercentages.swift::wholePercentages/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StepsCounter.swift::maxStepDelta@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StepsCounter.swift::stepsInWindow/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StepsEstimateEngine+Trace.swift::calibrationTrace/2[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StepsEstimateEngine+Trace.swift::rawCounterTrace/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StepsEstimateEngine.swift::minCalibrationDays@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StepsEstimateEngine.swift::goodCalibrationDays@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StepsEstimateEngine.swift::minMotionForFit@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StepsEstimateEngine.swift::maxDailySteps@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StepsEstimateEngine.swift::init/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StepsEstimateEngine.swift::init/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StepsEstimateEngine.swift::from/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StepsEstimateEngine.swift::word@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StepsEstimateEngine.swift::canEstimate@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StepsEstimateEngine.swift::headline@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StepsEstimateEngine.swift::confidenceTier@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StepsEstimateEngine.swift::coefficient@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StepsEstimateEngine.swift::detail@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StepsEstimateEngine.swift::formatK/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StepsEstimateEngine.swift::status/2[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StepsEstimateEngine.swift::dayMotionIntensity/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StepsEstimateEngine.swift::calibrate/2[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StepsEstimateEngine.swift::estimate/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StepsEstimateEngine.swift::median/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StepsEstimateEngine.swift::weightedMedian/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StepsEstimateEngine.swift::clampedUnit@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StepsEstimateEngine.swift::clamped/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StrainScorer.swift::minReadings@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StrainScorer.swift::minSparseReadings@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StrainScorer.swift::minSpanSeconds@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StrainScorer.swift::maxStrain@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StrainScorer.swift::strainDenominator@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StrainScorer.swift::lnStrainDenominator@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StrainScorer.swift::fallbackSampleMin@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StrainScorer.swift::defaultAge@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StrainScorer.swift::defaultRestingHR@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StrainScorer.swift::hrmaxMinSamples@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StrainScorer.swift::hrmaxPercentile@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StrainScorer.swift::banisterScale@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StrainScorer.swift::banisterBMen@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StrainScorer.swift::banisterBWomen@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StrainScorer.swift::edwardsZones@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StrainScorer.swift::tanakaHRmax/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StrainScorer.swift::defaultMaxHR/1[defaults=1]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StrainScorer.swift::percentile/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StrainScorer.swift::estimateHRmax/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StrainScorer.swift::pctHRR/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StrainScorer.swift::zoneWeight/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StrainScorer.swift::maxSampleGapMin@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StrainScorer.swift::effectiveEffort/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StrainScorer.swift::sampleDurationMinutes/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StrainScorer.swift::sampleDurationsMinutes/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StrainScorer.swift::edwardsTRIMP/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StrainScorer.swift::banisterTRIMP/5[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StrainScorer.swift::fitStrainDenominator/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StrainScorer.swift::strain/6[defaults=2,3,4,5,6]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StrainScorer.swift::strainCache@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StrainScorer.swift::strainUncached/6[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StrandAnalytics.swift::version@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StrapComparison.swift::init/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StrapComparison.swift::compare/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StrapComparison.swift::agreement/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StreakCalculator.swift::init/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StreakCalculator.swift::streaks/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StressIndex.swift::binWidthSec@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StressIndex.swift::minBeats@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StressIndex.swift::init/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StressIndex.swift::stressIndex/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StressIndex.swift::stressIndex/1[defaults=-]#2", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StressIndex.swift::components/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StressIndex.swift::components/1[defaults=-]#2", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StressOnsetDetector.swift::baselineEmaAlpha@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StressOnsetDetector.swift::dropRatio@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StressOnsetDetector.swift::restingHRLow@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StressOnsetDetector.swift::restingHRHigh@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StressOnsetDetector.swift::fastWindowBeats@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StressOnsetDetector.swift::minBeats@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StressOnsetDetector.swift::minSecondsBetweenFires@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StressOnsetDetector.swift::sustainSeconds@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StressOnsetDetector.swift::motionGateG@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StressOnsetDetector.swift::init/6[defaults=1,2,3,4,5,6]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StressOnsetDetector.swift::init/4[defaults=1,2,3,4]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StressOnsetDetector.swift::initial@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StressOnsetDetector.swift::init/6[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/StressOnsetDetector.swift::evaluate/8[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/TestCentreLayout.swift::rank/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/TestCentreLayout.swift::order/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/TestCentreLayout.swift::visibleModes/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/TestCentreLayout.swift::statusText/4[defaults=4]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/TestDomain.swift::id@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/TestDomain.swift::githubLabel@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/TestModeRegistry.swift::init/4[defaults=4]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/TestModeRegistry.swift::id@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/TestModeRegistry.swift::init/11[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/TestModeRegistry.swift::all@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/TestModeRegistry.swift::mode/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/TestModeRegistry.swift::sleep@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/TestModeRegistry.swift::connection@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/TestModeRegistry.swift::workouts@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/TestModeRegistry.swift::display@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/TestModeRegistry.swift::dataImport@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/TestModeRegistry.swift::steps@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/TestModeRegistry.swift::battery@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/TestModeRegistry.swift::recovery@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/TestModeRegistry.swift::hrv@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/UniversalTrace.swift::clockDriftLine/6[defaults=3,4,5,6]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/VitalBands.swift::init/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/VitalBands.swift::sigmaK@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/VitalBands.swift::band/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/VitalBands.swift::isAbsoluteSkinTemp/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/VitalBands.swift::skinTempHistory/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/VitalBands.swift::skinTempDeviationCfg@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/VitalBands.swift::calendarSeries/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/VitalityEngine.swift::lnHazardPerYear@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/VitalityEngine.swift::overlapShrink@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/VitalityEngine.swift::minBodyAge@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/VitalityEngine.swift::vitalityPerYear@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/VitalityEngine.swift::init/9[defaults=2,3,4,5,6,7,8,9]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/VitalityEngine.swift::init/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/VitalityEngine.swift::init/7[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/VitalityEngine.swift::minFactors@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/VitalityEngine.swift::bandYears@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/VitalityEngine.swift::clamp/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/VitalityEngine.swift::rmssdNorm/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/VitalityEngine.swift::sleepConsistency/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/VitalityEngine.swift::contributions/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/VitalityEngine.swift::compute/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WakeMotionRefinement.swift::minWakeSegmentSeconds@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WakeMotionRefinement.swift::sustainedWalkTicksPerMinute@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WakeMotionRefinement.swift::sustainedWalkMinConsecutiveMinutes@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WakeMotionRefinement.swift::singleMinuteWalkTicks@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WakeMotionRefinement.swift::stablePostureVarianceG2@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WakeMotionRefinement.swift::minStableMinuteFraction@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WakeMotionRefinement.swift::burstPadMinutes@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WakeMotionRefinement.swift::minGravitySamplesPerMinuteForVariance@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WakeMotionRefinement.swift::minStepSamplesPerMinuteForDensity@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WakeMotionRefinement.swift::minDenseMinuteCoverageFraction@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WakeMotionRefinement.swift::locomotionActivityClasses@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WakeMotionRefinement.swift::refine/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WakeMotionRefinement.swift::apply/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WakeMotionRefinement.swift::refine/3[defaults=-]#2", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WakeMotionRefinement.swift::apply/4[defaults=-]#2", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WakeMotionRefinement.swift::isMotionDense/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WakeMotionRefinement.swift::denseMinuteFraction/5[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WakeMotionRefinement.swift::refineSegment/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WakeMotionRefinement.swift::hasLocomotion/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WakeMotionRefinement.swift::stableBurstMinutes/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WakeMotionRefinement.swift::postureVariance/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WakeMotionRefinement.swift::walkClassTicksPerMinute/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WakeMotionRefinement.swift::minutes/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WakeMotionRefinement.swift::bucketByMinute/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WakeMotionRefinement.swift::appendMerging/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WatchRecovery.swift::init/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WatchRecovery.swift::minBaselineNights@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WatchRecovery.swift::compute/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WeeklyDigest.swift::label@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WeeklyDigest.swift::unit@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WeeklyDigest.swift::higherIsBetter@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WeeklyDigest.swift::typicalSpread@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WeeklyDigest.swift::init/5[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WeeklyDigest.swift::wowDelta@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WeeklyDigest.swift::wowGoodness@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WeeklyDigest.swift::normalisedMove@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WeeklyDigest.swift::isRoughComparison@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WeeklyDigest.swift::init/7[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WeeklyDigest.swift::summary/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WeeklyDigest.swift::isEmpty@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WeeklyDigest.swift::sentence@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WeeklyDigest.swift::baselineWeeks@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WeeklyDigest.swift::minDaysForFocus@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WeeklyDigest.swift::build/3[defaults=3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WeeklyDigest.swift::balanceBand@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WeeklyDigest.swift::balanceRead/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WeeklyDigest.swift::focusThreshold@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WeeklyDigest.swift::focalPoints/4[defaults=4]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WeeklyDigest.swift::moverSentence/2[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WeeklyDigest.swift::valuesInRange/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WeeklyDigest.swift::mondayOfWeek/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WeeklyDigest.swift::addDays/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WeeklyDigest.swift::weekday/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WeeklyDigest.swift::daysInMonth/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WeeklyDigest.swift::isLeap/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WeeklyDigest.swift::parseYMD/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WeeklyDigest.swift::formatYMD/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WeeklyDigest.swift::julianDayNumber/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WeeklyDigest.swift::fromJulianDayNumber/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WeeklyDigest.swift::emptyDigest/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WeeklyDigest.swift::roundedInt/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WeeklyDigest.swift::round1/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutDetector.swift::init/5[defaults=1,2,3,4,5]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutDetector.swift::init/12[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutDetector.swift::minExerciseMin@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutDetector.swift::hrMarginBPM@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutDetector.swift::motionThreshold@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutDetector.swift::motionSmoothS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutDetector.swift::mergeGapS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutDetector.swift::minIntensityZ2Plus@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutDetector.swift::alignToleranceS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutDetector.swift::restingPercentile@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutDetector.swift::bridgeGapS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutDetector.swift::activitySeries/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutDetector.swift::cleanHR/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutDetector.swift::deriveRestingHR/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutDetector.swift::nearest/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutDetector.swift::smoothedIntensity/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutDetector.swift::boutIntensity/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutDetector.swift::bridgeRuns/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutDetector.swift::backdatedStart/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutDetector.swift::detect/6[defaults=3,4,5,6]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutDetector.swift::backfillWorkout/5[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutDetector.swift::male@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutDetector.swift::female@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutDetector.swift::nonbinary@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutDetector.swift::activeHRRFraction@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutDetector.swift::dayActiveHRRFraction@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutDetector.swift::workoutDivisor@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutDetector.swift::resolveCoeffs/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutDetector.swift::restingKcalPerS/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutDetector.swift::vo2maxFor/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutDetector.swift::activeKcalPerS/6[defaults=6]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutDetector.swift::estimateBoutCalories/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutDetector.swift::estimateDayCalories/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutTypeClassifier.swift::init/12[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutTypeClassifier.swift::init/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutTypeClassifier.swift::classify/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutTypeClassifier.swift::init/0[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutTypeClassifier.swift::classify/1[defaults=-]#2", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutTypeClassifier.swift::minTickCoverage@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutTypeClassifier.swift::minPlausibleScore@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutTypeClassifier.swift::minMargin@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutTypeClassifier.swift::classify/1[defaults=-]#3", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutTypeClassifier.swift::allScores/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutTypeClassifier.swift::rampUp/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutTypeClassifier.swift::rampDown/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutTypeClassifier.swift::plateau/5[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutTypeClassifier.swift::tickReliability/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutTypeClassifier.swift::gaitAbsenceScore/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutTypeClassifier.swift::runScore/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutTypeClassifier.swift::walkScore/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutTypeClassifier.swift::strengthScore/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutTypeClassifier.swift::cycleScore/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutTypeClassifier.swift::skiScore/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutTypeClassifier.swift::extract/8[defaults=6,7,8]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutTypeClassifier.swift::mean/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutTypeClassifier.swift::variance/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "Packages/StrandAnalytics/Sources/StrandAnalytics/WorkoutTypeClassifier.swift::stddev/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + } + ], + "platform-test": [] +} diff --git a/Tools/parity_ratchet.py b/Tools/parity_ratchet.py new file mode 100644 index 0000000000..bbf1f27667 --- /dev/null +++ b/Tools/parity_ratchet.py @@ -0,0 +1,1277 @@ +#!/usr/bin/env python3 +"""Declaration-level completeness and coverage ratchet for Swift/Kotlin twins. + +The lexer is deliberately lexical and standard-library only. It extends the +existing ledger idiom (path + name + arity + ordinal), importing the ledger's +comment/string masking, declaration patterns, brace matching, and owner parser +instead of maintaining a second copy of those primitives. +""" + +from __future__ import annotations + +import argparse +import json +import os +import re +import subprocess +import sys +import xml.etree.ElementTree as ET +from collections import Counter +from dataclasses import dataclass +from pathlib import Path +from typing import Iterable + +import parity_ledger as ledger + + +ROOT = Path(__file__).resolve().parent.parent +SHARD_NAME = "parity-exempt.json" +LEDGER_BASELINE = "Tools/parity_ledger_baseline.json" +SWIFT_RUNNER = "Packages/StrandAnalytics/Tests/StrandAnalyticsTests/ParityRunner.swift" +KOTLIN_RUNNER = "android/app/src/test/java/com/noop/analytics/ParityRunner.kt" + + +class RatchetError(ValueError): + """A ratchet input or invariant is invalid.""" + + +class LexError(RatchetError): + """Source syntax cannot be inventoried safely.""" + + +@dataclass(frozen=True) +class ModulePair: + name: str + swift_dir: Path + kotlin_dir: Path + + +@dataclass(frozen=True) +class Declaration: + language: str + path: str + owner: str + name: str + kind: str + arity: int + defaults: tuple[int, ...] + ordinal: int + line: int + end_line: int + coverable: bool = True + + @property + def key(self) -> str: + if self.kind in {"function", "initializer"}: + defaults = ",".join(str(item) for item in self.defaults) or "-" + return ( + f"{self.path}::{self.name}/{self.arity}" + f"[defaults={defaults}]#{self.ordinal}" + ) + return f"{self.path}::{self.name}@{self.kind}#{self.ordinal}" + + +@dataclass(frozen=True) +class ShardEntry: + key: str + issue: int + reason: str | None = None + test: str | None = None + + +@dataclass(frozen=True) +class Shard: + path: Path + module: str + exempt: tuple[ShardEntry, ...] + platform_test: tuple[ShardEntry, ...] + + +@dataclass(frozen=True) +class CoverageMethod: + name: str + line: int + executions: int + # Parameter count from the JaCoCo method descriptor; None where the report + # format carries no signature (LCOV FN records). + arity: int | None = None + + +def _jvm_descriptor_arity(desc: str | None) -> int | None: + """Count the parameters in a JVM method descriptor like (Ljava/util/List;IJ)V.""" + if not desc or not desc.startswith("("): + return None + index, count = 1, 0 + while index < len(desc) and desc[index] != ")": + char = desc[index] + if char == "[": + index += 1 + continue + if char == "L": + end = desc.find(";", index) + if end == -1: + return None + index = end + 1 + else: + index += 1 + count += 1 + return count + + +@dataclass +class CoverageSource: + lines: dict[int, int] + methods: list[CoverageMethod] + + +def module_pairs(root: Path) -> list[ModulePair]: + """Return ledger module pairs; a pair becomes sharp only when both shards exist.""" + pairs: list[ModulePair] = [] + for swift_glob, kotlin_glob in zip(ledger.SWIFT_GLOBS, ledger.KOTLIN_GLOBS): + swift_scope = Path(swift_glob.split("/**", 1)[0]) + # SwiftPM's module directory is Sources/; the ledger glob + # intentionally stops at Sources so it can see auxiliary targets too. + package_name = swift_scope.parts[1] + swift_rel = (swift_scope / package_name).as_posix() + kotlin_rel = kotlin_glob.split("/**", 1)[0] + swift_name = Path(swift_rel).name + kotlin_name = Path(kotlin_rel).name + pairs.append(ModulePair(f"{swift_name}<->{kotlin_name}", root / swift_rel, root / kotlin_rel)) + return pairs + + +def _line(text: str, offset: int) -> int: + return text.count("\n", 0, offset) + 1 + + +def _mask_comments(text: str) -> str: + """Mask comments while preserving strings and line structure.""" + out = list(text) + index = 0 + state = "code" + quote = "" + block_depth = 0 + while index < len(text): + if state == "code": + if text.startswith("//", index): + out[index : index + 2] = " " + index += 2 + state = "line" + elif text.startswith("/*", index): + out[index : index + 2] = " " + index += 2 + block_depth = 1 + state = "block" + elif text.startswith('"""', index): + quote = '"""' + index += 3 + state = "string" + elif text[index] in "\"'": + quote = text[index] + index += 1 + state = "string" + else: + index += 1 + elif state == "line": + if text[index] == "\n": + state = "code" + else: + out[index] = " " + index += 1 + elif state == "block": + if text.startswith("/*", index): + out[index : index + 2] = " " + index += 2 + block_depth += 1 + elif text.startswith("*/", index): + out[index : index + 2] = " " + index += 2 + block_depth -= 1 + if block_depth == 0: + state = "code" + else: + if text[index] != "\n": + out[index] = " " + index += 1 + elif quote == '"""' and text.startswith(quote, index): + index += 3 + state = "code" + elif quote != '"""' and text[index] == "\\" and index + 1 < len(text): + index += 2 + elif quote != '"""' and text[index] == quote: + index += 1 + state = "code" + else: + index += 1 + return "".join(out) + + +def _brace_depths(masked: str) -> list[int]: + depths = [0] * (len(masked) + 1) + depth = 0 + for index, char in enumerate(masked): + depths[index] = depth + if char == "{": + depth += 1 + elif char == "}": + depth -= 1 + if depth < 0: + raise LexError(f"unmatched closing brace at line {_line(masked, index)}") + depths[len(masked)] = depth + if depth: + raise LexError("unclosed brace at end of file") + return depths + + +def _matching(masked: str, opening: int, left: str, right: str) -> int: + depth = 0 + for index in range(opening, len(masked)): + char = masked[index] + if char == left: + depth += 1 + elif char == right: + depth -= 1 + if depth == 0: + return index + raise LexError(f"unclosed {left!r} at line {_line(masked, opening)}") + + +def _top_level_segments(masked: str, opening: int, closing: int) -> list[tuple[int, int]]: + pairs = {")": "(", "]": "[", "}": "{", ">": "<"} + stack: list[str] = [] + starts = [opening + 1] + for index in range(opening + 1, closing): + char = masked[index] + if char in "([{": + stack.append(char) + elif char == "<": + if index + 1 >= closing or masked[index + 1] not in "= ": + stack.append(char) + elif char in pairs: + if stack and stack[-1] == pairs[char]: + stack.pop() + elif char == "," and not stack: + starts.append(index + 1) + ends = [item - 1 for item in starts[1:]] + [closing] + return [(start, end) for start, end in zip(starts, ends) if masked[start:end].strip()] + + +def _defaults(masked: str, opening: int, closing: int) -> tuple[int, tuple[int, ...]]: + segments = _top_level_segments(masked, opening, closing) + defaulted: list[int] = [] + for position, (start, end) in enumerate(segments, 1): + stack: list[str] = [] + for index in range(start, end): + char = masked[index] + if char in "([{<": + stack.append(char) + elif char in ")]}>": + if stack: + stack.pop() + elif char == "=" and not stack: + if index + 1 < end and masked[index + 1] in "=>": + continue + defaulted.append(position) + break + return len(segments), tuple(defaulted) + + +def _direct_context( + spans: list[tuple[int, int, str]], depths: list[int], offset: int, fallback: str +) -> tuple[bool, str]: + containing = [span for span in spans if span[0] < offset < span[1]] + if not containing: + return depths[offset] == 0, fallback + opening, _closing, owner = max(containing, key=lambda item: item[0]) + return depths[offset] == depths[opening] + 1, owner + + +def _kotlin_type_layout( + masked: str, +) -> tuple[list[tuple[int, int, str]], list[tuple[int, int, str]]]: + """Return real Kotlin body spans plus all primary-header extents. + + The ledger's intentionally loose owner parser can attach a bodyless data + class to the next function body. That is unsafe for a fail-closed + declaration inventory because locals then look like member declarations. + """ + spans: list[tuple[int, int, str]] = [] + headers: list[tuple[int, int, str]] = [] + for match in ledger.TYPE_DECLARATION["kotlin"].finditer(masked): + index = match.end() + stack: list[str] = [] + pairs = {")": "(", "]": "[", ">": "<"} + header_end = len(masked) + opening: int | None = None + while index < len(masked): + char = masked[index] + if char in "([<": + stack.append(char) + elif char in pairs: + if stack and stack[-1] == pairs[char]: + stack.pop() + elif char == "{" and stack: + index = ledger._matching_brace(masked, index) + elif char == "{" and not stack: + opening = index + header_end = index + break + elif char == "\n" and not stack: + next_code = index + 1 + while next_code < len(masked) and masked[next_code].isspace(): + next_code += 1 + prior = masked[match.end() : index].rstrip() + continuation = ( + (prior and prior[-1] in ":,") + or masked.startswith(":", next_code) + or re.match(r"where\b", masked[next_code:]) is not None + or (next_code < len(masked) and masked[next_code] == "{") + ) + if not continuation: + header_end = index + break + index += 1 + headers.append((match.start(), header_end, match.group(1))) + if opening is not None: + spans.append((opening, ledger._matching_brace(masked, opening), match.group(1))) + return spans, headers + + +def _type_layout( + masked: str, language: str +) -> tuple[list[tuple[int, int, str]], list[tuple[int, int, str]]]: + if language == "kotlin": + return _kotlin_type_layout(masked) + spans = ledger._type_spans(masked, language) + headers: list[tuple[int, int, str]] = [] + for match in ledger.TYPE_DECLARATION[language].finditer(masked): + opening = masked.find("{", match.end()) + if opening >= 0: + headers.append((match.start(), opening, match.group(1))) + return spans, headers + + +def _body_extent(masked: str, closing_paren: int, language: str) -> tuple[int, bool]: + """Return body end offset and whether the declaration has executable code.""" + index = closing_paren + 1 + nesting = 0 + while index < len(masked): + char = masked[index] + if char in "([<": + nesting += 1 + elif char in ")]>": + nesting = max(0, nesting - 1) + elif not nesting and char == "{": + return ledger._matching_brace(masked, index), True + elif not nesting and language == "kotlin" and char == "=" and not masked.startswith("=>", index): + newline = masked.find("\n", index) + return (len(masked) if newline < 0 else newline), True + elif not nesting and char == "\n": + # Return types and where clauses can wrap; indented continuation lines do not + # begin with a declaration keyword. Stop only at the next declaration/brace. + tail = masked[index + 1 :] + next_line = tail.split("\n", 1)[0] + if re.match(r"\s*(?:[A-Za-z_][A-Za-z0-9_.?<>\[\], ]*\s*)?$", next_line): + index += 1 + continue + return closing_paren, False + elif not nesting and char == "}": + return closing_paren, False + index += 1 + return closing_paren, False + + +def _function_declarations( + root: Path, + path: Path, + language: str, + text: str, + masked: str, + spans: list[tuple[int, int, str]], + depths: list[int], +) -> list[Declaration]: + pattern = ledger.SWIFT_FUNC if language == "swift" else ledger.KOTLIN_FUNC + parsed = {item.opening: item for item in ledger.parse_functions(root, path, language)} + fallback = path.stem.replace("+Trace", "Trace") + declarations: list[Declaration] = [] + ordinals: Counter[tuple[str, int, tuple[int, ...]]] = Counter() + matched_keywords: set[int] = set() + for match in pattern.finditer(masked): + keyword = masked.find("func" if language == "swift" else "fun", match.start(), match.end()) + direct, owner = _direct_context(spans, depths, keyword, fallback) + if not direct: + continue + matched_keywords.add(keyword) + opening = match.end() - 1 + item = parsed.get(opening) + if item is None: + raise LexError(f"unclosed parameter list in {path}:{_line(text, keyword)}") + closing = _matching(masked, opening, "(", ")") + arity, defaults = _defaults(masked, opening, closing) + if ledger._arity(masked, opening) != arity: + raise LexError(f"unsupported parameter syntax in {path}:{item.line}") + end, coverable = _body_extent(masked, closing, language) + ordinal_key = (item.name, arity, defaults) + ordinals[ordinal_key] += 1 + declarations.append( + Declaration( + language, + ledger._relative(root, path), + owner, + item.name, + "function", + arity, + defaults, + ordinals[ordinal_key], + item.line, + _line(text, end), + coverable, + ) + ) + keyword_pattern = r"\bfunc\b" if language == "swift" else r"\bfun\b(?!\s+interface\b)" + for keyword_match in re.finditer(keyword_pattern, masked): + direct, _owner = _direct_context(spans, depths, keyword_match.start(), fallback) + if direct and keyword_match.start() not in matched_keywords: + raise LexError( + f"unsupported {language} function syntax in {path}:{_line(text, keyword_match.start())}" + ) + return declarations + + +def _swift_initializers( + root: Path, + path: Path, + text: str, + masked: str, + spans: list[tuple[int, int, str]], + depths: list[int], +) -> list[Declaration]: + fallback = path.stem.replace("+Trace", "Trace") + out: list[Declaration] = [] + ordinals: Counter[tuple[int, tuple[int, ...]]] = Counter() + matched: set[int] = set() + for match in re.finditer(r"\binit\s*(?:[?!]\s*)?\(", masked): + direct, owner = _direct_context(spans, depths, match.start(), fallback) + if not direct: + continue + matched.add(match.start()) + opening = match.end() - 1 + closing = _matching(masked, opening, "(", ")") + arity, defaults = _defaults(masked, opening, closing) + end, coverable = _body_extent(masked, closing, "swift") + ordinal_key = (arity, defaults) + ordinals[ordinal_key] += 1 + out.append( + Declaration( + "swift", ledger._relative(root, path), owner, "init", "initializer", + arity, defaults, ordinals[ordinal_key], _line(text, match.start()), + _line(text, end), coverable, + ) + ) + for match in re.finditer(r"\binit\b", masked): + direct, _owner = _direct_context(spans, depths, match.start(), fallback) + # `.init(` call sites are not declarations. + prefix = masked[max(0, match.start() - 2) : match.start()] + if direct and not prefix.rstrip().endswith(".") and match.start() not in matched: + raise LexError(f"unsupported Swift init syntax in {path}:{_line(text, match.start())}") + return out + + +def _property_declarations( + root: Path, + path: Path, + language: str, + text: str, + masked: str, + spans: list[tuple[int, int, str]], + depths: list[int], +) -> list[Declaration]: + fallback = path.stem.replace("+Trace", "Trace") + word = r"(?:var|let)" if language == "swift" else r"(?:val|var)" + pattern = re.compile(rf"\b{word}\s+(`?[A-Za-z_][A-Za-z0-9_]*`?)") + _layout_spans, type_headers = _type_layout(masked, language) + out: list[Declaration] = [] + ordinals: Counter[tuple[str, str]] = Counter() + matched_keywords: set[int] = set() + matched_getters: set[int] = set() + declaration_header = re.compile( + r"(?m)^[ \t]*(?:(?:@[A-Za-z_][^\s]*|public|private|fileprivate|internal|protected|" + r"open|static|final|override|required|convenience|mutating|nonmutating|lazy|weak|" + r"unowned|abstract|const|lateinit|tailrec|suspend|inline|infix|operator|external|" + r"data|sealed|annotation|value|inner|companion)\s+)*(?:func|fun|var|let|val|init\b|" + r"constructor\b|struct\b|class\b|enum\b|actor\b|protocol\b|extension\b|object\b|interface\b)" + ) + comment_masked = _mask_comments(text) + for match in pattern.finditer(masked): + direct, owner = _direct_context(spans, depths, match.start(), fallback) + if not direct: + continue + matched_keywords.add(match.start()) + header = next( + (item for item in type_headers if item[0] < match.start() < item[1]), + None, + ) + if header is not None: + owner = header[2] + name = match.group(1).strip("`") + base_depth = depths[match.start()] + containing = [item for item in spans if item[0] < match.start() < item[1]] + limit = min((item[1] for item in containing), default=len(masked)) + if header is not None: + stack: list[str] = [] + pairs = {")": "(", "]": "[", "}": "{", ">": "<"} + limit = min(limit, header[1]) + for index in range(match.end(), limit): + char = masked[index] + if char in "([{<": + stack.append(char) + elif char == ")" and not stack: + limit = index + break + elif char in pairs: + if stack and stack[-1] == pairs[char]: + stack.pop() + elif char == "," and not stack: + limit = index + break + for candidate in declaration_header.finditer(masked, match.end(), limit): + if depths[candidate.start()] == base_depth: + limit = candidate.start() + break + for semicolon in re.finditer(r";", masked[match.end() : limit]): + absolute = match.end() + semicolon.start() + if depths[absolute] == base_depth: + limit = absolute + break + tail = masked[match.end() : limit] + equals = re.search(r"(?])=(?!=)", tail) + getter = ( + re.search(r"(?= 0 and (equals is None or brace < equals.start()): + kind = "computed-property" + opening = match.end() + brace + body_end = ledger._matching_brace(masked, opening) + elif language == "kotlin" and getter is not None and (equals is None or getter.start() < equals.start()): + kind = "computed-property" + getter_absolute = match.end() + getter.start() + matched_getters.add(getter_absolute) + getter_brace = masked.find("{", getter_absolute, limit) + getter_equals = masked.find("=", getter_absolute, limit) + if getter_brace >= 0 and (getter_equals < 0 or getter_brace < getter_equals): + body_end = ledger._matching_brace(masked, getter_brace) + elif equals is not None or delegated is not None: + kind = "property-initializer" + if kind is None: + if brace >= 0 or getter is not None: + raise LexError( + f"unsupported {language} property syntax in {path}:{_line(text, match.start())}" + ) + continue # A stored/abstract property without executable code is known and excluded. + ordinal_key = (name, kind) + ordinals[ordinal_key] += 1 + out.append( + Declaration( + language, ledger._relative(root, path), owner, name, kind, 0, (), + ordinals[ordinal_key], _line(text, match.start()), _line(text, body_end), True, + ) + ) + for keyword_match in re.finditer(r"\b(?:var|let)\b" if language == "swift" else r"\b(?:val|var)\b", masked): + direct, _owner = _direct_context(spans, depths, keyword_match.start(), fallback) + if direct and keyword_match.start() not in matched_keywords: + raise LexError( + f"unsupported {language} property syntax in {path}:{_line(text, keyword_match.start())}" + ) + if language == "kotlin": + for getter_match in re.finditer(r"(? list[Declaration]: + out: list[Declaration] = [] + fallback = path.stem.replace("+Trace", "Trace") + ordinals: Counter[tuple[str, int, tuple[int, ...]]] = Counter() + matched_tokens: set[int] = set() + companion_ranges: list[tuple[int, int, str]] = [] + for companion in re.finditer(r"\bcompanion\s+object(?:\s+[A-Za-z_][A-Za-z0-9_]*)?\s*\{", masked): + opening = companion.end() - 1 + closing = ledger._matching_brace(masked, opening) + owner = ledger._owner_at(spans, companion.start(), path.stem) + companion_ranges.append((opening, closing, owner)) + for match in re.finditer(r"\binit\s*\{", masked): + direct, owner = _direct_context(spans, depths, match.start(), fallback) + name = "init" + kind = "initializer" + companion = next( + ( + item + for item in companion_ranges + if item[0] < match.start() < item[1] + and depths[match.start()] == depths[item[0]] + 1 + ), + None, + ) + if companion is not None: + owner = companion[2] + name = "" + kind = "companion-init" + elif not direct: + raise LexError(f"unsupported Kotlin init syntax in {path}:{_line(text, match.start())}") + matched_tokens.add(match.start()) + opening = match.end() - 1 + end = ledger._matching_brace(masked, opening) + ordinal_key = (name, 0, ()) + ordinals[ordinal_key] += 1 + out.append( + Declaration( + "kotlin", ledger._relative(root, path), owner, name, kind, 0, (), + ordinals[ordinal_key], _line(text, match.start()), _line(text, end), True, + ) + ) + for match in re.finditer(r"\bconstructor\s*\(", masked): + direct, owner = _direct_context(spans, depths, match.start(), fallback) + if not direct: + raise LexError( + f"unsupported Kotlin constructor syntax in {path}:{_line(text, match.start())}" + ) + matched_tokens.add(match.start()) + opening = match.end() - 1 + closing = _matching(masked, opening, "(", ")") + arity, defaults = _defaults(masked, opening, closing) + end, _body = _body_extent(masked, closing, "kotlin") + if end == closing: + newline = masked.find("\n", closing) + end = len(masked) if newline < 0 else newline + ordinal_key = ("constructor", arity, defaults) + ordinals[ordinal_key] += 1 + out.append( + Declaration( + "kotlin", ledger._relative(root, path), owner, "constructor", "initializer", + arity, defaults, ordinals[ordinal_key], _line(text, match.start()), + _line(text, end), True, + ) + ) + for token in re.finditer(r"\b(?:init|constructor)\b", masked): + if token.start() not in matched_tokens: + raise LexError( + f"unsupported Kotlin {token.group(0)} syntax in {path}:{_line(text, token.start())}" + ) + return out + + +def lex_file(root: Path, path: Path, language: str) -> list[Declaration]: + """Inventory executable declarations or raise when syntax cannot be classified.""" + root = root.resolve() + path = path.resolve() + if language not in {"swift", "kotlin"}: + raise ValueError(f"unknown language {language!r}") + text = path.read_text(encoding="utf-8") + masked = ledger._mask_non_code(text) + depths = _brace_depths(masked) + spans, _headers = _type_layout(masked, language) + out = _function_declarations(root, path, language, text, masked, spans, depths) + if language == "swift": + out.extend(_swift_initializers(root, path, text, masked, spans, depths)) + out.extend(_property_declarations(root, path, language, text, masked, spans, depths)) + if language == "kotlin": + out.extend(_kotlin_initializers(root, path, text, masked, spans, depths)) + keys = [item.key for item in out] + if len(keys) != len(set(keys)): + duplicates = sorted(key for key, count in Counter(keys).items() if count > 1) + raise LexError(f"declaration key collision in {path}: {duplicates}") + return sorted(out, key=lambda item: (item.line, item.key)) + + +def lex_tree(root: Path, directory: Path, language: str) -> list[Declaration]: + suffix = ".swift" if language == "swift" else ".kt" + return [ + declaration + for path in sorted(directory.rglob(f"*{suffix}")) + for declaration in lex_file(root, path, language) + ] + + +def _entry(raw: object, category: str, path: Path) -> ShardEntry: + if not isinstance(raw, dict): + raise RatchetError(f"{path}: {category} entries must be objects") + key = raw.get("key") + if not isinstance(key, str) or not key: + raise RatchetError(f"{path}: {category} entry needs a non-empty key") + issue = raw.get("issue") + if not isinstance(issue, int) or isinstance(issue, bool) or issue <= 0: + raise RatchetError(f"{path}: {category} entry {key} needs a positive issue") + reason = raw.get("reason") + test = raw.get("test") + if category == "exempt" and (not isinstance(reason, str) or not reason.strip()): + raise RatchetError(f"{path}: exempt entry {key} needs a non-empty reason") + if category == "platform-test" and (not isinstance(test, str) or not test.strip()): + raise RatchetError(f"{path}: platform-test entry {key} needs a non-empty test reference") + return ShardEntry(key, issue, reason if isinstance(reason, str) else None, test if isinstance(test, str) else None) + + +def load_shard(path: Path) -> Shard: + try: + raw = json.loads(path.read_text(encoding="utf-8")) + except (OSError, json.JSONDecodeError) as exc: + raise RatchetError(f"cannot read shard {path}: {exc}") from exc + if not isinstance(raw, dict) or raw.get("schema_version") != 1: + raise RatchetError(f"{path}: schema_version must be 1") + module = raw.get("module") + if not isinstance(module, str) or not module: + raise RatchetError(f"{path}: module must be a non-empty string") + exempt_raw = raw.get("exempt") + platform_raw = raw.get("platform-test") + if not isinstance(exempt_raw, list) or not isinstance(platform_raw, list): + raise RatchetError(f"{path}: exempt and platform-test must be arrays") + exempt = tuple(_entry(item, "exempt", path) for item in exempt_raw) + platform = tuple(_entry(item, "platform-test", path) for item in platform_raw) + keys = [item.key for item in exempt + platform] + if len(keys) != len(set(keys)): + raise RatchetError(f"{path}: a declaration may occur only once") + return Shard(path, module, exempt, platform) + + +def registered_differential(root: Path) -> tuple[set[str], list[str]]: + errors: list[str] = [] + try: + # Registration names are string literals, so the ledger's normal source mask + # would intentionally erase the very tokens we need here. Anchor the raw-text + # patterns to dispatcher syntax instead; prose/comments do not contain these + # case-label/arrow forms in either runner. + swift = (root / SWIFT_RUNNER).read_text(encoding="utf-8") + kotlin = (root / KOTLIN_RUNNER).read_text(encoding="utf-8") + except OSError as exc: + return set(), [f"cannot read differential runner: {exc}"] + swift_names = set(re.findall(r"\bcase\s+\"([A-Za-z_][A-Za-z0-9_]*)\"\s*:", swift)) + kotlin_names = set(re.findall(r"\"([A-Za-z_][A-Za-z0-9_]*)\"\s*->", kotlin)) + if swift_names != kotlin_names: + errors.append( + "differential runner registrations disagree: " + f"swift-only={sorted(swift_names - kotlin_names)} " + f"kotlin-only={sorted(kotlin_names - swift_names)}" + ) + if not swift_names & kotlin_names: + errors.append("differential runner registry is empty") + return swift_names & kotlin_names, errors + + +def audit_module_pair( + root: Path, pair: ModulePair, *, base_shards: set[str] | None = None +) -> tuple[list[str], dict[str, int]]: + counts = {"differential": 0, "platform-test": 0, "exempt": 0} + swift_shard_path = pair.swift_dir / SHARD_NAME + kotlin_shard_path = pair.kotlin_dir / SHARD_NAME + exists = (swift_shard_path.exists(), kotlin_shard_path.exists()) + if not any(exists): + relative_shards = { + swift_shard_path.relative_to(root).as_posix(), + kotlin_shard_path.relative_to(root).as_posix(), + } + if base_shards is not None and relative_shards & base_shards: + return [f"{pair.name}: parity ratchet disarmed; merge base had shards, current tree has none"], counts + print(f"NOTICE: {pair.name}: no parity-exempt shards; module pair is not sharp yet") + return [], counts + if not all(exists): + missing = kotlin_shard_path if exists[0] else swift_shard_path + return [f"{pair.name}: sharp module pair is missing {missing.relative_to(root)}"], counts + errors: list[str] = [] + try: + shards = (load_shard(swift_shard_path), load_shard(kotlin_shard_path)) + inventories = { + "swift": lex_tree(root, pair.swift_dir, "swift"), + "kotlin": lex_tree(root, pair.kotlin_dir, "kotlin"), + } + except RatchetError as exc: + return [str(exc)], counts + registered, registry_errors = registered_differential(root) + errors.extend(registry_errors) + differential_keys: set[str] = set() + for language, declarations in inventories.items(): + for name in sorted(registered): + matches = [item for item in declarations if item.kind == "function" and item.name == name] + if len(matches) != 1: + errors.append( + f"{pair.name}: differential {language} function {name} resolves to {len(matches)} declarations" + ) + else: + differential_keys.add(matches[0].key) + counts["differential"] = len(registered) + for language, shard in zip(("swift", "kotlin"), shards): + inventory_keys = {item.key for item in inventories[language]} + exempt_keys = {item.key for item in shard.exempt} + platform_keys = {item.key for item in shard.platform_test} + counts["exempt"] += len(exempt_keys) + counts["platform-test"] += len(platform_keys) + for key in sorted((exempt_keys | platform_keys) - inventory_keys): + errors.append(f"{shard.path.relative_to(root)}: stale declaration {key}") + covered = exempt_keys | platform_keys | differential_keys + for declaration in inventories[language]: + if declaration.key not in covered: + errors.append( + f"{declaration.path}:{declaration.line}: uncovered declaration {declaration.key}" + ) + for key in sorted((exempt_keys | platform_keys) & differential_keys): + errors.append(f"{shard.path.relative_to(root)}: differential declaration listed as exception: {key}") + return errors, counts + + +def audit_inventory(root: Path, *, base: str | None = None) -> tuple[list[str], dict[str, int]]: + total = {"differential": 0, "platform-test": 0, "exempt": 0} + errors: list[str] = [] + base_shards = _base_shards(root, base) if base is not None else None + for pair in module_pairs(root): + pair_errors, counts = audit_module_pair(root, pair, base_shards=base_shards) + errors.extend(pair_errors) + for key in total: + total[key] += counts[key] + return errors, total + + +def parse_lcov(path: Path) -> dict[str, CoverageSource]: + coverage: dict[str, CoverageSource] = {} + current: str | None = None + function_lines: list[tuple[int, str]] = [] + function_counts: Counter[str] = Counter() + + def finish_record() -> None: + if current is None: + return + source = coverage[current] + source.methods.extend( + CoverageMethod(name, line, function_counts[name]) + for line, name in function_lines + ) + + try: + lines = path.read_text(encoding="utf-8").splitlines() + except OSError as exc: + raise RatchetError(f"cannot read Swift LCOV report {path}: {exc}") from exc + for line_number, raw in enumerate(lines, 1): + if raw.startswith("SF:"): + finish_record() + current = raw[3:] + coverage.setdefault(current, CoverageSource({}, [])) + function_lines = [] + function_counts = Counter() + elif raw.startswith("FN:"): + if current is None: + raise RatchetError(f"{path}:{line_number}: FN record before SF") + fields = raw[3:].split(",", 1) + if len(fields) != 2: + raise RatchetError(f"{path}:{line_number}: malformed FN record") + function_lines.append((int(fields[0]), fields[1])) + elif raw.startswith("FNDA:"): + if current is None: + raise RatchetError(f"{path}:{line_number}: FNDA record before SF") + fields = raw[5:].split(",", 1) + if len(fields) != 2: + raise RatchetError(f"{path}:{line_number}: malformed FNDA record") + function_counts[fields[1]] += int(fields[0]) + elif raw.startswith("DA:"): + if current is None: + raise RatchetError(f"{path}:{line_number}: DA record before SF") + fields = raw[3:].split(",") + if len(fields) < 2: + raise RatchetError(f"{path}:{line_number}: malformed DA record") + source_lines = coverage[current].lines + source_lines[int(fields[0])] = source_lines.get(int(fields[0]), 0) + int(fields[1]) + elif raw == "end_of_record": + finish_record() + current = None + function_lines = [] + function_counts = Counter() + finish_record() + if not coverage: + raise RatchetError(f"Swift LCOV report {path} contains no source records") + return coverage + + +def parse_jacoco(path: Path) -> dict[str, CoverageSource]: + coverage: dict[str, CoverageSource] = {} + try: + tree = ET.parse(path) + except (OSError, ET.ParseError) as exc: + raise RatchetError(f"cannot read Kotlin JaCoCo report {path}: {exc}") from exc + for package in tree.getroot().iter("package"): + package_name = package.get("name", "") + for source in package.findall("sourcefile"): + name = source.get("name") + if not name: + continue + source_path = f"{package_name}/{name}" if package_name else name + record = coverage.setdefault(source_path, CoverageSource({}, [])) + for item in source.findall("line"): + number = int(item.attrib["nr"]) + record.lines[number] = int(item.attrib.get("ci", "0")) + for class_item in package.findall("class"): + source_name = class_item.get("sourcefilename") + if not source_name: + continue + source_path = f"{package_name}/{source_name}" if package_name else source_name + record = coverage.setdefault(source_path, CoverageSource({}, [])) + for method in class_item.findall("method"): + name = method.get("name") + line = method.get("line") + counter = next( + (item for item in method.findall("counter") if item.get("type") == "METHOD"), + None, + ) + if name and line and counter is not None: + record.methods.append( + CoverageMethod( + name, + int(line), + int(counter.get("covered", "0")), + _jvm_descriptor_arity(method.get("desc")), + ) + ) + if not coverage: + raise RatchetError(f"Kotlin JaCoCo report {path} contains no source records") + return coverage + + +def _coverage_for( + report: dict[str, CoverageSource], declaration: Declaration +) -> CoverageSource | None: + normalized = declaration.path.replace("\\", "/") + candidates = [source for path, source in report.items() if normalized.endswith(path.replace("\\", "/")) or path.replace("\\", "/").endswith(normalized)] + if len(candidates) == 1: + return candidates[0] + # JaCoCo paths begin at the package; filename is safe only when unique. + filename_matches = [source for path, source in report.items() if Path(path).name == Path(normalized).name] + return filename_matches[0] if len(filename_matches) == 1 else None + + +def _function_executions( + source: CoverageSource, declaration: Declaration, language: str +) -> tuple[str, int]: + """Return (found|missing|fallback, executions) for a function entry record.""" + if not source.methods: + return "fallback", 0 + if language == "swift": + encoded = f"{len(declaration.name)}{declaration.name}" + named = [ + item + for item in source.methods + if item.name == declaration.name or encoded in item.name + ] + # Swift mangling may substitute repeated name fragments (for example + # `trimpToStrain` becomes `trimpToC0_`). Source position is still an + # exact function-level record when there is one unambiguous entry. + if not named: + positioned = [ + item + for item in source.methods + if declaration.line <= item.line <= declaration.end_line + ] + if positioned: + first_line = min(item.line for item in positioned) + first = [item for item in positioned if item.line == first_line] + if len(first) == 1: + return "found", first[0].executions + else: + named = [ + item + for item in source.methods + if item.name == declaration.name + and (item.arity is None or item.arity == declaration.arity) + ] + candidates = [ + item + for item in named + if declaration.line <= item.line <= declaration.end_line + ] + if not candidates: + return "missing", 0 + entry_line = min(item.line for item in candidates) + return "found", sum(item.executions for item in candidates if item.line == entry_line) + + +def coverage_errors( + declarations: dict[str, list[Declaration]], + differential: set[str], + *, + swift_lcov: Path, + kotlin_jacoco: Path, + platform_keys: dict[str, set[str]] | None = None, +) -> list[str]: + reports = {"swift": parse_lcov(swift_lcov), "kotlin": parse_jacoco(kotlin_jacoco)} + reports_have_methods = { + language: any(source.methods for source in report.values()) + for language, report in reports.items() + } + errors: list[str] = [] + selected: dict[str, list[Declaration]] = {"swift": [], "kotlin": []} + for language in selected: + for name in sorted(differential): + matches = [item for item in declarations[language] if item.kind == "function" and item.name == name] + if len(matches) != 1: + errors.append(f"differential {language} function {name} resolves to {len(matches)} declarations") + else: + selected[language].append(matches[0]) + if platform_keys: + keyed = {item.key: item for item in declarations[language]} + for key in sorted(platform_keys.get(language, set())): + if key in keyed: + selected[language].append(keyed[key]) + for language, items in selected.items(): + for declaration in items: + if not declaration.coverable: + errors.append(f"{declaration.path}:{declaration.line}: {declaration.key} has no executable body") + continue + source = _coverage_for(reports[language], declaration) + if source is None: + errors.append(f"{declaration.path}:{declaration.line}: no {language} coverage source record") + continue + if declaration.kind == "function": + if not source.methods and reports_have_methods[language]: + errors.append( + f"{declaration.path}:{declaration.line}: no {language} function coverage record for {declaration.key}" + ) + continue + method_status, executions = _function_executions(source, declaration, language) + if method_status == "found": + if executions <= 0: + errors.append( + f"{declaration.path}:{declaration.line}: registered function was not executed ({declaration.key})" + ) + continue + if method_status == "missing": + errors.append( + f"{declaration.path}:{declaration.line}: no {language} function coverage record for {declaration.key}" + ) + continue + print( + f"NOTICE: line coverage fallback for {declaration.path}:{declaration.line} ({declaration.key})" + ) + instrumented = sorted( + line for line in source.lines if declaration.line <= line <= declaration.end_line + ) + if not instrumented: + errors.append(f"{declaration.path}:{declaration.line}: no instrumented line for {declaration.key}") + continue + for line in instrumented: + if source.lines[line] <= 0: + errors.append(f"{declaration.path}:{line}: registered declaration line was not executed ({declaration.key})") + return errors + + +def verify_coverage(root: Path, swift_lcov: Path, kotlin_jacoco: Path) -> tuple[list[str], dict[str, int]]: + inventory_errors, counts = audit_inventory(root) + if inventory_errors: + return inventory_errors, counts + registered, errors = registered_differential(root) + declarations: dict[str, list[Declaration]] = {"swift": [], "kotlin": []} + platform: dict[str, set[str]] = {"swift": set(), "kotlin": set()} + for pair in module_pairs(root): + swift_shard = pair.swift_dir / SHARD_NAME + kotlin_shard = pair.kotlin_dir / SHARD_NAME + if not (swift_shard.exists() and kotlin_shard.exists()): + continue + declarations["swift"].extend(lex_tree(root, pair.swift_dir, "swift")) + declarations["kotlin"].extend(lex_tree(root, pair.kotlin_dir, "kotlin")) + platform["swift"].update(item.key for item in load_shard(swift_shard).platform_test) + platform["kotlin"].update(item.key for item in load_shard(kotlin_shard).platform_test) + errors.extend( + coverage_errors( + declarations, + registered, + swift_lcov=swift_lcov, + kotlin_jacoco=kotlin_jacoco, + platform_keys=platform, + ) + ) + return errors, counts + + +def _git(root: Path, args: list[str]) -> str: + try: + return subprocess.check_output(["git", *args], cwd=root, text=True, stderr=subprocess.STDOUT).strip() + except (OSError, subprocess.CalledProcessError) as exc: + detail = exc.output.strip() if isinstance(exc, subprocess.CalledProcessError) and exc.output else str(exc) + raise RatchetError(f"git {' '.join(args)} failed: {detail}") from exc + + +def resolve_base(root: Path, base: str | None) -> str: + if base: + candidate = _git(root, ["rev-parse", "--verify", base]) + return _git(root, ["merge-base", "HEAD", candidate]) + return _git(root, ["merge-base", "HEAD", "origin/main"]) + + +def _base_json(root: Path, base: str, relative: str) -> dict | None: + try: + raw = subprocess.check_output( + ["git", "show", f"{base}:{relative}"], cwd=root, text=True, stderr=subprocess.DEVNULL + ) + except subprocess.CalledProcessError: + return None + try: + value = json.loads(raw) + except json.JSONDecodeError as exc: + raise RatchetError(f"{base}:{relative}: invalid JSON: {exc}") from exc + if not isinstance(value, dict): + raise RatchetError(f"{base}:{relative}: JSON root must be an object") + return value + + +def _current_shards(root: Path) -> list[Path]: + return sorted( + path + for path in root.rglob(SHARD_NAME) + if ".git" not in path.parts and ".build" not in path.parts and "build" not in path.parts + ) + + +def _base_shards(root: Path, base: str) -> set[str]: + listing = _git(root, ["ls-tree", "-r", "--name-only", base]) + return {line for line in listing.splitlines() if line.endswith(f"/{SHARD_NAME}")} + + +def _issue_exists(issue: int) -> bool: + repository = os.environ.get("GITHUB_REPOSITORY") + if not repository: + raise RatchetError("GITHUB_REPOSITORY is required for CI issue validation") + try: + subprocess.run( + ["gh", "api", f"repos/{repository}/issues/{issue}", "--silent"], + check=True, + stdout=subprocess.DEVNULL, + stderr=subprocess.DEVNULL, + ) + except FileNotFoundError as exc: + raise RatchetError("gh is required for CI issue validation (or pass --offline)") from exc + except subprocess.CalledProcessError: + return False + return True + + +def compare_ratchet(root: Path, base: str, *, offline: bool) -> list[str]: + """Compare the working tree (not HEAD) with base, closing same-PR baseline holes.""" + root = root.resolve() + errors: list[str] = [] + issues: set[int] = set() + current_paths = _current_shards(root) + current_relative = {path.relative_to(root).as_posix() for path in current_paths} + for relative in sorted(_base_shards(root, base) - current_relative): + errors.append(f"{relative}: merge-base ratchet shard was removed (disarmed)") + for path in current_paths: + current = load_shard(path) + issues.update(item.issue for item in current.exempt + current.platform_test) + + baseline_path = root / LEDGER_BASELINE + try: + current_baseline = json.loads(baseline_path.read_text(encoding="utf-8")) + except (OSError, json.JSONDecodeError) as exc: + raise RatchetError(f"cannot read {LEDGER_BASELINE}: {exc}") from exc + old_baseline = _base_json(root, base, LEDGER_BASELINE) + if old_baseline is not None: + old_findings = { + item.get("identity") for item in old_baseline.get("findings", []) if isinstance(item, dict) + } + for item in current_baseline.get("findings", []): + if not isinstance(item, dict) or not isinstance(item.get("identity"), str): + errors.append(f"{LEDGER_BASELINE}: malformed finding entry") + continue + if item["identity"] not in old_findings: + issue = item.get("issue") + if not isinstance(issue, int) or isinstance(issue, bool) or issue <= 0: + errors.append( + f"{LEDGER_BASELINE}: new finding {item['identity']} needs issue" + ) + else: + issues.add(issue) + old_counters = old_baseline.get("counters", {}) + current_counters = current_baseline.get("counters", {}) + if not isinstance(old_counters, dict) or not isinstance(current_counters, dict): + errors.append(f"{LEDGER_BASELINE}: counters must be objects") + else: + for name, value in current_counters.items(): + old_value = old_counters.get(name, 0) + if not isinstance(value, int) or not isinstance(old_value, int): + errors.append(f"{LEDGER_BASELINE}: counter {name} must be an integer") + elif value > old_value: + errors.append( + f"{LEDGER_BASELINE}: counter {name} increased {old_value}->{value}" + ) + validate_online = not offline and os.environ.get("CI", "").lower() == "true" + if validate_online: + for issue in sorted(issues): + if not _issue_exists(issue): + errors.append(f"issue #{issue} does not exist or is not accessible") + return errors + + +def _print_result(errors: Iterable[str], counts: dict[str, int]) -> int: + errors = list(errors) + for error in errors: + print(f"ERROR: {error}", file=sys.stderr) + print( + "parity ratchet: " + f"differential={counts['differential']} " + f"platform-test={counts['platform-test']} exempt={counts['exempt']} " + f"errors={len(errors)}" + ) + return 1 if errors else 0 + + +def build_parser() -> argparse.ArgumentParser: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--root", type=Path, default=ROOT) + subparsers = parser.add_subparsers(dest="command", required=True) + verify = subparsers.add_parser("verify", help="prove registered declarations were executed") + verify.add_argument("--swift-lcov", type=Path) + verify.add_argument("--kotlin-jacoco", type=Path) + ratchet = subparsers.add_parser("ratchet", help="audit inventory and compare debt with merge base") + ratchet.add_argument("--base", help="explicit base ref when origin/main is unavailable") + ratchet.add_argument("--offline", action="store_true", help="skip CI gh issue existence checks") + return parser + + +def main(argv: list[str] | None = None) -> int: + args = build_parser().parse_args(argv) + root = args.root.resolve() + try: + if args.command == "ratchet" and args.offline and os.environ.get("CI", "").lower() == "true": + raise RatchetError("--offline is for local ratchet runs and is forbidden when CI=true") + if args.command == "verify": + missing = [] + if args.swift_lcov is None: + missing.append("--swift-lcov") + if args.kotlin_jacoco is None: + missing.append("--kotlin-jacoco") + if missing: + print(f"verify requires {' and '.join(missing)}", file=sys.stderr) + return 2 + errors, counts = verify_coverage(root, args.swift_lcov, args.kotlin_jacoco) + return _print_result(errors, counts) + base = resolve_base(root, args.base) + inventory_errors, counts = audit_inventory(root, base=base) + errors = inventory_errors + compare_ratchet(root, base, offline=args.offline) + return _print_result(errors, counts) + except RatchetError as exc: + print(f"ERROR: {exc}", file=sys.stderr) + return 2 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/Tools/tests/test_parity_ratchet.py b/Tools/tests/test_parity_ratchet.py new file mode 100644 index 0000000000..ffb86c9a7b --- /dev/null +++ b/Tools/tests/test_parity_ratchet.py @@ -0,0 +1,547 @@ +"""Acceptance tests for the declaration-level parity coverage ratchet.""" + +from __future__ import annotations + +import contextlib +import io +import json +import re +import subprocess +import sys +import tempfile +import unittest +from pathlib import Path +from unittest import mock + + +TOOLS = Path(__file__).resolve().parents[1] +REPOSITORY = TOOLS.parent +sys.path.insert(0, str(TOOLS)) + +import parity_ratchet # noqa: E402 + + +class ParityRatchetTests(unittest.TestCase): + def setUp(self) -> None: + self.temp = tempfile.TemporaryDirectory() + self.root = Path(self.temp.name) + + def tearDown(self) -> None: + self.temp.cleanup() + + def write(self, relative: str, text: str) -> Path: + path = self.root / relative + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text(text) + return path + + def test_lexer_keys_include_defaults_and_keep_overloads_distinct(self) -> None: + swift = self.write( + "Sources/Pilot/Engine.swift", + """struct Engine { + func score(_ value: Int, scale: Double = 1) -> Double { Double(value) * scale } + func score(_ value: Double, scale: Double = 1) -> Double { value * scale } + var doubled: Int { 2 } + let seed: Int = 7 +} +""", + ) + kotlin = self.write( + "src/main/java/pilot/Engine.kt", + """class Engine { + fun score(value: Int, scale: Double = 1.0): Double = value * scale + val doubled: Int get() = 2 + val seed: Int = 7 + companion object Factory { init { require(true) } } +} +""", + ) + + swift_declarations = parity_ratchet.lex_file(self.root, swift, "swift") + kotlin_declarations = parity_ratchet.lex_file(self.root, kotlin, "kotlin") + score_keys = [item.key for item in swift_declarations if item.name == "score"] + + self.assertEqual(2, len(score_keys)) + self.assertEqual(2, len(set(score_keys))) + self.assertTrue(all("defaults=2" in key for key in score_keys)) + self.assertEqual( + {"function", "computed-property", "property-initializer"}, + {item.kind for item in swift_declarations}, + ) + self.assertIn("companion-init", {item.kind for item in kotlin_declarations}) + + def test_lexer_fails_closed_on_unterminated_declaration(self) -> None: + source = self.write("Sources/Pilot/Broken.swift", "struct Broken { func nope(_ value: Int { }\n") + with self.assertRaisesRegex(parity_ratchet.LexError, "unclosed|unsupported"): + parity_ratchet.lex_file(self.root, source, "swift") + + source = self.write("src/main/java/pilot/Broken.kt", "class Broken { fun nope(value: Int { }\n") + with self.assertRaisesRegex(parity_ratchet.LexError, "unclosed|unsupported"): + parity_ratchet.lex_file(self.root, source, "kotlin") + + def test_lexer_inventories_all_initializers_and_declaration_tokens_fail_closed(self) -> None: + kotlin = self.write( + "src/main/java/pilot/Initializers.kt", + """class Initializers(val value: Int) { + init { require(value >= 0) } + constructor() : this(0) + operator fun plus(other: Initializers) = Initializers(value + other.value) + companion object { init { require(true) } } +} +""", + ) + swift = self.write( + "Sources/Pilot/Initializers.swift", + """struct Initializers { + init(value: Int) {} + convenience init() { self.init(value: 0) } +} +""", + ) + + kotlin_declarations = parity_ratchet.lex_file(self.root, kotlin, "kotlin") + swift_declarations = parity_ratchet.lex_file(self.root, swift, "swift") + + self.assertIn(("init", "initializer", 0), { + (item.name, item.kind, item.arity) for item in kotlin_declarations + }) + self.assertIn(("constructor", "initializer", 0), { + (item.name, item.kind, item.arity) for item in kotlin_declarations + }) + self.assertIn("plus", {item.name for item in kotlin_declarations}) + self.assertIn("companion-init", {item.kind for item in kotlin_declarations}) + self.assertEqual(2, len([item for item in swift_declarations if item.name == "init"])) + + for token, body in ( + ("getter", "get() = 1"), + ("constructor", "constructor value: Int"), + ("init", "init()"), + ("operator", "operator fun plus = 1"), + ): + with self.subTest(token=token): + malformed_kotlin = self.write( + f"src/main/java/pilot/Unknown{token}.kt", + f"class Unknown {{ {body} }}\n", + ) + with self.assertRaisesRegex(parity_ratchet.LexError, "unsupported"): + parity_ratchet.lex_file(self.root, malformed_kotlin, "kotlin") + + malformed_swift = self.write( + "Sources/Pilot/Unknown.swift", "struct Unknown { init {} }\n" + ) + with self.assertRaisesRegex(parity_ratchet.LexError, "unsupported Swift init"): + parity_ratchet.lex_file(self.root, malformed_swift, "swift") + + def test_property_lexer_handles_multiline_bodies_and_initializers(self) -> None: + swift = self.write( + "Sources/Pilot/Properties.swift", + """enum Properties { + static var computed: Int + { + 2 + } + static let disclaimer: String = + "first " + + "second" + /// Documentation for the following declaration is not initializer code. + static let next = 3 +} +""", + ) + kotlin = self.write( + "src/main/java/pilot/Properties.kt", + """object Properties { + val computed: Int + get() { + return 2 + } + const val disclaimer: String = + "first " + + "second" + /** Documentation for the following declaration is not initializer code. */ + const val next = 3 +} +""", + ) + + swift_items = {item.name: item for item in parity_ratchet.lex_file(self.root, swift, "swift")} + kotlin_items = {item.name: item for item in parity_ratchet.lex_file(self.root, kotlin, "kotlin")} + + self.assertEqual(("computed-property", 5), (swift_items["computed"].kind, swift_items["computed"].end_line)) + self.assertEqual(("property-initializer", 8), (swift_items["disclaimer"].kind, swift_items["disclaimer"].end_line)) + self.assertEqual(("computed-property", 5), (kotlin_items["computed"].kind, kotlin_items["computed"].end_line)) + self.assertEqual(("property-initializer", 8), (kotlin_items["disclaimer"].kind, kotlin_items["disclaimer"].end_line)) + + def test_bodyless_kotlin_type_does_not_turn_next_function_locals_into_members(self) -> None: + source = self.write( + "src/main/java/pilot/Bodyless.kt", + """data class Result(val value: Int) +fun compute(): Int { + val local = 1 + return local +} +""", + ) + + declarations = parity_ratchet.lex_file(self.root, source, "kotlin") + + self.assertEqual(["compute"], [item.name for item in declarations]) + + def test_exempt_without_reason_is_rejected(self) -> None: + shard = self.write( + "Sources/Pilot/parity-exempt.json", + json.dumps( + { + "schema_version": 1, + "module": "Pilot", + "exempt": [{"key": "Engine.swift::score/1[defaults=-]#1", "issue": 17}], + "platform-test": [], + } + ), + ) + with self.assertRaisesRegex(parity_ratchet.RatchetError, "reason"): + parity_ratchet.load_shard(shard) + + def test_every_existing_shard_entry_requires_an_issue(self) -> None: + for category, metadata in ( + ("exempt", {"reason": "legacy"}), + ("platform-test", {"test": "PilotTests.testLegacy"}), + ): + raw = { + "schema_version": 1, + "module": "Pilot", + "exempt": [], + "platform-test": [], + } + raw[category] = [{"key": "legacy", **metadata}] + shard = self.write(f"{category}/parity-exempt.json", json.dumps(raw)) + with self.assertRaisesRegex(parity_ratchet.RatchetError, "issue"): + parity_ratchet.load_shard(shard) + + def test_registered_function_with_uncovered_line_is_rejected(self) -> None: + swift_source = self.write( + "Sources/Pilot/Engine.swift", + """enum Engine { + static func score(_ value: Int) -> Int { + if value > 0 { return value } + return 0 + } +} +""", + ) + kotlin_source = self.write( + "src/main/java/pilot/Engine.kt", + """object Engine { + fun score(value: Int): Int { + if (value > 0) return value + return 0 + } +} +""", + ) + swift_lcov = self.write( + "swift.lcov", + f"SF:{swift_source}\nDA:3,1\nDA:4,0\nend_of_record\n", + ) + jacoco = self.write( + "jacoco.xml", + """ + + + +""", + ) + + declarations = { + "swift": parity_ratchet.lex_file(self.root, swift_source, "swift"), + "kotlin": parity_ratchet.lex_file(self.root, kotlin_source, "kotlin"), + } + errors = parity_ratchet.coverage_errors( + declarations, + {"score"}, + swift_lcov=swift_lcov, + kotlin_jacoco=jacoco, + ) + + self.assertTrue(any("Engine.swift:4" in error for error in errors), errors) + self.assertTrue(any("Engine.kt:4" in error for error in errors), errors) + + def test_function_counters_override_positive_same_line_coverage(self) -> None: + swift_source = self.write( + "Sources/Pilot/Functions.swift", + "enum Functions { static func target() -> Int { 1 }; static func neighbor() -> Int { 2 } }\n", + ) + kotlin_source = self.write( + "src/main/java/pilot/Functions.kt", + "object Functions { fun target(): Int = 1; fun neighbor(): Int = 2 }\n", + ) + swift_lcov = self.write( + "functions.lcov", + f"SF:{swift_source}\nFN:1,target\nFN:1,neighbor\nFNDA:0,target\nFNDA:7,neighbor\nDA:1,7\nend_of_record\n", + ) + jacoco = self.write( + "functions.xml", + """ + + + + + + + +""", + ) + declarations = { + "swift": parity_ratchet.lex_file(self.root, swift_source, "swift"), + "kotlin": parity_ratchet.lex_file(self.root, kotlin_source, "kotlin"), + } + + errors = parity_ratchet.coverage_errors( + declarations, + {"target"}, + swift_lcov=swift_lcov, + kotlin_jacoco=jacoco, + ) + + self.assertEqual(2, len(errors), errors) + self.assertTrue(all("function was not executed" in error for error in errors), errors) + + def test_line_coverage_fallback_is_announced(self) -> None: + swift_source = self.write("Sources/Pilot/Fallback.swift", "func target() -> Int { 1 }\n") + kotlin_source = self.write("src/main/java/pilot/Fallback.kt", "fun target(): Int = 1\n") + swift_lcov = self.write("fallback.lcov", f"SF:{swift_source}\nDA:1,1\nend_of_record\n") + jacoco = self.write( + "fallback.xml", + "", + ) + declarations = { + "swift": parity_ratchet.lex_file(self.root, swift_source, "swift"), + "kotlin": parity_ratchet.lex_file(self.root, kotlin_source, "kotlin"), + } + output = io.StringIO() + with contextlib.redirect_stdout(output): + errors = parity_ratchet.coverage_errors( + declarations, {"target"}, swift_lcov=swift_lcov, kotlin_jacoco=jacoco + ) + self.assertEqual([], errors) + self.assertEqual(2, output.getvalue().count("NOTICE: line coverage fallback")) + + def test_method_capable_report_never_falls_back_for_an_unmapped_function(self) -> None: + swift_source = self.write("Sources/Pilot/Target.swift", "func target() -> Int { 1 }\n") + kotlin_source = self.write("src/main/java/pilot/Target.kt", "fun target(): Int = 1\n") + swift_lcov = self.write( + "method-capable.lcov", + f"SF:{swift_source}\nDA:1,1\nend_of_record\n" + "SF:/tmp/Other.swift\nFN:1,other\nFNDA:1,other\nDA:1,1\nend_of_record\n", + ) + jacoco = self.write( + "method-capable.xml", + """ + + + +""", + ) + declarations = { + "swift": parity_ratchet.lex_file(self.root, swift_source, "swift"), + "kotlin": parity_ratchet.lex_file(self.root, kotlin_source, "kotlin"), + } + output = io.StringIO() + with contextlib.redirect_stdout(output): + errors = parity_ratchet.coverage_errors( + declarations, {"target"}, swift_lcov=swift_lcov, kotlin_jacoco=jacoco + ) + self.assertEqual(2, len(errors), errors) + self.assertTrue(all("no " in error and "function coverage record" in error for error in errors)) + self.assertNotIn("fallback", output.getvalue()) + + def init_git(self) -> None: + subprocess.run(["git", "init", "-q"], cwd=self.root, check=True) + subprocess.run(["git", "config", "user.email", "ratchet@example.invalid"], cwd=self.root, check=True) + subprocess.run(["git", "config", "user.name", "Ratchet Test"], cwd=self.root, check=True) + + def commit_all(self, message: str) -> str: + subprocess.run(["git", "add", "."], cwd=self.root, check=True) + subprocess.run(["git", "commit", "-qm", message], cwd=self.root, check=True) + return subprocess.check_output(["git", "rev-parse", "HEAD"], cwd=self.root, text=True).strip() + + def shard(self, keys: list[dict[str, object]]) -> dict[str, object]: + return {"schema_version": 1, "module": "Pilot", "exempt": keys, "platform-test": []} + + def test_ratchet_accepts_issue_backed_growth_and_decrease(self) -> None: + self.init_git() + path = self.write( + "Sources/Pilot/parity-exempt.json", + json.dumps(self.shard([{"key": "old", "reason": "legacy", "issue": 7}])), + ) + baseline = self.write( + "Tools/parity_ledger_baseline.json", + json.dumps({"schema_version": 2, "findings": [], "counters": {"paths": 2}}), + ) + base = self.commit_all("base") + + path.write_text( + json.dumps( + self.shard( + [ + {"key": "old", "reason": "legacy", "issue": 7}, + {"key": "new", "reason": "regression", "issue": 8}, + ] + ) + ) + ) + self.assertEqual([], parity_ratchet.compare_ratchet(self.root, base, offline=True)) + + path.write_text(json.dumps(self.shard([]))) + baseline.write_text(json.dumps({"schema_version": 2, "findings": [], "counters": {"paths": 1}})) + self.assertEqual([], parity_ratchet.compare_ratchet(self.root, base, offline=True)) + + def test_ratchet_rejects_removing_a_merge_base_shard_as_disarmed(self) -> None: + self.init_git() + swift = self.write( + "Sources/Pilot/parity-exempt.json", + json.dumps(self.shard([{"key": "old", "reason": "legacy", "issue": 7}])), + ) + self.write( + "src/main/java/pilot/parity-exempt.json", + json.dumps(self.shard([{"key": "old", "reason": "legacy", "issue": 7}])), + ) + self.write( + "Tools/parity_ledger_baseline.json", + json.dumps({"schema_version": 2, "findings": [], "counters": {}}), + ) + base = self.commit_all("base") + swift.unlink() + + errors = parity_ratchet.compare_ratchet(self.root, base, offline=True) + + self.assertTrue(any("disarmed" in error and "Sources/Pilot" in error for error in errors), errors) + + def test_shardless_pair_is_not_a_notice_when_merge_base_had_shards(self) -> None: + swift_dir = self.root / "Sources/Pilot" + kotlin_dir = self.root / "src/main/java/pilot" + output = io.StringIO() + with contextlib.redirect_stdout(output): + errors, _counts = parity_ratchet.audit_module_pair( + self.root, + parity_ratchet.ModulePair("Pilot", swift_dir, kotlin_dir), + base_shards={ + "Sources/Pilot/parity-exempt.json", + "src/main/java/pilot/parity-exempt.json", + }, + ) + self.assertTrue(any("disarmed" in error for error in errors), errors) + self.assertNotIn("NOTICE", output.getvalue()) + + def test_explicit_base_ref_is_resolved_to_the_merge_base(self) -> None: + self.init_git() + marker = self.write("marker.txt", "base\n") + common = self.commit_all("common") + feature_branch = subprocess.check_output( + ["git", "branch", "--show-current"], cwd=self.root, text=True + ).strip() + subprocess.run(["git", "branch", "upstream"], cwd=self.root, check=True) + marker.write_text("feature\n") + self.commit_all("feature") + subprocess.run(["git", "checkout", "-q", "upstream"], cwd=self.root, check=True) + marker.write_text("upstream\n") + self.commit_all("upstream") + subprocess.run(["git", "checkout", "-q", feature_branch], cwd=self.root, check=True) + + self.assertEqual(common, parity_ratchet.resolve_base(self.root, "upstream")) + + def test_module_without_shard_is_notice_not_failure(self) -> None: + swift_dir = self.root / "Sources/Pilot" + kotlin_dir = self.root / "src/main/java/pilot" + self.write("Sources/Pilot/Engine.swift", "struct Engine {}\n") + self.write("src/main/java/pilot/Engine.kt", "class Engine\n") + output = io.StringIO() + with contextlib.redirect_stdout(output): + errors, counts = parity_ratchet.audit_module_pair( + self.root, + parity_ratchet.ModulePair("Pilot", swift_dir, kotlin_dir), + ) + self.assertEqual([], errors) + self.assertEqual({"differential": 0, "platform-test": 0, "exempt": 0}, counts) + self.assertIn("NOTICE", output.getvalue()) + + def test_verify_requires_both_report_arguments(self) -> None: + stderr = io.StringIO() + with contextlib.redirect_stderr(stderr): + code = parity_ratchet.main(["--root", str(self.root), "verify"]) + self.assertEqual(2, code) + self.assertIn("--swift-lcov", stderr.getvalue()) + self.assertIn("--kotlin-jacoco", stderr.getvalue()) + + def test_ci_rejects_offline_ratchet_mode(self) -> None: + stderr = io.StringIO() + with mock.patch.dict("os.environ", {"CI": "true"}, clear=False), contextlib.redirect_stderr(stderr): + code = parity_ratchet.main(["--root", str(self.root), "ratchet", "--offline"]) + self.assertEqual(2, code) + self.assertIn("--offline", stderr.getvalue()) + + def test_repository_registry_is_runtime_derived_and_shards_hold_no_differential_list(self) -> None: + registered, errors = parity_ratchet.registered_differential(REPOSITORY) + self.assertEqual([], errors) + self.assertEqual({"rollingRmssd", "trimpToStrain"}, registered) + for path in ( + REPOSITORY / "Packages/StrandAnalytics/Sources/StrandAnalytics/parity-exempt.json", + REPOSITORY / "android/app/src/main/java/com/noop/analytics/parity-exempt.json", + ): + raw = json.loads(path.read_text()) + self.assertNotIn("differential", raw) + + def test_parity_workflow_has_inverted_trigger_and_pinned_actions(self) -> None: + workflow = (REPOSITORY / ".github/workflows/parity-ratchet.yml").read_text() + trigger = workflow.split("concurrency:", 1)[0] + self.assertNotIn("paths:", trigger) + self.assertIn('git diff --name-only "$MERGE_BASE"', workflow) + self.assertIn("no-op:", workflow) + uses = re.findall(r"uses:\s*[^@\s]+@([^\s]+)", workflow) + self.assertTrue(uses) + self.assertTrue(all(re.fullmatch(r"[0-9a-f]{40}", value) for value in uses), uses) + + def test_coverage_workflow_treats_harness_and_tooling_changes_as_touched(self) -> None: + workflow = (REPOSITORY / ".github/workflows/parity-ratchet.yml").read_text() + for pattern in ( + "Packages/*/Tests/**/*ParityRunner*", + "android/app/src/test/**", + "Tools/parity_*.py", + "Tools/parity_cases/**", + "Tools/tests/**", + "**/parity-exempt.json", + "android/app/build.gradle.kts", + "android/gradle/verification-metadata.xml", + ".github/workflows/parity-ratchet.yml", + ): + self.assertIn(pattern, workflow) + + +class JacocoOverloadDisambiguationTests(unittest.TestCase): + def test_executed_overload_cannot_vouch_for_registered_same_line_sibling(self) -> None: + import parity_ratchet + + self.assertEqual(2, parity_ratchet._jvm_descriptor_arity("(II)I")) + self.assertEqual(1, parity_ratchet._jvm_descriptor_arity("(Ljava/util/List;)V")) + self.assertEqual(3, parity_ratchet._jvm_descriptor_arity("([IJLjava/lang/String;)V")) + executed = parity_ratchet.CoverageMethod("score", 2, 5, arity=1) + idle = parity_ratchet.CoverageMethod("score", 2, 0, arity=2) + source = parity_ratchet.CoverageSource({2: 5}, [executed, idle]) + declaration = parity_ratchet.Declaration( + language="kotlin", + path="src/main/java/pilot/Engine.kt", + owner="Engine", + name="score", + kind="function", + arity=2, + defaults=(), + ordinal=1, + line=2, + end_line=4, + ) + status, executions = parity_ratchet._function_executions(source, declaration, "kotlin") + self.assertEqual(("found", 0), (status, executions)) + + +if __name__ == "__main__": # pragma: no cover + unittest.main() diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index cd9bb9a6ff..d23f790686 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -1,9 +1,15 @@ import java.util.Properties +import org.gradle.testing.jacoco.tasks.JacocoReport plugins { id("com.android.application") id("org.jetbrains.kotlin.android") id("com.google.devtools.ksp") + jacoco +} + +jacoco { + toolVersion = "0.8.12" } // Optional release signing. Credentials live in `keystore.properties` (git-ignored, never @@ -230,6 +236,35 @@ tasks.withType().configureEach { outputs.cacheIf { !parityRun() } } +// Declaration-level parity proof. Keep this report tied to the exact JVM runner task used by +// Tools/parity_diff.py; parity_ratchet reads the XML and rejects every unexecuted instrumented line +// inside a registered production declaration. +val jacocoFullDebugUnitTestReport = tasks.register("jacocoFullDebugUnitTestReport") { + dependsOn("testFullDebugUnitTest") + sourceDirectories.setFrom(files("src/main/java")) + classDirectories.setFrom( + files( + fileTree(layout.buildDirectory.dir("tmp/kotlin-classes/fullDebug")) { + exclude("**/BuildConfig.*", "**/R.*", "**/R\$*.class") + }, + fileTree(layout.buildDirectory.dir("intermediates/javac/fullDebug/classes")) { + exclude("**/BuildConfig.*", "**/R.*", "**/R\$*.class") + }, + ) + ) + executionData.setFrom(layout.buildDirectory.file("jacoco/testFullDebugUnitTest.exec")) + reports { + xml.required.set(true) + xml.outputLocation.set( + layout.buildDirectory.file( + "reports/jacoco/jacocoFullDebugUnitTestReport/jacocoFullDebugUnitTestReport.xml" + ) + ) + html.required.set(false) + csv.required.set(false) + } +} + // Resolve every external module to the exact version recorded in app/gradle.lockfile. Direct // dependencies are already pinned below; this also freezes the transitive graph selected through // AndroidX POMs and the Compose BOM. Update intentionally with `./gradlew :app:dependencies diff --git a/android/app/src/main/java/com/noop/analytics/parity-exempt.json b/android/app/src/main/java/com/noop/analytics/parity-exempt.json new file mode 100644 index 0000000000..7eb3298a6a --- /dev/null +++ b/android/app/src/main/java/com/noop/analytics/parity-exempt.json @@ -0,0 +1,7067 @@ +{ + "schema_version": 1, + "module": "com.noop.analytics", + "exempt": [ + { + "key": "android/app/src/main/java/com/noop/analytics/ActivityCostEngine.kt::sentence/0[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ActivityCostEngine.kt::minSessions@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ActivityCostEngine.kt::solidSessions@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ActivityCostEngine.kt::maxLookahead@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ActivityCostEngine.kt::tolerance@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ActivityCostEngine.kt::barelyMovesPoints@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ActivityCostEngine.kt::evaluate/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ActivityCostEngine.kt::forwardDaysToBaseline/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ActivityCostEngine.kt::rank/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ActivityCostEngine.kt::confidenceRank/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ActivityCostEngine.kt::mean/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ActivityCostEngine.kt::roundToIntHalfUp/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ActivityCostEngine.kt::shiftDay/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ActivityCostEngine.kt::parseYMD/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ActivityCostEngine.kt::daysInMonth/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ActivityCostEngine.kt::isLeap/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ActivityCostEngine.kt::formatYMD/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ActivityCostEngine.kt::julianDayNumber/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ActivityCostEngine.kt::fromJulianDayNumber/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ActivityHeatmap.kt::DEFAULT_WEEKS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ActivityHeatmap.kt::total@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ActivityHeatmap.kt::streak@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ActivityHeatmap.kt::isEmpty@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ActivityHeatmap.kt::RAMP_FLOOR_KCAL@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ActivityHeatmap.kt::RAMP_PERCENTILE@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ActivityHeatmap.kt::build/3[defaults=3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ActivityHeatmap.kt::rampScale/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ActivityHeatmap.kt::levelFor/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ActivityHeatmap.kt::mondayFirstWeekday/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ActivityHeatmap.kt::epochDay/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ActivityHeatmap.kt::civilDay/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ActivityHeatmap.kt::daysFromCivil/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/Analytics.kt::rmssd/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/Analytics.kt::zone/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/Analytics.kt::hrMaxTanaka/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/Analytics.kt::evaluate/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/Analytics.kt::formatOneDp/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsEngine.kt::daySliceFromNight/7[defaults=6]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsEngine.kt::offWristIntervals/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsEngine.kt::isoDay@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsEngine.kt::dayString/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsEngine.kt::dayString/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsEngine.kt::dayStartUtcSeconds/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsEngine.kt::encodeStages/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsEngine.kt::decodeStages/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsEngine.kt::sleepSessionFromProvided/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsEngine.kt::analyzeDay/30[defaults=2,3,4,5,6,7,8,9,10,11,12,13,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsEngine.kt::round2/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsEngine.kt::MIN_SKIN_TEMP_SAMPLES_INLINE@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsEngine.kt::wornNightlySkinTempC/6[defaults=4,5,6]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsEngine.kt::nightlySpo2RawMeans/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsEngine.kt::nightlySpo2CandidateMean/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsEngine.kt::primarySessionRestingHR/4[defaults=3,4]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsEngine.kt::primarySessionRestingHRCoverage/4[defaults=3,4]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsEngine.kt::primarySessions/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsEngine.kt::primarySessionRestingHRWithCoverage/4[defaults=3,4]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsEngine.kt::SKIN_TEMP_MIN_C@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsEngine.kt::SKIN_TEMP_MAX_C@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsEngine.kt::rawMin@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsEngine.kt::rawMedian@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsEngine.kt::rawMax@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsEngine.kt::inBandCount@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsEngine.kt::resolvedAnchorRaw@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsEngine.kt::medianMappedC@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsEngine.kt::isAbsent@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsEngine.kt::summary@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsEngine.kt::skinTempFunnel/6[defaults=4,5,6]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsEngine.kt::wDuration@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsEngine.kt::wEfficiency@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsEngine.kt::wRestorative@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsEngine.kt::wConsistency@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsEngine.kt::defaultSleepNeedHours@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsEngine.kt::minNeedNights@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsEngine.kt::maxNeedHours@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsEngine.kt::populationNeedFloorHours/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsEngine.kt::personalizedNeedHours/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsEngine.kt::restorativeTargetShare@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsEngine.kt::deepShareTarget@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsEngine.kt::deepFloorFactor@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsEngine.kt::NEUTRAL_CONSISTENCY@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsEngine.kt::rest/6[defaults=5,6]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsEngine.kt::sleepMotionLine/6[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsEngine.kt::onsetTraceWindowSec@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsEngine.kt::medianBpm/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsEngine.kt::sleepOnsetLine/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsEngine.kt::subScoreLine/9[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsEngine.kt::restFromDaily/2[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsModels.kt::VERSION@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsModels.kt::weightKg@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsModels.kt::heightCm@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsModels.kt::age@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsModels.kt::sex@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsModels.kt::stepTicksPerStep@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsModels.kt::waistCm@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsModels.kt::trusted@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsModels.kt::usable@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsModels.kt::hrv@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsModels.kt::restingHR@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsModels.kt::resp@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsModels.kt::skinTemp@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsModels.kt::rest@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsModels.kt::nightlySkinTempC@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsModels.kt::chargeConfidence@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsModels.kt::effortConfidence@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsModels.kt::restConfidence@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsModels.kt::sessionMotionByStart@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsModels.kt::sessionSleepStateByStart@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyticsModels.kt::gravitySparse@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AnalyzeRecentDayCache.kt::cacheKey/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AutoWorkoutDetector.kt::elevatedMarginBPM@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AutoWorkoutDetector.kt::minSustainedMin@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AutoWorkoutDetector.kt::maxDipS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AutoWorkoutDetector.kt::mergeGapS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AutoWorkoutDetector.kt::motionConfirmMean@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AutoWorkoutDetector.kt::defaultRestingHR@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AutoWorkoutDetector.kt::cleanHR/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AutoWorkoutDetector.kt::motionIntensityByTs/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AutoWorkoutDetector.kt::detect/4[defaults=2,3,4]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AutoWorkoutDetector.kt::overlaps/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AutoWorkoutDetectorTrace.kt::detectTrace/5[defaults=2,3,4,5]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AutoWorkoutDetectorTrace.kt::sessionLine/5[defaults=4,5]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AutoWorkoutDetectorTrace.kt::gpsLine/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AutoWorkoutDetectorTrace.kt::dedupLine/5[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AutoWorkoutDetectorTrace.kt::detectedBoutLine/4[defaults=4]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/AutoWorkoutDetectorTrace.kt::lastSessionSummary/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/Baselines.kt::winsorK@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/Baselines.kt::hardOutlierK@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/Baselines.kt::minNightsSeed@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/Baselines.kt::minNightsTrust@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/Baselines.kt::staleDays@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/Baselines.kt::vitalCarryDays@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/Baselines.kt::freshestCarried/3[defaults=3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/Baselines.kt::cutoffKey/2[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/Baselines.kt::earlyAdaptNights@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/Baselines.kt::earlyHalfLifeB@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/Baselines.kt::earlySpreadInflate@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/Baselines.kt::hrvBaselineEpochKey@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/Baselines.kt::recoveryBaselineEpochKey@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/Baselines.kt::metricCfg@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/Baselines.kt::hrvCfg@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/Baselines.kt::restingHRCfg@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/Baselines.kt::readinessHRVLnCfg@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/Baselines.kt::respCfg@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/Baselines.kt::strainCfg@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/Baselines.kt::daytimeHRCfg@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/Baselines.kt::daytimeRMSSDCfg@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/Baselines.kt::lambda/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/Baselines.kt::computeStatus/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/Baselines.kt::nightsSinceNewestValidNight/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/Baselines.kt::isoEpochDay/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/Baselines.kt::update/4[defaults=4]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/Baselines.kt::foldHistory/3[defaults=3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/Baselines.kt::foldHistory/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/Baselines.kt::deviceEraEpoch/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/Baselines.kt::brandBucket/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/Baselines.kt::sigma/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/Baselines.kt::deviation/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/Baselines.kt::rollingMeanSD/3[defaults=3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/Baselines.kt::recalibrateRecoveryBaselines/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BatteryEstimator.kt::ratedLifeHoursWhoop4@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BatteryEstimator.kt::ratedLifeHoursWhoop5@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BatteryEstimator.kt::minSpanHours@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BatteryEstimator.kt::minDropPct@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BatteryEstimator.kt::chargeStepPct@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BatteryEstimator.kt::nearFullPct@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BatteryEstimator.kt::daysRemaining@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BatteryEstimator.kt::hoursRemaining@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BatteryEstimator.kt::estimate/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BatteryEstimator.kt::dischargeFitWindow/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BatteryEstimator.kt::estimateTrace/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BatteryEstimator.kt::soc/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BatteryEstimator.kt::hrs/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BatteryEstimator.kt::slope/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BatteryEstimator.kt::label/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BatteryEstimator.kt::runtimeAlertHours@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BatteryEstimator.kt::runtimeRearmHours@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BatteryEstimator.kt::runtimeAlert/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BatteryEstimator.kt::cutoffSocPct@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BatteryEstimator.kt::usableRemainingHours/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BatteryEstimator.kt::usableRemainingHours/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BatteryEstimator.kt::criticalSocPct@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BatteryEstimator.kt::criticalRearmAbovePct@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BatteryEstimator.kt::criticalAlert/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BatteryEstimator.kt::bedtimeLeadHours@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BatteryEstimator.kt::bedtimeMarginHours@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BatteryEstimator.kt::bedtimeMinNights@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BatteryEstimator.kt::shortfallHours@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BatteryEstimator.kt::typicalSleepHours/2[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BatteryEstimator.kt::bedtimeAlert/6[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BatteryEstimator.kt::secondsPerDay@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BatteryEstimator.kt::floorMod/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BatterySocLine.kt::format/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BreathPacer.kt::label@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BreathPacer.kt::INHALE_LOOPS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BreathPacer.kt::EXHALE_LOOPS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BreathPacer.kt::DEFAULT_INHALE_FRACTION@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BreathPacer.kt::MIN_BPM@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BreathPacer.kt::MAX_BPM@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BreathPacer.kt::schedule/3[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BreathPacer.kt::sessionDurationMs/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BreathProtocol.kt::label@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BreathProtocol.kt::caution@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BreathProtocol.kt::sessionHint@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BreathProtocol.kt::stages@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BreathProtocol.kt::cycleDurationMs@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BreathProtocol.kt::HOLD_LOOPS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BreathProtocol.kt::TEXT_ONLY_LOOPS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BreathProtocol.kt::loops/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BreathProtocol.kt::schedule/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BreathProtocolCatalog.kt::presenceIntroTitle@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BreathProtocolCatalog.kt::presenceIntroBody@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BreathProtocolCatalog.kt::all@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BreathProtocolCatalog.kt::protocolById/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BreathProtocolCatalog.kt::pickerProtocols@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BreathProtocolCatalog.kt::watchSubsetIds@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BreathProtocolCatalog.kt::watchSubset@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BreathProtocolCatalog.kt::legacyNoop@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BreathProtocolCatalog.kt::ansPlayable@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BreathProtocolCatalog.kt::ansGuided@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BreathProtocolCatalog.kt::presence@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/CaffeineDecay.kt::DEFAULT_HALF_LIFE_HOURS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/CaffeineDecay.kt::fractionRemaining/2[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/CaffeineDecay.kt::remainingMg/3[defaults=3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/CaffeineDecay.kt::totalRemainingMg/2[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/CaffeineDecay.kt::hoursUntilFraction/2[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/CaffeineDecay.kt::isStillActive/3[defaults=2,3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/CaffeineDecay.kt::DEFAULT_BEDTIME_RESIDUAL@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/CaffeineDecay.kt::cutoffLeadHours/2[defaults=1,2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/CaffeineDecay.kt::cutoffMinutesSinceMidnight/3[defaults=2,3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/CaffeineDecay.kt::isPastCutoff/4[defaults=3,4]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/CaffeineDecay.kt::mg@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/CaffeineDecay.kt::hasActive@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/CircadianEngine.kt::minDaysForFit@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/CircadianEngine.kt::goodDaysForFit@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/CircadianEngine.kt::minRelativeAmplitude@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/CircadianEngine.kt::maxShiftPerDayHours@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/CircadianEngine.kt::cbtMinBeforeWakeHours@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/CircadianEngine.kt::acrophaseAfterCbtMinHours@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/CircadianEngine.kt::cosinor/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/CircadianEngine.kt::estimatePhase/4[defaults=4]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/CircadianEngine.kt::planShift/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/CircadianEngine.kt::wrap24/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/CircadianEngine.kt::signedHourDelta/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/CircadianEngine.kt::clock/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/CircadianEngine.kt::formatOneDecimal/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ConnectionReadout.kt::sessionHeldSuffix/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ConnectionReadout.kt::clockDriftLine/5[defaults=4,5]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ConnectionReadout.kt::RTC_EPOCH_CEILING_UNIX@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ConnectionReadout.kt::BEHIND_TOLERANCE_DEFAULT@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ConnectionReadout.kt::clockVerdict/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ConnectionReadout.kt::firmwareLine/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ConnectionReadout.kt::noCursorLine/0[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ConnectionReadout.kt::isoDate/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ConnectionReadout.kt::signed/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ConnectionReadout.kt::uptimeLabel/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ConnectionReadout.kt::reconnectCount/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ConnectionReadout.kt::lastOffloadResult/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ConnectionReadout.kt::sessionRows/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ConnectionReadout.kt::drainedRowsFromSummary/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ConnectionReadout.kt::clockCorrelatedDevice/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ConnectionReadout.kt::clockLatchedLabel/2[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ConnectionReadout.kt::rtcWarning/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ConnectionReadout.kt::lastFrameLabel/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ConnectionReadout.kt::longField/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ConnectionReadout.kt::durationLabel/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/CyclePhaseEngine.kt::wTemp@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/CyclePhaseEngine.kt::wRHR@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/CyclePhaseEngine.kt::wHRV@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/CyclePhaseEngine.kt::elevationK@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/CyclePhaseEngine.kt::minCycleDays@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/CyclePhaseEngine.kt::maxCycleDays@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/CyclePhaseEngine.kt::defaultCycleDays@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/CyclePhaseEngine.kt::minNightsToClassify@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/CyclePhaseEngine.kt::periOvulatoryHalfWidth@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/CyclePhaseEngine.kt::awarenessLine@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/CyclePhaseEngine.kt::classify/3[defaults=3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/CyclePhaseEngine.kt::fusedIndex/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/CyclePhaseEngine.kt::phaseNote/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/CyclePhaseEngine.kt::median/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/CyclePhaseEngine.kt::medianAbsoluteDeviation/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/CyclePhaseEngine.kt::daysBetween/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/CyclePhaseEngine.kt::mostRecentOnOrBefore/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/CyclePhaseEngine.kt::parseDay/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/CyclePhaseEngine.kt::shiftDay/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DayOwnerResolver.kt::resolve/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DaytimeBaselines.kt::daytimeHRAggregatePercentile@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DaytimeBaselines.kt::daytimeRMSSDAggregatePercentile@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DaytimeBaselines.kt::dayDaytimeAggregate/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DaytimeBaselines.kt::foldDaytimeBaselines/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DaytimeBaselines.kt::scoringMode/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DaytimeStress.kt::minHourHrSamples@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DaytimeStress.kt::bucketSeconds@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DaytimeStress.kt::highBandFloor@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DaytimeStress.kt::sustainedHours@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DaytimeStress.kt::wakingStartHour@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DaytimeStress.kt::wakingEndHour@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DaytimeStress.kt::activityMaskFraction@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DaytimeStress.kt::postActivityShadowBpm@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DaytimeStress.kt::baselineRelativeHighMarginBPM@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DaytimeStress.kt::daytimeRMSSDScoringEnabled@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DaytimeStress.kt::maskedForActivity@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DaytimeStress.kt::hasData@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DaytimeStress.kt::activityMaskedHours@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DaytimeStress.kt::highStressMinutes@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DaytimeStress.kt::hrOnlyFallback@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DaytimeStress.kt::scored@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DaytimeStress.kt::mean/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DaytimeStress.kt::std/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DaytimeStress.kt::rawScore/6[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DaytimeStress.kt::squash/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DaytimeStress.kt::marginToSigma/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DaytimeStress.kt::analyze/5[defaults=3,4,5]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DaytimeStress.kt::floorDiv/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DaytimeStress.kt::isWakingHour/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DaytimeStress.kt::calmReference/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DaytimeStress.kt::quantile/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DismissedSleepGuard.kt::isSuppressed/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DismissedSleepGuard.kt::keeping/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DismissedSleepGuard.kt::writesTombstoneOnDelete/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DisplayTrace.kt::dataVolumeLine/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DisplayTrace.kt::deviceMetricsLine/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DisplayTrace.kt::frameSummaryLine/6[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DisplayTrace.kt::memoryHighWaterLine/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DisplayTrace.kt::pt/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DisplayTrace.kt::scaleLabel/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DisplayTrace.kt::ms/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DisplayTrace.kt::oneDecimal/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DisplayTrace.kt::deviceMetricsNow/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DisplayTrace.kt::frameSummaryNow/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DoseResponseEngine.kt::delta/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DoseResponseEngine.kt::sentence/0[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DoseResponseEngine.kt::shrinkageK@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DoseResponseEngine.kt::minDoseDays@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DoseResponseEngine.kt::solidDoseDays@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DoseResponseEngine.kt::maxCurveDose@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DoseResponseEngine.kt::estimate/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DoseResponseEngine.kt::estimate/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DoseResponseEngine.kt::confidenceFor/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DoseResponseEngine.kt::olsSlope/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DoseResponseEngine.kt::sameSign/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DoseResponseEngine.kt::clamp/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DoseResponseEngine.kt::round1/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DoseResponsePriors.kt::defaultOutcome/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DoseResponsePriors.kt::table@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DoseResponsePriors.kt::prior/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/DoseResponsePriors.kt::prior/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/EffectRanker.kt::leadLagText@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/EffectRanker.kt::sentence/0[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/EffectRanker.kt::lagSet@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/EffectRanker.kt::minGroupForSignificance@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/EffectRanker.kt::alpha@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/EffectRanker.kt::calibratingBelow@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/EffectRanker.kt::solidPairs@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/EffectRanker.kt::rank/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/EffectRanker.kt::bestLag/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/EffectRanker.kt::shiftedOutcome/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/EffectRanker.kt::effect/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/EffectRanker.kt::sentence/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/EffectRanker.kt::confidence/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/EffectRanker.kt::sorted/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/EffectRanker.kt::sampleVariance/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/EffectRanker.kt::cohensD/6[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/EffectRanker.kt::welchP/6[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/EffectRanker.kt::normalCDF/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/EffectRanker.kt::erfApprox/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/EffectRanker.kt::roundedInt/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/EffectRanker.kt::round1/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/FitnessAgeEngine.kt::menAge@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/FitnessAgeEngine.kt::menIntercept@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/FitnessAgeEngine.kt::menPAI@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/FitnessAgeEngine.kt::menRHR@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/FitnessAgeEngine.kt::menWC@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/FitnessAgeEngine.kt::womenAge@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/FitnessAgeEngine.kt::womenIntercept@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/FitnessAgeEngine.kt::womenPAI@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/FitnessAgeEngine.kt::womenRHR@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/FitnessAgeEngine.kt::womenWC@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/FitnessAgeEngine.kt::seeMen@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/FitnessAgeEngine.kt::seeWomen@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/FitnessAgeEngine.kt::restingHRReference@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/FitnessAgeEngine.kt::paiReference@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/FitnessAgeEngine.kt::displayBandYears@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/FitnessAgeEngine.kt::maxAge@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/FitnessAgeEngine.kt::minAge@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/FitnessAgeEngine.kt::isFemale/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/FitnessAgeEngine.kt::coeffs/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/FitnessAgeEngine.kt::bmi/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/FitnessAgeEngine.kt::estimateVO2max/5[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/FitnessAgeEngine.kt::fitnessAge/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/FitnessAgeEngine.kt::physicalActivityIndex/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/FitnessAgeEngine.kt::physicalActivityIndexFromStrain/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/FitnessAgeEngine.kt::compute/6[defaults=5,6]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/FitnessAgeEngine.kt::minCoverageDays@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/FitnessAgeEngine.kt::goodCoverageDays@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/FitnessAgeEngine.kt::nightsUntilReady/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/FitnessAgeEngine.kt::coverageStatus/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/FitnessAgeEngine.kt::assessReadiness/6[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/FitnessAgeEngine.kt::canCompute@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/FusionResolver.kt::resolve/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/FusionResolver.kt::classify/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/FusionResolver.kt::severity/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/FusionResolver.kt::worse/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HRVReadiness.kt::ROLL_WINDOW@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HRVReadiness.kt::LONG_WINDOW@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HRVReadiness.kt::LONG_WINDOW_FALLBACK@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HRVReadiness.kt::SWC_K@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HRVReadiness.kt::MIN_NIGHTS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HRVReadiness.kt::CV_TREND_WINDOW@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HRVReadiness.kt::LONG_SD_FLOOR@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HRVReadiness.kt::evaluate/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HeartRateRecovery.kt::hasMeasurement@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HeartRateRecovery.kt::eligibilityFractionOfMaxHr@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HeartRateRecovery.kt::minimumHighIntensitySeconds@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HeartRateRecovery.kt::eligibilityLookbackSeconds@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HeartRateRecovery.kt::cessationWindowSeconds@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HeartRateRecovery.kt::measurementToleranceSeconds@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HeartRateRecovery.kt::minimumSamplesPerReading@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HeartRateRecovery.kt::maximumContinuousGapSeconds@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HeartRateRecovery.kt::calculate/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HeartRateRecovery.kt::sustainedSeconds/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HeartRateRecovery.kt::median/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrDownPacer.kt::startDeltaBpm@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrDownPacer.kt::maxDeltaBpm@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrDownPacer.kt::deltaRampSeconds@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrDownPacer.kt::hrFloorBpm@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrDownPacer.kt::recomputeSeconds@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrDownPacer.kt::calmTargetBpm@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrDownPacer.kt::maxDurationSeconds@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrDownPacer.kt::next/3[defaults=3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrDownPacer.kt::rampedDelta/2[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrZones.kt::zoneNumber/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrZones.kt::total@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrZones.kt::secondsInZone/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrZones.kt::zoneEdges@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrZones.kt::customBPMRange@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrZones.kt::tanakaMaxHR/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrZones.kt::zones/3[defaults=2,3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrZones.kt::zones/3[defaults=2,3]#2", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrZones.kt::defaultLowerBounds/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrZones.kt::validCustomLowerBounds/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrZones.kt::timeInZone/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrZones.kt::medianInterval/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrZones.kt::maxHR@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrZones.kt::custom@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrZones.kt::set@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrZones.kt::zones/2[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrvAnalyzer.kt::RR_MIN_MS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrvAnalyzer.kt::RR_MAX_MS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrvAnalyzer.kt::MIN_BEATS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrvAnalyzer.kt::ECTOPIC_THRESHOLD@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrvAnalyzer.kt::ECTOPIC_WINDOW_RADIUS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrvAnalyzer.kt::DEFAULT_SPOT_MAX_REJECTED_FRACTION@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrvAnalyzer.kt::rmssdRaw/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrvAnalyzer.kt::sdnnRaw/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrvAnalyzer.kt::rangeFilter/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrvAnalyzer.kt::rejectEctopic/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrvAnalyzer.kt::cleanRR/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrvAnalyzer.kt::cleanRRGapAware/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrvAnalyzer.kt::rmssdGapAware/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrvAnalyzer.kt::pnn50GapAware/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrvAnalyzer.kt::analyze/3[defaults=2,3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrvAnalyzer.kt::analyzeRaw/2[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrvAnalyzer.kt::COVERAGE_PLAUSIBLE_CEILING@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrvAnalyzer.kt::COVERAGE_PLAUSIBLE_FLOOR@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrvAnalyzer.kt::beatSpreadIsTrustworthy/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrvAnalyzer.kt::beatAccurateFraction/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrvAnalyzer.kt::BEAT_ACCURACY_TOLERANCE_S@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrvAnalyzer.kt::BEAT_ACCURACY_MIN_FRACTION@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrvAnalyzer.kt::beatValuesAreTrustworthy/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrvAnalyzer.kt::classifyCoverage/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrvAnalyzer.kt::rrCoverage/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrvAnalyzer.kt::duplicateBeatCount/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrvAnalyzer.kt::collapseOverCount/4[defaults=3,4]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrvAnalyzer.kt::collapsedCoverage/3[defaults=3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrvAnalyzer.kt::densestSecondWindowSample/5[defaults=4,5]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrvAnalyzer.kt::DEFAULT_ROLLING_WINDOW_SEC@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrvAnalyzer.kt::median/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrvAnalyzerTrace.kt::r2/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrvAnalyzerTrace.kt::analyzeTrace/3[defaults=2,3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrvFreqDomain.kt::VLF_LOW_HZ@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrvFreqDomain.kt::LF_LOW_HZ@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrvFreqDomain.kt::LF_HIGH_HZ@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrvFreqDomain.kt::HF_LOW_HZ@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrvFreqDomain.kt::HF_HIGH_HZ@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrvFreqDomain.kt::MIN_SPAN_FOR_HF_SEC@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrvFreqDomain.kt::MIN_SPAN_FOR_LF_SEC@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrvFreqDomain.kt::MIN_BEATS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrvFreqDomain.kt::FREQ_STEP_HZ@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrvFreqDomain.kt::freqDomain/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrvFreqDomain.kt::freqDomainRaw/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrvFreqDomain.kt::bandPower/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HrvFreqDomain.kt::lombScarglePower/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HydrationGoal.kt::BASELINE_MALE@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HydrationGoal.kt::BASELINE_FEMALE@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HydrationGoal.kt::BASELINE_OTHER@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HydrationGoal.kt::MAX_EFFORT_BUMP@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HydrationGoal.kt::ROUND_TO@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HydrationGoal.kt::SIP_ML@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HydrationGoal.kt::CUP_ML@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HydrationGoal.kt::BOTTLE_ML@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HydrationGoal.kt::baselineForSex/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HydrationGoal.kt::effortBump/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HydrationGoal.kt::dailyGoalMl/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HydrationGoal.kt::roundToNearest/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HydrationStore.kt::mutationSeq@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HydrationStore.kt::KEY@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HydrationStore.kt::SOURCE_ID@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HydrationStore.kt::KEY_IMPORTED@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HydrationStore.kt::localOffsetSec/1[defaults=1]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HydrationStore.kt::dayKey/1[defaults=1]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HydrationStore.kt::log/3[defaults=3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HydrationStore.kt::clampedTotal/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HydrationStore.kt::afterRemoving/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HydrationStore.kt::set/3[defaults=3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HydrationStore.kt::remove/3[defaults=3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HydrationStore.kt::total/2[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HydrationStore.kt::manualTotal/2[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HydrationStore.kt::importedTotal/2[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HydrationStore.kt::dayValue/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HydrationStore.kt::sumByDay/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HydrationStore.kt::importWindow/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HydrationStore.kt::setImported/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/HydrationStore.kt::history/3[defaults=2,3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IllnessDistance.kt::distanceThreshold@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IllnessDistance.kt::minDeviatingFeatures@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IllnessDistance.kt::featureZThreshold@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IllnessDistance.kt::ridge@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IllnessDistance.kt::restingHR@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IllnessDistance.kt::rmssd@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IllnessDistance.kt::skinTemp@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IllnessDistance.kt::respiration@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IllnessDistance.kt::present/0[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IllnessDistance.kt::evaluate/2[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IllnessDistance.kt::identity/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IllnessDistance.kt::invertOrDiagonal/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IllnessDistance.kt::diagonalInverse/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IllnessSignalEngine.kt::raiseThreshold@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IllnessSignalEngine.kt::mildThreshold@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IllnessSignalEngine.kt::minCorroboratingSignals@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IllnessSignalEngine.kt::signalZThreshold@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IllnessSignalEngine.kt::kZToScore@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IllnessSignalEngine.kt::perSignalCap@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IllnessSignalEngine.kt::confounderDampen@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IllnessSignalEngine.kt::disclaimerTail@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IllnessSignalEngine.kt::present@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IllnessSignalEngine.kt::restingHR@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IllnessSignalEngine.kt::skinTemp@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IllnessSignalEngine.kt::hrv@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IllnessSignalEngine.kt::respiration@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IllnessSignalEngine.kt::alcohol@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IllnessSignalEngine.kt::stress@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IllnessSignalEngine.kt::sauna@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IllnessSignalEngine.kt::hardOrLateWorkout@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IllnessSignalEngine.kt::travelPhaseJump@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IllnessSignalEngine.kt::alreadyUnwell@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IllnessSignalEngine.kt::baselineTrusted@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IllnessSignalEngine.kt::evaluate/3[defaults=3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IllnessSignalEngine.kt::joinReasons/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ImportTrace.kt::TRACE_VERSION@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ImportTrace.kt::parserVersionLine/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ImportTrace.kt::fileMetaLine/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ImportTrace.kt::stageLine/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ImportTrace.kt::rejectLine/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ImportTrace.kt::stageLineUnverified/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ImportTrace.kt::dayDeltaLineUnverified/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ImportTrace.kt::dayDeltaLine/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ImportTrace.kt::firstFailingRowLine/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ImportTrace.kt::failingFileSampleLines/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ImportTrace.kt::MAX_SAMPLE_CELLS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ImportTrace.kt::MAX_SAMPLE_CHARS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ImportTrace.kt::redactCell/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ImportTrace.kt::isUnicodeNumber/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ImportTrace.kt::redactSample/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ImportTrace.kt::capped/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ImportTrace.kt::sizeBucket/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ImportTrace.kt::safeExt/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ImportTrace.kt::categoryWire/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ImportTrace.kt::kindWire/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ImportTrace.kt::lastImportSummary/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ImuFeatureExtractor.kt::cadenceBand@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ImuFeatureExtractor.kt::minCadenceStrength@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ImuFeatureExtractor.kt::extract/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ImuFeatureExtractor.kt::extract/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IntelligenceEngine.kt::analyzeGate@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IntelligenceEngine.kt::dayScanCache@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IntelligenceEngine.kt::dayScanCacheConfigSig@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IntelligenceEngine.kt::candidatePriorities/0[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IntelligenceEngine.kt::lockedOwner/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IntelligenceEngine.kt::activeWriteId/0[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IntelligenceEngine.kt::skinTempFamily/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IntelligenceEngine.kt::registeredWhoopFamily/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IntelligenceEngine.kt::MIN_HR_SAMPLES@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IntelligenceEngine.kt::STREAM_LIMIT@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IntelligenceEngine.kt::SECONDS_PER_DAY@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IntelligenceEngine.kt::WEARABLE_IMPORT_SOURCES@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IntelligenceEngine.kt::analyzeRecent/22[defaults=2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IntelligenceEngine.kt::EFFORT_RESCORE_HISTORY_DAYS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IntelligenceEngine.kt::runEffortRescoreIfNeeded/7[defaults=2,3,4,7]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IntelligenceEngine.kt::analyzeRecentOnCpu/22[defaults=2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IntelligenceEngine.kt::colliderSourceLabel/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IntelligenceEngine.kt::backfillWorkoutFromDetectedBout/5[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IntelligenceEngine.kt::rescoreManualWorkouts/6[defaults=6]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IntelligenceEngine.kt::recomputeRecovery/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IntelligenceEngine.kt::watchRecoveries/2[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IntelligenceEngine.kt::recoveryTraceLines/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IntelligenceEngine.kt::bandSleepStateSamples/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IntelligenceEngine.kt::computeHabitualSleep/6[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IntelligenceEngine.kt::editedRowsForDay/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IntelligenceEngine.kt::sleepEditedDaily/6[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IntelligenceEngine.kt::fitnessAgeRows/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IntelligenceEngine.kt::recomputeFitnessAgeOnly/4[defaults=4]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IntelligenceEngine.kt::recomputeSkinTempDev/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IntelligenceEngine.kt::medianOfDoubles/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IntelligenceEngine.kt::saturdayKeyOnOrBefore/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IntelligenceEngine.kt::resolveDayOwner/7[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IntelligenceEngine.kt::mergeNightlyIntoHistory/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IntelligenceEngine.kt::midnightUtc/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IntelligenceEngine.kt::midnightLocal/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IntelligenceEngine.kt::sleepReadWindowEnd/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IntelligenceEngine.kt::daySourceToken/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IntelligenceEngine.kt::sleepStagesLogToken/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IntelligenceEngine.kt::universalProvenanceToken/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IntelligenceEngine.kt::dayOwnerLine/6[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IntelligenceEngine.kt::respRateLogLine/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IntelligenceEngine.kt::rhrFloorMeanLogLine/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IntelligenceEngine.kt::sleepDetectNoNightLogLine/8[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IntelligenceEngine.kt::sleepDivergenceLogLine/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/IntelligenceEngine.kt::healDeviceIds/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/LabBookProjection.kt::SOURCE_ID@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/LabBookProjection.kt::BP_SYSTOLIC_KEY@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/LabBookProjection.kt::BP_DIASTOLIC_KEY@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/LabBookProjection.kt::DEFAULT_WINDOW_DAYS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/LabBookProjection.kt::CELL_SEP@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/LabBookProjection.kt::project/2[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/LabBookProjection.kt::pairMarkerToWearable/3[defaults=3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/LabBookProjection.kt::correlationInput/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/LabBookProjection.kt::shiftDay/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/LiveSessionEngine.kt::baseBand@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/LiveSessionEngine.kt::buffer@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/LiveSessionEngine.kt::smoothedHistory@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/LiveSessionEngine.kt::lastUpdateTs@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/LiveSessionEngine.kt::lastValidTs@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/LiveSessionEngine.kt::lastAcceptedBpm@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/LiveSessionEngine.kt::currentPosition@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/LiveSessionEngine.kt::inBandSeconds@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/LiveSessionEngine.kt::belowSinceTs@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/LiveSessionEngine.kt::aboveSinceTs@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/LiveSessionEngine.kt::aboveSlowSinceTs@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/LiveSessionEngine.kt::lastClimbTs@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/LiveSessionEngine.kt::lastPushCueTs@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/LiveSessionEngine.kt::lastEaseCueTs@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/LiveSessionEngine.kt::ceilingDriftBpm@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/LiveSessionEngine.kt::update/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/LiveSessionEngine.kt::currentBand/0[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/LiveSessionEngine.kt::isPlausible/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/LiveSessionEngine.kt::classify/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/LiveSessionEngine.kt::median/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ManualWorkoutRescore.kt::UNDER_SCORED_KCAL_THRESHOLD@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ManualWorkoutRescore.kt::IMPROVEMENT_MARGIN_KCAL@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ManualWorkoutRescore.kt::looksUnderScored/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ManualWorkoutRescore.kt::scored/4[defaults=4]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ManualWorkoutRescore.kt::improves/4[defaults=3,4]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/MarkerCatalog.kt::referenceTextHint@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/MarkerCatalog.kt::higherIsBetter@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/MarkerCatalog.kt::FROM_REPORT@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/MarkerCatalog.kt::builtIn@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/MarkerCatalog.kt::byKey@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/MarkerCatalog.kt::definition/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/MarkerCatalog.kt::custom/4[defaults=4]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/MetricArbitrationPolicy.kt::kind/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/MetricArbitrationPolicy.kt::tier/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/MetricArbitrationPolicy.kt::sourcePriority/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/MetricArbitrationPolicy.kt::reason/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/MetricArbitrationPolicy.kt::tolerance/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/MetricArbitrationPolicy.kt::toleranceForKey/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/NapDetector.kt::durationS@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/NapDetector.kt::enabled@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/NapDetector.kt::minNapMinutes@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/NapDetector.kt::maxNapMinutes@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/NapDetector.kt::stillThresholdG@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/NapDetector.kt::hrSettleMarginBpm@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/NapDetector.kt::smoothWindowSeconds@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/NapDetector.kt::DEFAULT_MIN_NAP_MIN@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/NapDetector.kt::DEFAULT_MAX_NAP_MIN@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/NapDetector.kt::DEFAULT_STILL_THRESHOLD_G@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/NapDetector.kt::DEFAULT_HR_SETTLE_MARGIN_BPM@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/NapDetector.kt::DEFAULT_SMOOTH_WINDOW_S@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/NapDetector.kt::MAX_GAP_S@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/NapDetector.kt::DEFAULT_MIN_GRAVITY_SAMPLES@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/NapDetector.kt::DEFAULT_MAX_MEDIAN_GAP_S@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/NapDetector.kt::isWindowDense/3[defaults=2,3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/NapDetector.kt::longestQuietRun/3[defaults=2,3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/NapDetector.kt::meanHrIn/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/NapDetector.kt::evaluate/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/NapDetector.kt::confidenceFor/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/NapPrefs.kt::PREFS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/NapPrefs.kt::KEY_ENABLED@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/NapPrefs.kt::KEY_HIGH_WATER@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/NapPrefs.kt::prefs/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/NapPrefs.kt::enabled/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/NapPrefs.kt::setEnabled/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/NapPrefs.kt::highWaterTs/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/NapPrefs.kt::setHighWaterTs/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/NapPrefs.kt::highWaterOrSeed/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/NapPrefs.kt::config/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/PrimarySessionRestingHR.kt::DEFAULT_VALID_BPM@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/PrimarySessionRestingHR.kt::DEFAULT_MIN_VALID_SAMPLES@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/PrimarySessionRestingHR.kt::meanHR/3[defaults=2,3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/PrimarySessionRestingHR.kt::coverage/3[defaults=2,3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RangeReport.kt::label@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RangeReport.kt::unit@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RangeReport.kt::usesOneDecimal@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RangeReport.kt::higherIsBetter@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RangeReport.kt::framesGoodBad@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RangeReport.kt::trendSlopeThreshold@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RangeReport.kt::halfDelta@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RangeReport.kt::stat/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RangeReport.kt::isEmpty@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RangeReport.kt::build/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RangeReport.kt::makeHeadlines/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RangeReport.kt::salience/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RangeReport.kt::headline/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RangeReport.kt::trendFromSlope/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RangeReport.kt::dayCount/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RangeReport.kt::parseYMD/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RangeReport.kt::daysInMonth/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RangeReport.kt::isLeap/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RangeReport.kt::julianDayNumber/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RangeReport.kt::mean/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RangeReport.kt::leastSquaresSlope/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RangeReport.kt::round1/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ReadinessEngine.kt::evidence@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ReadinessEngine.kt::confidence@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ReadinessEngine.kt::baselineWindow@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ReadinessEngine.kt::minBaseline@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ReadinessEngine.kt::acuteWindow@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ReadinessEngine.kt::chronicWindow@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ReadinessEngine.kt::minChronic@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ReadinessEngine.kt::respZWatch@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ReadinessEngine.kt::respZBad@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ReadinessEngine.kt::respPlausibleRange@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ReadinessEngine.kt::evaluate/2[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ReadinessEngine.kt::EVALUATE_CACHE_CAP@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ReadinessEngine.kt::evaluateCache@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ReadinessEngine.kt::evaluateCacheLock@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ReadinessEngine.kt::readinessKey/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ReadinessEngine.kt::evaluateUncached/2[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ReadinessEngine.kt::zSignal/13[defaults=9]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ReadinessEngine.kt::fmt/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ReadinessEngine.kt::acwrSignal/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ReadinessEngine.kt::synthesize/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ReadinessEngine.kt::mean/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ReadinessEngine.kt::sampleSD/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryDrivers.kt::chargeDrivers/8[defaults=8]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryDrivers.kt::hrvVerdict/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryDrivers.kt::rhrVerdict/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryDrivers.kt::respVerdict/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryDrivers.kt::sleepVerdict/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryDrivers.kt::SKIN_TEMP_TYPICAL_BAND_C@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryDrivers.kt::skinTempVerdict/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryForecast.kt::low@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryForecast.kt::high@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryForecast.kt::baselineWindow@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryForecast.kt::minBaselineNights@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryForecast.kt::effortWindow@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryForecast.kt::strainWeight@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryForecast.kt::effortSpread@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryForecast.kt::strainAdjCap@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryForecast.kt::sleepWeight@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryForecast.kt::sleepOverCap@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryForecast.kt::reversionWeight@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryForecast.kt::reversionAdjCap@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryForecast.kt::minBandPoints@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryForecast.kt::thinBandPoints@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryForecast.kt::trustedNights@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryForecast.kt::solidNeedNights@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryForecast.kt::defaultNeedHours@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryForecast.kt::forecast/6[defaults=2,5,6]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryForecast.kt::mean/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryForecast.kt::sampleSD/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryForecast.kt::leastSquaresSlope/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryForecast.kt::clamp/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryScorer.kt::wHRV@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryScorer.kt::wRHR@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryScorer.kt::wResp@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryScorer.kt::wSleep@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryScorer.kt::wSkinTemp@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryScorer.kt::skinTempDevScale@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryScorer.kt::wRecoveryIndex@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryScorer.kt::recoveryIndexScaleBpmPerHr@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryScorer.kt::wActivityBalance@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryScorer.kt::logisticK@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryScorer.kt::logisticZ0@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryScorer.kt::populationMean@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryScorer.kt::bandRedMax@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryScorer.kt::bandYellowMax@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryScorer.kt::sleepPerfCenter@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryScorer.kt::sleepPerfScale@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryScorer.kt::satEnterZ@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryScorer.kt::satFullZ@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryScorer.kt::satMaxDampFraction@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryScorer.kt::parasympatheticSaturation/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryScorer.kt::restingHRWindowS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryScorer.kt::restingHRMinBinSamples@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryScorer.kt::restingHRMinPlausibleBpm@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryScorer.kt::restingHR/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryScorer.kt::recoveryIndexMinBins@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryScorer.kt::recoveryIndexSlope/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryScorer.kt::band/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryScorer.kt::zScore/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryScorer.kt::recovery/12[defaults=8,9,10,11,12]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryScorer.kt::logisticScore/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryScorer.kt::recovery/11[defaults=8,9,10,11]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryScorerTrace.kt::r2/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryScorerTrace.kt::recoveryTrace/8[defaults=8]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RegistryDayOwnerSource.kt::candidatePriorities/0[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RegistryDayOwnerSource.kt::lockedOwner/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RegistryDayOwnerSource.kt::activeWriteId/0[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RegistryDayOwnerSource.kt::skinTempFamily/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RegistryDayOwnerSource.kt::registeredWhoopFamily/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ResonanceEngine.kt::FULL_SWEEP_PACES@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ResonanceEngine.kt::QUICK_SWEEP_PACES@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ResonanceEngine.kt::FALLBACK_BPM@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ResonanceEngine.kt::TRANSIENT_DROP_SECONDS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ResonanceEngine.kt::MIN_BEATS_PER_PACE@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ResonanceEngine.kt::MIN_CYCLES_PER_PACE@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ResonanceEngine.kt::MIN_SCORED_PACES@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ResonanceEngine.kt::scored@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ResonanceEngine.kt::scorePace/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ResonanceEngine.kt::sweep/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/ResonanceEngine.kt::repairTimestamps/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RhythmExport.kt::disclaimer@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RhythmExport.kt::header@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RhythmExport.kt::csv/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RhythmExport.kt::num/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RhythmScreener.kt::WINDOW_MIN_BEATS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RhythmScreener.kt::RESTING_HR_MIN_BPM@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RhythmScreener.kt::RESTING_HR_MAX_BPM@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RhythmScreener.kt::TAU_RATIO@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RhythmScreener.kt::TAU_NRMSSD@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RhythmScreener.kt::TAU_TP@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RhythmScreener.kt::TAU_ECTOPIC_LOW@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RhythmScreener.kt::NIGHT_MIN_VARIED_WINDOWS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RhythmScreener.kt::NIGHT_MIN_SPAN_SECONDS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RhythmScreener.kt::SOLID_BEATS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RhythmScreener.kt::ts@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RhythmScreener.kt::ppgIBIms@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RhythmScreener.kt::screenWindow/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RhythmScreener.kt::summarizeNight/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RhythmScreener.kt::nightBeatsAreBanked/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RhythmScreener.kt::classifyEmptyState/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RhythmScreener.kt::computeStats/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RhythmScreener.kt::turningPointRate/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RhythmScreener.kt::ectopicFraction/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RhythmScreener.kt::poincareCloud/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RhythmScreener.kt::classify/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RhythmScreener.kt::confidence/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RouteMath.kt::EARTH_R@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RouteMath.kt::haversineMeters/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RouteMath.kt::totalMeters/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RouteMath.kt::paceSecPerKm/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RouteMath.kt::encode/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RouteMath.kt::decode/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RouteMath.kt::encodeSigned/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RouteMath.kt::normalizeToBox/4[defaults=4]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SedentaryDetector.kt::lastProcessedGravityTs@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SedentaryDetector.kt::lastBuzzAt@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SedentaryDetector.kt::lastBuzzedBoutStart@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SedentaryDetector.kt::lastBuzzedBoutEnd@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SedentaryDetector.kt::enabled@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SedentaryDetector.kt::notificationsMasterOn@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SedentaryDetector.kt::moveThresholdG@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SedentaryDetector.kt::thresholdMinutes@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SedentaryDetector.kt::smoothWindowSeconds@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SedentaryDetector.kt::reNudgeMinutes@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SedentaryDetector.kt::buzzLoops@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SedentaryDetector.kt::activeHoursEnabled@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SedentaryDetector.kt::activeStartMinutes@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SedentaryDetector.kt::activeEndMinutes@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SedentaryDetector.kt::quietHoursEnabled@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SedentaryDetector.kt::quietStartMinutes@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SedentaryDetector.kt::quietEndMinutes@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SedentaryDetector.kt::onlyWhenWorn@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SedentaryDetector.kt::DEFAULT_MOVE_THRESHOLD_G@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SedentaryDetector.kt::DEFAULT_SMOOTH_WINDOW_S@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SedentaryDetector.kt::MAX_GAP_S@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SedentaryDetector.kt::DEFAULT_THRESHOLD_MINUTES@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SedentaryDetector.kt::DEFAULT_MIN_MINUTES@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SedentaryDetector.kt::DEFAULT_RENUDGE_MINUTES@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SedentaryDetector.kt::DEFAULT_BUZZ_LOOPS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SedentaryDetector.kt::DEFAULT_ACTIVE_START_MIN@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SedentaryDetector.kt::DEFAULT_ACTIVE_END_MIN@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SedentaryDetector.kt::DEFAULT_QUIET_START_MIN@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SedentaryDetector.kt::DEFAULT_QUIET_END_MIN@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SedentaryDetector.kt::detectSedentaryBouts/4[defaults=2,3,4]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SedentaryDetector.kt::localMinuteOfDay/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SedentaryDetector.kt::windowContains/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SedentaryDetector.kt::mayBuzz/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SedentaryDetector.kt::evaluate/6[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SkinTempDisplay.kt::kind/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SkinTempDisplay.kt::unitSymbol/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SkinTempDisplay.kt::numberString/4[defaults=4]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SkinTempDisplay.kt::format/3[defaults=3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepDebt.kt::nightCount@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepDebt.kt::isDebt@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepDebt.kt::magnitudeMin@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepDebt.kt::DEFAULT_WINDOW_NIGHTS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepDebt.kt::ON_TARGET_BAND_MIN@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepDebt.kt::creditedSleepMin/2[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepDebt.kt::ledger/3[defaults=2,3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepDebt.kt::round1/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepEditGuard.kt::MAX_AUTO_CORRECT_NIGHT_SEC@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepEditGuard.kt::autoCorrectedBed/5[defaults=5]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepEditGuard.kt::isDisjoint/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepEditGuard.kt::MAX_EDIT_WINDOW_SEC@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepEditGuard.kt::clampedEditWindow/4[defaults=4]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepMark.kt::word@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepMark.kt::dayKey@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepMark.kt::metricPoint/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepMark.kt::logLine/0[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepMark.kt::confirmation/0[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepReadout.kt::hrDensityPerMinute/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepReadout.kt::gravityCoverageFraction/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepReadout.kt::lastGateFired/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepReadout.kt::lastChargeBreakdown/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepReadout.kt::lastHrvComputation/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepSessionDedup.kt::MIN_OVERLAP_SECONDS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepSessionDedup.kt::MIN_OVERLAP_FRACTION_OF_SHORTER@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepSessionDedup.kt::NEAR_ADJACENT_SECONDS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepSessionDedup.kt::FRAGMENT_FRACTION_OF_LONGER@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepSessionDedup.kt::overlapSeconds/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepSessionDedup.kt::edgeGapSeconds/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepSessionDedup.kt::isDuplicate/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepSessionDedup.kt::dedupe/2[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStageHealer.kt::restageFromRaw/6[defaults=5,6]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStageHealer.kt::isDense/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStageHealer.kt::restageFromSamples/9[defaults=7,8,9]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStageHealer.kt::selfHealEditedStages/7[defaults=6,7]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStageTotals.kt::awake@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStageTotals.kt::light@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStageTotals.kt::deep@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStageTotals.kt::rem@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStageTotals.kt::asleep@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStageTotals.kt::inBed@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStageTotals.kt::minutes/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStageTotals.kt::clampStagesToOnset/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStageTotals.kt::OVERNIGHT_START_HOUR@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStageTotals.kt::OVERNIGHT_END_HOUR@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStageTotals.kt::SECONDS_PER_DAY@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStageTotals.kt::ALIGNMENT_BONUS_MIN@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStageTotals.kt::ALIGNMENT_FULL_WINDOW_SEC@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStageTotals.kt::ALIGNMENT_ZERO_SEC@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStageTotals.kt::MEANINGFUL_BONUS_EPSILON@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStageTotals.kt::GAP_BRIDGE_MAX_MIN@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStageTotals.kt::NIGHT_TAIL_BRIDGE_MAX_MIN@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStageTotals.kt::durationS@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStageTotals.kt::midpointSec@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStageTotals.kt::isOvernightOnset/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStageTotals.kt::localSecOfDay/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStageTotals.kt::circularDistanceSec/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStageTotals.kt::coldStartAnchorSec@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStageTotals.kt::alignmentBonusMinutes/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStageTotals.kt::targetMidsleepSec/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStageTotals.kt::bridgeAdjacent/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStageTotals.kt::bridgedNightGroups/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStageTotals.kt::mainNightGroupIndices/3[defaults=3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStageTotals.kt::mainNightIndex/3[defaults=3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStageTotals.kt::asleepMin@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStageTotals.kt::mainNightSelection/3[defaults=3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStageTotals.kt::dailyAggregate/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStageTotals.kt::dailyAggregate/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStageTotals.kt::interFragmentAwakeSeconds/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStageTotals.kt::dailyAggregateHonoringEdits/6[defaults=3,4,5,6]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStageTotals.kt::mainNightGroupIndicesByStages/4[defaults=4]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStageTotals.kt::summedStagesJSON/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStageTotals.kt::mainNightIndexByStages/4[defaults=4]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStageTotals.kt::durationS@computed-property#2", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStageTotals.kt::midpointSec@computed-property#2", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStageTotals.kt::HABITUAL_MIN_DAYS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStageTotals.kt::habitualMidsleepSec/3[defaults=3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStageTotals.kt::CIRCULAR_MEAN_MIN_RESULTANT@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStageTotals.kt::circularMeanSec/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStageVocabulary.kt::isWake/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::gravityStillThresholdG@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::stillWindowMin@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::stillFraction@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::maxGapMin@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::mergeMin@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::minSleepMin@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::defaultIntervalS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::daytimeBandStartHour@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::daytimeBandEndHour@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::nightContinuationGapMin@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::daytimeMinSleepMin@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::daytimeRestingHRMult@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::maxMainSleepSpanS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::morningStillnessWindowMin@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::morningReonsetRestingHRMult@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::bandStateAsleep@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::morningReonsetBandAsleepFrac@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::bandStateWakeVetoEnabled@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::bandStateWakeVetoCutoffTs@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::bandVetoRecoverStage@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::bandVetoShadowLine/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::secondsPerDay@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::minWindowSamples@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::hrSleepBaselineMult@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::quiescentHRSleepMult@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::quiescentPostureVarG2@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::quiescentStableFrac@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::quiescentMinStableMinutes@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::adaptiveBaselineFloor@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::hrRefineMinSamples@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::onsetPersistEpochs@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::offWristHRGapMin@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::maxOffWristSleepFraction@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::hrDenseSpacingS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::sparseGravitySpanFrac@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::hrSleepBandMult@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::sparseBridgeGapMin@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::epochS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::featureWindowS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::ckCountDivisor@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::ckCountClip@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::moveDeltaThresholdG@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::hrDogSigma1S@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::hrDogSigma2S@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::stageHRLowPct@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::stageHRHighPct@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::stageHRVHighPct@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::stageHRVarHighPct@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::stageRRVHighPct@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::stageRRVLowPct@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::stageWakeMoveFrac@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::stageStillMoveFrac@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::cardiacSparseEpochFrac@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::smoothEpochs@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::noREMAfterOnsetMin@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::deepFirstFraction@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::fragmentMergeMin@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::fragmentMergeEpochs@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::ckWeights@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::ckScale@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::ckBack@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::ckFwd@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::gravityDeltas/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::medianIntervalS/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::windowSize/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::largestGapS/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::isGravitySparse/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::hrSleepBandAcross/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::classifyStill/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::buildRuns/5[defaults=3,4,5]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::mergePeriods/2[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::bridgeSparseSleep/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::rowsBetween/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::hrBaseline/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::confirmSleepWithHR/5[defaults=4,5]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::runIsDeeplyQuiescent/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::posturVarianceG2/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::adaptiveOvernightHRBaseline/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::isDaytimeCenter/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::isOvernightOnset/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::passesDaytimeGuard/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::passesMorningStillnessGuard/5[defaults=5]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::bandStateConfirmsAsleep/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::applyBandStateWakeVeto/6[defaults=5,6]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::offWristHRGapSpans/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::offWristFraction/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::streamFingerprint/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::DETECT_CACHE_MAX_DAYS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::detectCache@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::detectCacheLock@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::copyDetected/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::detectSleep/10[defaults=1,2,3,5,6,7,8,9,10]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::detectSleepUncached/10[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::efficiency/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::onsetAndFinalWake/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::stageSession/6[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::stageSessionUncached/6[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::sessionEpochMotion/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::sessionEpochSleepState/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::nEpochs@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::epochMid/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::buildEpochGrid/7[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::rescaleCounts/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::coleKripke/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::gaussianKernel/2[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::convolveReflect/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::dogHRVariability/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::respRateAndRRV/2[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::rsaResampleHz@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::rsaDetrendWindowS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::rsaMinPeakDistanceS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::rsaWindowS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::rsaGapToleranceS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::rsaMinBreathIntervalS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::rsaMaxBreathIntervalS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::respPlausibleRangeBpm@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::respRateFromRR/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::findPeaks/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::extractFeatures/5[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::percentile/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::percentileSorted/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::classifyEpochs/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::isCardiacSparse/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::contradictsDepth@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::meetsIrregularBar@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::classifyOne/8[defaults=8]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::smoothLabels/2[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::reimposePhysiology/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::isZeroREM@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::summary@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::remRejectReason/8[defaults=8]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::remFunnelDiagnostic/6[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::stageDepthRank/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::mergeFragments/2[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::sessionRestingHR/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::sessionAvgHRV/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::sessionHrvWindows/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::lastDeepRun/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::hypnogramMetrics/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStager.kt::standardDeviation/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStagerTrace.kt::runLine/6[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStagerTrace.kt::flipLine/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStagerTrace.kt::round2/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStagerV2.kt::stageSession/6[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStagerV2.kt::PAD_LO@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStagerV2.kt::PAD_HI@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStagerV2.kt::clipSorted/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStagerV2.kt::stageSessionUncached/6[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStagerV2.kt::stageNames@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStagerV2.kt::baseLogPrior@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStagerV2.kt::deepGateThresh@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStagerV2.kt::deepGateSlope@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStagerV2.kt::jerkFloorMoveMult@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStagerV2.kt::jerkFloorGateMult@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStagerV2.kt::motionGateBoost@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStagerV2.kt::motionQuiescent/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStagerV2.kt::respWeight@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStagerV2.kt::transition@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStagerV2.kt::features/5[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStagerV2.kt::respRegularity/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStagerV2.kt::remLatencyPenalty@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStagerV2.kt::remLatencyMinutes@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStagerV2.kt::remLatencyGuard/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStagerV2.kt::cyclePrior/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStagerV2.kt::onsetSustainedEpochs@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStagerV2.kt::sustainedSleepOnset/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStagerV2.kt::viterbi/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepStagerV2.kt::stageEpochs/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepWindowReclip.kt::reclip/5[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepWindowReclip.kt::reclipSegments/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SleepWindowReclip.kt::reclipMinutes/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/Spo2ReTrace.kt::MAX_SAMPLES@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/Spo2ReTrace.kt::recordLine/6[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SpotHrvReading.kt::compute/2[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SpotHrvReading.kt::meanHrFromNN/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/SpotHrvReading.kt::caveatFor/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StagePercentages.kt::wholePercentages/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StagerCache.kt::fingerprint/7[defaults=7]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StagerCache.kt::MAX_NIGHTS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StagerCache.kt::cache@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StagerCache.kt::lock@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StagerCache.kt::get/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StagerCache.kt::put/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StagerCache.kt::copyOf/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StepsCounter.kt::MAX_STEP_DELTA@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StepsCounter.kt::stepsInWindow/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StepsEstimateEngine.kt::MIN_CALIBRATION_DAYS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StepsEstimateEngine.kt::GOOD_CALIBRATION_DAYS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StepsEstimateEngine.kt::MIN_MOTION_FOR_FIT@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StepsEstimateEngine.kt::MAX_DAILY_STEPS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StepsEstimateEngine.kt::canEstimate@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StepsEstimateEngine.kt::headline@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StepsEstimateEngine.kt::confidenceTier@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StepsEstimateEngine.kt::coefficientOrNull@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StepsEstimateEngine.kt::detail@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StepsEstimateEngine.kt::canEstimate@computed-property#2", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StepsEstimateEngine.kt::headline@computed-property#2", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StepsEstimateEngine.kt::confidenceTier@computed-property#2", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StepsEstimateEngine.kt::coefficientOrNull@computed-property#2", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StepsEstimateEngine.kt::detail@computed-property#2", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StepsEstimateEngine.kt::canEstimate@computed-property#3", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StepsEstimateEngine.kt::headline@computed-property#3", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StepsEstimateEngine.kt::confidenceTier@computed-property#3", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StepsEstimateEngine.kt::coefficientOrNull@computed-property#3", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StepsEstimateEngine.kt::detail@computed-property#3", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StepsEstimateEngine.kt::formatK/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StepsEstimateEngine.kt::status/2[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StepsEstimateEngine.kt::dayMotionIntensity/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StepsEstimateEngine.kt::calibrate/2[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StepsEstimateEngine.kt::estimate/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StepsEstimateEngine.kt::median/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StepsEstimateEngine.kt::weightedMedian/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StepsEstimateEngineTrace.kt::r2/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StepsEstimateEngineTrace.kt::calibrationTrace/2[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StepsEstimateEngineTrace.kt::rawCounterTrace/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StepsEstimateEngineTrace.kt::stepsToday/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StepsEstimateEngineTrace.kt::calibrationState/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StepsEstimateEngineTrace.kt::intField/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StrainScorer.kt::minReadings@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StrainScorer.kt::minSparseReadings@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StrainScorer.kt::minSpanSeconds@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StrainScorer.kt::maxStrain@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StrainScorer.kt::strainDenominator@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StrainScorer.kt::lnStrainDenominator@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StrainScorer.kt::fallbackSampleMin@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StrainScorer.kt::defaultAge@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StrainScorer.kt::defaultRestingHR@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StrainScorer.kt::hrmaxMinSamples@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StrainScorer.kt::hrmaxPercentile@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StrainScorer.kt::banisterScale@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StrainScorer.kt::banisterBMen@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StrainScorer.kt::banisterBWomen@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StrainScorer.kt::edwardsZones@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StrainScorer.kt::tanakaHRmax/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StrainScorer.kt::defaultMaxHR/1[defaults=1]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StrainScorer.kt::percentile/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StrainScorer.kt::estimateHRmax/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StrainScorer.kt::pctHRR/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StrainScorer.kt::zoneWeight/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StrainScorer.kt::maxSampleGapMin@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StrainScorer.kt::effectiveEffort/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StrainScorer.kt::sampleDurationMinutes/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StrainScorer.kt::sampleDurationsMinutes/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StrainScorer.kt::edwardsTRIMP/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StrainScorer.kt::banisterTRIMP/5[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StrainScorer.kt::fitStrainDenominator/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StrainScorer.kt::strain/6[defaults=2,3,4,5,6]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StrapComparison.kt::compare/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StrapComparison.kt::agreement/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StreakCalculator.kt::streaks/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StressIndex.kt::BIN_WIDTH_SEC@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StressIndex.kt::MIN_BEATS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StressIndex.kt::stressIndex/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StressIndex.kt::stressIndexRaw/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StressIndex.kt::components/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StressIndex.kt::componentsRaw/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StressOnsetDetector.kt::BASELINE_EMA_ALPHA@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StressOnsetDetector.kt::DROP_RATIO@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StressOnsetDetector.kt::RESTING_HR_LOW@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StressOnsetDetector.kt::RESTING_HR_HIGH@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StressOnsetDetector.kt::FAST_WINDOW_BEATS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StressOnsetDetector.kt::MIN_BEATS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StressOnsetDetector.kt::MIN_SECONDS_BETWEEN_FIRES@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StressOnsetDetector.kt::SUSTAIN_SECONDS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StressOnsetDetector.kt::MOTION_GATE_G@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StressOnsetDetector.kt::enabled@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StressOnsetDetector.kt::autoNudge@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StressOnsetDetector.kt::quietHoursEnabled@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StressOnsetDetector.kt::quietStartMinutes@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StressOnsetDetector.kt::quietEndMinutes@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StressOnsetDetector.kt::buzzLoops@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StressOnsetDetector.kt::baselineRMSSD@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StressOnsetDetector.kt::wasBelow@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StressOnsetDetector.kt::lastFireAt@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StressOnsetDetector.kt::pendingEdgeAt@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/StressOnsetDetector.kt::evaluate/8[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/V5HealthSignals.kt::BASELINE_WINDOW@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/V5HealthSignals.kt::MIN_BASELINE_NIGHTS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/V5HealthSignals.kt::evaluate/7[defaults=3,4,5,6,7]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/V5HealthSignals.kt::MIN_CIRCADIAN_BINS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/V5HealthSignals.kt::hasAnyVital/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/V5HealthSignals.kt::zAgainst/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/VitalBands.kt::sigmaK@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/VitalBands.kt::band/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/VitalBands.kt::isAbsoluteSkinTemp/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/VitalBands.kt::skinTempHistory/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/VitalBands.kt::skinTempDeviationCfg@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/VitalBands.kt::calendarSeries/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/VitalityEngine.kt::lnHazardPerYear@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/VitalityEngine.kt::overlapShrink@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/VitalityEngine.kt::minBodyAge@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/VitalityEngine.kt::maxBodyAge@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/VitalityEngine.kt::vitalityPerYear@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/VitalityEngine.kt::minFactors@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/VitalityEngine.kt::bandYears@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/VitalityEngine.kt::restingHR@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/VitalityEngine.kt::vo2max@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/VitalityEngine.kt::expectedVO2max@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/VitalityEngine.kt::sleepHours@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/VitalityEngine.kt::sleepConsistency@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/VitalityEngine.kt::rmssd@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/VitalityEngine.kt::rmssdNorm@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/VitalityEngine.kt::steps@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/VitalityEngine.kt::rmssdNorm/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/VitalityEngine.kt::sleepConsistency/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/VitalityEngine.kt::contributions/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/VitalityEngine.kt::compute/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WakeMotionRefinement.kt::MIN_WAKE_SEGMENT_SECONDS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WakeMotionRefinement.kt::SUSTAINED_WALK_TICKS_PER_MINUTE@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WakeMotionRefinement.kt::SUSTAINED_WALK_MIN_CONSECUTIVE_MINUTES@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WakeMotionRefinement.kt::SINGLE_MINUTE_WALK_TICKS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WakeMotionRefinement.kt::STABLE_POSTURE_VARIANCE_G2@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WakeMotionRefinement.kt::MIN_STABLE_MINUTE_FRACTION@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WakeMotionRefinement.kt::BURST_PAD_MINUTES@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WakeMotionRefinement.kt::MIN_GRAVITY_SAMPLES_PER_MINUTE_FOR_VARIANCE@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WakeMotionRefinement.kt::MIN_STEP_SAMPLES_PER_MINUTE_FOR_DENSITY@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WakeMotionRefinement.kt::MIN_DENSE_MINUTE_COVERAGE_FRACTION@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WakeMotionRefinement.kt::LOCOMOTION_ACTIVITY_CLASSES@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WakeMotionRefinement.kt::refine/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WakeMotionRefinement.kt::apply/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WakeMotionRefinement.kt::refine/3[defaults=-]#2", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WakeMotionRefinement.kt::apply/4[defaults=-]#2", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WakeMotionRefinement.kt::isMotionDense/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WakeMotionRefinement.kt::denseMinuteFraction/5[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WakeMotionRefinement.kt::refineSegment/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WakeMotionRefinement.kt::hasLocomotion/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WakeMotionRefinement.kt::stableBurstMinutes/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WakeMotionRefinement.kt::postureVariance/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WakeMotionRefinement.kt::walkClassTicksPerMinute/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WakeMotionRefinement.kt::minutes/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WakeMotionRefinement.kt::bucketByMinute/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WakeMotionRefinement.kt::appendMerging/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WatchRecovery.kt::minBaselineNights@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WatchRecovery.kt::compute/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WeeklyDigest.kt::label@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WeeklyDigest.kt::unit@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WeeklyDigest.kt::higherIsBetter@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WeeklyDigest.kt::typicalSpread@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WeeklyDigest.kt::wowDelta@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WeeklyDigest.kt::wowGoodness@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WeeklyDigest.kt::normalisedMove@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WeeklyDigest.kt::isRoughComparison@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WeeklyDigest.kt::sentence@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WeeklyDigest.kt::summary/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WeeklyDigest.kt::isEmpty@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WeeklyDigest.kt::BASELINE_WEEKS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WeeklyDigest.kt::MIN_DAYS_FOR_FOCUS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WeeklyDigest.kt::BALANCE_BAND@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WeeklyDigest.kt::FOCUS_THRESHOLD@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WeeklyDigest.kt::build/3[defaults=3]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WeeklyDigest.kt::stat/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WeeklyDigest.kt::compare/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WeeklyDigest.kt::median/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WeeklyDigest.kt::leastSquaresSlope/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WeeklyDigest.kt::balanceRead/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WeeklyDigest.kt::focalPoints/4[defaults=4]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WeeklyDigest.kt::moverSentence/2[defaults=2]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WeeklyDigest.kt::valuesInRange/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WeeklyDigest.kt::mondayOfWeek/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WeeklyDigest.kt::addDays/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WeeklyDigest.kt::weekday/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WeeklyDigest.kt::daysInMonth/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WeeklyDigest.kt::isLeap/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WeeklyDigest.kt::parseYMD/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WeeklyDigest.kt::formatYMD/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WeeklyDigest.kt::julianDayNumber/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WeeklyDigest.kt::fromJulianDayNumber/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WeeklyDigest.kt::emptyDigest/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WeeklyDigest.kt::round1/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutDetector.kt::minExerciseMin@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutDetector.kt::hrMarginBPM@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutDetector.kt::motionThreshold@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutDetector.kt::motionSmoothS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutDetector.kt::mergeGapS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutDetector.kt::minIntensityZ2Plus@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutDetector.kt::alignToleranceS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutDetector.kt::restingPercentile@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutDetector.kt::bridgeGapS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutDetector.kt::activitySeries/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutDetector.kt::cleanHR/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutDetector.kt::deriveRestingHR/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutDetector.kt::nearest/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutDetector.kt::smoothedIntensity/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutDetector.kt::boutIntensity/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutDetector.kt::round1/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutDetector.kt::bridgeRuns/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutDetector.kt::backdatedStart/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutDetector.kt::detect/6[defaults=3,4,5,6]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutDetector.kt::male@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutDetector.kt::female@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutDetector.kt::nonbinary@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutDetector.kt::activeHRRFraction@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutDetector.kt::dayActiveHRRFraction@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutDetector.kt::workoutDivisor@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutDetector.kt::resolveCoeffs/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutDetector.kt::restingKcalPerS/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutDetector.kt::vo2maxFor/2[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutDetector.kt::activeKcalPerS/6[defaults=6]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutDetector.kt::estimateBoutCalories/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutDetector.kt::estimateDayCalories/4[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutSport.kt::all@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutSport.kt::nameFor/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutSport.kt::default@computed-property#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutSport.kt::exerciseTypeForName/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutSport.kt::ON_FOOT_SPORTS@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutSport.kt::isOnFoot/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutTypeClassifier.kt::classify/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutTypeClassifier.kt::classify/1[defaults=-]#2", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutTypeClassifier.kt::minTickCoverage@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutTypeClassifier.kt::minPlausibleScore@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutTypeClassifier.kt::minMargin@property-initializer#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutTypeClassifier.kt::classify/1[defaults=-]#3", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutTypeClassifier.kt::allScores/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutTypeClassifier.kt::rampUp/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutTypeClassifier.kt::rampDown/3[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutTypeClassifier.kt::plateau/5[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutTypeClassifier.kt::tickReliability/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutTypeClassifier.kt::gaitAbsenceScore/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutTypeClassifier.kt::runScore/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutTypeClassifier.kt::walkScore/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutTypeClassifier.kt::strengthScore/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutTypeClassifier.kt::cycleScore/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutTypeClassifier.kt::skiScore/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutTypeClassifier.kt::extract/8[defaults=6,7,8]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutTypeClassifier.kt::mean/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutTypeClassifier.kt::variance/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/WorkoutTypeClassifier.kt::stddev/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/BreathProtocol.kt::init/0[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + }, + { + "key": "android/app/src/main/java/com/noop/analytics/RecoveryScorer.kt::constructor/1[defaults=-]#1", + "reason": "Bootstrap debt: no differential or declared platform coverage proof yet.", + "issue": 17 + } + ], + "platform-test": [] +} diff --git a/android/gradle/verification-metadata.xml b/android/gradle/verification-metadata.xml index af04ba1371..352f9fcf10 100644 --- a/android/gradle/verification-metadata.xml +++ b/android/gradle/verification-metadata.xml @@ -2756,6 +2756,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3389,6 +3426,14 @@ + + + + + + + + @@ -3397,6 +3442,11 @@ + + + + + @@ -3405,6 +3455,14 @@ + + + + + + + + @@ -3413,6 +3471,14 @@ + + + + + + + +