{"schema":"woodhouse.portfolio-report/1","id":"bae0079f9e0932318ff2cf2c","createdAt":"2026-10-16T16:09:28.824Z","days":7,"period":{"from":"2026-10-10","to":"2026-10-16","days":7,"complete":false},"projects":[{"project":"woodhouse","report":{"schema":"woodhouse.portfolio-analytics/1","project":"woodhouse","generatedAt":"2026-10-16T16:09:28.824Z","timezone":"UTC","period":{"from":"2026-10-10","to":"2026-10-16","days":7,"complete":false},"coverage":{"startedAt":"2026-10-15T00:00:00.000Z","comparableFrom":"2026-10-15T00:00:00.000Z","through":"2026-10-16T16:09:28.824Z","quality":"partial","limitations":["Exact accepted event counters, not unique humans or anti-cheat proof. Blocking, opt-out, offline play and automated traffic affect coverage.","DNT, GPC, designated QA and preview traffic are excluded. Production browser measurements start with this release; no historical backfill.","Current UTC day and collection-start day may be partial. Cross-device retention, cohort retention and acquisition sources are not measured.","Optional browser measurement has not yet received a consenting visit; browser counts are unavailable.","Browser measures cover opt-in visits only and remain partial. Private project-scoped visit associations expire after 90 days; a window intersecting expired history is unavailable. Browser totals use retained period DISTINCT counts, never daily sums."]},"metrics":[{"key":"visits","label":"Visits","unit":"count","value":32,"definition":"One accepted visit marker per tab session; sessions reset after 30 minutes idle. Reloads in the same session do not add visits. Not distinct people.","quality":"exact","daily":[{"date":"2026-10-15","value":4},{"date":"2026-10-16","value":28}]},{"key":"engaged_sessions","label":"Engaged sessions","unit":"count","value":5,"definition":"One accepted marker per tab session after at least 10 seconds of active product use. Foreground, unpaused and recent trusted input required.","quality":"exact","daily":[{"date":"2026-10-15","value":0},{"date":"2026-10-16","value":5}]},{"key":"active_seconds","label":"Active time","unit":"seconds","value":563,"definition":"Accepted 1–30 second foreground, unpaused activity increments, ending 30 seconds after trusted input. Server bounds total by session wall time. Radio time is excluded.","quality":"exact","daily":[{"date":"2026-10-15","value":3},{"date":"2026-10-16","value":560}]},{"key":"project_opens","label":"Project discoveries","unit":"count","value":4,"definition":"Accepted deliberate clicks from Woodhouse to a published project destination. Counts clicks, not visits received by that project.","quality":"exact","daily":[{"date":"2026-10-15","value":0},{"date":"2026-10-16","value":4}]},{"key":"browsers","label":"Reporting browsers","unit":"count","value":null,"definition":"Distinct optionally consenting, project-scoped browser tokens with accepted visits in the selected UTC window. Period DISTINCT, not a sum of daily browser counts. Tokens rotate after 90 days; resets, multiple devices and privacy choices prevent interpreting these as people.","quality":"unavailable","daily":[]},{"key":"returning_browsers","label":"Returning browsers","unit":"count","value":null,"definition":"Distinct optionally consenting browser tokens with a visit in this UTC window and an earlier different accepted tab session in retained 90-day history, including same-day returns. Period DISTINCT, not a sum of daily returns. This is not cohort retention; expired earlier visits and token rotation hide returns.","quality":"unavailable","daily":[]}],"source":{"endpoint":"https://woodhouse.loftwah.com/api/portfolio-analytics?project=woodhouse","revision":null}}},{"project":"app-composer","report":{"schema":"woodhouse.portfolio-analytics/1","project":"app-composer","generatedAt":"2026-10-16T16:09:30.774Z","timezone":"UTC","period":{"from":"2026-10-10","to":"2026-10-16","days":7,"complete":false},"coverage":{"startedAt":"2026-10-13T00:00:00.000Z","comparableFrom":null,"through":"2026-10-16T16:09:30.774Z","quality":"partial","limitations":["Daily counters stop at 1000 per app/event/surface and shared per-location rate limits may drop events.","The first recorded UTC day is 13 October 2026 and is partial; daily counts expire after 35 days. Missing earlier history is unavailable, not zero.","Optional publishers can lose events during outages. Marked verification probes are excluded; reloads, unmarked automation and bots can count.","No visitor identity, sessions, return rate, private creator activity or vault contents are collected. Today is partial; these are bounded recorded signals, never lifetime totals."]},"metrics":[{"key":"app_opens","label":"App opens","unit":"count","value":710,"definition":"Successful public mini-app home-page HTML requests across standalone and composed versions. Reloads and bots may count; not people, sessions or conversions.","quality":"bounded","daily":[{"date":"2026-10-13","value":97},{"date":"2026-10-14","value":370},{"date":"2026-10-15","value":151},{"date":"2026-10-16","value":92}]},{"key":"actions","label":"Recorded app actions","unit":"count","value":12,"definition":"Guestbook contribution-page opens plus accepted completed Link Check inspections. Different action types, not unique people or a conversion funnel.","quality":"bounded","daily":[{"date":"2026-10-13","value":2},{"date":"2026-10-14","value":5},{"date":"2026-10-15","value":4},{"date":"2026-10-16","value":1}]},{"key":"photo_opens","label":"Guestbook contribution opens","unit":"count","value":5,"definition":"Successful public Guestbook contribution-page HTML requests, including repeated opens; not image downloads, submissions, publications or unique people.","quality":"bounded","daily":[{"date":"2026-10-13","value":1},{"date":"2026-10-14","value":2},{"date":"2026-10-15","value":1},{"date":"2026-10-16","value":1}]},{"key":"inspection_completed","label":"Completed inspections","unit":"count","value":7,"definition":"Link Check inspections counted by the owning app after completion; not clicks, deployment checks or unique users.","quality":"bounded","daily":[{"date":"2026-10-13","value":1},{"date":"2026-10-14","value":3},{"date":"2026-10-15","value":3},{"date":"2026-10-16","value":0}]},{"key":"guest_postcards_received","label":"Guest postcards received","unit":"count","value":null,"definition":"New pending guest postcards counted after committed acceptance by Guestbook, across connected standalone and composed routes. Not approvals, publications, unique people or a conversion rate. Before the first retained recorded receipt, history is unavailable. The first recorded UTC day is partial; later zero means no recorded receipt, not proof that nobody submitted. Optional recording can drop events.","quality":"unavailable","daily":[]}],"source":{"endpoint":"https://composer.loftwah.com/api/portfolio-analytics","revision":"7051886afdfa5087d4e2769f24dc6d97cd7046c7"}}},{"project":"fighter","report":{"schema":"woodhouse.portfolio-analytics/1","project":"fighter","generatedAt":"2026-10-16T16:09:30.164Z","timezone":"UTC","period":{"from":"2026-10-10","to":"2026-10-16","days":7,"complete":false},"coverage":{"startedAt":"2026-08-09T08:22:36.602Z","comparableFrom":"2026-10-15T12:02:59.539Z","through":"2026-10-16T16:09:30.164Z","quality":"partial","limitations":["Historical counts before 15 October 2026 include unmarked production QA that cannot be separated or subtracted. These are stored reports, not a clean audience cohort; exclude pre-comparableFrom history from growth comparisons and records.","Requested windows may include partial coverage. Current UTC day is partial. Stored browser reports are subject to privacy opt-outs, network loss and abuse controls; they are not unique people.","Launch/completion counters backfilled only from the raw rows retained at migration; earlier expired history is unavailable. Anonymous daily totals are retained durably thereafter.","Visits, engagement, deliberate Quick Fight replay and optional browser cohort measurement start 2026-10-15T14:34:02.048Z; earlier values are unavailable. Browser cohort rows and raw tab sessions expire after 90 days; anonymous daily counters remain durable.","Active-time collection starts 2026-10-15T12:02:46.571Z; earlier time is unavailable. Individual raw game and session facts still expire after 90 days."]},"metrics":[{"key":"game_starts","label":"Fight starts","unit":"count","value":0,"definition":"Browser-reported non-tutorial fight launches; match IDs deduplicate retries. Exact accepted events, not verified humans.","quality":"exact","daily":[{"date":"2026-10-10","value":0},{"date":"2026-10-11","value":0},{"date":"2026-10-12","value":0},{"date":"2026-10-13","value":0},{"date":"2026-10-14","value":0},{"date":"2026-10-15","value":0},{"date":"2026-10-16","value":0}]},{"key":"game_completions","label":"Completed fights","unit":"count","value":0,"definition":"Launched fights ending in win, loss, draw or forfeit, attributed to launch UTC day. Abandonment excluded; not a completion cohort rate.","quality":"exact","daily":[{"date":"2026-10-10","value":0},{"date":"2026-10-11","value":0},{"date":"2026-10-12","value":0},{"date":"2026-10-13","value":0},{"date":"2026-10-14","value":0},{"date":"2026-10-15","value":0},{"date":"2026-10-16","value":0}]},{"key":"active_seconds","label":"Active gameplay","unit":"seconds","value":0,"definition":"Cumulative foreground, focused, unpaused fight seconds with input in the preceding 60 seconds. Loading/countdowns, hidden tabs, idle and radio excluded. Browser-reported, bounded by server elapsed time; launch UTC day attribution.","quality":"exact","daily":[{"date":"2026-10-15","value":0},{"date":"2026-10-16","value":0}]},{"key":"visits","label":"Tab visits","unit":"count","value":0,"definition":"Accepted random tab sessions first observed since this metric began; one per tab session (including reloads), attributed to first observation UTC day, with raw tab deduplication retained for 90 days. DNT/GPC, automation and explicit QA excluded. Not pageviews or people.","quality":"exact","daily":[{"date":"2026-10-15","value":0},{"date":"2026-10-16","value":0}]},{"key":"engaged_sessions","label":"Engaged tabs","unit":"count","value":0,"definition":"Tab sessions reaching at least 10 cumulative measured active gameplay seconds across fights. Attributed to the tab visit UTC day; at most once per retained tab. Menus, radio, pause, background and idle time excluded.","quality":"exact","daily":[{"date":"2026-10-15","value":0},{"date":"2026-10-16","value":0}]},{"key":"game_replays","label":"Deliberate Quick Fight replays","unit":"count","value":0,"definition":"Accepted deliberate Quick Fight launches after an earlier completed or explicitly abandoned fight in the same tab. Prior terminal match ownership is checked by the server; retries deduplicate. Automatic progression, tutorial and other-mode replay actions are outside this measure.","quality":"exact","daily":[{"date":"2026-10-15","value":0},{"date":"2026-10-16","value":0}]},{"key":"browsers","label":"Opted-in browsers","unit":"count","value":0,"definition":"Distinct random browser IDs voluntarily enabled in Settings and observed in this window; never humans. Off by default; expires/rotates after 90 days. Daily distincts are not additive; period totals use distinct retained IDs, not their sum.","quality":"exact","daily":[{"date":"2026-10-15","value":0},{"date":"2026-10-16","value":0}]},{"key":"returning_browsers","label":"Returning opted-in browsers","unit":"count","value":0,"definition":"Distinct opted-in browser IDs observed in this window with an earlier different tab session in retained 90-day history (including same-day returns). Daily distincts are not additive; period totals are unavailable when the raw retention window is incomplete. Clearing/rotating IDs resets continuity; default tab-only visits are outside this cohort.","quality":"exact","daily":[{"date":"2026-10-15","value":0},{"date":"2026-10-16","value":0}]}],"source":{"endpoint":"https://fighter.loftwah.com/api/portfolio-analytics","revision":null}}},{"project":"shoalshot","report":{"schema":"woodhouse.portfolio-analytics/1","project":"shoalshot","generatedAt":"2026-10-16T16:09:28.824Z","timezone":"UTC","period":{"from":"2026-10-10","to":"2026-10-16","days":7,"complete":false},"coverage":{"startedAt":"2026-10-15T00:00:00.000Z","comparableFrom":"2026-10-15T00:00:00.000Z","through":"2026-10-16T16:09:28.824Z","quality":"partial","limitations":["Exact accepted event counters, not unique humans or anti-cheat proof. Blocking, opt-out, offline play and automated traffic affect coverage.","DNT, GPC, designated QA and preview traffic are excluded. Production browser measurements start with this release; no historical backfill.","Current UTC day and collection-start day may be partial. Cross-device retention, cohort retention and acquisition sources are not measured.","Browser returns are unavailable until this product releases its own optional consent client."]},"metrics":[{"key":"visits","label":"Visits","unit":"count","value":1,"definition":"One accepted visit marker per tab session; sessions reset after 30 minutes idle. Reloads in the same session do not add visits. Not distinct people.","quality":"exact","daily":[{"date":"2026-10-15","value":1},{"date":"2026-10-16","value":0}]},{"key":"engaged_sessions","label":"Engaged sessions","unit":"count","value":0,"definition":"One accepted marker per tab session after at least 10 seconds of active product use. Foreground, unpaused and recent trusted input required.","quality":"exact","daily":[{"date":"2026-10-15","value":0},{"date":"2026-10-16","value":0}]},{"key":"game_starts","label":"Games started","unit":"count","value":0,"definition":"Accepted new game/dive start actions; restoring or resuming a saved game does not count. Client reported, not verified human play. Multiplayer tabs report participations, not distinct tables.","quality":"exact","daily":[{"date":"2026-10-15","value":0},{"date":"2026-10-16","value":0}]},{"key":"game_completions","label":"Games completed","unit":"count","value":0,"definition":"Accepted terminal game/result transitions. Client reported; not a validated competitive result. Multiplayer tabs report participations, not distinct tables.","quality":"exact","daily":[{"date":"2026-10-15","value":0},{"date":"2026-10-16","value":0}]},{"key":"game_replays","label":"Deliberate replays","unit":"count","value":0,"definition":"Accepted deliberate repeat new-game actions in the same tab session, after completion or abandonment. Automatic restores/resumes are excluded.","quality":"exact","daily":[{"date":"2026-10-15","value":0},{"date":"2026-10-16","value":0}]},{"key":"active_seconds","label":"Active time","unit":"seconds","value":0,"definition":"Accepted 1–30 second foreground, unpaused activity increments, ending 30 seconds after trusted input. Server bounds total by session wall time. Radio time is excluded.","quality":"exact","daily":[{"date":"2026-10-15","value":0},{"date":"2026-10-16","value":0}]},{"key":"browsers","label":"Reporting browsers","unit":"count","value":null,"definition":"Not measured: this product has not enabled optional browser-return measurement. Tab sessions cannot establish returns.","quality":"unavailable","daily":[]},{"key":"returning_browsers","label":"Returning browsers","unit":"count","value":null,"definition":"Not measured: this product has not enabled optional browser-return measurement. Tab sessions cannot establish returns.","quality":"unavailable","daily":[]}],"source":{"endpoint":"https://woodhouse.loftwah.com/api/portfolio-analytics?project=shoalshot","revision":null}}},{"project":"protocol-11","report":{"schema":"woodhouse.portfolio-analytics/1","project":"protocol-11","generatedAt":"2026-10-16T16:09:28.824Z","timezone":"UTC","period":{"from":"2026-10-10","to":"2026-10-16","days":7,"complete":false},"coverage":{"startedAt":"2026-10-16T00:00:00.000Z","comparableFrom":"2026-10-16T00:00:00.000Z","through":"2026-10-16T16:09:28.824Z","quality":"partial","limitations":["Exact accepted event counters, not unique humans or anti-cheat proof. Blocking, opt-out, offline play and automated traffic affect coverage.","DNT, GPC, designated QA and preview traffic are excluded. Production browser measurements start with this release; no historical backfill.","Current UTC day and collection-start day may be partial. Cross-device retention, cohort retention and acquisition sources are not measured.","Browser returns are unavailable until this product releases its own optional consent client."]},"metrics":[{"key":"visits","label":"Visits","unit":"count","value":2,"definition":"One accepted visit marker per tab session; sessions reset after 30 minutes idle. Reloads in the same session do not add visits. Not distinct people.","quality":"exact","daily":[{"date":"2026-10-16","value":2}]},{"key":"engaged_sessions","label":"Engaged sessions","unit":"count","value":1,"definition":"One accepted marker per tab session after at least 10 seconds of active product use. Foreground, unpaused and recent trusted input required.","quality":"exact","daily":[{"date":"2026-10-16","value":1}]},{"key":"game_starts","label":"Games started","unit":"count","value":0,"definition":"Accepted new game/dive start actions; restoring or resuming a saved game does not count. Client reported, not verified human play. Multiplayer tabs report participations, not distinct tables.","quality":"exact","daily":[{"date":"2026-10-16","value":0}]},{"key":"game_completions","label":"Games completed","unit":"count","value":0,"definition":"Accepted terminal game/result transitions. Client reported; not a validated competitive result. Multiplayer tabs report participations, not distinct tables.","quality":"exact","daily":[{"date":"2026-10-16","value":0}]},{"key":"game_replays","label":"Deliberate replays","unit":"count","value":0,"definition":"Accepted deliberate repeat new-game actions in the same tab session, after completion or abandonment. Automatic restores/resumes are excluded.","quality":"exact","daily":[{"date":"2026-10-16","value":0}]},{"key":"active_seconds","label":"Active time","unit":"seconds","value":31,"definition":"Accepted 1–30 second foreground, unpaused activity increments, ending 30 seconds after trusted input. Server bounds total by session wall time. Radio time is excluded.","quality":"exact","daily":[{"date":"2026-10-16","value":31}]},{"key":"browsers","label":"Reporting browsers","unit":"count","value":null,"definition":"Not measured: this product has not enabled optional browser-return measurement. Tab sessions cannot establish returns.","quality":"unavailable","daily":[]},{"key":"returning_browsers","label":"Returning browsers","unit":"count","value":null,"definition":"Not measured: this product has not enabled optional browser-return measurement. Tab sessions cannot establish returns.","quality":"unavailable","daily":[]}],"source":{"endpoint":"https://woodhouse.loftwah.com/api/portfolio-analytics?project=protocol-11","revision":null}}},{"project":"loftwahfm","report":{"schema":"woodhouse.portfolio-analytics/1","project":"loftwahfm","generatedAt":"2026-10-16T16:09:30.524Z","timezone":"UTC","period":{"from":"2026-10-10","to":"2026-10-16","days":7,"complete":false},"coverage":{"startedAt":"2026-10-10T00:00:00.000Z","comparableFrom":"2026-10-15T11:25:47.000Z","through":"2026-10-16T16:09:30.524Z","quality":"exact","limitations":["D1 counts are exact for accepted listening-v1 receipts, not independently audited people or exhaustive listening.","Collection began 10 October 2026; aggregate history is retained for 185 days. Entirely pre-collection or expired windows are unavailable, never zero. Current UTC day and the first collection day are partial.","Historical counts before 15 October 2026 may include unmarked production verification that cannot be separated or subtracted. Growth comparisons and records require complete dates after comparableFrom.","Client delivery, opt-out, rate limits and uninstrumented/older clients may omit listening. Declared tests, preview, obvious bot/headless and DNT/GPC traffic are excluded.","Legacy Analytics Engine milestones are excluded: that separate pipeline is adaptively sampled and retained for three months, so it cannot establish exact lifetime records.","No browser identity is stored by listening-v1; distinct listeners, returning audience and retention are unavailable."]},"metrics":[{"key":"listening_starts","label":"Listening starts","unit":"count","value":54,"definition":"Confirmed audible progression per random play receipt, deduplicated by the listening-v1 collector. All admitted FM site, game, widget and unknown sources; not unique listeners or gameplay starts.","quality":"exact","daily":[{"date":"2026-10-10","value":19},{"date":"2026-10-11","value":8},{"date":"2026-10-12","value":14},{"date":"2026-10-13","value":2},{"date":"2026-10-14","value":4},{"date":"2026-10-15","value":1},{"date":"2026-10-16","value":6}]},{"key":"listening_seconds","label":"Audible listening","unit":"seconds","value":113,"definition":"Accepted forward audible progression bounded by server elapsed time; excludes pauses, seeking, muted, hidden and stalled playback. All admitted listening-v1 sources, not gameplay time.","quality":"exact","daily":[{"date":"2026-10-10","value":13},{"date":"2026-10-11","value":39},{"date":"2026-10-12","value":28},{"date":"2026-10-13","value":2},{"date":"2026-10-14","value":13},{"date":"2026-10-15","value":0},{"date":"2026-10-16","value":18}]},{"key":"game_listening_starts","label":"Game radio starts","unit":"count","value":0,"definition":"Confirmed audible radio starts explicitly attributed to admitted games; excludes game launches and gameplay starts.","quality":"exact","daily":[{"date":"2026-10-10","value":0},{"date":"2026-10-11","value":0},{"date":"2026-10-12","value":0},{"date":"2026-10-13","value":0},{"date":"2026-10-14","value":0},{"date":"2026-10-15","value":0},{"date":"2026-10-16","value":0}]},{"key":"game_listening_seconds","label":"Game radio listening","unit":"seconds","value":0,"definition":"Accepted audible radio seconds explicitly attributed to admitted games; not gameplay duration.","quality":"exact","daily":[{"date":"2026-10-10","value":0},{"date":"2026-10-11","value":0},{"date":"2026-10-12","value":0},{"date":"2026-10-13","value":0},{"date":"2026-10-14","value":0},{"date":"2026-10-15","value":0},{"date":"2026-10-16","value":0}]}],"source":{"endpoint":"https://fm.loftwah.com/api/portfolio-analytics","revision":null}}},{"project":"bubbles","report":{"schema":"woodhouse.portfolio-analytics/1","project":"bubbles","generatedAt":"2026-10-16T16:09:30.194Z","timezone":"UTC","period":{"from":"2026-10-10","to":"2026-10-16","days":7,"complete":false},"coverage":{"startedAt":"2026-10-15T11:33:11.547Z","comparableFrom":"2026-10-15T11:33:11.547Z","through":"2026-10-16T16:09:30.194Z","quality":"partial","limitations":["Current UTC day is partial. Stored browser reports are subject to privacy opt-outs, network loss and abuse controls; they are not unique people.","Collection is opt-in and starts at this deployment. No historical gameplay is imported or invented. Anonymous daily totals are retained durably; pseudonymous run facts expire after 90 days.","Active-time collection starts 2026-10-15T11:33:11.547Z; earlier time is unavailable. Raw gameplay run facts expire after 90 days."]},"metrics":[{"key":"game_starts","label":"Gameplay starts","unit":"count","value":0,"definition":"Opted-in gameplay starts at the first accepted shot/turn, or Snake start. Route visits and unplayed boards excluded. Random run IDs deduplicate retries; not unique humans.","quality":"exact","daily":[{"date":"2026-10-15","value":0},{"date":"2026-10-16","value":0}]},{"key":"game_completions","label":"Completed games","unit":"count","value":0,"definition":"Started runs reaching their actual game terminal result, attributed to launch UTC day. Quits and restarts excluded; not a completion cohort rate.","quality":"exact","daily":[{"date":"2026-10-15","value":0},{"date":"2026-10-16","value":0}]},{"key":"active_seconds","label":"Active gameplay","unit":"seconds","value":0,"definition":"Cumulative foreground, focused, unpaused gameplay seconds with input in the preceding 60 seconds. Loading/countdowns, hidden tabs, idle and radio excluded. Browser-reported, bounded by server elapsed time; launch UTC day attribution.","quality":"exact","daily":[{"date":"2026-10-15","value":0},{"date":"2026-10-16","value":0}]},{"key":"browsers","label":"Opted-in browsers","unit":"count","value":0,"definition":"Distinct random opted-in browser IDs with a received gameplay start in the selected window. Browser reports, not humans; daily counts are distinct per day and do not sum to the period total.","quality":"exact","daily":[{"date":"2026-10-15","value":0},{"date":"2026-10-16","value":0}]},{"key":"returning_browsers","label":"Returning opted-in browsers","unit":"count","value":0,"definition":"Opted-in browser IDs with a gameplay start in this window and an earlier different tab session in the retained 90-day run history. Same-tab replays excluded. Not human or installation retention; daily counts do not sum to period distinct counts.","quality":"exact","daily":[{"date":"2026-10-15","value":0},{"date":"2026-10-16","value":0}]},{"key":"engaged_sessions","label":"Engaged opted-in tab sessions","unit":"count","value":0,"definition":"Distinct opted-in tab-session IDs receiving at least 10 active seconds across runs started in the selected window. Daily thresholds apply separately to runs started each UTC day; daily counts need not sum to the period distinct count.","quality":"exact","daily":[{"date":"2026-10-15","value":0},{"date":"2026-10-16","value":0}]},{"key":"visits","label":"Visits","unit":"count","value":null,"definition":"Only opted-in gameplay is collected. Page visits and acquisition are not collected.","quality":"unavailable","daily":[]},{"key":"game_replays","label":"Deliberate replays","unit":"count","value":null,"definition":"A distinct replay action is not yet recorded; multiple starts are not assumed to be replays.","quality":"unavailable","daily":[]}],"source":{"endpoint":"https://api.bubbles.loftwah.com/api/portfolio-analytics","revision":null}}}],"analysis":{"schema":"woodhouse.weekly-analysis/1","findings":[]}}