{"id":"bumpgrade-mobile-admin-dashboard-source-data","generatedFrom":"src/lib/mobile-admin-dashboard.ts","updatedAt":"2026-05-19","status":"live-public-mobile-dashboard-ready","issue":153,"parentIssue":13,"featureId":"feature-mobile-admin","route":"/mobile-admin/dashboard/source-data","sourceRoutes":["/mobile-admin/dashboard/source-data","/mobile-admin/source-data","/mobile-admin/ios/source-data","/mobile-admin/android/source-data","/features/source-data","/roadmap/source-data","/admin/source-data","/commerce/source-data","/agent-docs/source-data"],"caveat":"This dashboard contract is public-safe and read-only. It gives mobile clients one live digest route, but it is not private mobile auth, push notifications, confirmed-write support, App Store distribution, or Play Store distribution.","redaction":{"privateBuyerDataIncluded":false,"rawInboxBodiesIncluded":false,"ownerEmailValuesIncluded":false,"sessionIdentifiersIncluded":false,"r2ObjectKeysIncluded":false,"signedUrlsIncluded":false,"uploadBodiesIncluded":false,"secretValuesIncluded":false,"writeTokensIncluded":false},"platformStatus":[{"platform":"ios","issue":67,"status":"simulator-smoke-ready","sourceDataRoute":"/mobile-admin/ios/source-data","validationCommand":"npm run mobile:ios:validate","smokeCommand":"npm run mobile:ios:smoke","screenshotPath":"/pr-screenshots/issue-67-ios-mobile-admin-simulator.png"},{"platform":"android","issue":68,"status":"emulator-smoke-ready","sourceDataRoute":"/mobile-admin/android/source-data","validationCommand":"npm run mobile:android:validate","smokeCommand":"npm run mobile:android:smoke","screenshotPath":"/pr-screenshots/issue-68-android-mobile-admin-emulator.png"}],"featureSummary":{"updatedAt":"2026-05-21","total":17,"live":10,"launchPreview":7,"pending":0,"mobileFeature":{"id":"feature-mobile-admin","status":"launch-preview","issue":13,"evidence":["Tracked by issue #13.","iOS app slice tracked by issue #67.","Android app slice tracked by issue #68.","Live dashboard source-data bridge tracked by issue #153.","Mobile dashboard scaffold rendering tracked by issue #155.","Mobile dashboard live hydration tracked by issue #157.","`/mobile-admin/source-data` exposes jobs, API dependencies, stack decision, and confirmed-write boundaries.","`/mobile-admin/dashboard/source-data` exposes a public-safe digest of feature, roadmap, work-log, attention, commerce, agent, and platform status for mobile clients.","`/mobile-admin/ios/source-data` exposes the first iOS scaffold, fixture, simulator target, smoke command, and screenshot path.","`/mobile-admin/android/source-data` exposes the first Android scaffold, fixture asset, emulator smoke command, and screenshot path."]}},"roadmapSummary":{"updatedAt":"2026-05-21","counts":[{"status":"shipped","label":"Shipped","description":"Merged, deployed, and safe to describe as live public surface area.","count":13},{"status":"active","label":"Active","description":"Currently being implemented or validated in the Codex issue loop.","count":7},{"status":"blocked","label":"Blocked","description":"Known unblock condition is public-safe and specific.","count":0},{"status":"next","label":"Next","description":"Queued near-term because later work depends on it.","count":0},{"status":"planned","label":"Planned","description":"Tracked parity work with an issue, but not active yet.","count":0}],"mobileRoadmapItem":{"id":"roadmap-mobile-admin","status":"active","issue":13,"nextMilestone":"Add mobile auth and confirmed-write UX in follow-up slices after the read-only live dashboard stabilizes."}},"adminDigest":{"source":"d1","loadError":null,"roadmapCounts":[{"status":"live","count":13},{"status":"active","count":7},{"status":"blocked","count":0},{"status":"pending","count":0},{"status":"idea","count":0},{"status":"parked","count":0}],"counts":{"roadmapItems":20,"workLogEntries":50,"userJourneys":37,"openAttentionItems":1},"recentWorkLogEntries":[{"id":"work-log-2026-05-22-refresh-sequence-readiness-public-surfaces","title":"Refresh sequence readiness public surfaces","completedAt":"2026-05-22T15:14:00.000Z","githubIssueNumbers":[355,351,347],"closedPrNumbers":[356],"prCommentUrl":"https://github.com/markitics/bumpgrade/pull/356#issuecomment-4519928083"},{"id":"work-log-2026-05-22-audience-sequence-delivery-readiness","title":"Expose audience sequence delivery readiness evidence","completedAt":"2026-05-22T14:50:07.000Z","githubIssueNumbers":[351],"closedPrNumbers":[352],"prCommentUrl":"https://github.com/markitics/bumpgrade/pull/352#issuecomment-4519742875"},{"id":"work-log-2026-05-22-expose-audience-export-readiness-evidence","title":"Expose audience export readiness evidence","completedAt":"2026-05-22T14:24:22.000Z","githubIssueNumbers":[347,17],"closedPrNumbers":[350],"prCommentUrl":"https://github.com/markitics/bumpgrade/pull/350#issuecomment-4519561620"},{"id":"work-log-2026-05-22-audience-export-readiness","title":"Expose audience export readiness evidence","completedAt":"2026-05-22T14:19:47.000Z","githubIssueNumbers":[347],"closedPrNumbers":[350],"prCommentUrl":"https://github.com/markitics/bumpgrade/pull/350#issuecomment-4519526448"},{"id":"work-log-2026-05-22-align-marketing-feature-details-with-shipped-capabilities","title":"Align marketing feature details with shipped capabilities","completedAt":"2026-05-22T14:14:48.000Z","githubIssueNumbers":[348,341,343],"closedPrNumbers":[349],"prCommentUrl":"https://github.com/markitics/bumpgrade/pull/349#issuecomment-4519490401"}],"attentionItems":[{"id":"mark-attention-2026-05-18-rkmoriarty-auth-alignment","category":"review","state":"open","urgency":"medium","title":"Confirm authenticated sender alignment for [email-redacted]","responseChannelIds":["read_only","github_issue","project_email","codex_desktop"],"linkIssueNumbers":[],"lastActivityAt":"2026-05-18T14:17:27.000Z"}]},"commerceDigest":{"sourceDataRoute":"/commerce/source-data","tableCount":15,"liveTables":["commerce_products","commerce_prices","checkout_intents","checkout_referral_attributions","checkout_post_purchase_decisions","affiliate_commission_ledger_entries","affiliate_commission_ledger_actions","stripe_webhook_events","billing_subscriptions","payment_audit_events","product_entitlements","product_fulfillment_tasks","product_asset_uploads","product_entitlement_revocation_intents","product_protected_content_sections"],"privateFieldsIncluded":false},"agentDigest":{"sourceDataRoute":"/agent-docs/source-data","readContractCount":57,"sourceEvidenceRouteCount":18,"mcpPlanCount":63,"mobileReadContracts":[{"id":"read-mobile-admin-contract","route":"/mobile-admin/source-data","auth":"public"},{"id":"read-mobile-admin-dashboard","route":"/mobile-admin/dashboard/source-data","auth":"public"},{"id":"read-ios-mobile-admin","route":"/mobile-admin/ios/source-data","auth":"public"},{"id":"read-android-mobile-admin","route":"/mobile-admin/android/source-data","auth":"public"}]},"nextMobileMilestones":["Add Better Auth mobile owner-session handling before exposing private admin rows.","Add a shared confirmed-write API before mobile can approve billing-impacting, publishing, moderation, or creator-speech actions.","Add distribution and push-notification readiness after the read-only mobile surface stabilizes."],"writeBoundary":["The first mobile app slices are read-only until a confirmed-write API exists.","Do not ship mobile-only product semantics; mobile reads and writes must map to the same feature, roadmap, commerce, admin, and agent contracts as web.","Public, destructive, billing-impacting, publishing, moderation, source-editing, and creator-speech writes require explicit confirmation text.","Billing-impacting mobile actions require amount, currency, price/product stale-state checks, idempotency, audit correlation, redaction, and webhook evidence.","Private admin data requires an authenticated owner or publisher session; public source-data routes must remain safe for anonymous agents."]}