stackvitals 0.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- mergescout/__init__.py +1 -0
- mergescout/archive/__init__.py +0 -0
- mergescout/archive/__main__.py +30 -0
- mergescout/archive/convert.py +83 -0
- mergescout/archive/events.py +55 -0
- mergescout/archive/manifest.py +45 -0
- mergescout/archive/stream.py +83 -0
- mergescout/bench/__init__.py +1 -0
- mergescout/bench/__main__.py +135 -0
- mergescout/bench/ci.py +257 -0
- mergescout/bench/deploys.py +115 -0
- mergescout/bench/matched.py +22 -0
- mergescout/bench/prior.py +42 -0
- mergescout/bench/report.py +230 -0
- mergescout/bench/shared.py +112 -0
- mergescout/bench/stars.py +57 -0
- mergescout/cli.py +89 -0
- mergescout/config.py +35 -0
- mergescout/crawl/__init__.py +0 -0
- mergescout/crawl/__main__.py +97 -0
- mergescout/crawl/chain.py +34 -0
- mergescout/crawl/fetch.py +146 -0
- mergescout/crawl/outcomes.py +69 -0
- mergescout/crawl/queries.py +250 -0
- mergescout/crawl/runner.py +176 -0
- mergescout/crawl/seed.py +77 -0
- mergescout/crawl/state.py +169 -0
- mergescout/crawl/writer.py +87 -0
- mergescout/discover/__init__.py +0 -0
- mergescout/discover/__main__.py +58 -0
- mergescout/discover/sweep.py +286 -0
- mergescout/github/__init__.py +0 -0
- mergescout/github/graphql.py +202 -0
- mergescout/github/identities.py +35 -0
- mergescout/github/releases.py +137 -0
- mergescout/labels.py +20 -0
- mergescout/mcp_server.py +228 -0
- mergescout/measure/__init__.py +0 -0
- mergescout/measure/__main__.py +75 -0
- mergescout/measure/api_cost.py +91 -0
- mergescout/measure/count_repos.py +30 -0
- mergescout/measure/jsonl.py +14 -0
- mergescout/measure/report.py +56 -0
- mergescout/measure/sample.py +37 -0
- mergescout/owners.py +22 -0
- mergescout/setup_check.py +64 -0
- mergescout/signals/__init__.py +0 -0
- mergescout/signals/__main__.py +96 -0
- mergescout/signals/bump_ledger.py +258 -0
- mergescout/signals/bumps.py +104 -0
- mergescout/signals/check.py +141 -0
- mergescout/signals/community_bench.py +149 -0
- mergescout/signals/delivery_bench.py +103 -0
- mergescout/signals/deps_map.py +261 -0
- mergescout/signals/deps_trends.py +117 -0
- mergescout/signals/evidence.py +94 -0
- mergescout/signals/exploits.py +43 -0
- mergescout/signals/flow_bench.py +258 -0
- mergescout/signals/identity.py +73 -0
- mergescout/signals/issues.py +76 -0
- mergescout/signals/labels.py +79 -0
- mergescout/signals/osv.py +232 -0
- mergescout/signals/owners_watch.py +80 -0
- mergescout/signals/repo_stats.py +96 -0
- mergescout/signals/rules.py +70 -0
- mergescout/signals/silver.py +33 -0
- mergescout/signals/top_packages.py +26 -0
- mergescout/signals/triage.py +71 -0
- mergescout/signals/triage_math.py +120 -0
- mergescout/signals/walls.py +91 -0
- mergescout/snapshot/__init__.py +0 -0
- mergescout/snapshot/__main__.py +215 -0
- mergescout/snapshot/build.py +147 -0
- mergescout/snapshot/publish.py +70 -0
- mergescout/snapshot/schema.py +34 -0
- mergescout/snapshot/score.py +30 -0
- mergescout/store/__init__.py +0 -0
- mergescout/store/__main__.py +46 -0
- mergescout/store/sync.py +148 -0
- mergescout/timeutil.py +11 -0
- mergescout/tool/__init__.py +0 -0
- mergescout/tool/action_pack.py +62 -0
- mergescout/tool/live.py +201 -0
- mergescout/tool/queries.py +293 -0
- mergescout/tool/refs.py +31 -0
- mergescout/tool/store.py +129 -0
- mergescout/tool/tracking.py +83 -0
- stackvitals/__init__.py +2 -0
- stackvitals/__main__.py +4 -0
- stackvitals/ci/__init__.py +1 -0
- stackvitals/ci/action.py +574 -0
- stackvitals/ci/analyze.py +577 -0
- stackvitals/ci/api.py +218 -0
- stackvitals/ci/automation.py +212 -0
- stackvitals/ci/bench.py +195 -0
- stackvitals/ci/burnin.py +102 -0
- stackvitals/ci/cli.py +570 -0
- stackvitals/ci/collect.py +239 -0
- stackvitals/ci/cost.py +107 -0
- stackvitals/ci/coverage.py +155 -0
- stackvitals/ci/feedback.py +699 -0
- stackvitals/ci/fingerprint.py +220 -0
- stackvitals/ci/gitlab.py +121 -0
- stackvitals/ci/gitlab_action.py +125 -0
- stackvitals/ci/impact.py +125 -0
- stackvitals/ci/investigate.py +59 -0
- stackvitals/ci/kinds.py +52 -0
- stackvitals/ci/monitors.py +105 -0
- stackvitals/ci/owners.py +116 -0
- stackvitals/ci/quarantine_runtime.py +90 -0
- stackvitals/ci/report.py +435 -0
- stackvitals/ci/retry.py +67 -0
- stackvitals/ci/selfheal.py +102 -0
- stackvitals/ci/shards.py +120 -0
- stackvitals/ci/share.py +59 -0
- stackvitals/ci/store.py +93 -0
- stackvitals/ci/testreports.py +351 -0
- stackvitals/ci/tickets.py +106 -0
- stackvitals/ci/track_record.json +11 -0
- stackvitals/ci/triage.py +130 -0
- stackvitals/ci/triggers.py +147 -0
- stackvitals/ci/upload.py +85 -0
- stackvitals/ci/validate.py +91 -0
- stackvitals/cli.py +111 -0
- stackvitals/codeowners.py +69 -0
- stackvitals/community/__init__.py +0 -0
- stackvitals/community/action.py +140 -0
- stackvitals/community/affiliation.py +51 -0
- stackvitals/community/analyze.py +507 -0
- stackvitals/community/build.py +56 -0
- stackvitals/community/chaoss.py +70 -0
- stackvitals/community/cli.py +79 -0
- stackvitals/community/collect.py +240 -0
- stackvitals/community/context.py +54 -0
- stackvitals/community/report.py +250 -0
- stackvitals/connectors/__init__.py +244 -0
- stackvitals/connectors/ai_spend.py +190 -0
- stackvitals/connectors/base.py +82 -0
- stackvitals/connectors/check.py +686 -0
- stackvitals/connectors/copilot.py +104 -0
- stackvitals/connectors/discord.py +103 -0
- stackvitals/connectors/discourse.py +117 -0
- stackvitals/connectors/incident_io.py +106 -0
- stackvitals/connectors/jira.py +210 -0
- stackvitals/connectors/linear.py +140 -0
- stackvitals/connectors/pagerduty.py +96 -0
- stackvitals/connectors/slack.py +110 -0
- stackvitals/connectors/sonar.py +77 -0
- stackvitals/connectors/store.py +120 -0
- stackvitals/connectors/tracker.py +108 -0
- stackvitals/connectors/writeback.py +105 -0
- stackvitals/contribute/__init__.py +1 -0
- stackvitals/contribute/brief.py +297 -0
- stackvitals/contribute/cli.py +64 -0
- stackvitals/core/__init__.py +1 -0
- stackvitals/core/actors.py +103 -0
- stackvitals/core/agent_ledger.py +120 -0
- stackvitals/core/agreements.py +95 -0
- stackvitals/core/ai_outcomes.py +276 -0
- stackvitals/core/alerts.py +224 -0
- stackvitals/core/appdata.py +112 -0
- stackvitals/core/bucket.py +190 -0
- stackvitals/core/bugs.py +43 -0
- stackvitals/core/calendar.py +34 -0
- stackvitals/core/capex.py +57 -0
- stackvitals/core/change_risk.py +181 -0
- stackvitals/core/changes.py +133 -0
- stackvitals/core/chat.py +143 -0
- stackvitals/core/config.py +373 -0
- stackvitals/core/dataflow.py +168 -0
- stackvitals/core/decisions.py +275 -0
- stackvitals/core/delivery.py +954 -0
- stackvitals/core/delivery_peers.py +98 -0
- stackvitals/core/delivery_report.py +429 -0
- stackvitals/core/deliverycli.py +147 -0
- stackvitals/core/devlake_dora.sql +485 -0
- stackvitals/core/digest.py +333 -0
- stackvitals/core/explaincli.py +107 -0
- stackvitals/core/explore.py +296 -0
- stackvitals/core/export.py +342 -0
- stackvitals/core/exportcli.py +117 -0
- stackvitals/core/findings.py +350 -0
- stackvitals/core/health.py +94 -0
- stackvitals/core/identity.py +82 -0
- stackvitals/core/insights.py +365 -0
- stackvitals/core/insightscli.py +43 -0
- stackvitals/core/installdoc.py +69 -0
- stackvitals/core/investment.py +187 -0
- stackvitals/core/joins.py +43 -0
- stackvitals/core/llmsdoc.py +40 -0
- stackvitals/core/merge_queue.py +70 -0
- stackvitals/core/metrics.py +109 -0
- stackvitals/core/model.py +285 -0
- stackvitals/core/projectcli.py +66 -0
- stackvitals/core/propose.py +86 -0
- stackvitals/core/pulse.py +85 -0
- stackvitals/core/recorded.py +145 -0
- stackvitals/core/releases.py +39 -0
- stackvitals/core/requests.py +528 -0
- stackvitals/core/resync.py +35 -0
- stackvitals/core/schema.py +205 -0
- stackvitals/core/services.py +203 -0
- stackvitals/core/settings.py +96 -0
- stackvitals/core/sqlcli.py +111 -0
- stackvitals/core/stats.py +222 -0
- stackvitals/core/store.py +125 -0
- stackvitals/core/summary.py +104 -0
- stackvitals/core/time.py +29 -0
- stackvitals/core/tomledit.py +149 -0
- stackvitals/core/uicli.py +138 -0
- stackvitals/core/webapp.py +79 -0
- stackvitals/core/what_changed.py +76 -0
- stackvitals/core/workspace.py +194 -0
- stackvitals/deps/__init__.py +1 -0
- stackvitals/deps/action.py +299 -0
- stackvitals/deps/actions_vulns.py +89 -0
- stackvitals/deps/cli.py +77 -0
- stackvitals/deps/dossier.py +341 -0
- stackvitals/deps/evidence.py +44 -0
- stackvitals/deps/fixplan.py +40 -0
- stackvitals/deps/guarddog.py +32 -0
- stackvitals/deps/hygiene.py +47 -0
- stackvitals/deps/imports.py +113 -0
- stackvitals/deps/lockfiles.py +198 -0
- stackvitals/deps/lookalike.py +80 -0
- stackvitals/deps/reach.py +59 -0
- stackvitals/deps/release.py +110 -0
- stackvitals/deps/runtimes.py +161 -0
- stackvitals/deps/supply.py +454 -0
- stackvitals/deps/vulns.py +588 -0
- stackvitals/editors/__init__.py +40 -0
- stackvitals/editors/vscode/extension.js +101 -0
- stackvitals/editors/vscode/marks.js +92 -0
- stackvitals/editors/vscode/package.json +26 -0
- stackvitals/flow/__init__.py +1 -0
- stackvitals/flow/action.py +178 -0
- stackvitals/flow/analyze.py +418 -0
- stackvitals/flow/automate.py +72 -0
- stackvitals/flow/build.py +46 -0
- stackvitals/flow/cli.py +93 -0
- stackvitals/flow/code_hosts.py +146 -0
- stackvitals/flow/collect.py +451 -0
- stackvitals/flow/gitlab_mr.py +75 -0
- stackvitals/flow/knowledge.py +202 -0
- stackvitals/flow/peers.py +90 -0
- stackvitals/flow/preflight.py +210 -0
- stackvitals/flow/report.py +253 -0
- stackvitals/flow/rules.py +135 -0
- stackvitals/flow/store.py +108 -0
- stackvitals/flow/survival.py +84 -0
- stackvitals/flow/triage.py +62 -0
- stackvitals/mcp_server.py +670 -0
- stackvitals/portal/__init__.py +0 -0
- stackvitals/portal/action.py +205 -0
- stackvitals/portal/batch.py +80 -0
- stackvitals/portal/campaigns.py +104 -0
- stackvitals/portal/catalog.py +104 -0
- stackvitals/portal/checks.py +63 -0
- stackvitals/portal/cli.py +172 -0
- stackvitals/portal/descriptor.py +105 -0
- stackvitals/portal/export.py +43 -0
- stackvitals/portal/github.py +48 -0
- stackvitals/portal/golden.py +95 -0
- stackvitals/portal/history.py +30 -0
- stackvitals/portal/inventory.py +264 -0
- stackvitals/portal/owners.py +78 -0
- stackvitals/portal/pages.py +153 -0
- stackvitals/portal/rollup.py +32 -0
- stackvitals/portal/scorecard.py +366 -0
- stackvitals/security/__init__.py +2 -0
- stackvitals/security/probes.py +154 -0
- stackvitals/security/repo_checks.py +132 -0
- stackvitals/security/workflows.py +111 -0
- stackvitals/shell.py +107 -0
- stackvitals/site.py +51 -0
- stackvitals/web/app/LICENSES.md +428 -0
- stackvitals/web/app/boot.js +1 -0
- stackvitals/web/app/chunks/AddRepo-KRPZXWCY.js +1 -0
- stackvitals/web/app/chunks/SetupRunning-XWFQAKRZ.js +1 -0
- stackvitals/web/app/chunks/accuracy-data-OQTDXI7Y.js +1 -0
- stackvitals/web/app/chunks/agents-data-BAL6QAOF.js +11 -0
- stackvitals/web/app/chunks/chunk-24LFKFZ6.js +1 -0
- stackvitals/web/app/chunks/chunk-3G4SQNUC.js +1 -0
- stackvitals/web/app/chunks/chunk-3IXWEOIJ.js +154 -0
- stackvitals/web/app/chunks/chunk-3ROQFHPV.js +1 -0
- stackvitals/web/app/chunks/chunk-45PGAQRO.js +8 -0
- stackvitals/web/app/chunks/chunk-4H53OYLG.js +1 -0
- stackvitals/web/app/chunks/chunk-4LUI7O5P.js +1 -0
- stackvitals/web/app/chunks/chunk-4SQPQ5TB.js +1 -0
- stackvitals/web/app/chunks/chunk-4WKQTWUC.js +2 -0
- stackvitals/web/app/chunks/chunk-576YHDEK.js +8 -0
- stackvitals/web/app/chunks/chunk-6BDBXA6V.js +1 -0
- stackvitals/web/app/chunks/chunk-6RLVD2DT.js +1 -0
- stackvitals/web/app/chunks/chunk-763NH7PP.js +1 -0
- stackvitals/web/app/chunks/chunk-76WAVKUG.js +1 -0
- stackvitals/web/app/chunks/chunk-7II2BD5F.js +1 -0
- stackvitals/web/app/chunks/chunk-7TJCBOAY.js +1 -0
- stackvitals/web/app/chunks/chunk-ASYNLVOP.js +1 -0
- stackvitals/web/app/chunks/chunk-CTKDYZMG.js +1 -0
- stackvitals/web/app/chunks/chunk-CVB26NMC.js +1 -0
- stackvitals/web/app/chunks/chunk-G7NGB5UX.js +1 -0
- stackvitals/web/app/chunks/chunk-GPVLJRZD.js +1 -0
- stackvitals/web/app/chunks/chunk-GQYFN4PE.js +75 -0
- stackvitals/web/app/chunks/chunk-GT4EAKAO.js +2 -0
- stackvitals/web/app/chunks/chunk-IYMBFPCV.js +1 -0
- stackvitals/web/app/chunks/chunk-LAAGCPU3.js +1 -0
- stackvitals/web/app/chunks/chunk-MAPYGK3P.js +1 -0
- stackvitals/web/app/chunks/chunk-P5TXDD45.js +1 -0
- stackvitals/web/app/chunks/chunk-PABICGBL.js +1 -0
- stackvitals/web/app/chunks/chunk-RPXHAG6F.js +1 -0
- stackvitals/web/app/chunks/chunk-RQZPSJ2Y.js +1 -0
- stackvitals/web/app/chunks/chunk-S2ZBMEVA.js +1 -0
- stackvitals/web/app/chunks/chunk-S654BBEP.js +6 -0
- stackvitals/web/app/chunks/chunk-T7QVTNXF.js +1 -0
- stackvitals/web/app/chunks/chunk-THFUOCPC.js +273 -0
- stackvitals/web/app/chunks/chunk-TO4VVRZ7.js +1 -0
- stackvitals/web/app/chunks/chunk-VQ5YXO54.js +1 -0
- stackvitals/web/app/chunks/chunk-VWKSMFWJ.js +1 -0
- stackvitals/web/app/chunks/chunk-Y6LUXDM6.js +1 -0
- stackvitals/web/app/chunks/chunk-YTANGYYH.js +1 -0
- stackvitals/web/app/chunks/connect-KONYWYTT.js +1 -0
- stackvitals/web/app/chunks/connections-data-2DYS4UVW.js +32 -0
- stackvitals/web/app/chunks/logos-N5IINUAM.js +1 -0
- stackvitals/web/app/chunks/more-KMJMJQD3.js +10 -0
- stackvitals/web/app/chunks/more-PC6FVS3P.js +1 -0
- stackvitals/web/app/chunks/more-RCIVCUDE.js +2 -0
- stackvitals/web/app/chunks/more-ZKKRY6NO.css +1 -0
- stackvitals/web/app/chunks/sealbox-35YL4EUH.js +3 -0
- stackvitals/web/app/chunks/session-DYYTOE2K.js +1 -0
- stackvitals/web/app/chunks/settingsApply-2HRJEZYM.js +1 -0
- stackvitals/web/app/chunks/settingsReview-GX2FZQ4M.js +3 -0
- stackvitals/web/app/chunks/uPlot.esm-OIWT3AHJ.js +3 -0
- stackvitals/web/app/demo/ci/impact.json +1 -0
- stackvitals/web/app/demo/ci/quarantine.json +1 -0
- stackvitals/web/app/demo/ci/tickets.json +1 -0
- stackvitals/web/app/demo/mobile/alerts.json +1 -0
- stackvitals/web/app/demo/mobile/app.json +1 -0
- stackvitals/web/app/demo/mobile/community.json +1 -0
- stackvitals/web/app/demo/mobile/connectors.json +1 -0
- stackvitals/web/app/demo/mobile/data.json +1 -0
- stackvitals/web/app/demo/mobile/decisions.json +1 -0
- stackvitals/web/app/demo/mobile/delivery.json +1 -0
- stackvitals/web/app/demo/mobile/deps.json +1 -0
- stackvitals/web/app/demo/mobile/flow.json +1 -0
- stackvitals/web/app/demo/mobile/health.json +1 -0
- stackvitals/web/app/demo/mobile/insights.json +1 -0
- stackvitals/web/app/demo/mobile/pulse.json +1 -0
- stackvitals/web/app/demo/mobile/security.json +1 -0
- stackvitals/web/app/demo/mobile/summary/ci_jobs.jsonl +5 -0
- stackvitals/web/app/demo/mobile/summary/devlake_project_pr_metrics.jsonl +14 -0
- stackvitals/web/app/demo/mobile/summary/devlake_pull_requests.jsonl +14 -0
- stackvitals/web/app/demo/mobile/summary/manifest.json +1 -0
- stackvitals/web/app/demo/mobile/summary/prs.jsonl +19 -0
- stackvitals/web/app/demo/mobile/summary/tests.jsonl +1 -0
- stackvitals/web/app/demo/mobile/supply.json +1 -0
- stackvitals/web/app/demo/mobile/vulns.json +1 -0
- stackvitals/web/app/demo/payments-api/alerts.json +1 -0
- stackvitals/web/app/demo/payments-api/app.json +1 -0
- stackvitals/web/app/demo/payments-api/community.json +1 -0
- stackvitals/web/app/demo/payments-api/connectors.json +1 -0
- stackvitals/web/app/demo/payments-api/data.json +1 -0
- stackvitals/web/app/demo/payments-api/decisions.json +1 -0
- stackvitals/web/app/demo/payments-api/delivery.json +1 -0
- stackvitals/web/app/demo/payments-api/deps.json +1 -0
- stackvitals/web/app/demo/payments-api/flow.json +1 -0
- stackvitals/web/app/demo/payments-api/health.json +1 -0
- stackvitals/web/app/demo/payments-api/insights.json +1 -0
- stackvitals/web/app/demo/payments-api/pulse.json +1 -0
- stackvitals/web/app/demo/payments-api/security.json +1 -0
- stackvitals/web/app/demo/payments-api/summary/ci_jobs.jsonl +5 -0
- stackvitals/web/app/demo/payments-api/summary/devlake_project_pr_metrics.jsonl +14 -0
- stackvitals/web/app/demo/payments-api/summary/devlake_pull_requests.jsonl +14 -0
- stackvitals/web/app/demo/payments-api/summary/manifest.json +1 -0
- stackvitals/web/app/demo/payments-api/summary/prs.jsonl +22 -0
- stackvitals/web/app/demo/payments-api/summary/tests.jsonl +3 -0
- stackvitals/web/app/demo/payments-api/supply.json +1 -0
- stackvitals/web/app/demo/payments-api/vulns.json +1 -0
- stackvitals/web/app/demo/portal.json +1 -0
- stackvitals/web/app/demo/settings.json +1 -0
- stackvitals/web/app/demo/web-app/alerts.json +1 -0
- stackvitals/web/app/demo/web-app/app.json +1 -0
- stackvitals/web/app/demo/web-app/community.json +1 -0
- stackvitals/web/app/demo/web-app/connectors.json +1 -0
- stackvitals/web/app/demo/web-app/data.json +1 -0
- stackvitals/web/app/demo/web-app/decisions.json +1 -0
- stackvitals/web/app/demo/web-app/delivery.json +1 -0
- stackvitals/web/app/demo/web-app/deps.json +1 -0
- stackvitals/web/app/demo/web-app/flow.json +1 -0
- stackvitals/web/app/demo/web-app/health.json +1 -0
- stackvitals/web/app/demo/web-app/insights.json +1 -0
- stackvitals/web/app/demo/web-app/pulse.json +1 -0
- stackvitals/web/app/demo/web-app/security.json +1 -0
- stackvitals/web/app/demo/web-app/summary/ci_jobs.jsonl +5 -0
- stackvitals/web/app/demo/web-app/summary/devlake_project_pr_metrics.jsonl +14 -0
- stackvitals/web/app/demo/web-app/summary/devlake_pull_requests.jsonl +14 -0
- stackvitals/web/app/demo/web-app/summary/manifest.json +1 -0
- stackvitals/web/app/demo/web-app/summary/prs.jsonl +18 -0
- stackvitals/web/app/demo/web-app/summary/tests.jsonl +2 -0
- stackvitals/web/app/demo/web-app/supply.json +1 -0
- stackvitals/web/app/demo/web-app/vulns.json +1 -0
- stackvitals/web/app/fonts/plex-mono-400.woff2 +0 -0
- stackvitals/web/app/fonts/plex-sans-400.woff2 +0 -0
- stackvitals/web/app/fonts/plex-sans-600.woff2 +0 -0
- stackvitals/web/app/fonts/plex-sans-condensed-700.woff2 +0 -0
- stackvitals/web/app/help/accuracy.json +1 -0
- stackvitals/web/app/help/connectors.json +1 -0
- stackvitals/web/app/help/getting-started.json +1 -0
- stackvitals/web/app/help/index.json +1 -0
- stackvitals/web/app/help/modules.json +1 -0
- stackvitals/web/app/help/privacy-and-security.json +1 -0
- stackvitals/web/app/help/reference.json +1 -0
- stackvitals/web/app/main.css +1 -0
- stackvitals/web/app/main.js +1 -0
- stackvitals/web/app/pages/about.css +1 -0
- stackvitals/web/app/pages/about.js +1 -0
- stackvitals/web/app/pages/activity.css +1 -0
- stackvitals/web/app/pages/activity.js +1 -0
- stackvitals/web/app/pages/agents.css +1 -0
- stackvitals/web/app/pages/agents.js +2 -0
- stackvitals/web/app/pages/ci.css +1 -0
- stackvitals/web/app/pages/ci.js +1 -0
- stackvitals/web/app/pages/community.css +1 -0
- stackvitals/web/app/pages/community.js +1 -0
- stackvitals/web/app/pages/connections.css +1 -0
- stackvitals/web/app/pages/connections.js +6 -0
- stackvitals/web/app/pages/delivery.css +1 -0
- stackvitals/web/app/pages/delivery.js +45 -0
- stackvitals/web/app/pages/deps.css +1 -0
- stackvitals/web/app/pages/deps.js +7 -0
- stackvitals/web/app/pages/explore.css +1 -0
- stackvitals/web/app/pages/explore.js +7 -0
- stackvitals/web/app/pages/health.css +1 -0
- stackvitals/web/app/pages/health.js +1 -0
- stackvitals/web/app/pages/help.css +1 -0
- stackvitals/web/app/pages/help.js +6 -0
- stackvitals/web/app/pages/insights.css +1 -0
- stackvitals/web/app/pages/insights.js +1 -0
- stackvitals/web/app/pages/investment.css +1 -0
- stackvitals/web/app/pages/investment.js +3 -0
- stackvitals/web/app/pages/overview.css +1 -0
- stackvitals/web/app/pages/overview.js +1 -0
- stackvitals/web/app/pages/portal.css +1 -0
- stackvitals/web/app/pages/portal.js +51 -0
- stackvitals/web/app/pages/prs.css +1 -0
- stackvitals/web/app/pages/prs.js +4 -0
- stackvitals/web/app/pages/settings.css +1 -0
- stackvitals/web/app/pages/settings.js +1 -0
- stackvitals/web/app/pages/setup.css +1 -0
- stackvitals/web/app/pages/setup.js +2 -0
- stackvitals/web/app/pages/standing.css +1 -0
- stackvitals/web/app/pages/standing.js +1 -0
- stackvitals/web/app/pages/welcome-sheet.js +1 -0
- stackvitals/web/app/pages/welcome.js +1 -0
- stackvitals/web/app/settings-workflow.json +1 -0
- stackvitals/web/index.html +34 -0
- stackvitals/web/site/index.html +108 -0
- stackvitals/web/site/integrations.html +15 -0
- stackvitals/web/site/setup.html +15 -0
- stackvitals/web/site/site.css +68 -0
- stackvitals-0.1.0.dist-info/METADATA +134 -0
- stackvitals-0.1.0.dist-info/RECORD +465 -0
- stackvitals-0.1.0.dist-info/WHEEL +4 -0
- stackvitals-0.1.0.dist-info/entry_points.txt +3 -0
- stackvitals-0.1.0.dist-info/licenses/LICENSE +202 -0
- stackvitals-0.1.0.dist-info/licenses/NOTICE +16 -0
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{d as ji}from"./chunk-G7NGB5UX.js";ji();var Zs="uplot",Qs="u-hz",Xs="u-vt",er="u-title",tr="u-wrap",lr="u-under",nr="u-over",ir="u-axis",Zt="u-off",or="u-select",sr="u-cursor-x",rr="u-cursor-y",fr="u-cursor-pt",ur="u-legend",cr="u-live",ar="u-inline",pr="u-series",hr="u-marker",qi="u-label",mr="u-value",Nl="width",Wl="height";var $i="bottom",yl="left",Wn="right",ni="#000",Ji=ni+"0",Gn="mousemove",Zi="mousedown",In="mouseup",Qi="mouseenter",Xi="mouseleave",eo="dblclick",gr="resize",dr="scroll",to="change",sn="dppxchange",ii="--",Al=typeof window<"u",jn=Al?document:null,kl=Al?window:null,wr=Al?navigator:null,oe,tn;function qn(){let e=devicePixelRatio;oe!=e&&(oe=e,tn&&Jn(to,tn,qn),tn=matchMedia(`(min-resolution: ${oe-.001}dppx) and (max-resolution: ${oe+.001}dppx)`),Qt(to,tn,qn),kl.dispatchEvent(new CustomEvent(sn)))}function Xe(e,i){if(i!=null){let o=e.classList;!o.contains(i)&&o.add(i)}}function $n(e,i){let o=e.classList;o.contains(i)&&o.remove(i)}function de(e,i,o){e.style[i]=o+"px"}function gt(e,i,o,n){let s=jn.createElement(e);return i!=null&&Xe(s,i),o?.insertBefore(s,n),s}function ft(e,i){return gt("div",e,i)}var lo=new WeakMap;function bt(e,i,o,n,s){let a="translate("+i+"px,"+o+"px)",u=lo.get(e);a!=u&&(e.style.transform=a,lo.set(e,a),i<0||o<0||i>n||o>s?Xe(e,Zt):$n(e,Zt))}var no=new WeakMap;function io(e,i,o){let n=i+o,s=no.get(e);n!=s&&(no.set(e,n),e.style.background=i,e.style.borderColor=o)}var oo=new WeakMap;function so(e,i,o,n){let s=i+""+o,a=oo.get(e);s!=a&&(oo.set(e,s),e.style.height=o+"px",e.style.width=i+"px",e.style.marginLeft=n?-i/2+"px":0,e.style.marginTop=n?-o/2+"px":0)}var oi={passive:!0},Sr={...oi,capture:!0};function Qt(e,i,o,n){i.addEventListener(e,o,n?Sr:oi)}function Jn(e,i,o,n){i.removeEventListener(e,o,oi)}Al&&qn();function dt(e,i,o,n){let s;o=o||0,n=n||i.length-1;let a=n<=2147483647;for(;n-o>1;)s=a?o+n>>1:et((o+n)/2),i[s]<e?o=s:n=s;return e-i[o]<=i[n]-e?o:n}function zo(e){return(o,n,s)=>{let a=-1,u=-1;for(let h=n;h<=s;h++)if(e(o[h])){a=h;break}for(let h=s;h>=n;h--)if(e(o[h])){u=h;break}return[a,u]}}var Fo=e=>e!=null,Oo=e=>e!=null&&e>0,un=zo(Fo),_r=zo(Oo);function yr(e,i,o,n=0,s=!1){let a=s?_r:un,u=s?Oo:Fo;[i,o]=a(e,i,o);let h=e[i],m=e[i];if(i>-1)if(n==1)h=e[i],m=e[o];else if(n==-1)h=e[o],m=e[i];else for(let g=i;g<=o;g++){let y=e[g];u(y)&&(y<h?h=y:y>m&&(m=y))}return[h??ce,m??-ce]}function cn(e,i,o,n){let s=uo(e),a=uo(i);e==i&&(s==-1?(e*=o,i/=o):(e/=o,i*=o));let u=o==10?Pt:Ho,h=s==1?et:ut,m=a==1?ut:et,g=h(u(Ee(e))),y=m(u(Ee(i))),d=xl(o,g),w=xl(o,y);return o==10&&(g<0&&(d=ae(d,-g)),y<0&&(w=ae(w,-y))),n||o==2?(e=d*s,i=w*a):(e=Io(e,d),i=an(i,w)),[e,i]}function si(e,i,o,n){let s=cn(e,i,o,n);return e==0&&(s[0]=0),i==0&&(s[1]=0),s}var ri=.1,ro={mode:3,pad:ri},Il={pad:0,soft:null,mode:0},vr={min:Il,max:Il};function rn(e,i,o,n){return pn(o)?fo(e,i,o):(Il.pad=o,Il.soft=n?0:null,Il.mode=n?3:0,fo(e,i,vr))}function ne(e,i){return e??i}function kr(e,i,o){for(i=ne(i,0),o=ne(o,e.length-1);i<=o;){if(e[i]!=null)return!0;i++}return!1}function fo(e,i,o){let n=o.min,s=o.max,a=ne(n.pad,0),u=ne(s.pad,0),h=ne(n.hard,-ce),m=ne(s.hard,ce),g=ne(n.soft,ce),y=ne(s.soft,-ce),d=ne(n.mode,0),w=ne(s.mode,0),L=i-e,D=Pt(L),O=Ye(Ee(e),Ee(i)),N=Pt(O),G=Ee(N-D);(L<1e-24||G>10)&&(L=0,(e==0||i==0)&&(L=1e-24,d==2&&g!=ce&&(a=0),w==2&&y!=-ce&&(u=0)));let k=L||O||1e3,H=Pt(k),x=xl(10,et(H)),q=k*(L==0?e==0?.1:1:a),P=ae(Io(e-q,x/10),24),$=e>=g&&(d==1||d==3&&P<=g||d==2&&P>=g)?g:ce,U=Ye(h,P<$&&e>=$?$:wt($,P)),Q=k*(L==0?i==0?.1:1:u),B=ae(an(i+Q,x/10),24),T=i<=y&&(w==1||w==3&&B>=y||w==2&&B<=y)?y:-ce,j=wt(m,B>T&&i<=T?T:Ye(T,B));return U==j&&U==0&&(j=100),[U,j]}var xr=new Intl.NumberFormat(Al?wr.language:"en-US"),fi=e=>xr.format(e),tt=Math,on=tt.PI,Ee=tt.abs,et=tt.floor,Ae=tt.round,ut=tt.ceil,wt=tt.min,Ye=tt.max,xl=tt.pow,uo=tt.sign,Pt=tt.log10,Ho=tt.log2,Tr=(e,i=1)=>tt.sinh(e)*i,Yn=(e,i=1)=>tt.asinh(e/i),ce=1/0;function co(e){return(Pt((e^e>>31)-(e>>31))|0)+1}function Zn(e,i,o){return wt(Ye(e,i),o)}function No(e){return typeof e=="function"}function X(e){return No(e)?e:()=>e}var br=()=>{},Wo=e=>e,Go=(e,i)=>i,Mr=e=>null,ao=e=>!0,po=(e,i)=>e==i,Ar=/\.\d*?(?=9{6,}|0{6,})/gm,Xt=e=>{if(Bo(e)||Ht.has(e))return e;let i=`${e}`,o=i.match(Ar);if(o==null)return e;let n=o[0].length-1;if(i.indexOf("e-")!=-1){let[s,a]=i.split("e");return+`${Xt(s)}e${a}`}return ae(e,n)};function $t(e,i){return Xt(ae(Xt(e/i))*i)}function an(e,i){return Xt(ut(Xt(e/i))*i)}function Io(e,i){return Xt(et(Xt(e/i))*i)}function ae(e,i=0){if(Bo(e))return e;let o=10**i,n=e*o*(1+Number.EPSILON);return Ae(n)/o}var Ht=new Map;function Yo(e){return((""+e).split(".")[1]||"").length}function Bl(e,i,o,n){let s=[],a=n.map(Yo);for(let u=i;u<o;u++){let h=Ee(u),m=ae(xl(e,u),h);for(let g=0;g<n.length;g++){let y=e==10?+`${n[g]}e${u}`:n[g]*m,d=(u>=0?0:h)+(u>=a[g]?0:a[g]),w=e==10?y:ae(y,d);s.push(w),Ht.set(w,d)}}return s}var Yl={},ui=[],Tl=[null,null],Ot=Array.isArray,Bo=Number.isInteger,Er=e=>e===void 0;function ho(e){return typeof e=="string"}function pn(e){let i=!1;if(e!=null){let o=e.constructor;i=o==null||o==Object}return i}function Pr(e){return e!=null&&typeof e=="object"}var Dr=Object.getPrototypeOf(Uint8Array),Uo="__proto__";function bl(e,i=pn){let o;if(Ot(e)){let n=e.find(s=>s!=null);if(Ot(n)||i(n)){o=Array(e.length);for(let s=0;s<e.length;s++)o[s]=bl(e[s],i)}else o=e.slice()}else if(e instanceof Dr)o=e.slice();else if(i(e)){o={};for(let n in e)n!=Uo&&(o[n]=bl(e[n],i))}else o=e;return o}function Te(e){let i=arguments;for(let o=1;o<i.length;o++){let n=i[o];for(let s in n)s!=Uo&&(pn(e[s])?Te(e[s],bl(n[s])):e[s]=bl(n[s]))}return e}var Lr=0,Cr=1,Vr=2;function Rr(e,i,o){for(let n=0,s,a=-1;n<i.length;n++){let u=i[n];if(u>a){for(s=u-1;s>=0&&e[s]==null;)e[s--]=null;for(s=u+1;s<o&&e[s]==null;)e[a=s++]=null}}}function zr(e,i){if(Hr(e)){let u=e[0].slice();for(let h=1;h<e.length;h++)u.push(...e[h].slice(1));return Nr(u[0])||(u=Or(u)),u}let o=new Set;for(let u=0;u<e.length;u++){let m=e[u][0],g=m.length;for(let y=0;y<g;y++)o.add(m[y])}let n=[Array.from(o).sort((u,h)=>u-h)],s=n[0].length,a=new Map;for(let u=0;u<s;u++)a.set(n[0][u],u);for(let u=0;u<e.length;u++){let h=e[u],m=h[0];for(let g=1;g<h.length;g++){let y=h[g],d=Array(s).fill(void 0),w=i?i[u][g]:Cr,L=[];for(let D=0;D<y.length;D++){let O=y[D],N=a.get(m[D]);O===null?w!=Lr&&(d[N]=O,w==Vr&&L.push(N)):d[N]=O}Rr(d,L,s),n.push(d)}}return n}var Fr=typeof queueMicrotask>"u"?e=>Promise.resolve().then(e):queueMicrotask;function Or(e){let i=e[0],o=i.length,n=Array(o);for(let a=0;a<n.length;a++)n[a]=a;n.sort((a,u)=>i[a]-i[u]);let s=[];for(let a=0;a<e.length;a++){let u=e[a],h=Array(o);for(let m=0;m<o;m++)h[m]=u[n[m]];s.push(h)}return s}function Hr(e){let i=e[0][0],o=i.length;for(let n=1;n<e.length;n++){let s=e[n][0];if(s.length!=o)return!1;if(s!=i){for(let a=0;a<o;a++)if(s[a]!=i[a])return!1}}return!0}function Nr(e,i=100){let o=e.length;if(o<=1)return!0;let n=0,s=o-1;for(;n<=s&&e[n]==null;)n++;for(;s>=n&&e[s]==null;)s--;if(s<=n)return!0;let a=Ye(1,et((s-n+1)/i));for(let u=e[n],h=n+a;h<=s;h+=a){let m=e[h];if(m!=null){if(m<=u)return!1;u=m}}return!0}var Ko=["January","February","March","April","May","June","July","August","September","October","November","December"],jo=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];function qo(e){return e.slice(0,3)}var Wr=jo.map(qo),Gr=Ko.map(qo),Ir={MMMM:Ko,MMM:Gr,WWWW:jo,WWW:Wr};function Hl(e){return(e<10?"0":"")+e}function Yr(e){return(e<10?"00":e<100?"0":"")+e}var Br={YYYY:e=>e.getFullYear(),YY:e=>(e.getFullYear()+"").slice(2),MMMM:(e,i)=>i.MMMM[e.getMonth()],MMM:(e,i)=>i.MMM[e.getMonth()],MM:e=>Hl(e.getMonth()+1),M:e=>e.getMonth()+1,DD:e=>Hl(e.getDate()),D:e=>e.getDate(),WWWW:(e,i)=>i.WWWW[e.getDay()],WWW:(e,i)=>i.WWW[e.getDay()],HH:e=>Hl(e.getHours()),H:e=>e.getHours(),h:e=>{let i=e.getHours();return i==0?12:i>12?i-12:i},AA:e=>e.getHours()>=12?"PM":"AM",aa:e=>e.getHours()>=12?"pm":"am",a:e=>e.getHours()>=12?"p":"a",mm:e=>Hl(e.getMinutes()),m:e=>e.getMinutes(),ss:e=>Hl(e.getSeconds()),s:e=>e.getSeconds(),fff:e=>Yr(e.getMilliseconds())};function ci(e,i){i=i||Ir;let o=[],n=/\{([a-z]+)\}|[^{]+/gi,s;for(;s=n.exec(e);)o.push(s[0][0]=="{"?Br[s[1]]:s[0]);return a=>{let u="";for(let h=0;h<o.length;h++)u+=typeof o[h]=="string"?o[h]:o[h](a,i);return u}}var Ur=new Intl.DateTimeFormat().resolvedOptions().timeZone;function Kr(e,i){let o;return i=="UTC"||i=="Etc/UTC"?o=new Date(+e+e.getTimezoneOffset()*6e4):i==Ur?o=e:(o=new Date(e.toLocaleString("en-US",{timeZone:i})),o.setMilliseconds(e.getMilliseconds())),o}var $o=e=>e%1==0,fn=[1,2,2.5,5],jr=Bl(10,-32,0,fn),Jo=Bl(10,0,32,fn),qr=Jo.filter($o),Jt=jr.concat(Jo),ai=`
|
|
2
|
+
`,Zo="{YYYY}",mo=ai+Zo,Qo="{M}/{D}",Gl=ai+Qo,ln=Gl+"/{YY}",Xo="{aa}",$r="{h}:{mm}",vl=$r+Xo,go=ai+vl,wo=":{ss}",re=null;function es(e){let i=e*1e3,o=i*60,n=o*60,s=n*24,a=s*30,u=s*365,m=(e==1?Bl(10,0,3,fn).filter($o):Bl(10,-3,0,fn)).concat([i,i*5,i*10,i*15,i*30,o,o*5,o*10,o*15,o*30,n,n*2,n*3,n*4,n*6,n*8,n*12,s,s*2,s*3,s*4,s*5,s*6,s*7,s*8,s*9,s*10,s*15,a,a*2,a*3,a*4,a*6,u,u*2,u*5,u*10,u*25,u*50,u*100]),g=[[u,Zo,re,re,re,re,re,re,1],[s*28,"{MMM}",mo,re,re,re,re,re,1],[s,Qo,mo,re,re,re,re,re,1],[n,"{h}"+Xo,ln,re,Gl,re,re,re,1],[o,vl,ln,re,Gl,re,re,re,1],[i,wo,ln+" "+vl,re,Gl+" "+vl,re,go,re,1],[e,wo+".{fff}",ln+" "+vl,re,Gl+" "+vl,re,go,re,1]];function y(d){return(w,L,D,O,N,G)=>{let k=[],H=N>=u,x=N>=a&&N<u,q=d(D),P=ae(q*e,3),$=Bn(q.getFullYear(),H?0:q.getMonth(),x||H?1:q.getDate()),U=ae($*e,3);if(x||H){let Q=x?N/a:0,B=H?N/u:0,T=P==U?P:ae(Bn($.getFullYear()+B,$.getMonth()+Q,1)*e,3),j=new Date(Ae(T/e)),C=j.getFullYear(),I=j.getMonth();for(let F=0;T<=O;F++){let ee=Bn(C+B*F,I+Q*F,1),z=ee-d(ae(ee*e,3));T=ae((+ee+z)*e,3),T<=O&&k.push(T)}}else{let Q=N>=s?s:N,B=et(D)-et(P),T=U+B+an(P-U,Q);k.push(T);let j=d(T),C=j.getHours()+j.getMinutes()/o+j.getSeconds()/n,I=N/n,F=w.axes[L]._space,ee=G/F;for(;T=ae(T+N,e==1?0:3),!(T>O);)if(I>1){let z=et(ae(C+I,6))%24,te=d(T).getHours()-z;te>1&&(te=-1),T-=te*n,C=(C+I)%24;let fe=k[k.length-1];ae((T-fe)/N,3)*ee>=.7&&k.push(T)}else k.push(T)}return k}}return[m,g,y]}var[Jr,Zr,Qr]=es(1),[Xr,ef,tf]=es(.001);Bl(2,-53,53,[1]);function So(e,i){return e.map(o=>o.map((n,s)=>s==0||s==8||n==null?n:i(s==1||o[8]==0?n:o[1]+n)))}function _o(e,i){return(o,n,s,a,u)=>{let h=i.find(D=>u>=D[0])||i[i.length-1],m,g,y,d,w,L;return n.map(D=>{let O=e(D),N=O.getFullYear(),G=O.getMonth(),k=O.getDate(),H=O.getHours(),x=O.getMinutes(),q=O.getSeconds(),P=N!=m&&h[2]||G!=g&&h[3]||k!=y&&h[4]||H!=d&&h[5]||x!=w&&h[6]||q!=L&&h[7]||h[1];return m=N,g=G,y=k,d=H,w=x,L=q,P(O)})}}function lf(e,i){let o=ci(i);return(n,s,a,u,h)=>s.map(m=>o(e(m)))}function Bn(e,i,o){return new Date(e,i,o)}function yo(e,i){return i(e)}var nf="{YYYY}-{MM}-{DD} {h}:{mm}{aa}";function vo(e,i){return(o,n,s,a)=>a==null?ii:i(e(n))}function of(e,i){let o=e.series[i];return o.width?o.stroke(e,i):o.points.width?o.points.stroke(e,i):null}function sf(e,i){return e.series[i].fill(e,i)}var rf={show:!0,live:!0,isolate:!1,mount:br,markers:{show:!0,width:2,stroke:of,fill:sf,dash:"solid"},idx:null,idxs:null,values:[]};function ff(e,i){let o=e.cursor.points,n=ft(),s=o.size(e,i);de(n,Nl,s),de(n,Wl,s);let a=s/-2;de(n,"marginLeft",a),de(n,"marginTop",a);let u=o.width(e,i,s);return u&&de(n,"borderWidth",u),n}function uf(e,i){let o=e.series[i].points;return o._fill||o._stroke}function cf(e,i){let o=e.series[i].points;return o._stroke||o._fill}function af(e,i){return e.series[i].points.size}var Un=[0,0];function pf(e,i,o){return Un[0]=i,Un[1]=o,Un}function nn(e,i,o,n=!0){return s=>{s.button==0&&(!n||s.target==i)&&o(s)}}function Kn(e,i,o,n=!0){return s=>{(!n||s.target==i)&&o(s)}}var hf={show:!0,x:!0,y:!0,lock:!1,move:pf,points:{one:!1,show:ff,size:af,width:0,stroke:cf,fill:uf},bind:{mousedown:nn,mouseup:nn,click:nn,dblclick:nn,mousemove:Kn,mouseleave:Kn,mouseenter:Kn},drag:{setScale:!0,x:!0,y:!1,dist:0,uni:null,click:(e,i)=>{i.stopPropagation(),i.stopImmediatePropagation()},_x:!1,_y:!1},focus:{dist:(e,i,o,n,s)=>n-s,prox:-1,bias:0},hover:{skip:[void 0],prox:null,bias:0},left:-10,top:-10,idx:null,dataIdx:null,idxs:null,event:null},ts={show:!0,stroke:"rgba(0,0,0,0.07)",width:2},pi=Te({},ts,{filter:Go}),ls=Te({},pi,{size:10}),ns=Te({},ts,{show:!1}),hi='12px system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"',is="bold "+hi,os=1.5,ko={show:!0,scale:"x",stroke:ni,space:50,gap:5,alignTo:1,size:50,labelGap:0,labelSize:30,labelFont:is,side:2,grid:pi,ticks:ls,border:ns,font:hi,lineGap:os,rotate:0},mf="Value",gf="Time",xo={show:!0,scale:"x",auto:!1,sorted:1,min:ce,max:-ce,idxs:[]};function df(e,i,o,n,s){return i.map(a=>a==null?"":fi(a))}function wf(e,i,o,n,s,a,u){let h=[],m=Ht.get(s)||0;o=u?o:ae(an(o,s),m);for(let g=o;g<=n;g=ae(g+s,m))h.push(Object.is(g,-0)?0:g);return h}function Qn(e,i,o,n,s,a,u){let h=[],m=e.scales[e.axes[i].scale].log,g=m==10?Pt:Ho,y=et(g(o));s=xl(m,y),m==10&&(s=Jt[dt(s,Jt)]);let d=o,w=s*m;m==10&&(w=Jt[dt(w,Jt)]);do h.push(d),d=d+s,m==10&&!Ht.has(d)&&(d=ae(d,Ht.get(s))),d>=w&&(s=d,w=s*m,m==10&&(w=Jt[dt(w,Jt)]));while(d<=n);return h}function Sf(e,i,o,n,s,a,u){let m=e.scales[e.axes[i].scale].asinh,g=n>m?Qn(e,i,Ye(m,o),n,s):[m],y=n>=0&&o<=0?[0]:[];return(o<-m?Qn(e,i,Ye(m,-n),-o,s):[m]).reverse().map(w=>-w).concat(y,g)}var ss=/./,_f=/[12357]/,yf=/[125]/,To=/1/,Xn=(e,i,o,n)=>e.map((s,a)=>i==4&&s==0||a%n==0&&o.test(s.toExponential()[s<0?1:0])?s:null);function vf(e,i,o,n,s){let a=e.axes[o],u=a.scale,h=e.scales[u],m=e.valToPos,g=a._space,y=m(10,u),d=m(9,u)-y>=g?ss:m(7,u)-y>=g?_f:m(5,u)-y>=g?yf:To;if(d==To){let w=Ee(m(1,u)-y);if(w<g)return Xn(i.slice().reverse(),h.distr,d,ut(g/w)).reverse()}return Xn(i,h.distr,d,1)}function kf(e,i,o,n,s){let a=e.axes[o],u=a.scale,h=a._space,m=e.valToPos,g=Ee(m(1,u)-m(2,u));return g<h?Xn(i.slice().reverse(),3,ss,ut(h/g)).reverse():i}function xf(e,i,o,n){return n==null?ii:i==null?"":fi(i)}var bo={show:!0,scale:"y",stroke:ni,space:30,gap:5,alignTo:1,size:50,labelGap:0,labelSize:30,labelFont:is,side:3,grid:pi,ticks:ls,border:ns,font:hi,lineGap:os,rotate:0};function Tf(e,i){let o=3+(e||1)*2;return ae(o*i,3)}function bf(e,i){let{scale:o,idxs:n}=e.series[0],s=e._data[0],a=e.valToPos(s[n[0]],o,!0),u=e.valToPos(s[n[1]],o,!0),h=Ee(u-a),m=e.series[i],g=h/(m.points.space*oe);return n[1]-n[0]<=g}var Mo={scale:null,auto:!0,sorted:0,min:ce,max:-ce},rs=(e,i,o,n,s)=>s,Ao={show:!0,auto:!0,sorted:0,gaps:rs,alpha:1,facets:[Te({},Mo,{scale:"x"}),Te({},Mo,{scale:"y"})]},Eo={scale:"y",auto:!0,sorted:0,show:!0,spanGaps:!1,gaps:rs,alpha:1,points:{show:bf,filter:null},values:null,min:ce,max:-ce,idxs:[],path:null,clip:null};function Mf(e,i,o,n,s){return o/10}var fs={time:!0,auto:!0,distr:1,log:10,asinh:1,min:null,max:null,dir:1,ori:0},Af=Te({},fs,{time:!1,ori:1}),Po={};function us(e,i){let o=Po[e];return o||(o={key:e,plots:[],sub(n){o.plots.push(n)},unsub(n){o.plots=o.plots.filter(s=>s!=n)},pub(n,s,a,u,h,m,g){for(let y=0;y<o.plots.length;y++)o.plots[y]!=s&&o.plots[y].pub(n,s,a,u,h,m,g)}},e!=null&&(Po[e]=o)),o}var Ml=1,ei=2;function el(e,i,o){let n=e.mode,s=e.series[i],a=n==2?e._data[i]:e._data,u=e.scales,h=e.bbox,m=a[0],g=n==2?a[1]:a[i],y=n==2?u[s.facets[0].scale]:u[e.series[0].scale],d=n==2?u[s.facets[1].scale]:u[s.scale],w=h.left,L=h.top,D=h.width,O=h.height,N=e.valToPosH,G=e.valToPosV;return y.ori==0?o(s,m,g,y,d,N,G,w,L,D,O,mn,El,dn,as,hs):o(s,m,g,y,d,G,N,L,w,O,D,gn,Pl,di,ps,ms)}function mi(e,i){let o=0,n=0,s=ne(e.bands,ui);for(let a=0;a<s.length;a++){let u=s[a];u.series[0]==i?o=u.dir:u.series[1]==i&&(u.dir==1?n|=1:n|=2)}return[o,n==1?-1:n==2?1:n==3?2:0]}function Ef(e,i,o,n,s){let a=e.mode,u=e.series[i],h=a==2?u.facets[1].scale:u.scale,m=e.scales[h];return s==-1?m.min:s==1?m.max:m.distr==3?m.dir==1?m.min:m.max:0}function Dt(e,i,o,n,s,a){return el(e,i,(u,h,m,g,y,d,w,L,D,O,N)=>{let G=u.pxRound,k=g.dir*(g.ori==0?1:-1),H=g.ori==0?El:Pl,x,q;k==1?(x=o,q=n):(x=n,q=o);let P=G(d(h[x],g,O,L)),$=G(w(m[x],y,N,D)),U=G(d(h[q],g,O,L)),Q=G(w(a==1?y.max:y.min,y,N,D)),B=new Path2D(s);return H(B,U,Q),H(B,P,Q),H(B,P,$),B})}function hn(e,i,o,n,s,a){let u=null;if(e.length>0){u=new Path2D;let h=i==0?dn:di,m=o;for(let d=0;d<e.length;d++){let w=e[d];if(w[1]>w[0]){let L=w[0]-m;L>0&&h(u,m,n,L,n+a),m=w[1]}}let g=o+s-m,y=10;g>0&&h(u,m,n-y/2,g,n+a+y)}return u}function Pf(e,i,o){let n=e[e.length-1];n&&n[0]==i?n[1]=o:e.push([i,o])}function gi(e,i,o,n,s,a,u){let h=[],m=e.length;for(let g=s==1?o:n;g>=o&&g<=n;g+=s)if(i[g]===null){let d=g,w=g;if(s==1)for(;++g<=n&&i[g]===null;)w=g;else for(;--g>=o&&i[g]===null;)w=g;let L=a(e[d]),D=w==d?L:a(e[w]),O=d-s;L=u<=0&&O>=0&&O<m?a(e[O]):L;let G=w+s;D=u>=0&&G>=0&&G<m?a(e[G]):D,D>=L&&h.push([L,D])}return h}function Do(e){return e==0?Wo:e==1?Ae:i=>$t(i,e)}function cs(e){let i=e==0?mn:gn,o=e==0?(s,a,u,h,m,g)=>{s.arcTo(a,u,h,m,g)}:(s,a,u,h,m,g)=>{s.arcTo(u,a,m,h,g)},n=e==0?(s,a,u,h,m)=>{s.rect(a,u,h,m)}:(s,a,u,h,m)=>{s.rect(u,a,m,h)};return(s,a,u,h,m,g=0,y=0)=>{g==0&&y==0?n(s,a,u,h,m):(g=wt(g,h/2,m/2),y=wt(y,h/2,m/2),i(s,a+g,u),o(s,a+h,u,a+h,u+m,g),o(s,a+h,u+m,a,u+m,y),o(s,a,u+m,a,u,y),o(s,a,u,a+h,u,g),s.closePath())}}var mn=(e,i,o)=>{e.moveTo(i,o)},gn=(e,i,o)=>{e.moveTo(o,i)},El=(e,i,o)=>{e.lineTo(i,o)},Pl=(e,i,o)=>{e.lineTo(o,i)},dn=cs(0),di=cs(1),as=(e,i,o,n,s,a)=>{e.arc(i,o,n,s,a)},ps=(e,i,o,n,s,a)=>{e.arc(o,i,n,s,a)},hs=(e,i,o,n,s,a,u)=>{e.bezierCurveTo(i,o,n,s,a,u)},ms=(e,i,o,n,s,a,u)=>{e.bezierCurveTo(o,i,s,n,u,a)};function gs(e){return(i,o,n,s,a)=>el(i,o,(u,h,m,g,y,d,w,L,D,O,N)=>{let{pxRound:G,points:k}=u,H,x;g.ori==0?(H=mn,x=as):(H=gn,x=ps);let q=ae(k.width*oe,3),P=(k.size-k.width)/2*oe,$=ae(P*2,3),U=new Path2D,Q=new Path2D,{left:B,top:T,width:j,height:C}=i.bbox;dn(Q,B-$,T-$,j+$*2,C+$*2);let I=F=>{if(m[F]!=null){let ee=G(d(h[F],g,O,L)),z=G(w(m[F],y,N,D));H(U,ee+P,z),x(U,ee,z,P,0,on*2)}};if(a)a.forEach(I);else for(let F=n;F<=s;F++)I(F);return{stroke:q>0?U:null,fill:U,clip:Q,flags:Ml|ei}})}function ds(e){return(i,o,n,s,a,u)=>{n!=s&&(a!=n&&u!=n&&e(i,o,n),a!=s&&u!=s&&e(i,o,s),e(i,o,u))}}var Df=ds(El),Lf=ds(Pl);function ws(e){let i=ne(e?.alignGaps,0);return(o,n,s,a)=>el(o,n,(u,h,m,g,y,d,w,L,D,O,N)=>{[s,a]=un(m,s,a);let G=u.pxRound,k=C=>G(d(C,g,O,L)),H=C=>G(w(C,y,N,D)),x,q;g.ori==0?(x=El,q=Df):(x=Pl,q=Lf);let P=g.dir*(g.ori==0?1:-1),$={stroke:new Path2D,fill:null,clip:null,band:null,gaps:null,flags:Ml},U=$.stroke,Q=!1;if(a-s>=O*4){let C=V=>o.posToVal(V,g.key,!0),I=null,F=null,ee,z,Ue,we=k(h[P==1?s:a]),te=k(h[s]),fe=k(h[a]),J=C(P==1?te+1:fe-1);for(let V=P==1?s:a;V>=s&&V<=a;V+=P){let be=h[V],Se=(P==1?be<J:be>J)?we:k(be),se=m[V];Se==we?se!=null?(z=se,I==null?(x(U,Se,H(z)),ee=I=F=z):z<I?I=z:z>F&&(F=z)):se===null&&(Q=!0):(I!=null&&q(U,we,H(I),H(F),H(ee),H(z)),se!=null?(z=se,x(U,Se,H(z)),I=F=ee=z):(I=F=null,se===null&&(Q=!0)),we=Se,J=C(we+P))}I!=null&&I!=F&&Ue!=we&&q(U,we,H(I),H(F),H(ee),H(z))}else for(let C=P==1?s:a;C>=s&&C<=a;C+=P){let I=m[C];I===null?Q=!0:I!=null&&x(U,k(h[C]),H(I))}let[T,j]=mi(o,n);if(u.fill!=null||T!=0){let C=$.fill=new Path2D(U),I=u.fillTo(o,n,u.min,u.max,T),F=H(I),ee=k(h[s]),z=k(h[a]);P==-1&&([z,ee]=[ee,z]),x(C,z,F),x(C,ee,F)}if(!u.spanGaps){let C=[];Q&&C.push(...gi(h,m,s,a,P,k,i)),$.gaps=C=u.gaps(o,n,s,a,C),$.clip=hn(C,g.ori,L,D,O,N)}return j!=0&&($.band=j==2?[Dt(o,n,s,a,U,-1),Dt(o,n,s,a,U,1)]:Dt(o,n,s,a,U,j)),$})}function Cf(e){let i=ne(e.align,1),o=ne(e.ascDesc,!1),n=ne(e.alignGaps,0),s=ne(e.extend,!1);return(a,u,h,m)=>el(a,u,(g,y,d,w,L,D,O,N,G,k,H)=>{[h,m]=un(d,h,m);let x=g.pxRound,{left:q,width:P}=a.bbox,$=te=>x(D(te,w,k,N)),U=te=>x(O(te,L,H,G)),Q=w.ori==0?El:Pl,B={stroke:new Path2D,fill:null,clip:null,band:null,gaps:null,flags:Ml},T=B.stroke,j=w.dir*(w.ori==0?1:-1),C=U(d[j==1?h:m]),I=$(y[j==1?h:m]),F=I,ee=I;s&&i==-1&&(ee=q,Q(T,ee,C)),Q(T,I,C);for(let te=j==1?h:m;te>=h&&te<=m;te+=j){let fe=d[te];if(fe==null)continue;let J=$(y[te]),V=U(fe);i==1?Q(T,J,C):Q(T,F,V),Q(T,J,V),C=V,F=J}let z=F;s&&i==1&&(z=q+P,Q(T,z,C));let[Ue,we]=mi(a,u);if(g.fill!=null||Ue!=0){let te=B.fill=new Path2D(T),fe=g.fillTo(a,u,g.min,g.max,Ue),J=U(fe);Q(te,z,J),Q(te,ee,J)}if(!g.spanGaps){let te=[];te.push(...gi(y,d,h,m,j,$,n));let fe=g.width*oe/2,J=o||i==1?fe:-fe,V=o||i==-1?-fe:fe;te.forEach(be=>{be[0]+=J,be[1]+=V}),B.gaps=te=g.gaps(a,u,h,m,te),B.clip=hn(te,w.ori,N,G,k,H)}return we!=0&&(B.band=we==2?[Dt(a,u,h,m,T,-1),Dt(a,u,h,m,T,1)]:Dt(a,u,h,m,T,we)),B})}function Lo(e,i,o,n,s,a,u=ce){if(e.length>1){let h=null;for(let m=0,g=1/0;m<e.length;m++)if(i[m]!==void 0){if(h!=null){let y=Ee(e[m]-e[h]);y<g&&(g=y,u=Ee(o(e[m],n,s,a)-o(e[h],n,s,a)))}h=m}}return u}function Vf(e){e=e||Yl;let i=ne(e.size,[.6,ce,1]),o=e.align||0,n=e.gap||0,s=e.radius;s=s==null?[0,0]:typeof s=="number"?[s,0]:s;let a=X(s),u=1-i[0],h=ne(i[1],ce),m=ne(i[2],1),g=ne(e.disp,Yl),y=ne(e.each,L=>{}),{fill:d,stroke:w}=g;return(L,D,O,N)=>el(L,D,(G,k,H,x,q,P,$,U,Q,B,T)=>{let j=G.pxRound,C=o,I=n*oe,F=h*oe,ee=m*oe,z,Ue;x.ori==0?[z,Ue]=a(L,D):[Ue,z]=a(L,D);let we=x.dir*(x.ori==0?1:-1),te=x.ori==0?dn:di,fe=x.ori==0?y:(A,pe,Me,il,Gt,_t,It)=>{y(A,pe,Me,Gt,il,It,_t)},J=ne(L.bands,ui).find(A=>A.series[0]==D),V=J!=null?J.dir:0,be=G.fillTo(L,D,G.min,G.max,V),He=j($(be,q,T,Q)),Se,se,ct,qe=B,ye=j(G.width*oe),St=!1,Mt=null,lt=null,Lt=null,tl=null;d!=null&&(ye==0||w!=null)&&(St=!0,Mt=d.values(L,D,O,N),lt=new Map,new Set(Mt).forEach(A=>{A!=null&<.set(A,new Path2D)}),ye>0&&(Lt=w.values(L,D,O,N),tl=new Map,new Set(Lt).forEach(A=>{A!=null&&tl.set(A,new Path2D)})));let{x0:ll,size:Dl}=g;if(ll!=null&&Dl!=null){C=1,k=ll.values(L,D,O,N),ll.unit==2&&(k=k.map(Me=>L.posToVal(U+Me*B,x.key,!0)));let A=Dl.values(L,D,O,N);Dl.unit==2?se=A[0]*B:se=P(A[0],x,B,U)-P(0,x,B,U),qe=Lo(k,H,P,x,B,U,qe),ct=qe-se+I}else qe=Lo(k,H,P,x,B,U,qe),ct=qe*u+I,se=qe-ct;ct<1&&(ct=0),ye>=se/2&&(ye=0),ct<5&&(j=Wo);let Ul=ct>0,Nt=qe-ct-(Ul?ye:0);se=j(Zn(Nt,ee,F)),Se=(C==0?se/2:C==we?0:se)-C*we*((C==0?I/2:0)+(Ul?ye/2:0));let Ne={stroke:null,fill:null,clip:null,band:null,gaps:null,flags:0},nl=St?null:new Path2D,At=null;if(J!=null)At=L.data[J.series[1]];else{let{y0:A,y1:pe}=g;A!=null&&pe!=null&&(H=pe.values(L,D,O,N),At=A.values(L,D,O,N))}let Wt=z*se,K=Ue*se;for(let A=we==1?O:N;A>=O&&A<=N;A+=we){let pe=H[A];if(pe==null)continue;if(At!=null){let Ke=At[A]??0;if(pe-Ke==0)continue;He=$(Ke,q,T,Q)}let Me=x.distr!=2||g!=null?k[A]:A,il=P(Me,x,B,U),Gt=$(ne(pe,be),q,T,Q),_t=j(il-Se),It=j(Ye(Gt,He)),$e=j(wt(Gt,He)),nt=It-$e;if(pe!=null){let Ke=pe<0?K:Wt,at=pe<0?Wt:K;St?(ye>0&&Lt[A]!=null&&te(tl.get(Lt[A]),_t,$e+et(ye/2),se,Ye(0,nt-ye),Ke,at),Mt[A]!=null&&te(lt.get(Mt[A]),_t,$e+et(ye/2),se,Ye(0,nt-ye),Ke,at)):te(nl,_t,$e+et(ye/2),se,Ye(0,nt-ye),Ke,at),fe(L,D,A,_t-ye/2,$e,se+ye,nt)}}return ye>0?Ne.stroke=St?tl:nl:St||(Ne._fill=G.width==0?G._fill:G._stroke??G._fill,Ne.width=0),Ne.fill=St?lt:nl,Ne})}function Rf(e,i){let o=ne(i?.alignGaps,0);return(n,s,a,u)=>el(n,s,(h,m,g,y,d,w,L,D,O,N,G)=>{[a,u]=un(g,a,u);let k=h.pxRound,H=z=>k(w(z,y,N,D)),x=z=>k(L(z,d,G,O)),q,P,$;y.ori==0?(q=mn,$=El,P=hs):(q=gn,$=Pl,P=ms);let U=y.dir*(y.ori==0?1:-1),Q=H(m[U==1?a:u]),B=Q,T=[],j=[];for(let z=U==1?a:u;z>=a&&z<=u;z+=U)if(g[z]!=null){let we=m[z],te=H(we);T.push(B=te),j.push(x(g[z]))}let C={stroke:e(T,j,q,$,P,k),fill:null,clip:null,band:null,gaps:null,flags:Ml},I=C.stroke,[F,ee]=mi(n,s);if(h.fill!=null||F!=0){let z=C.fill=new Path2D(I),Ue=h.fillTo(n,s,h.min,h.max,F),we=x(Ue);$(z,B,we),$(z,Q,we)}if(!h.spanGaps){let z=[];z.push(...gi(m,g,a,u,U,H,o)),C.gaps=z=h.gaps(n,s,a,u,z),C.clip=hn(z,y.ori,D,O,N,G)}return ee!=0&&(C.band=ee==2?[Dt(n,s,a,u,I,-1),Dt(n,s,a,u,I,1)]:Dt(n,s,a,u,I,ee)),C})}function zf(e){return Rf(Ff,e)}function Ff(e,i,o,n,s,a){let u=e.length;if(u<2)return null;let h=new Path2D;if(o(h,e[0],i[0]),u==2)n(h,e[1],i[1]);else{let m=Array(u),g=Array(u-1),y=Array(u-1),d=Array(u-1);for(let w=0;w<u-1;w++)y[w]=i[w+1]-i[w],d[w]=e[w+1]-e[w],g[w]=y[w]/d[w];m[0]=g[0];for(let w=1;w<u-1;w++)g[w]===0||g[w-1]===0||g[w-1]>0!=g[w]>0?m[w]=0:(m[w]=3*(d[w-1]+d[w])/((2*d[w]+d[w-1])/g[w-1]+(d[w]+2*d[w-1])/g[w]),isFinite(m[w])||(m[w]=0));m[u-1]=g[u-2];for(let w=0;w<u-1;w++)s(h,e[w]+d[w]/3,i[w]+m[w]*d[w]/3,e[w+1]-d[w]/3,i[w+1]-m[w+1]*d[w]/3,e[w+1],i[w+1])}return h}var ti=new Set;function Co(){for(let e of ti)e.syncRect(!0)}Al&&(Qt(gr,kl,Co),Qt(dr,kl,Co,!0),Qt(sn,kl,()=>{Be.pxRatio=oe}));var Of=ws(),Hf=gs();function Vo(e,i,o,n){return(n?[e[0],e[1]].concat(e.slice(2)):[e[0]].concat(e.slice(1))).map((a,u)=>li(a,u,i,o))}function Nf(e,i){return e.map((o,n)=>n==0?{}:Te({},i,o))}function li(e,i,o,n){return Te({},i==0?o:n,e)}function Ss(e,i,o){return i==null?Tl:[i,o]}var Wf=Ss;function Gf(e,i,o){return i==null?Tl:rn(i,o,ri,!0)}function _s(e,i,o,n){return i==null?Tl:cn(i,o,e.scales[n].log,!1)}var If=_s;function ys(e,i,o,n){return i==null?Tl:si(i,o,e.scales[n].log,!1)}var Yf=ys;function Bf(e,i,o,n,s){let a=Ye(co(e),co(i)),u=i-e,h=dt(s/n*u,o);do{let m=o[h],g=n*m/u;if(g>=s&&a+(m<5?Ht.get(m):0)<=17)return[m,g]}while(++h<o.length);return[0,0]}function Ro(e){let i,o;return e=e.replace(/(\d+)px/,(n,s)=>(i=Ae((o=+s)*oe))+"px"),[e,i,o]}function Uf(e){e.show&&[e.font,e.labelFont].forEach(i=>{let o=ae(i[2]*oe,1);i[0]=i[0].replace(/[0-9.]+px/,o+"px"),i[1]=o})}function Be(e,i,o){let n={mode:ne(e.mode,1)},s=n.mode;function a(t,l,r,f){let c=l.valToPct(t);return f+r*(l.dir==-1?1-c:c)}function u(t,l,r,f){let c=l.valToPct(t);return f+r*(l.dir==-1?c:1-c)}function h(t,l,r,f){return l.ori==0?a(t,l,r,f):u(t,l,r,f)}n.valToPosH=a,n.valToPosV=u;let m=!1;n.status=0;let g=n.root=ft(Zs);if(e.id!=null&&(g.id=e.id),Xe(g,e.class),e.title){let t=ft(er,g);t.textContent=e.title}let y=gt("canvas"),d=n.ctx=y.getContext("2d"),w=ft(tr,g);Qt("click",w,t=>{t.target===D&&(he!=gl||_e!=dl)&&Fe.click(n,t)},!0);let L=n.under=ft(lr,w);w.appendChild(y);let D=n.over=ft(nr,w);e=bl(e);let O=+ne(e.pxAlign,1),N=Do(O);(e.plugins||[]).forEach(t=>{t.opts&&(e=t.opts(n,e)||e)});let G=e.ms||.001,k=n.series=s==1?Vo(e.series||[],xo,Eo,!1):Nf(e.series||[null],Ao),H=n.axes=Vo(e.axes||[],ko,bo,!0),x=n.scales={},q=n.bands=e.bands||[];q.forEach(t=>{t.fill=X(t.fill||null),t.dir=ne(t.dir,-1)});let P=s==2?k[1].facets[0].scale:k[0].scale,$={axes:Fs,series:Ls},U=(e.drawOrder||["axes","series"]).map(t=>$[t]);function Q(t){let l=t.distr==3?r=>Pt(r>0?r:t.clamp(n,r,t.min,t.max,t.key)):t.distr==4?r=>Yn(r,t.asinh):t.distr==100?r=>t.fwd(r):r=>r;return r=>{let f=l(r),{_min:c,_max:p}=t,S=p-c;return(f-c)/S}}function B(t){let l=x[t];if(l==null){let r=(e.scales||Yl)[t]||Yl;if(r.from!=null){B(r.from);let f=Te({},x[r.from],r,{key:t});f.valToPct=Q(f),x[t]=f}else{l=x[t]=Te({},t==P?fs:Af,r),l.key=t;let f=l.time,c=l.range,p=Ot(c);if((t!=P||s==2&&!f)&&(p&&(c[0]==null||c[1]==null)&&(c={min:c[0]==null?ro:{mode:1,hard:c[0],soft:c[0]},max:c[1]==null?ro:{mode:1,hard:c[1],soft:c[1]}},p=!1),!p&&pn(c))){let S=c;c=(_,v,b)=>v==null?Tl:rn(v,b,S)}l.range=X(c||(f?Wf:t==P?l.distr==3?If:l.distr==4?Yf:Ss:l.distr==3?_s:l.distr==4?ys:Gf)),l.auto=X(p?!1:l.auto),l.clamp=X(l.clamp||Mf),l._min=l._max=null,l.valToPct=Q(l)}}}B("x"),B("y"),s==1&&k.forEach(t=>{B(t.scale)}),H.forEach(t=>{B(t.scale)});for(let t in e.scales)B(t);let T=x[P],j=T.distr,C,I;T.ori==0?(Xe(g,Qs),C=a,I=u):(Xe(g,Xs),C=u,I=a);let F={};for(let t in x){let l=x[t];(l.min!=null||l.max!=null)&&(F[t]={min:l.min,max:l.max},l.min=l.max=null)}let ee=e.tzDate||(t=>new Date(Ae(t/G))),z=e.fmtDate||ci,Ue=G==1?Qr(ee):tf(ee),we=_o(ee,So(G==1?Zr:ef,z)),te=vo(ee,yo(nf,z)),fe=[],J=n.legend=Te({},rf,e.legend),V=n.cursor=Te({},hf,{drag:{y:s==2}},e.cursor),be=J.show,He=V.show,Se=J.markers;J.idxs=fe,Se.width=X(Se.width),Se.dash=X(Se.dash),Se.stroke=X(Se.stroke),Se.fill=X(Se.fill);let se,ct,qe,ye=[],St=[],Mt,lt=!1,Lt={};if(J.live){let t=k[1]?k[1].values:null;lt=t!=null,Mt=lt?t(n,1,0):{_:0};for(let l in Mt)Lt[l]=ii}if(be)if(se=gt("table",ur,g),qe=gt("tbody",null,se),J.mount(n,se),lt){ct=gt("thead",null,se,qe);let t=gt("tr",null,ct);gt("th",null,t);for(var tl in Mt)gt("th",qi,t).textContent=tl}else Xe(se,ar),J.live&&Xe(se,cr);let ll={show:!0},Dl={show:!1};function Ul(t,l){if(l==0&&(lt||!J.live||s==2))return Tl;let r=[],f=gt("tr",pr,qe,qe.childNodes[l]);Xe(f,t.class),t.show||Xe(f,Zt);let c=gt("th",null,f);if(Se.show){let _=ft(hr,c);if(l>0){let v=Se.width(n,l);v&&(_.style.border=v+"px "+Se.dash(n,l)+" "+Se.stroke(n,l)),_.style.background=Se.fill(n,l)}}let p=ft(qi,c);t.label instanceof HTMLElement?p.appendChild(t.label):p.textContent=t.label,l>0&&(Se.show||(p.style.color=t.width>0?Se.stroke(n,l):Se.fill(n,l)),Ne("click",c,_=>{if(V._lock)return;Bt(_);let v=k.indexOf(t);if((_.ctrlKey||_.metaKey)!=J.isolate){let b=k.some((M,E)=>E>0&&E!=v&&M.show);k.forEach((M,E)=>{E>0&&vt(E,b?E==v?ll:Dl:ll,!0,xe.setSeries)})}else vt(v,{show:!t.show},!0,xe.setSeries)},!1),sl&&Ne(Qi,c,_=>{V._lock||(Bt(_),vt(k.indexOf(t),Sl,!0,xe.setSeries))},!1));for(var S in Mt){let _=gt("td",mr,f);_.textContent="--",r.push(_)}return[f,r]}let Nt=new Map;function Ne(t,l,r,f=!0){let c=Nt.get(l)||{},p=V.bind[t](n,l,r,f);p&&(Qt(t,l,c[t]=p),Nt.set(l,c))}function nl(t,l,r){let f=Nt.get(l)||{};for(let c in f)(t==null||c==t)&&(Jn(c,l,f[c]),delete f[c]);t==null&&Nt.delete(l)}let At=0,Wt=0,K=0,A=0,pe=0,Me=0,il=pe,Gt=Me,_t=K,It=A,$e=0,nt=0,Ke=0,at=0;n.bbox={};let wn=!1,Kl=!1,ol=!1,Yt=!1,jl=!1,it=!1;function Sn(t,l,r){(r||t!=n.width||l!=n.height)&&wi(t,l),al(!1),ol=!0,Kl=!0,pl()}function wi(t,l){n.width=At=K=t,n.height=Wt=A=l,pe=Me=0,Ts(),bs();let r=n.bbox;$e=r.left=$t(pe*oe,.5),nt=r.top=$t(Me*oe,.5),Ke=r.width=$t(K*oe,.5),at=r.height=$t(A*oe,.5)}let vs=3;function ks(){let t=!1,l=0;for(;!t;){l++;let r=Rs(l),f=zs(l);t=l==vs||r&&f,t||(wi(n.width,n.height),Kl=!0)}}function xs({width:t,height:l}){Sn(t,l)}n.setSize=xs;function Ts(){let t=!1,l=!1,r=!1,f=!1;H.forEach((c,p)=>{if(c.show&&c._show){let{side:S,_size:_}=c,v=S%2,b=c.label!=null?c.labelSize:0,M=_+b;M>0&&(v?(K-=M,S==3?(pe+=M,f=!0):r=!0):(A-=M,S==0?(Me+=M,t=!0):l=!0))}}),Ut[0]=t,Ut[1]=r,Ut[2]=l,Ut[3]=f,K-=Ct[1]+Ct[3],pe+=Ct[3],A-=Ct[2]+Ct[0],Me+=Ct[0]}function bs(){let t=pe+K,l=Me+A,r=pe,f=Me;function c(p,S){switch(p){case 1:return t+=S,t-S;case 2:return l+=S,l-S;case 3:return r-=S,r+S;case 0:return f-=S,f+S}}H.forEach((p,S)=>{if(p.show&&p._show){let _=p.side;p._pos=c(_,p._size),p.label!=null&&(p._lpos=c(_,p.labelSize))}})}if(V.dataIdx==null){let t=V.hover,l=t.skip=new Set(t.skip??[]);l.add(void 0);let r=t.prox=X(t.prox),f=t.bias??(t.bias=0);V.dataIdx=(c,p,S,_)=>{if(p==0)return S;let v=S,b=r(c,p,S,_)??ce,M=b>=0&&b<ce,E=T.ori==0?K:A,Y=V.left,ie=i[0],le=i[p];if(l.has(le[S])){v=null;let Z=null,W=null,R;if(f==0||f==-1)for(R=S;Z==null&&R-- >0;)l.has(le[R])||(Z=R);if(f==0||f==1)for(R=S;W==null&&R++<le.length;)l.has(le[R])||(W=R);if(Z!=null||W!=null)if(M){let ge=Z==null?-1/0:C(ie[Z],T,E,0),ve=W==null?1/0:C(ie[W],T,E,0),Re=Y-ge,ue=ve-Y;Re<=ue?Re<=b&&(v=Z):ue<=b&&(v=W)}else v=W==null?Z:Z==null?W:S-Z<=W-S?Z:W}else M&&Ee(Y-C(ie[S],T,E,0))>b&&(v=null);return v}}let Bt=t=>{V.event=t};V.idxs=fe,V._lock=!1;let Oe=V.points;Oe.show=X(Oe.show),Oe.size=X(Oe.size),Oe.stroke=X(Oe.stroke),Oe.width=X(Oe.width),Oe.fill=X(Oe.fill);let yt=n.focus=Te({},e.focus||{alpha:.3},V.focus),sl=yt.prox>=0,rl=sl&&Oe.one,ot=[],fl=[],ul=[];function Si(t,l){let r=Oe.show(n,l);if(r instanceof HTMLElement)return Xe(r,fr),Xe(r,t.class),bt(r,-10,-10,K,A),D.insertBefore(r,ot[l]),r}function _i(t,l){if(s==1||l>0){let r=s==1&&x[t.scale].time,f=t.value;t.value=r?ho(f)?vo(ee,yo(f,z)):f||te:f||xf,t.label=t.label||(r?gf:mf)}if(rl||l>0){t.width=t.width==null?1:t.width,t.paths=t.paths||Of||Mr,t.fillTo=X(t.fillTo||Ef),t.pxAlign=+ne(t.pxAlign,O),t.pxRound=Do(t.pxAlign),t.stroke=X(t.stroke||null),t.fill=X(t.fill||null),t._stroke=t._fill=t._paths=t._focus=null;let r=Tf(Ye(1,t.width),1),f=t.points=Te({},{size:r,width:Ye(1,r*.2),stroke:t.stroke,space:r*2,paths:Hf,_stroke:null,_fill:null},t.points);f.show=X(f.show),f.filter=X(f.filter),f.fill=X(f.fill),f.stroke=X(f.stroke),f.paths=X(f.paths),f.pxAlign=t.pxAlign}if(be){let r=Ul(t,l);ye.splice(l,0,r[0]),St.splice(l,0,r[1]),J.values.push(null)}if(He){fe.splice(l,0,null);let r=null;rl?l==0&&(r=Si(t,l)):l>0&&(r=Si(t,l)),ot.splice(l,0,r),fl.splice(l,0,0),ul.splice(l,0,0)}Ve("addSeries",l)}function Ms(t,l){l=l??k.length,t=s==1?li(t,l,xo,Eo):li(t,l,{},Ao),k.splice(l,0,t),_i(k[l],l)}n.addSeries=Ms;function As(t){if(k.splice(t,1),be){J.values.splice(t,1),St.splice(t,1);let l=ye.splice(t,1)[0];nl(null,l.firstChild),l.remove()}He&&(fe.splice(t,1),ot.splice(t,1)[0].remove(),fl.splice(t,1),ul.splice(t,1)),Ve("delSeries",t)}n.delSeries=As;let Ut=[!1,!1,!1,!1];function Es(t,l){if(t._show=t.show,t.show){let r=t.side%2,f=x[t.scale];f==null&&(t.scale=r?k[1].scale:P,f=x[t.scale]);let c=f.time;t.size=X(t.size),t.space=X(t.space),t.rotate=X(t.rotate),Ot(t.incrs)&&t.incrs.forEach(S=>{!Ht.has(S)&&Ht.set(S,Yo(S))}),t.incrs=X(t.incrs||(f.distr==2?qr:c?G==1?Jr:Xr:Jt)),t.splits=X(t.splits||(c&&f.distr==1?Ue:f.distr==3?Qn:f.distr==4?Sf:wf)),t.stroke=X(t.stroke),t.grid.stroke=X(t.grid.stroke),t.ticks.stroke=X(t.ticks.stroke),t.border.stroke=X(t.border.stroke);let p=t.values;t.values=Ot(p)&&!Ot(p[0])?X(p):c?Ot(p)?_o(ee,So(p,z)):ho(p)?lf(ee,p):p||we:p||df,t.filter=X(t.filter||(f.distr>=3&&f.log==10?vf:f.distr==3&&f.log==2?kf:Go)),t.font=Ro(t.font),t.labelFont=Ro(t.labelFont),t._size=t.size(n,null,l,0),t._space=t._rotate=t._incrs=t._found=t._splits=t._values=null,t._size>0&&(Ut[l]=!0,t._el=ft(ir,w))}}function Ll(t,l,r,f){let[c,p,S,_]=r,v=l%2,b=0;return v==0&&(_||p)&&(b=l==0&&!c||l==2&&!S?Ae(ko.size/3):0),v==1&&(c||S)&&(b=l==1&&!p||l==3&&!_?Ae(bo.size/2):0),b}let yi=n.padding=(e.padding||[Ll,Ll,Ll,Ll]).map(t=>X(ne(t,Ll))),Ct=n._padding=yi.map((t,l)=>t(n,l,Ut,0)),ze,Pe=null,De=null,ql=s==1?k[0].idxs:null,pt=null,Cl=!1;function vi(t,l){if(i=t??[],n.data=n._data=i,s==2){ze=0;for(let r=1;r<k.length;r++)ze+=i[r][0].length}else{i.length==0&&(n.data=n._data=i=[[]]),pt=i[0],ze=pt.length;let r=i;if(j==2){r=i.slice();let f=r[0]=Array(ze);for(let c=0;c<ze;c++)f[c]=c}n._data=i=r}if(al(!0),Ve("setData"),j==2&&(ol=!0),l!==!1){let r=T;r.auto(n,Cl)?_n():Rt(P,r.min,r.max),Yt=Yt||V.left>=0,it=!0,pl()}}n.setData=vi;function _n(){Cl=!0;let t,l;s==1&&(ze>0?(Pe=ql[0]=0,De=ql[1]=ze-1,t=i[0][Pe],l=i[0][De],j==2?(t=Pe,l=De):t==l&&(j==3?[t,l]=cn(t,t,T.log,!1):j==4?[t,l]=si(t,t,T.log,!1):T.time?l=t+Ae(86400/G):[t,l]=rn(t,l,ri,!0))):(Pe=ql[0]=t=null,De=ql[1]=l=null)),Rt(P,t,l)}let $l,cl,yn,vn,kn,xn,Tn,bn,Mn,je;function ki(t,l,r,f,c,p){t??(t=Ji),r??(r=ui),f??(f="butt"),c??(c=Ji),p??(p="round"),t!=$l&&(d.strokeStyle=$l=t),c!=cl&&(d.fillStyle=cl=c),l!=yn&&(d.lineWidth=yn=l),p!=kn&&(d.lineJoin=kn=p),f!=xn&&(d.lineCap=xn=f),r!=vn&&d.setLineDash(vn=r)}function xi(t,l,r,f){l!=cl&&(d.fillStyle=cl=l),t!=Tn&&(d.font=Tn=t),r!=bn&&(d.textAlign=bn=r),f!=Mn&&(d.textBaseline=Mn=f)}function An(t,l,r,f,c=0){if(f.length>0&&t.auto(n,Cl)&&(l==null||l.min==null)){let p=ne(Pe,0),S=ne(De,f.length-1),_=r.min==null?yr(f,p,S,c,t.distr==3):[r.min,r.max];t.min=wt(t.min,r.min=_[0]),t.max=Ye(t.max,r.max=_[1])}}let Ti={min:null,max:null};function Ps(){for(let f in x){let c=x[f];F[f]==null&&(c.min==null||F[P]!=null&&c.auto(n,Cl))&&(F[f]=Ti)}for(let f in x){let c=x[f];F[f]==null&&c.from!=null&&F[c.from]!=null&&(F[f]=Ti)}F[P]!=null&&al(!0);let t={};for(let f in F){let c=F[f];if(c!=null){let p=t[f]=bl(x[f],Pr);if(c.min!=null)Te(p,c);else if(f!=P||s==2)if(ze==0&&p.from==null){let S=p.range(n,null,null,f);p.min=S[0],p.max=S[1]}else p.min=ce,p.max=-ce}}if(ze>0){k.forEach((f,c)=>{if(s==1){let p=f.scale,S=F[p];if(S==null)return;let _=t[p];if(c==0){let v=_.range(n,_.min,_.max,p);_.min=v[0],_.max=v[1],Pe=dt(_.min,i[0]),De=dt(_.max,i[0]),De-Pe>1&&(i[0][Pe]<_.min&&Pe++,i[0][De]>_.max&&De--),f.min=pt[Pe],f.max=pt[De]}else f.show&&f.auto&&An(_,S,f,i[c],f.sorted);f.idxs[0]=Pe,f.idxs[1]=De}else if(c>0&&f.show&&f.auto){let[p,S]=f.facets,_=p.scale,v=S.scale,[b,M]=i[c],E=t[_],Y=t[v];E!=null&&An(E,F[_],p,b,p.sorted),Y!=null&&An(Y,F[v],S,M,S.sorted),f.min=S.min,f.max=S.max}});for(let f in t){let c=t[f],p=F[f];if(c.from==null&&(p==null||p.min==null)){let S=c.range(n,c.min==ce?null:c.min,c.max==-ce?null:c.max,f);c.min=S[0],c.max=S[1]}}}for(let f in t){let c=t[f];if(c.from!=null){let p=t[c.from];if(p.min==null)c.min=c.max=null;else{let S=c.range(n,p.min,p.max,f);c.min=S[0],c.max=S[1]}}}let l={},r=!1;for(let f in t){let c=t[f],p=x[f];if(p.min!=c.min||p.max!=c.max){p.min=c.min,p.max=c.max;let S=p.distr;p._min=S==3?Pt(p.min):S==4?Yn(p.min,p.asinh):S==100?p.fwd(p.min):p.min,p._max=S==3?Pt(p.max):S==4?Yn(p.max,p.asinh):S==100?p.fwd(p.max):p.max,l[f]=r=!0}}if(r){k.forEach((f,c)=>{s==2?c>0&&l.y&&(f._paths=null):l[f.scale]&&(f._paths=null)});for(let f in l)ol=!0,Ve("setScale",f);He&&V.left>=0&&(Yt=it=!0)}for(let f in F)F[f]=null}function Ds(t){let l=Zn(Pe-1,0,ze-1),r=Zn(De+1,0,ze-1);for(;t[l]==null&&l>0;)l--;for(;t[r]==null&&r<ze-1;)r++;return[l,r]}function Ls(){if(ze>0){let t=k.some(l=>l._focus)&&je!=yt.alpha;t&&(d.globalAlpha=je=yt.alpha),k.forEach((l,r)=>{if(r>0&&l.show&&(bi(r,!1),bi(r,!0),l._paths==null)){let f=je;je!=l.alpha&&(d.globalAlpha=je=l.alpha);let c=s==2?[0,i[r][0].length-1]:Ds(i[r]);l._paths=l.paths(n,r,c[0],c[1]),je!=f&&(d.globalAlpha=je=f)}}),k.forEach((l,r)=>{if(r>0&&l.show){let f=je;je!=l.alpha&&(d.globalAlpha=je=l.alpha),l._paths!=null&&Mi(r,!1);{let c=l._paths!=null?l._paths.gaps:null,p=l.points.show(n,r,Pe,De,c),S=l.points.filter(n,r,p,c);(p||S)&&(l.points._paths=l.points.paths(n,r,Pe,De,S),Mi(r,!0))}je!=f&&(d.globalAlpha=je=f),Ve("drawSeries",r)}}),t&&(d.globalAlpha=je=1)}}function bi(t,l){let r=l?k[t].points:k[t];r._stroke=r.stroke(n,t),r._fill=r.fill(n,t)}function Mi(t,l){let r=l?k[t].points:k[t],{stroke:f,fill:c,clip:p,flags:S,_stroke:_=r._stroke,_fill:v=r._fill,_width:b=r.width}=r._paths;b=ae(b*oe,3);let M=null,E=b%2/2;l&&v==null&&(v=b>0?"#fff":_);let Y=r.pxAlign==1&&E>0;if(Y&&d.translate(E,E),!l){let ie=$e-b/2,le=nt-b/2,Z=Ke+b,W=at+b;M=new Path2D,M.rect(ie,le,Z,W)}l?En(_,b,r.dash,r.cap,v,f,c,S,p):Cs(t,_,b,r.dash,r.cap,v,f,c,S,M,p),Y&&d.translate(-E,-E)}function Cs(t,l,r,f,c,p,S,_,v,b,M){let E=!1;v!=0&&q.forEach((Y,ie)=>{if(Y.series[0]==t){let le=k[Y.series[1]],Z=i[Y.series[1]],W=(le._paths||Yl).band;Ot(W)&&(W=Y.dir==1?W[0]:W[1]);let R,ge=null;le.show&&W&&kr(Z,Pe,De)?(ge=Y.fill(n,ie)||p,R=le._paths.clip):W=null,En(l,r,f,c,ge,S,_,v,b,M,R,W),E=!0}}),E||En(l,r,f,c,p,S,_,v,b,M)}let Ai=Ml|ei;function En(t,l,r,f,c,p,S,_,v,b,M,E){ki(t,l,r,f,c),(v||b||E)&&(d.save(),v&&d.clip(v),b&&d.clip(b)),E?(_&Ai)==Ai?(d.clip(E),M&&d.clip(M),Zl(c,S),Jl(t,p,l)):_&ei?(Zl(c,S),d.clip(E),Jl(t,p,l)):_&Ml&&(d.save(),d.clip(E),M&&d.clip(M),Zl(c,S),d.restore(),Jl(t,p,l)):(Zl(c,S),Jl(t,p,l)),(v||b||E)&&d.restore()}function Jl(t,l,r){r>0&&(l instanceof Map?l.forEach((f,c)=>{d.strokeStyle=$l=c,d.stroke(f)}):l!=null&&t&&d.stroke(l))}function Zl(t,l){l instanceof Map?l.forEach((r,f)=>{d.fillStyle=cl=f,d.fill(r)}):l!=null&&t&&d.fill(l)}function Vs(t,l,r,f){let c=H[t],p;if(f<=0)p=[0,0];else{let S=c._space=c.space(n,t,l,r,f),_=c._incrs=c.incrs(n,t,l,r,f,S);p=Bf(l,r,_,f,S)}return c._found=p}function Pn(t,l,r,f,c,p,S,_,v,b){let M=S%2/2;O==1&&d.translate(M,M),ki(_,S,v,b,_),d.beginPath();let E,Y,ie,le,Z=c+(f==0||f==3?-p:p);r==0?(Y=c,le=Z):(E=c,ie=Z);for(let W=0;W<t.length;W++)l[W]!=null&&(r==0?E=ie=t[W]:Y=le=t[W],d.moveTo(E,Y),d.lineTo(ie,le));d.stroke(),O==1&&d.translate(-M,-M)}function Rs(t){let l=!0;return H.forEach((r,f)=>{if(!r.show)return;let c=x[r.scale];if(c.min==null){r._show&&(l=!1,r._show=!1,al(!1));return}else r._show||(l=!1,r._show=!0,al(!1));let p=r.side,S=p%2,{min:_,max:v}=c,[b,M]=Vs(f,_,v,S==0?K:A);if(M==0)return;let E=c.distr==2,Y=r._splits=r.splits(n,f,_,v,b,M,E),ie=c.distr==2?Y.map(R=>pt[R]):Y,le=c.distr==2?pt[Y[1]]-pt[Y[0]]:b,Z=r._values=r.values(n,r.filter(n,ie,f,M,le),f,M,le);r._rotate=p==2?r.rotate(n,Z,f,M):0;let W=r._size;r._size=ut(r.size(n,Z,f,t)),W!=null&&r._size!=W&&(l=!1)}),l}function zs(t){let l=!0;return yi.forEach((r,f)=>{let c=r(n,f,Ut,t);c!=Ct[f]&&(l=!1),Ct[f]=c}),l}function Fs(){for(let t=0;t<H.length;t++){let l=H[t];if(!l.show||!l._show)continue;let r=l.side,f=r%2,c,p,S=l.stroke(n,t),_=r==0||r==3?-1:1,[v,b]=l._found;if(l.label!=null){let Ge=l.labelGap*_,Qe=Ae((l._lpos+Ge)*oe);xi(l.labelFont[0],S,"center",r==2?"top":$i),d.save(),f==1?(c=p=0,d.translate(Qe,Ae(nt+at/2)),d.rotate((r==3?-on:on)/2)):(c=Ae($e+Ke/2),p=Qe);let qt=No(l.label)?l.label(n,t,v,b):l.label;d.fillText(qt,c,p),d.restore()}if(b==0)continue;let M=x[l.scale],E=f==0?Ke:at,Y=f==0?$e:nt,ie=l._splits,le=M.distr==2?ie.map(Ge=>pt[Ge]):ie,Z=M.distr==2?pt[ie[1]]-pt[ie[0]]:v,W=l.ticks,R=l.border,ge=W.show?W.size:0,ve=Ae(ge*oe),Re=Ae((l.alignTo==2?l._size-ge-l.gap:l.gap)*oe),ue=l._rotate*-on/180,ke=N(l._pos*oe),Je=(ve+Re)*_,We=ke+Je;p=f==0?We:0,c=f==1?We:0;let st=l.font[0],ht=l.align==1?yl:l.align==2?Wn:ue>0?yl:ue<0?Wn:f==0?"center":r==3?Wn:yl,xt=ue||f==1?"middle":r==2?"top":$i;xi(st,S,ht,xt);let Ze=l.font[1]*l.lineGap,rt=ie.map(Ge=>N(h(Ge,M,E,Y))),mt=l._values;for(let Ge=0;Ge<mt.length;Ge++){let Qe=mt[Ge];if(Qe!=null){f==0?c=rt[Ge]:p=rt[Ge],Qe=""+Qe;let qt=Qe.indexOf(`
|
|
3
|
+
`)==-1?[Qe]:Qe.split(/\n/gm);for(let Ie=0;Ie<qt.length;Ie++){let Ki=qt[Ie];ue?(d.save(),d.translate(c,p+Ie*Ze),d.rotate(ue),d.fillText(Ki,0,0),d.restore()):d.fillText(Ki,c,p+Ie*Ze)}}}W.show&&Pn(rt,W.filter(n,le,t,b,Z),f,r,ke,ve,ae(W.width*oe,3),W.stroke(n,t),W.dash,W.cap);let Tt=l.grid;Tt.show&&Pn(rt,Tt.filter(n,le,t,b,Z),f,f==0?2:1,f==0?nt:$e,f==0?at:Ke,ae(Tt.width*oe,3),Tt.stroke(n,t),Tt.dash,Tt.cap),R.show&&Pn([ke],[1],f==0?1:0,f==0?1:2,f==1?nt:$e,f==1?at:Ke,ae(R.width*oe,3),R.stroke(n,t),R.dash,R.cap)}Ve("drawAxes")}function al(t){k.forEach((l,r)=>{r>0&&(l._paths=null,t&&(s==1?(l.min=null,l.max=null):l.facets.forEach(f=>{f.min=null,f.max=null})))})}let Ql=!1,Dn=!1,Vl=[];function Os(){Dn=!1;for(let t=0;t<Vl.length;t++)Ve(...Vl[t]);Vl.length=0}function pl(){Ql||(Fr(Ei),Ql=!0)}function Hs(t,l=!1){Ql=!0,Dn=l,t(n),Ei(),l&&Vl.length>0&&queueMicrotask(Os)}n.batch=Hs;function Ei(){if(wn&&(Ps(),wn=!1),ol&&(ks(),ol=!1),Kl){if(de(L,yl,pe),de(L,"top",Me),de(L,Nl,K),de(L,Wl,A),de(D,yl,pe),de(D,"top",Me),de(D,Nl,K),de(D,Wl,A),de(w,Nl,At),de(w,Wl,Wt),y.width=Ae(At*oe),y.height=Ae(Wt*oe),H.forEach(({_el:t,_show:l,_size:r,_pos:f,side:c})=>{if(t!=null)if(l){let p=c===3||c===0?r:0,S=c%2==1;de(t,S?"left":"top",f-p),de(t,S?"width":"height",r),de(t,S?"top":"left",S?Me:pe),de(t,S?"height":"width",S?A:K),$n(t,Zt)}else Xe(t,Zt)}),$l=cl=yn=kn=xn=Tn=bn=Mn=vn=null,je=1,Fl(!0),pe!=il||Me!=Gt||K!=_t||A!=It){al(!1);let t=K/_t,l=A/It;if(He&&!Yt&&V.left>=0){V.left*=t,V.top*=l,hl&&bt(hl,Ae(V.left),0,K,A),ml&&bt(ml,0,Ae(V.top),K,A);for(let r=0;r<ot.length;r++){let f=ot[r];f!=null&&(fl[r]*=t,ul[r]*=l,bt(f,ut(fl[r]),ut(ul[r]),K,A))}}if(me.show&&!jl&&me.left>=0&&me.width>0){me.left*=t,me.width*=t,me.top*=l,me.height*=l;for(let r in Fn)de(wl,r,me[r])}il=pe,Gt=Me,_t=K,It=A}Ve("setSize"),Kl=!1}At>0&&Wt>0&&(d.clearRect(0,0,y.width,y.height),Ve("drawClear"),U.forEach(t=>t()),Ve("draw")),me.show&&jl&&(Xl(me),jl=!1),He&&Yt&&(jt(null,!0,!1),Yt=!1),J.show&&J.live&&it&&(Rn(),it=!1),m||(m=!0,n.status=1,Ve("ready")),Cl=!1,Ql=!1}n.redraw=(t,l)=>{ol=l||!1,t!==!1?Rt(P,T.min,T.max):pl()};function Ln(t,l){let r=x[t];if(r.from==null){if(ze==0){let f=r.range(n,l.min,l.max,t);l.min=f[0],l.max=f[1]}if(l.min>l.max){let f=l.min;l.min=l.max,l.max=f}if(ze>1&&l.min!=null&&l.max!=null&&l.max-l.min<1e-16)return;t==P&&r.distr==2&&ze>0&&(l.min=dt(l.min,i[0]),l.max=dt(l.max,i[0]),l.min==l.max&&l.max++),F[t]=l,wn=!0,pl()}}n.setScale=Ln;let Cn,Vn,hl,ml,Pi,Di,gl,dl,Li,Ci,he,_e,Vt=!1,Fe=V.drag,Le=Fe.x,Ce=Fe.y;He&&(V.x&&(Cn=ft(sr,D)),V.y&&(Vn=ft(rr,D)),T.ori==0?(hl=Cn,ml=Vn):(hl=Vn,ml=Cn),he=V.left,_e=V.top);let me=n.select=Te({show:!0,over:!0,left:0,width:0,top:0,height:0},e.select),wl=me.show?ft(or,me.over?D:L):null;function Xl(t,l){if(me.show){for(let r in t)me[r]=t[r],r in Fn&&de(wl,r,t[r]);l!==!1&&Ve("setSelect")}}n.setSelect=Xl;function Ns(t){if(k[t].show)be&&$n(ye[t],Zt);else if(be&&Xe(ye[t],Zt),He){let r=rl?ot[0]:ot[t];r!=null&&bt(r,-10,-10,K,A)}}function Rt(t,l,r){Ln(t,{min:l,max:r})}function vt(t,l,r,f){l.focus!=null&&Bs(t),l.show!=null&&k.forEach((c,p)=>{p>0&&(t==p||t==null)&&(c.show=l.show,Ns(p),s==2?(Rt(c.facets[0].scale,null,null),Rt(c.facets[1].scale,null,null)):Rt(c.scale,null,null),pl())}),r!==!1&&Ve("setSeries",t,l),f&&Ol("setSeries",n,t,l)}n.setSeries=vt;function Ws(t,l){Te(q[t],l)}function Gs(t,l){t.fill=X(t.fill||null),t.dir=ne(t.dir,-1),l=l??q.length,q.splice(l,0,t)}function Is(t){t==null?q.length=0:q.splice(t,1)}n.addBand=Gs,n.setBand=Ws,n.delBand=Is;function Ys(t,l){k[t].alpha=l,He&&ot[t]!=null&&(ot[t].style.opacity=l),be&&ye[t]&&(ye[t].style.opacity=l)}let Et,zt,Kt,Sl={focus:!0};function Bs(t){if(t!=Kt){let l=t==null,r=yt.alpha!=1;k.forEach((f,c)=>{if(s==1||c>0){let p=l||c==0||c==t;f._focus=l?null:p,r&&Ys(c,p?1:yt.alpha)}}),Kt=t,r&&pl()}}be&&sl&&Ne(Xi,se,t=>{V._lock||(Bt(t),Kt!=null&&vt(null,Sl,!0,xe.setSeries))});function kt(t,l,r){let f=x[l];r&&(t=t/oe-(f.ori==1?Me:pe));let c=K;f.ori==1&&(c=A,t=c-t),f.dir==-1&&(t=c-t);let p=f._min,S=f._max,_=t/c,v=p+(S-p)*_,b=f.distr;return b==3?xl(10,v):b==4?Tr(v,f.asinh):b==100?f.bwd(v):v}function Us(t,l){let r=kt(t,P,l);return dt(r,i[0],Pe,De)}n.valToIdx=t=>dt(t,i[0]),n.posToIdx=Us,n.posToVal=kt,n.valToPos=(t,l,r)=>x[l].ori==0?a(t,x[l],r?Ke:K,r?$e:0):u(t,x[l],r?at:A,r?nt:0),n.setCursor=(t,l,r)=>{he=t.left,_e=t.top,jt(null,l,r)};function Vi(t,l){de(wl,yl,me.left=t),de(wl,Nl,me.width=l)}function Ri(t,l){de(wl,"top",me.top=t),de(wl,Wl,me.height=l)}let Rl=T.ori==0?Vi:Ri,zl=T.ori==1?Vi:Ri;function Ks(){if(be&&J.live)for(let t=s==2?1:0;t<k.length;t++){if(t==0&<)continue;let l=J.values[t],r=0;for(let f in l)St[t][r++].firstChild.nodeValue=l[f]}}function Rn(t,l){if(t!=null&&(t.idxs?t.idxs.forEach((r,f)=>{fe[f]=r}):Er(t.idx)||fe.fill(t.idx),J.idx=fe[0]),be&&J.live){for(let r=0;r<k.length;r++)(r>0||s==1&&!lt)&&js(r,fe[r]);Ks()}it=!1,l!==!1&&Ve("setLegend")}n.setLegend=Rn;function js(t,l){let r=k[t],f=t==0&&j==2?pt:i[t],c;lt?c=r.values(n,t,l)??Lt:(c=r.value(n,l==null?null:f[l],t,l),c=c==null?Lt:{_:c}),J.values[t]=c}function jt(t,l,r){Li=he,Ci=_e,[he,_e]=V.move(n,he,_e),V.left=he,V.top=_e,He&&(hl&&bt(hl,Ae(he),0,K,A),ml&&bt(ml,0,Ae(_e),K,A));let f,c=Pe>De;Et=ce,zt=null;let p=T.ori==0?K:A,S=T.ori==1?K:A;if(he<0||ze==0||c){f=V.idx=null;for(let _=0;_<k.length;_++){let v=ot[_];v!=null&&bt(v,-10,-10,K,A)}sl&&vt(null,Sl,!0,t==null&&xe.setSeries),J.live&&(fe.fill(f),it=!0)}else{let _,v,b;s==1&&(_=T.ori==0?he:_e,v=kt(_,P),f=V.idx=dt(v,i[0],Pe,De),b=C(i[0][f],T,p,0));let M=-10,E=-10,Y=0,ie=0,le=!0,Z="",W="";for(let R=s==2?1:0;R<k.length;R++){let ge=k[R],ve=fe[R],Re=ve==null?null:s==1?i[R][ve]:i[R][1][ve],ue=V.dataIdx(n,R,f,v),ke=ue==null?null:s==1?i[R][ue]:i[R][1][ue];if(it=it||ke!=Re||ue!=ve,fe[R]=ue,R>0&&ge.show){let Je=ue==null?-10:ue==f?b:C(s==1?i[0][ue]:i[R][0][ue],T,p,0),We=ke==null?-10:I(ke,s==1?x[ge.scale]:x[ge.facets[1].scale],S,0);if(sl&&ke!=null){let st=T.ori==1?he:_e,ht=Ee(yt.dist(n,R,ue,We,st));if(ht<Et){let xt=yt.bias;if(xt!=0){let Ze=kt(st,ge.scale),rt=ke>=0?1:-1,mt=Ze>=0?1:-1;mt==rt&&(mt==1?xt==1?ke>=Ze:ke<=Ze:xt==1?ke<=Ze:ke>=Ze)&&(Et=ht,zt=R)}else Et=ht,zt=R}}if(it||rl){let st,ht;T.ori==0?(st=Je,ht=We):(st=We,ht=Je);let xt,Ze,rt,mt,Tt,Ge,Qe=!0,qt=Oe.bbox;if(qt!=null){Qe=!1;let Ie=qt(n,R);rt=Ie.left,mt=Ie.top,xt=Ie.width,Ze=Ie.height}else rt=st,mt=ht,xt=Ze=Oe.size(n,R);if(Ge=Oe.fill(n,R),Tt=Oe.stroke(n,R),rl)R==zt&&Et<=yt.prox&&(M=rt,E=mt,Y=xt,ie=Ze,le=Qe,Z=Ge,W=Tt);else{let Ie=ot[R];Ie!=null&&(fl[R]=rt,ul[R]=mt,so(Ie,xt,Ze,Qe),io(Ie,Ge,Tt),bt(Ie,ut(rt),ut(mt),K,A))}}}}if(rl){let R=yt.prox,ge=Kt==null?Et<=R:Et>R||zt!=Kt;if(it||ge){let ve=ot[0];ve!=null&&(fl[0]=M,ul[0]=E,so(ve,Y,ie,le),io(ve,Z,W),bt(ve,ut(M),ut(E),K,A))}}}if(me.show&&Vt)if(t!=null){let[_,v]=xe.scales,[b,M]=xe.match,[E,Y]=t.cursor.sync.scales,ie=t.cursor.drag;if(Le=ie._x,Ce=ie._y,Le||Ce){let{left:le,top:Z,width:W,height:R}=t.select,ge=t.scales[E].ori,ve=t.posToVal,Re,ue,ke,Je,We,st=_!=null&&b(_,E),ht=v!=null&&M(v,Y);st&&Le?(ge==0?(Re=le,ue=W):(Re=Z,ue=R),ke=x[_],Je=C(ve(Re,E),ke,p,0),We=C(ve(Re+ue,E),ke,p,0),Rl(wt(Je,We),Ee(We-Je))):Rl(0,p),ht&&Ce?(ge==1?(Re=le,ue=W):(Re=Z,ue=R),ke=x[v],Je=I(ve(Re,Y),ke,S,0),We=I(ve(Re+ue,Y),ke,S,0),zl(wt(Je,We),Ee(We-Je))):zl(0,S)}else On()}else{let _=Ee(Li-Pi),v=Ee(Ci-Di);if(T.ori==1){let Y=_;_=v,v=Y}Le=Fe.x&&_>=Fe.dist,Ce=Fe.y&&v>=Fe.dist;let b=Fe.uni;b!=null?Le&&Ce&&(Le=_>=b,Ce=v>=b,!Le&&!Ce&&(v>_?Ce=!0:Le=!0)):Fe.x&&Fe.y&&(Le||Ce)&&(Le=Ce=!0);let M,E;Le&&(T.ori==0?(M=gl,E=he):(M=dl,E=_e),Rl(wt(M,E),Ee(E-M)),Ce||zl(0,S)),Ce&&(T.ori==1?(M=gl,E=he):(M=dl,E=_e),zl(wt(M,E),Ee(E-M)),Le||Rl(0,p)),!Le&&!Ce&&(Rl(0,0),zl(0,0))}if(Fe._x=Le,Fe._y=Ce,t==null){if(r){if(Ui!=null){let[_,v]=xe.scales;xe.values[0]=_!=null?kt(T.ori==0?he:_e,_):null,xe.values[1]=v!=null?kt(T.ori==1?he:_e,v):null}Ol(Gn,n,he,_e,K,A,f)}if(sl){let _=r&&xe.setSeries,v=yt.prox;Kt==null?Et<=v&&vt(zt,Sl,!0,_):Et>v?vt(null,Sl,!0,_):zt!=Kt&&vt(zt,Sl,!0,_)}}it&&(J.idx=f,Rn()),l!==!1&&Ve("setCursor")}let Ft=null;Object.defineProperty(n,"rect",{get(){return Ft==null&&Fl(!1),Ft}});function Fl(t=!1){t?Ft=null:(Ft=D.getBoundingClientRect(),Ve("syncRect",Ft))}function zi(t,l,r,f,c,p,S){V._lock||Vt&&t!=null&&t.movementX==0&&t.movementY==0||(zn(t,l,r,f,c,p,S,!1,t!=null),t!=null?jt(null,!0,!0):jt(l,!0,!1))}function zn(t,l,r,f,c,p,S,_,v){if(Ft==null&&Fl(!1),Bt(t),t!=null)r=t.clientX-Ft.left,f=t.clientY-Ft.top;else{if(r<0||f<0){he=-10,_e=-10;return}let[b,M]=xe.scales,E=l.cursor.sync,[Y,ie]=E.values,[le,Z]=E.scales,[W,R]=xe.match,ge=l.axes[0].side%2==1,ve=T.ori==0?K:A,Re=T.ori==1?K:A,ue=ge?p:c,ke=ge?c:p,Je=ge?f:r,We=ge?r:f;if(le!=null?r=W(b,le)?h(Y,x[b],ve,0):-10:r=ve*(Je/ue),Z!=null?f=R(M,Z)?h(ie,x[M],Re,0):-10:f=Re*(We/ke),T.ori==1){let st=r;r=f,f=st}}v&&(l==null||l.cursor.event.type==Gn)&&((r<=1||r>=K-1)&&(r=$t(r,K)),(f<=1||f>=A-1)&&(f=$t(f,A))),_?(Pi=r,Di=f,[gl,dl]=V.move(n,r,f)):(he=r,_e=f)}let Fn={width:0,height:0,left:0,top:0};function On(){Xl(Fn,!1)}let Fi,Oi,Hi,Ni;function Wi(t,l,r,f,c,p,S){Vt=!0,Le=Ce=Fe._x=Fe._y=!1,zn(t,l,r,f,c,p,S,!0,!1),t!=null&&(Ne(In,jn,Gi,!1),Ol(Zi,n,gl,dl,K,A,null));let{left:_,top:v,width:b,height:M}=me;Fi=_,Oi=v,Hi=b,Ni=M}function Gi(t,l,r,f,c,p,S){Vt=Fe._x=Fe._y=!1,zn(t,l,r,f,c,p,S,!1,!0);let{left:_,top:v,width:b,height:M}=me,E=b>0||M>0,Y=Fi!=_||Oi!=v||Hi!=b||Ni!=M;if(E&&Y&&Xl(me),Fe.setScale&&E&&Y){let ie=_,le=b,Z=v,W=M;if(T.ori==1&&(ie=v,le=M,Z=_,W=b),Le&&Rt(P,kt(ie,P),kt(ie+le,P)),Ce)for(let R in x){let ge=x[R];R!=P&&ge.from==null&&ge.min!=ce&&Rt(R,kt(Z+W,R),kt(Z,R))}On()}else V.lock&&(V._lock=!V._lock,jt(l,!0,t!=null));t!=null&&(nl(In,jn),Ol(In,n,he,_e,K,A,null))}function qs(t,l,r,f,c,p,S){if(V._lock)return;Bt(t);let _=Vt;if(Vt){let v=!0,b=!0,M=10,E,Y;T.ori==0?(E=Le,Y=Ce):(E=Ce,Y=Le),E&&Y&&(v=he<=M||he>=K-M,b=_e<=M||_e>=A-M),E&&v&&(he=he<gl?0:K),Y&&b&&(_e=_e<dl?0:A),jt(null,!0,!0),Vt=!1}he=-10,_e=-10,fe.fill(null),jt(null,!0,!0),_&&(Vt=_)}function Ii(t,l,r,f,c,p,S){V._lock||(Bt(t),_n(),On(),t!=null&&Ol(eo,n,he,_e,K,A,null))}function Yi(){H.forEach(Uf),Sn(n.width,n.height,!0)}Qt(sn,kl,Yi);let _l={};_l.mousedown=Wi,_l.mousemove=zi,_l.mouseup=Gi,_l.dblclick=Ii,_l.setSeries=(t,l,r,f)=>{let c=xe.match[2];r=c(n,l,r),r!=-1&&vt(r,f,!0,!1)},He&&(Ne(Zi,D,Wi),Ne(Gn,D,zi),Ne(Qi,D,t=>{Bt(t),Fl(!1)}),Ne(Xi,D,qs),Ne(eo,D,Ii),ti.add(n),n.syncRect=Fl);let en=n.hooks=e.hooks||{};function Ve(t,l,r){Dn?Vl.push([t,l,r]):t in en&&en[t].forEach(f=>{f.call(null,n,l,r)})}(e.plugins||[]).forEach(t=>{for(let l in t.hooks)en[l]=(en[l]||[]).concat(t.hooks[l])});let Bi=(t,l,r)=>r,xe=Te({key:null,setSeries:!1,filters:{pub:ao,sub:ao},scales:[P,k[1]?k[1].scale:null],match:[po,po,Bi],values:[null,null]},V.sync);xe.match.length==2&&xe.match.push(Bi),V.sync=xe;let Ui=xe.key,Hn=us(Ui);function Ol(t,l,r,f,c,p,S){xe.filters.pub(t,l,r,f,c,p,S)&&Hn.pub(t,l,r,f,c,p,S)}Hn.sub(n);function $s(t,l,r,f,c,p,S){xe.filters.sub(t,l,r,f,c,p,S)&&_l[t](null,l,r,f,c,p,S)}n.pub=$s;function Js(){Hn.unsub(n),ti.delete(n),Nt.clear(),Jn(sn,kl,Yi),g.remove(),se?.remove(),Ve("destroy")}n.destroy=Js;function Nn(){Ve("init",e,i),vi(i||e.data,!1),F[P]?Ln(P,F[P]):_n(),jl=me.show&&(me.width>0||me.height>0),Yt=it=!0,Sn(e.width,e.height)}return k.forEach(_i),H.forEach(Es),o?o instanceof HTMLElement?(o.appendChild(g),Nn()):o(n,Nn):Nn(),n}Be.assign=Te;Be.fmtNum=fi;Be.rangeNum=rn;Be.rangeLog=cn;Be.rangeAsinh=si;Be.orient=el;Be.pxRatio=oe;Be.join=zr;Be.fmtDate=ci,Be.tzDate=Kr;Be.sync=us;{Be.addGap=Pf,Be.clipGaps=hn;let e=Be.paths={points:gs};e.linear=ws,e.stepped=Cf,e.bars=Vf,e.spline=zf}export{Be as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"backtest":{"prs":118,"failures":23,"caught":21,"recall":0.913,"skipped_share":0.64},"learned":{"src/checkout":{"src/checkout/cart.test.ts":6,"src/checkout/pay.test.ts":3,"e2e/checkout.spec.ts":2},"src/search":{"src/search/rank.test.ts":4},"src/api":{"src/api/client.test.ts":3,"src/checkout/pay.test.ts":1},"":{"src/app.test.ts":2}}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
["LoginViewModelTest.emitsError","TestSettlement/concurrent_refunds","TestWebhookRetry/timeout","checkout.spec.ts > applies coupon"]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"TestSettlement/concurrent_refunds":{"tracker":"jira","key":"PAY-412","id":"10412","open":true},"TestWebhookRetry/timeout":{"tracker":"jira","key":"PAY-413","id":"10413","open":true},"checkout.spec.ts > applies coupon":{"tracker":"linear","key":"WEB-88","id":"linear:web-app-0","open":true},"LoginViewModelTest.emitsError":{"tracker":"linear","key":"AND-88","id":"linear:mobile-0","open":true}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"schema":1,"window_days":28,"heads_up":0.8,"min_n":10,"limits":{"pickup_p75_hours":5,"review_p75_hours":20,"cycle_p75_hours":72,"change_failure_rate":0.15},"names":{"pickup_p75_hours":"pickup time P75 (hours)","review_p75_hours":"review time P75 (hours)","cycle_p75_hours":"cycle time to merge P75 (hours)","change_failure_rate":"change failure rate"},"series":{"pickup_p75_hours":[["NOW-84d",7.24,14],["NOW-83d",8.08,14],["NOW-82d",7.6,14],["NOW-81d",8.44,14],["NOW-80d",7.96,14],["NOW-79d",7.48,14],["NOW-78d",8.32,14],["NOW-77d",8.14,14],["NOW-76d",7.64,14],["NOW-75d",8.51,14],["NOW-74d",8.01,14],["NOW-73d",7.52,14],["NOW-72d",8.39,14],["NOW-71d",7.89,14],["NOW-70d",9.4,14],["NOW-69d",8.87,14],["NOW-68d",8.33,14],["NOW-67d",9.27,14],["NOW-66d",8.73,14],["NOW-65d",8.2,14],["NOW-64d",9.13,14],["NOW-63d",8.89,14],["NOW-62d",8.34,14],["NOW-61d",9.31,14],["NOW-60d",8.76,14],["NOW-59d",9.72,14],["NOW-58d",9.17,14],["NOW-57d",8.62,14],["NOW-56d",9.37,14],["NOW-55d",8.83,14],["NOW-54d",8.29,14],["NOW-53d",9.24,14],["NOW-52d",8.7,14],["NOW-51d",8.16,14],["NOW-50d",9.1,14],["NOW-49d",9.24,14],["NOW-48d",10.25,14],["NOW-47d",9.67,14],["NOW-46d",9.09,14],["NOW-45d",10.11,14],["NOW-44d",9.53,14],["NOW-43d",8.95,14],["NOW-42d",10.48,14],["NOW-41d",9.87,14],["NOW-40d",9.26,14],["NOW-39d",10.33,14],["NOW-38d",9.72,14],["NOW-37d",10.79,14],["NOW-36d",10.18,14],["NOW-35d",9.85,14],["NOW-34d",10.95,14],["NOW-33d",10.32,14],["NOW-32d",9.69,14],["NOW-31d",10.79,14],["NOW-30d",10.16,14],["NOW-29d",9.53,14],["NOW-28d",11.15,14],["NOW-27d",10.49,14],["NOW-26d",11.64,14],["NOW-25d",10.98,14],["NOW-24d",10.32,14],["NOW-23d",11.48,14],["NOW-22d",10.82,14],["NOW-21d",10.25,14],["NOW-20d",11.42,14],["NOW-19d",10.75,14],["NOW-18d",10.08,14],["NOW-17d",11.25,14],["NOW-16d",10.58,14],["NOW-15d",11.75,14],["NOW-14d",11.69,14],["NOW-13d",10.98,14],["NOW-12d",12.22,14],["NOW-11d",11.51,14],["NOW-10d",10.81,14],["NOW-9d",12.04,14],["NOW-8d",11.34,14],["NOW-7d",10.45,14],["NOW-6d",11.66,14],["NOW-5d",10.97,14],["NOW-4d",12.18,14],["NOW-3d",11.49,14],["NOW-2d",10.8,14],["NOW-1d",11.4,14]],"review_p75_hours":[["NOW-84d",19.18,13],["NOW-83d",21.4,13],["NOW-82d",20.14,13],["NOW-81d",22.35,13],["NOW-80d",21.09,13],["NOW-79d",19.82,13],["NOW-78d",22.04,13],["NOW-77d",21.56,13],["NOW-76d",20.24,13],["NOW-75d",22.55,13],["NOW-74d",21.23,13],["NOW-73d",19.91,13],["NOW-72d",22.22,13],["NOW-71d",20.9,13],["NOW-70d",24.9,13],["NOW-69d",23.49,13],["NOW-68d",22.08,13],["NOW-67d",24.55,13],["NOW-66d",23.14,13],["NOW-65d",21.72,13],["NOW-64d",24.2,13],["NOW-63d",23.56,13],["NOW-62d",22.1,13],["NOW-61d",24.65,13],["NOW-60d",23.19,13],["NOW-59d",25.75,13],["NOW-58d",24.29,13],["NOW-57d",22.83,13],["NOW-56d",24.83,13],["NOW-55d",23.4,13],["NOW-54d",21.97,13],["NOW-53d",24.47,13],["NOW-52d",23.04,13],["NOW-51d",21.61,13],["NOW-50d",24.11,13],["NOW-49d",24.47,13],["NOW-48d",27.17,13],["NOW-47d",25.62,13],["NOW-46d",24.08,13],["NOW-45d",26.78,13],["NOW-44d",25.24,13],["NOW-43d",23.7,13],["NOW-42d",27.77,13],["NOW-41d",26.15,13],["NOW-40d",24.53,13],["NOW-39d",27.36,13],["NOW-38d",25.74,13],["NOW-37d",28.58,13],["NOW-36d",26.96,13],["NOW-35d",26.09,13],["NOW-34d",29.01,13],["NOW-33d",27.34,13],["NOW-32d",25.67,13],["NOW-31d",28.59,13],["NOW-30d",26.92,13],["NOW-29d",25.25,13],["NOW-28d",29.53,13],["NOW-27d",27.78,13],["NOW-26d",30.84,13],["NOW-25d",29.09,13],["NOW-24d",27.34,13],["NOW-23d",30.41,13],["NOW-22d",28.66,13],["NOW-21d",27.15,13],["NOW-20d",30.24,13],["NOW-19d",28.48,13],["NOW-18d",26.71,13],["NOW-17d",29.8,13],["NOW-16d",28.04,13],["NOW-15d",31.13,13],["NOW-14d",30.96,13],["NOW-13d",29.1,13],["NOW-12d",32.36,13],["NOW-11d",30.5,13],["NOW-10d",28.63,13],["NOW-9d",31.89,13],["NOW-8d",30.03,13],["NOW-7d",27.68,13],["NOW-6d",30.89,13],["NOW-5d",29.06,13],["NOW-4d",32.26,13],["NOW-3d",30.43,13],["NOW-2d",28.6,13],["NOW-1d",30.2,13]],"cycle_p75_hours":[["NOW-84d",30.55,13],["NOW-83d",34.09,13],["NOW-82d",32.07,13],["NOW-81d",35.61,13],["NOW-80d",33.58,13],["NOW-79d",31.56,13],["NOW-78d",35.1,13],["NOW-77d",34.34,13],["NOW-76d",32.24,13],["NOW-75d",35.91,13],["NOW-74d",33.81,13],["NOW-73d",31.72,13],["NOW-72d",35.38,13],["NOW-71d",33.29,13],["NOW-70d",39.66,13],["NOW-69d",37.41,13],["NOW-68d",35.16,13],["NOW-67d",39.1,13],["NOW-66d",36.85,13],["NOW-65d",34.6,13],["NOW-64d",38.54,13],["NOW-63d",37.52,13],["NOW-62d",35.2,13],["NOW-61d",39.27,13],["NOW-60d",36.94,13],["NOW-59d",41.01,13],["NOW-58d",38.69,13],["NOW-57d",36.36,13],["NOW-56d",39.54,13],["NOW-55d",37.27,13],["NOW-54d",34.99,13],["NOW-53d",38.97,13],["NOW-52d",36.7,13],["NOW-51d",34.42,13],["NOW-50d",38.41,13],["NOW-49d",38.97,13],["NOW-48d",43.27,13],["NOW-47d",40.81,13],["NOW-46d",38.36,13],["NOW-45d",42.65,13],["NOW-44d",40.2,13],["NOW-43d",37.74,13],["NOW-42d",44.23,13],["NOW-41d",41.65,13],["NOW-40d",39.06,13],["NOW-39d",43.58,13],["NOW-38d",41,13],["NOW-37d",45.52,13],["NOW-36d",42.94,13],["NOW-35d",41.55,13],["NOW-34d",46.21,13],["NOW-33d",43.55,13],["NOW-32d",40.89,13],["NOW-31d",45.54,13],["NOW-30d",42.88,13],["NOW-29d",40.22,13],["NOW-28d",47.04,13],["NOW-27d",44.25,13],["NOW-26d",49.13,13],["NOW-25d",46.34,13],["NOW-24d",43.55,13],["NOW-23d",48.43,13],["NOW-22d",45.64,13],["NOW-21d",43.25,13],["NOW-20d",48.17,13],["NOW-19d",45.36,13],["NOW-18d",42.54,13],["NOW-17d",47.47,13],["NOW-16d",44.65,13],["NOW-15d",49.58,13],["NOW-14d",49.31,13],["NOW-13d",46.35,13],["NOW-12d",51.54,13],["NOW-11d",48.57,13],["NOW-10d",45.61,13],["NOW-9d",50.8,13],["NOW-8d",47.83,13],["NOW-7d",44.09,13],["NOW-6d",49.19,13],["NOW-5d",46.28,13],["NOW-4d",51.38,13],["NOW-3d",48.46,13],["NOW-2d",45.55,13],["NOW-1d",48.1,13]],"change_failure_rate":[["NOW-84d",0.105,12],["NOW-83d",0.132,12],["NOW-82d",0.159,12],["NOW-81d",0.116,12],["NOW-80d",0.143,12],["NOW-79d",0.17,12],["NOW-78d",0.127,12],["NOW-77d",0.153,12],["NOW-76d",0.11,12],["NOW-75d",0.137,12],["NOW-74d",0.164,12],["NOW-73d",0.121,12],["NOW-72d",0.148,12],["NOW-71d",0.105,12],["NOW-70d",0.132,12],["NOW-69d",0.159,12],["NOW-68d",0.116,12],["NOW-67d",0.143,12],["NOW-66d",0.17,12],["NOW-65d",0.127,12],["NOW-64d",0.153,12],["NOW-63d",0.11,12],["NOW-62d",0.137,12],["NOW-61d",0.164,12],["NOW-60d",0.121,12],["NOW-59d",0.148,12],["NOW-58d",0.105,12],["NOW-57d",0.132,12],["NOW-56d",0.159,12],["NOW-55d",0.116,12],["NOW-54d",0.143,12],["NOW-53d",0.17,12],["NOW-52d",0.127,12],["NOW-51d",0.153,12],["NOW-50d",0.11,12],["NOW-49d",0.137,12],["NOW-48d",0.164,12],["NOW-47d",0.121,12],["NOW-46d",0.148,12],["NOW-45d",0.105,12],["NOW-44d",0.132,12],["NOW-43d",0.159,12],["NOW-42d",0.116,12],["NOW-41d",0.143,12],["NOW-40d",0.17,12],["NOW-39d",0.127,12],["NOW-38d",0.153,12],["NOW-37d",0.11,12],["NOW-36d",0.137,12],["NOW-35d",0.164,12],["NOW-34d",0.121,12],["NOW-33d",0.148,12],["NOW-32d",0.105,12],["NOW-31d",0.132,12],["NOW-30d",0.159,12],["NOW-29d",0.116,12],["NOW-28d",0.143,12],["NOW-27d",0.17,12],["NOW-26d",0.127,12],["NOW-25d",0.153,12],["NOW-24d",0.11,12],["NOW-23d",0.137,12],["NOW-22d",0.164,12],["NOW-21d",0.121,12],["NOW-20d",0.148,12],["NOW-19d",0.105,12],["NOW-18d",0.132,12],["NOW-17d",0.159,12],["NOW-16d",0.116,12],["NOW-15d",0.143,12],["NOW-14d",0.17,12],["NOW-13d",0.127,12],["NOW-12d",0.153,12],["NOW-11d",0.11,12],["NOW-10d",0.137,12],["NOW-9d",0.164,12],["NOW-8d",0.121,12],["NOW-7d",0.148,12],["NOW-6d",0.105,12],["NOW-5d",0.132,12],["NOW-4d",0.159,12],["NOW-3d",0.116,12],["NOW-2d",0.143,12],["NOW-1d",0.14,12]]}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"schema":1,"repo":"acme/mobile","default_branch":"main","visibility":"public","modules":{"ci":{"updated":"NOW-3h","file":"data.json"},"flow":{"updated":"NOW-3h","file":"flow.json"},"delivery":{"updated":"NOW-3h","file":"delivery.json"},"insights":{"updated":"NOW-3h","file":"insights.json"},"community":{"updated":"NOW-3h","file":"community.json"},"portal":{"updated":"NOW-6h","file":"portal.json"},"alerts":{"updated":"NOW-3h","file":"alerts.json"},"deps":{"updated":"NOW-3h","file":"deps.json"},"supply":{"updated":"NOW-1d","file":"supply.json"},"vulns":{"updated":"NOW-1d","file":"vulns.json"},"security":{"updated":"NOW-2d","file":"security.json"}},"pages":[],"facts":{"ci_first_try":0.83,"ci_flaky":2,"ci_broken":0,"open_prs":19,"stale_prs":2,"pickup_p75_h":11.4,"review_p75_h":30.2,"cycle_p75_h":48.1,"deployments":43,"change_failure_rate":0.14,"newcomers_waiting":4,"findings":3,"first_review_median_s":18360,"community_score":48,"vulns_open":1,"vulns_serious":0,"decisions":2},"links":{"repo":"https://github.com/acme/mobile","workflow":"stackvitals.yml","actions":"https://github.com/acme/mobile/actions/workflows/stackvitals.yml","settings_file":"https://github.com/acme/mobile/blob/main/.github/stackvitals.toml","edit_settings":"https://github.com/acme/mobile/edit/main/.github/stackvitals.toml","new_issue":"https://github.com/acme/mobile/issues/new"}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"schema":1,"generated":"NOW-3h","facts":{"first_answer_hours":31,"answered_1d_share":0.41,"newcomer_answered_share":0.33,"newcomer_return_rate":0.24},"score":{"score":48,"group":"Kotlin, 1k-10k stars","repos":318,"built_at":"NOW-6d","facts":[{"key":"first_answer_hours","name":"First answer to outside PRs","kind":"hours","you":31,"typical":52.7,"better_than":54},{"key":"newcomer_answered_share","name":"Newcomers answered within 2 weeks","kind":"share","you":0.33,"typical":0.71,"better_than":42}],"left_out":["newcomer_return_rate"]},"has_bench":true,"funnel":{"newcomers":46,"judged":38,"returned":9,"return_rate":0.24,"regulars":11,"maintainers":3},"answers":{"days":90,"issues":{"items":40,"km":{"median":31,"low":21.7,"high":46.5,"at_least":null,"answered":34,"waiting":3,"too_few":false,"closed_unanswered":1},"responders":4},"discussions":null,"left_out":{"accounts":1,"items":14}},"waiting":[{"kind":"pr","n":701,"days":15,"created":"NOW-15d"},{"kind":"issue","n":698,"days":6,"created":"NOW-6d"},{"kind":"issue","n":705,"days":4,"created":"NOW-4d"},{"kind":"issue","n":707,"days":2,"created":"NOW-2d"}],"waiting_total":4,"stars":{"weeks":[["NOW-80d",4],["NOW-73d",3],["NOW-66d",5],["NOW-59d",2],["NOW-52d",3],["NOW-45d",4],["NOW-38d",2],["NOW-31d",3],["NOW-24d",2],["NOW-17d",3],["NOW-10d",2],["NOW-3d",2]],"stars":310,"gained_12w":35,"growth_12w":0.127},"traffic":{"days":14,"since":"NOW-14d","views":[["NOW-14d",70,42],["NOW-13d",170,42],["NOW-12d",130,42],["NOW-11d",90,42],["NOW-10d",190,42],["NOW-9d",150,42],["NOW-8d",110,42],["NOW-7d",70,42],["NOW-6d",170,42],["NOW-5d",130,42],["NOW-4d",90,42],["NOW-3d",190,42],["NOW-2d",150,42],["NOW-1d",110,42]],"clones":[["NOW-14d",11,7],["NOW-13d",27,7],["NOW-12d",20,7],["NOW-11d",14,7],["NOW-10d",30,7],["NOW-9d",24,7],["NOW-8d",17,7],["NOW-7d",11,7],["NOW-6d",27,7],["NOW-5d",20,7],["NOW-4d",14,7],["NOW-3d",30,7],["NOW-2d",24,7],["NOW-1d",17,7]],"views_total":1960,"visitors_total":588,"clones_total":308,"referrers":[["github.com",610],["google.com",410],["news.ycombinator.com",120]],"referrers_day":"NOW-1d"},"quarters":[{"quarter":"2026 Q1","items":30,"median_hours":40.3,"within_1d":0.31,"newcomers":8},{"quarter":"2026 Q2","items":34,"median_hours":37.2,"within_1d":0.34,"newcomers":10},{"quarter":"2026 Q3","items":38,"median_hours":34.1,"within_1d":0.37,"newcomers":12},{"quarter":"2026 Q4","items":42,"median_hours":31,"within_1d":0.41,"newcomers":14}],"cohorts":{"months":[{"month":"MON-5","newcomers":4,"back_by_90d":1,"back_90_180d":1},{"month":"MON-4","newcomers":7,"back_by_90d":2,"back_90_180d":null},{"month":"MON-3","newcomers":5,"back_by_90d":1,"back_90_180d":null},{"month":"MON-2","newcomers":8,"back_by_90d":null,"back_90_180d":null},{"month":"MON-1","newcomers":6,"back_by_90d":null,"back_90_180d":null},{"month":"MON-0","newcomers":4,"back_by_90d":null,"back_90_180d":null}]},"dependency":{"days":180,"bus_factor":2,"top_share":0.46,"people":9,"merged":73,"peers":{"bus_factor":{"typical":3,"low":2,"high":5},"top_share":{"typical":0.3,"low":0.2,"high":0.45}}},"tenure":{"days":90,"newcomers":{"n":21,"median_h":49.6,"answered_1d_share":0.26},"regulars":{"n":40,"median_h":24.8,"answered_1d_share":0.46}},"orgs":{"factor":2,"unknown_share":0.38,"people":9,"merged":73,"orgs":[{"org":"acme","prs":35,"share":0.48},{"org":"contoso","prs":10,"share":0.14}]},"changes":[{"metric":"community.first_answer","label":"first answer to outside contributors","now":31,"base":34.1,"unit":"h","note":null,"changed":false,"direction":null,"detectable":1.8}],"context":{"governance":true,"security_policy":true,"code_of_conduct":"Contributor Covenant 2.1","funding":["GITHUB"],"discussions":true,"contributing":true,"response_policy":{"said":"within 2 working days","hours":48},"maintainers_listed":3,"code_owners":2,"stated":{"capacity":"Two part-time maintainers from the mobile team.","norms":"Bugs first; feature requests are reviewed monthly."}},"forum":{"km":{"median":14,"low":9.8,"high":21,"at_least":null,"answered":96,"waiting":6,"too_few":false,"closed_unanswered":1},"topics":118,"days":90,"anyone_answered":0.86,"solved_share":0.52},"chat":null,"lever":{"newcomers":48213,"repos":3912,"by_answer":[{"bucket":"within 1 day","newcomers":21004,"returned":0.312},{"bucket":"1-3 days","newcomers":9120,"returned":0.268},{"bucket":"3-14 days","newcomers":8210,"returned":0.214},{"bucket":"over 14 days","newcomers":4410,"returned":0.171},{"bucket":"no answer","newcomers":5469,"returned":0.094}],"by_outcome":[{"outcome":"merged","newcomers":30120,"returned":0.331},{"outcome":"closed unmerged","newcomers":12544,"returned":0.142},{"outcome":"still open","newcomers":5549,"returned":0.088}]}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"connectors":{"discourse":{"name":"Discourse","as_of":"NOW-5h","key_expires":null,"scope":null,"expiring":false,"error":null,"rows":{"topic":118},"complete":true}}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"schema":1,"window_days":30,"generated":"NOW-3h","runs":486,"rerun_share":0.1,"infra_events":3,"queue":{"median_s":8,"p95_s":41},"minutes":{"linux":4210,"windows":0,"macos":820,"other":0},"pushes":{"pushes":188,"median_s":1350,"p90_s":2138,"first_try_share":0.83,"first_try_range":[0.8,0.86],"median_range_s":[1238,1485],"not_first_try":[["7c41e20","main",[4810000]],["7c70fd9","main",[4810037]],["7ca0192","main",[4810074]],["7ccf34b","feature/x-3",[4810111]],["7cfe504","main",[4810148]],["7d2d6bd","main",[4810185]],["7d5c876","main",[4810222]],["7d8ba2f","feature/x-7",[4810259]],["7dbabe8","main",[4810296]],["7de9da1","main",[4810333]],["7e18f5a","main",[4810370]],["7e48113","feature/x-11",[4810407]],["7e772cc","main",[4810444]],["7ea6485","main",[4810481]],["7ed563e","main",[4810518]]],"not_first_try_total":32},"weekly":[{"week":"NOW-80d","job_runs":150,"flakes":6,"flake_share":4,"push_median_s":1206,"first_try_share":0.81},{"week":"NOW-73d","job_runs":148,"flakes":6,"flake_share":4,"push_median_s":1236,"first_try_share":0.82},{"week":"NOW-66d","job_runs":152,"flakes":8,"flake_share":5,"push_median_s":1260,"first_try_share":0.8},{"week":"NOW-59d","job_runs":140,"flakes":6,"flake_share":4,"push_median_s":1284,"first_try_share":0.83},{"week":"NOW-52d","job_runs":138,"flakes":4,"flake_share":3,"push_median_s":1272,"first_try_share":0.84},{"week":"NOW-45d","job_runs":135,"flakes":7,"flake_share":5,"push_median_s":1314,"first_try_share":0.82},{"week":"NOW-38d","job_runs":130,"flakes":5,"flake_share":4,"push_median_s":1320,"first_try_share":0.83},{"week":"NOW-31d","job_runs":128,"flakes":6,"flake_share":5,"push_median_s":1296,"first_try_share":0.81},{"week":"NOW-24d","job_runs":126,"flakes":5,"flake_share":4,"push_median_s":1338,"first_try_share":0.82},{"week":"NOW-17d","job_runs":122,"flakes":5,"flake_share":4,"push_median_s":1308,"first_try_share":0.84},{"week":"NOW-10d","job_runs":120,"flakes":6,"flake_share":5,"push_median_s":1326,"first_try_share":0.82},{"week":"NOW-3d","job_runs":118,"flakes":5,"flake_share":4,"push_median_s":1350,"first_try_share":0.83}],"changes":[{"metric":"ci.first_try_green","label":"pushes green on the first try","now":0.83,"base":0.81,"unit":"share","note":null,"changed":false,"direction":"up","detectable":0.05},{"metric":"ci.flaky_runs","label":"flaky job runs","now":5,"base":6,"unit":"count","note":null,"changed":false,"direction":null,"detectable":2.1}],"tests":[{"id":"LoginViewModelTest.emitsError","suite":"test-results","workflow":".github/workflows/ci.yml","message":"kotlinx.coroutines.TimeoutCancellationException","owners":["@acme/core"],"runs":60,"failures":3,"flake_events":3,"flake_rate":0.05,"rate_low":0.01,"rate_high":0.1,"state":"flaky","since":"NOW-13d","last_flake":"NOW-1d","monitors":["pass_on_retry"],"labels":["timing"],"retry_minutes":144,"prs_affected":[1800,1807,1814],"evidence":[{"run":11800000,"att":2,"kind":"retry"},{"run":11800911,"att":2,"kind":"flip"},{"run":11801822,"att":2,"kind":"retry"}],"decision":{"verb":"mute","kind":"test","id":"LoginViewModelTest.emitsError","by":"ines","until":"NOW+5d","reason":"coroutine test rule lands next week","at":"NOW-9d"},"flake":"timing","began":{"first":"NOW-13d","runs_before":61,"runs_after":3,"flakes":3,"p":0.0012,"clear":true,"landed":["5e1a9c3d41c2e09b7","5e30784d41c2e09b7"]},"muted_until":"NOW+5d","variants":{"api 34":2,"api 30":1}},{"id":"mobile/smoke::boots","suite":"test-results","workflow":".github/workflows/ci.yml","runs":96,"failures":0,"flake_events":0,"flake_rate":0,"rate_low":0,"rate_high":0.03,"state":"ok"}],"jobs":[{"workflow":".github/workflows/connectedAndroidTest.yml","job":"api-30","top_step":"Run tests","median_s":1134,"p95_s":1588,"trend":[["NOW-10d",1021],["NOW-9d",1111],["NOW-8d",1202],["NOW-7d",1066],["NOW-6d",1157],["NOW-5d",1021],["NOW-4d",1111],["NOW-3d",1202],["NOW-2d",1066],["NOW-1d",1157]],"runs":60,"failures":7,"flake_events":7,"flake_rate":0.1167,"rate_low":0.0767,"rate_high":0.1667,"state":"flaky","since":"NOW-52d","last_flake":"NOW-1d","monitors":["pass_on_retry"],"labels":["timing"],"retry_minutes":528,"prs_affected":[1800,1807,1814,1821,1828,1835],"evidence":[{"run":11800000,"att":2,"kind":"retry"},{"run":11800911,"att":2,"kind":"flip"},{"run":11801822,"att":2,"kind":"retry"},{"run":11802733,"att":2,"kind":"flip"}],"decision":null,"flake":"infrastructure","began":{"first":"NOW-52d","runs_before":4,"runs_after":56,"flakes":7,"p":0.41,"clear":false,"landed":[]},"flake_steps":["Run tests","Start services"],"variants":{}},{"workflow":".github/workflows/ci.yml","job":"assembleRelease","runs":120,"failures":0,"flake_events":0,"flake_rate":0,"rate_low":0,"rate_high":0.03,"state":"ok","median_s":552,"p95_s":736,"retry_minutes":0,"trend":[["NOW-10d",508],["NOW-9d",563],["NOW-8d",545],["NOW-7d",526],["NOW-6d",508],["NOW-5d",563],["NOW-4d",545],["NOW-3d",526],["NOW-2d",508],["NOW-1d",563]]},{"workflow":".github/workflows/ci.yml","job":"detekt","runs":120,"failures":0,"flake_events":0,"flake_rate":0,"rate_low":0,"rate_high":0.03,"state":"ok","median_s":168,"p95_s":224,"retry_minutes":0,"trend":[["NOW-10d",155],["NOW-9d",171],["NOW-8d",166],["NOW-7d",160],["NOW-6d",155],["NOW-5d",171],["NOW-4d",166],["NOW-3d",160],["NOW-2d",155],["NOW-1d",171]]},{"workflow":".github/workflows/ci.yml","job":"unit","runs":120,"failures":0,"flake_events":0,"flake_rate":0,"rate_low":0,"rate_high":0.03,"state":"ok","median_s":150,"p95_s":200,"retry_minutes":0,"trend":[["NOW-10d",138],["NOW-9d",153],["NOW-8d",148],["NOW-7d",143],["NOW-6d",138],["NOW-5d",153],["NOW-4d",148],["NOW-3d",143],["NOW-2d",138],["NOW-1d",153]]},{"workflow":".github/workflows/ci.yml","job":"ktlint","runs":120,"failures":0,"flake_events":0,"flake_rate":0,"rate_low":0,"rate_high":0.03,"state":"ok","median_s":42,"p95_s":56,"retry_minutes":0,"trend":[["NOW-10d",39],["NOW-9d",43],["NOW-8d",41],["NOW-7d",40],["NOW-6d",39],["NOW-5d",43],["NOW-4d",41],["NOW-3d",40],["NOW-2d",39],["NOW-1d",43]]}],"failure_groups":[{"id":"a1","type":"TimeoutError","where":"connectedAndroidTest / api-30","message":"job exceeded its time limit","failures":7,"tests":2,"runs":7,"first":"NOW-52d","last":"NOW-1d","prompt":"Investigate a recurring CI failure in acme/mobile: connectedAndroidTest / api-30 fails with a timeout, then passes on a re-run.","top_tests":["LoginViewModelTest.emitsError"]}],"slow_tests":[{"id":"LoginViewModelTest.emitsError","median_ms":2400,"p95_ms":6100,"samples":60,"slower":{"pct":18},"trend":[["NOW-8d",2000],["NOW-7d",2060],["NOW-6d",2120],["NOW-5d",2180],["NOW-4d",2240],["NOW-3d",2300],["NOW-2d",2360],["NOW-1d",2420]]}],"new_tests":[{"id":"mobile/refunds::partial","suite":"test-results","first":"NOW-5d","runs":14,"failures":0,"flake_events":0,"state":"ok"}],"skipped_tests":[{"id":"mobile/legacy::export_csv","suite":"test-results","suites":1,"since":"NOW-40d","new":false,"days":40}],"coverage":{"latest":{"pct":0.74,"covered":7410,"lines":10014,"at":"NOW-3h"},"change":0.012,"trend":[["NOW-30d",0.728],["NOW-29d",0.7314],["NOW-28d",0.7298],["NOW-27d",0.7332],["NOW-26d",0.7316],["NOW-25d",0.73],["NOW-24d",0.7334],["NOW-23d",0.7318],["NOW-22d",0.7352],["NOW-21d",0.7336],["NOW-20d",0.732],["NOW-19d",0.7354],["NOW-18d",0.7338],["NOW-17d",0.7372],["NOW-16d",0.7356],["NOW-15d",0.734],["NOW-14d",0.7374],["NOW-13d",0.7358],["NOW-12d",0.7392],["NOW-11d",0.7376],["NOW-10d",0.736],["NOW-9d",0.7394],["NOW-8d",0.7378],["NOW-7d",0.7412],["NOW-6d",0.7396],["NOW-5d",0.738],["NOW-4d",0.7414],["NOW-3d",0.7398],["NOW-2d",0.7432],["NOW-1d",0.7416]],"prs":[{"pr":712,"pct":0.92,"covered":46,"lines":50,"missed":{"internal/refund/idem.go":[41,42,77,78]},"at":"NOW-6h"},{"pr":701,"pct":0,"covered":0,"lines":0,"missed":{},"at":"NOW-2d"}]},"has_test_reports":true,"benchmark":null,"test_outages":0,"pr_edit_workflows":[],"cost":{"days":30,"private":false,"minutes":5030,"usd":0,"private_usd":99.28,"rerun_minutes":253,"rerun_usd":0,"self_hosted_minutes":0,"by_runner":{"linux":4210,"macos":820},"workflows":[{"workflow":"CI","minutes":3452,"usd":0},{"workflow":"StackVitals","minutes":168,"usd":0},{"workflow":"Release","minutes":1409,"usd":0}],"jobs":[{"workflow":"CI","job":"api-30","minutes":1134,"usd":0},{"workflow":"CI","job":"assembleRelease","minutes":1104,"usd":0},{"workflow":"CI","job":"detekt","minutes":336,"usd":0},{"workflow":"CI","job":"unit","minutes":300,"usd":0},{"workflow":"CI","job":"ktlint","minutes":84,"usd":0}],"prices_read":"2026-10-29","tests":[{"id":"LoginViewModelTest.emitsError","suite":"test-results","minutes":28.5,"usd":0,"flakes":3,"prs":3}]},"impact":{"prs":64,"failures":0,"caught":0,"recall":null,"skipped_share":null}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"state":{"test:LoginViewModelTest.emitsError":{"verb":"mute","kind":"test","id":"LoginViewModelTest.emitsError","by":"ines","until":"NOW+5d","reason":"coroutine test rule lands next week","at":"NOW-9d"},"finding:bump_red":{"verb":"snooze","kind":"finding","id":"bump_red","by":"tomasz","until":"NOW+9d","reason":"release week","at":"NOW-5d"}},"log":[{"verb":"mute","kind":"test","id":"LoginViewModelTest.emitsError","by":"ines","at":"NOW-9d","until":"NOW+5d","reason":"coroutine test rule lands next week","source":"comment"},{"verb":"snooze","kind":"finding","id":"bump_red","by":"tomasz","at":"NOW-5d","until":"NOW+9d","reason":"release week","source":"app"}]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"schema":1,"generated":"NOW-3h","window_days":90,"since":"NOW-90d","prs":30,"agreements":{"rules":{"review_within_hours":24,"max_pr_lines":400},"labels":{"review_within_hours":"First review within 24 h","max_pr_lines":"PRs under 400 lines"},"window_days":14,"merged":5,"counts":{"review_within_hours":3,"max_pr_lines":2},"exceptions":[{"pr":712,"rule":"review_within_hours","value":192,"limit":24,"open":true,"at":"NOW-3h"},{"pr":672,"rule":"review_within_hours","value":1056,"limit":24,"open":true,"at":"NOW-3h"},{"pr":669,"rule":"review_within_hours","value":31.5,"limit":24,"open":false,"at":"NOW-6d"},{"pr":705,"rule":"max_pr_lines","value":812,"limit":400,"open":false,"at":"NOW-4d"},{"pr":701,"rule":"max_pr_lines","value":455,"limit":400,"open":false,"at":"NOW-10d"}],"weekly":{"review_within_hours":[["NOW-80d",0],["NOW-73d",1],["NOW-66d",1],["NOW-59d",2],["NOW-52d",1],["NOW-45d",0],["NOW-38d",1],["NOW-31d",1],["NOW-24d",0],["NOW-17d",1],["NOW-10d",1],["NOW-3d",0]],"max_pr_lines":[["NOW-80d",0],["NOW-73d",1],["NOW-66d",0],["NOW-59d",1],["NOW-52d",1],["NOW-45d",0],["NOW-38d",1],["NOW-31d",1],["NOW-24d",0],["NOW-17d",1],["NOW-10d",0],["NOW-3d",0]]}},"deploy_source":"releases","deploy_confidence":"high","incident_source":"GitHub issues, reverts and hotfixes","deploy_check":{"source":"releases","deployments":43,"considered":[{"source":"deployments api","found":0,"used":false},{"source":"releases","found":43,"used":true},{"source":"deploy workflows","found":0,"used":false}],"order_reason":null,"workflows":[{"name":"CI","path":".github/workflows/ci.yml","counted":0,"skipped":0,"kind":null,"why":"its name doesn't match deploy_workflow","used":false},{"name":"StackVitals","path":".github/workflows/stackvitals.yml","counted":0,"skipped":0,"kind":null,"why":"its name doesn't match deploy_workflow","used":false}],"settings":{"source":"auto","deploy_workflow":"(?i)deploy|release|publish","production":["production","prod","live"]},"releases":{"published":43,"prereleases_skipped":4}},"deployments":[{"id":"dep-0","name":"v3.18.0","sha":"9a3c1f0","finished":"NOW-71d"},{"id":"dep-1","name":"v3.19.0","sha":"9a574c3","finished":"NOW-64d"},{"id":"dep-2","name":"v3.20.0","sha":"9a72796","finished":"NOW-57d"},{"id":"dep-3","name":"v3.21.0","sha":"9a8da69","finished":"NOW-50d"},{"id":"dep-4","name":"v3.22.0","sha":"9aa8d3c","finished":"NOW-43d"},{"id":"dep-5","name":"v3.23.0","sha":"9ac400f","finished":"NOW-36d"},{"id":"dep-6","name":"v3.24.0","sha":"9adf2e2","finished":"NOW-29d"},{"id":"dep-7","name":"v3.25.0","sha":"9afa5b5","finished":"NOW-22d"},{"id":"dep-8","name":"v3.26.0","sha":"9b15888","finished":"NOW-15d"},{"id":"dep-9","name":"v3.27.0","sha":"9b30b5b","finished":"NOW-8d"}],"phases":{"coding":{"n":30,"enough":true,"p50_h":15.2,"p75_h":38,"low_h":32.3,"high_h":45.6,"linearb_band":"fair"},"pickup":{"n":26,"enough":true,"p50_h":5.1,"p75_h":11.4,"low_h":9.7,"high_h":13.7,"linearb_band":"fair"},"review":{"n":23,"enough":true,"p50_h":15.1,"p75_h":30.2,"low_h":25.7,"high_h":36.2,"linearb_band":"fair"},"approve":{"n":23,"enough":true,"p50_h":9.1,"p75_h":21.1,"low_h":17.9,"high_h":25.3,"linearb_band":"fair"},"merge":{"n":26,"enough":true,"p50_h":3.3,"p75_h":6.5,"low_h":5.5,"high_h":7.8,"linearb_band":"fair"},"deploy":{"n":24,"enough":true,"p50_h":26,"p75_h":52,"low_h":44.2,"high_h":62.4,"linearb_band":"fair"},"cycle":{"n":24,"enough":true,"p50_h":62.1,"p75_h":138.1,"low_h":117.4,"high_h":165.7,"linearb_band":"fair"},"cycle_to_merge":{"n":30,"enough":true,"p50_h":23.1,"p75_h":48.1,"low_h":40.9,"high_h":57.7,"linearb_band":"fair"}},"outliers":{"over_60_days":1,"over_p98":2},"dora":{"report":"2023","deployments":43,"deployment_days":24,"deployment_days_per_week":1.8,"deployment_days_per_month":8,"frequency_tier":"medium","monthly":[{"month":"MON-5","deployments":24},{"month":"MON-4","deployments":22},{"month":"MON-3","deployments":19},{"month":"MON-2","deployments":17},{"month":"MON-1","deployments":14},{"month":"MON-0","deployments":12}],"lead_time_hours":118,"lead_time_n":24,"lead_time_tier":"medium","lead_time_range_hours":[100.3,141.6],"lead_time_tier_span":null,"change_failure_rate":0.14,"failed_deployments":6,"cfr_tier":"medium","cfr_range":[0.11,0.18],"cfr_tier_span":null,"cfr_fix_chain":null,"linkage":{"reverts":3,"fix_chain_found":2,"disagree":1,"never_shipped":0},"recovery_hours":21.5,"recovery_n":6,"recovery_tier":"medium","recovery_range_hours":[15.1,32.3],"recovery_tier_span":null,"evidence":{"deployments":[["9a3c1f0","NOW-90d"],["9a574c3","NOW-88d"],["9a72796","NOW-86d"],["9a8da69","NOW-84d"],["9aa8d3c","NOW-82d"],["9ac400f","NOW-80d"],["9adf2e2","NOW-78d"],["9afa5b5","NOW-76d"],["9b15888","NOW-74d"],["9b30b5b","NOW-72d"],["9b4be2e","NOW-70d"],["9b67101","NOW-67d"],["9b823d4","NOW-65d"],["9b9d6a7","NOW-63d"],["9bb897a","NOW-61d"],["9bd3c4d","NOW-59d"],["9beef20","NOW-57d"],["9c0a1f3","NOW-55d"],["9c254c6","NOW-53d"],["9c40799","NOW-51d"],["9c5ba6c","NOW-49d"],["9c76d3f","NOW-47d"],["9c92012","NOW-44d"],["9cad2e5","NOW-42d"],["9cc85b8","NOW-40d"],["9ce388b","NOW-38d"],["9cfeb5e","NOW-36d"],["9d19e31","NOW-34d"],["9d35104","NOW-32d"],["9d503d7","NOW-30d"],["9d6b6aa","NOW-28d"],["9d8697d","NOW-26d"],["9da1c50","NOW-24d"],["9dbcf23","NOW-21d"],["9dd81f6","NOW-19d"],["9df34c9","NOW-17d"],["9e0e79c","NOW-15d"],["9e29a6f","NOW-13d"],["9e44d42","NOW-11d"],["9e60015","NOW-9d"],["9e7b2e8","NOW-7d"],["9e965bb","NOW-5d"],["9eb188e","NOW-3d"]],"lead_time":[[692,"9a3c1f0",15576],[689,"9a574c3",14514],[686,"9a72796",13452],[683,"9a8da69",12390],[680,"9aa8d3c",11328],[677,"9ac400f",10266],[674,"9adf2e2",9204],[671,"9afa5b5",8142],[668,"9b15888",7080],[665,"9b30b5b",6018],[662,"9a3c1f0",4956],[659,"9a574c3",3894]],"lead_time_total":24,"failed":[["9a3c1f0","issue",2000],["9a8da69","issue",2013],["9adf2e2","revert",2026],["9b30b5b","issue",2039],["9a72796","issue",2052],["9ac400f","revert",2065]],"recovery":[["9a3c1f0","issue",2000,648],["9a8da69","issue",2013,1548],["9adf2e2","revert",2026,1164],["9b30b5b","issue",2039,774],["9a72796","issue",2052,1680],["9ac400f","revert",2065,1290]]},"rework_rate":0.093,"rework_deployments":4,"deployments_n":43,"rework_range":[0.056,0.149],"deployment_days_per_six_months":48,"lead_time_working_hours":49.6},"changes":[{"metric":"delivery.pickup","label":"pickup","now":11.4,"base":10.4,"unit":"h","note":null,"changed":false,"direction":"up","detectable":1.4,"n_now":9,"n_base":41},{"metric":"delivery.deployments","label":"deployments","now":3,"base":3,"unit":"count","note":null,"changed":false,"direction":null,"detectable":1.6,"n_now":null,"n_base":null},{"metric":"delivery.change_failure","label":"deployments that failed","now":0.14,"base":0.14,"unit":"share","note":null,"changed":false,"direction":null,"detectable":0.06,"n_now":9,"n_base":41}],"incidents":[{"number":2000,"source":"issue","created":"NOW-2d","hours_to_restore":10.8},{"number":2013,"source":"issue","created":"NOW-85d","hours_to_restore":25.8},{"number":2026,"source":"pull","created":"NOW-80d","hours_to_restore":19.4},{"number":2039,"source":"issue","created":"NOW-75d","hours_to_restore":12.9},{"number":2052,"source":"issue","created":"NOW-70d","hours_to_restore":28},{"number":2065,"source":"pull","created":"NOW-65d","hours_to_restore":21.5}],"stuck":{"hanging_review":[{"pr":712,"since":"NOW-8d"},{"pr":672,"since":"NOW-44d"}],"long_lived":[{"pr":688,"since":"NOW-34d","why":"changes requested, no reply"},{"pr":672,"since":"NOW-44d","why":"review asked, not started"}],"high_interaction":[],"red_and_idle":[{"pr":709,"since":"NOW-12d","why":"checks failing"}]},"by_team":{"android":{"n":30,"pickup":{"enough":true,"p75_h":10.3},"cycle_to_merge":{"enough":true,"p75_h":45.7},"dora":{"deployment_days_per_week":1.6,"lead_time_hours":118,"change_failure_rate":0.14,"recovery_hours":21.5}}},"by_owner":{},"by_service":null,"tracker":null,"investment":{"since":"MON-5","months":[{"month":"MON-5","n":16,"counts":{"feature":7,"fix":4,"maintenance":3,"security":1,"docs":1,"other":0}},{"month":"MON-4","n":15,"counts":{"feature":6,"fix":4,"maintenance":2,"security":1,"docs":1,"other":1}},{"month":"MON-3","n":12,"counts":{"feature":5,"fix":3,"maintenance":2,"security":1,"docs":1,"other":0}},{"month":"MON-2","n":12,"counts":{"feature":5,"fix":3,"maintenance":2,"security":1,"docs":1,"other":0}},{"month":"MON-1","n":10,"counts":{"feature":4,"fix":2,"maintenance":2,"security":1,"docs":1,"other":0}},{"month":"MON-0","n":8,"counts":{"feature":3,"fix":2,"maintenance":1,"security":0,"docs":0,"other":2}}],"n":73,"counts":{"feature":30,"fix":18,"maintenance":12,"security":5,"docs":5,"other":3},"shares":{"feature":0.411,"fix":0.247,"maintenance":0.164,"security":0.068,"docs":0.068,"other":0.041},"decided_by":{"label":28,"title":18,"only":6,"other":3},"bots":9},"epics":null,"ai":{"agent_prs":{"n":3,"merged":1,"merged_share":0.33},"assisted_prs":{"n":9,"share":0.12,"tools":{"copilot":5,"claude":4},"pickup_p75_h":12.5,"others_pickup_p75_h":11.4,"size_p75":240,"others_size_p75":190},"ai_reviewed_prs":{"n":15},"by_agent":{},"review_load":{"weeks":[{"week_end":"NOW-35d","opened":{"agent":4,"person":14},"merged":{"agent":3,"person":13}},{"week_end":"NOW-28d","opened":{"agent":6,"person":15},"merged":{"agent":4,"person":14}},{"week_end":"NOW-21d","opened":{"agent":8,"person":16},"merged":{"agent":5,"person":13}},{"week_end":"NOW-14d","opened":{"agent":10,"person":14},"merged":{"agent":6,"person":14}},{"week_end":"NOW-7d","opened":{"agent":12,"person":15},"merged":{"agent":7,"person":13}},{"week_end":"NOW-0d","opened":{"agent":14,"person":16},"merged":{"agent":8,"person":14}}],"waiting":{"agent":9,"person":4},"reviewers":{"n":7,"max_open":6,"agent_share":0.58}},"expected_review":[{"pr":712,"kind":"agent","similar":14,"p50_h":24.2,"p75_h":48.3},{"pr":709,"kind":"person","similar":15,"p50_h":28.7,"p75_h":54.4},{"pr":701,"kind":"person","similar":16,"p50_h":33.2,"p75_h":60.4},{"pr":688,"kind":"agent","similar":17,"p50_h":37.8,"p75_h":66.4}],"outcomes":{"window":{"agent":{"n":1,"pickup_p75_h":16,"review_p75_h":30.2,"size_p75":120,"ci_n":1,"ci_failed_share":0.22,"flaky_share":0.05,"reverted_share":0.02,"failed_deploy_share":0.14,"merge_rate":0.9,"merge_rate_n":5},"assisted":{"n":9,"pickup_p75_h":12.5,"review_p75_h":30.2,"size_p75":240,"ci_n":8,"ci_failed_share":0.18,"flaky_share":0.06,"reverted_share":0.02,"failed_deploy_share":0.14,"merge_rate":0.9,"merge_rate_n":13},"others":{"n":63,"pickup_p75_h":11.4,"review_p75_h":30.2,"size_p75":190,"ci_n":57,"ci_failed_share":0.15,"flaky_share":0.05,"reverted_share":0.01,"failed_deploy_share":0.14,"merge_rate":0.9,"merge_rate_n":67}},"matched":{"assisted":{"ci_failed":{"matched":7,"of":9,"matched_share":0.8,"gap":0.03,"low":-0.03,"high":0.09,"detectable":0.08,"verdict":"no measurable difference"},"reverted":{"matched":7,"of":9,"matched_share":0.8,"gap":0,"low":-0.06,"high":0.06,"detectable":0.08,"verdict":"no measurable difference"},"merged":{"matched":7,"of":9,"matched_share":0.8,"gap":-0.01,"low":-0.07,"high":0.05,"detectable":0.08,"verdict":"no measurable difference"}},"agent":{"ci_failed":{"matched":1,"of":1,"matched_share":0.8,"gap":0.07,"low":0.01,"high":0.13,"detectable":0.08,"verdict":"too few"},"merged_by_others":{"matched":1,"of":1,"matched_share":0.8,"gap":0.12,"low":0.06,"high":0.18,"detectable":0.08,"verdict":"too few"}}},"coverage":{"people_prs":72,"marked":9,"marked_share":0.12,"authors":14,"authors_marking":6},"monthly":[{"month":"MON-5","agent":{"n":0},"assisted":{"n":2},"others":{"n":14}},{"month":"MON-4","agent":{"n":0},"assisted":{"n":2},"others":{"n":13}},{"month":"MON-3","agent":{"n":0},"assisted":{"n":1},"others":{"n":11}},{"month":"MON-2","agent":{"n":0},"assisted":{"n":1},"others":{"n":11}},{"month":"MON-1","agent":{"n":0},"assisted":{"n":1},"others":{"n":9}},{"month":"MON-0","agent":{"n":0},"assisted":{"n":1},"others":{"n":7}}]},"copilot":null,"baseline":null},"merge_queue":null,"excluded":0,"peers":null,"dora_rows":{"deployments":[["NOW-364d",false,null],["NOW-357d",true,21.5],["NOW-350d",false,null],["NOW-343d",false,null],["NOW-336d",false,null],["NOW-329d",false,null],["NOW-322d",false,null],["NOW-315d",false,null],["NOW-308d",false,null],["NOW-301d",false,null],["NOW-294d",false,null],["NOW-287d",false,null],["NOW-280d",false,null],["NOW-273d",false,null],["NOW-266d",false,null],["NOW-259d",false,null],["NOW-252d",false,null],["NOW-245d",false,null],["NOW-238d",true,25.8],["NOW-231d",false,null],["NOW-224d",false,null],["NOW-217d",false,null],["NOW-210d",false,null],["NOW-203d",false,null],["NOW-196d",false,null],["NOW-189d",false,null],["NOW-182d",false,null],["NOW-175d",false,null],["NOW-168d",false,null],["NOW-161d",false,null],["NOW-154d",false,null],["NOW-147d",false,null],["NOW-140d",false,null],["NOW-133d",false,null],["NOW-126d",false,null],["NOW-119d",true,30.1],["NOW-112d",false,null],["NOW-105d",false,null],["NOW-98d",false,null],["NOW-91d",false,null],["NOW-84d",false,null],["NOW-77d",false,null],["NOW-70d",false,null],["NOW-63d",false,null],["NOW-56d",false,null],["NOW-49d",false,null],["NOW-42d",false,null],["NOW-35d",false,null],["NOW-28d",false,null],["NOW-21d",false,null],["NOW-14d",false,null],["NOW-7d",false,null]],"prs":[["NOW-364d",62],["NOW-364d",165.2],["NOW-357d",121],["NOW-357d",62],["NOW-350d",180],["NOW-350d",121],["NOW-343d",76.7],["NOW-343d",180],["NOW-336d",135.7],["NOW-336d",76.7],["NOW-329d",194.7],["NOW-329d",135.7],["NOW-322d",91.5],["NOW-322d",194.7],["NOW-315d",150.5],["NOW-315d",91.5],["NOW-308d",47.2],["NOW-308d",150.5],["NOW-301d",106.2],["NOW-301d",47.2],["NOW-294d",165.2],["NOW-294d",106.2],["NOW-287d",62],["NOW-287d",165.2],["NOW-280d",121],["NOW-280d",62],["NOW-273d",180],["NOW-273d",121],["NOW-266d",76.7],["NOW-266d",180],["NOW-259d",135.7],["NOW-259d",76.7],["NOW-252d",194.7],["NOW-252d",135.7],["NOW-245d",91.5],["NOW-245d",194.7],["NOW-238d",150.5],["NOW-238d",91.5],["NOW-231d",47.2],["NOW-231d",150.5],["NOW-224d",106.2],["NOW-224d",47.2],["NOW-217d",165.2],["NOW-217d",106.2],["NOW-210d",62],["NOW-210d",165.2],["NOW-203d",121],["NOW-203d",62],["NOW-196d",180],["NOW-196d",121],["NOW-189d",76.7],["NOW-189d",180],["NOW-182d",135.7],["NOW-182d",76.7],["NOW-175d",194.7],["NOW-175d",135.7],["NOW-168d",91.5],["NOW-168d",194.7],["NOW-161d",150.5],["NOW-161d",91.5],["NOW-154d",47.2],["NOW-154d",150.5],["NOW-147d",106.2],["NOW-147d",47.2],["NOW-140d",165.2],["NOW-140d",106.2],["NOW-133d",62],["NOW-133d",165.2],["NOW-126d",121],["NOW-126d",62],["NOW-119d",180],["NOW-119d",121],["NOW-112d",76.7],["NOW-112d",180],["NOW-105d",135.7],["NOW-105d",76.7],["NOW-98d",194.7],["NOW-98d",135.7],["NOW-91d",91.5],["NOW-91d",194.7],["NOW-84d",150.5],["NOW-84d",91.5],["NOW-77d",47.2],["NOW-77d",150.5],["NOW-70d",106.2],["NOW-70d",47.2],["NOW-63d",165.2],["NOW-63d",106.2],["NOW-56d",62],["NOW-56d",165.2],["NOW-49d",121],["NOW-49d",62],["NOW-42d",180],["NOW-42d",121],["NOW-35d",76.7],["NOW-35d",180],["NOW-28d",135.7],["NOW-28d",76.7],["NOW-21d",194.7],["NOW-21d",135.7],["NOW-14d",91.5],["NOW-14d",194.7],["NOW-7d",150.5],["NOW-7d",91.5]]},"dora_weeks":[{"week":"NOW-87d","deployments":1,"lead_time_hours":94.4,"change_failure_rate":0,"recovery_hours":null},{"week":"NOW-80d","deployments":5,"lead_time_hours":119.7,"change_failure_rate":0.224,"recovery_hours":25.8},{"week":"NOW-73d","deployments":3,"lead_time_hours":145,"change_failure_rate":0.14,"recovery_hours":null},{"week":"NOW-66d","deployments":1,"lead_time_hours":111.3,"change_failure_rate":0,"recovery_hours":null},{"week":"NOW-59d","deployments":6,"lead_time_hours":136.5,"change_failure_rate":0.14,"recovery_hours":null},{"week":"NOW-52d","deployments":4,"lead_time_hours":102.8,"change_failure_rate":0.224,"recovery_hours":25.8},{"week":"NOW-45d","deployments":2,"lead_time_hours":128.1,"change_failure_rate":0,"recovery_hours":null},{"week":"NOW-38d","deployments":1,"lead_time_hours":94.4,"change_failure_rate":0.14,"recovery_hours":null},{"week":"NOW-31d","deployments":5,"lead_time_hours":119.7,"change_failure_rate":0.14,"recovery_hours":null},{"week":"NOW-24d","deployments":3,"lead_time_hours":145,"change_failure_rate":0.224,"recovery_hours":25.8},{"week":"NOW-17d","deployments":1,"lead_time_hours":111.3,"change_failure_rate":0.14,"recovery_hours":null},{"week":"NOW-10d","deployments":6,"lead_time_hours":136.5,"change_failure_rate":0.14,"recovery_hours":null},{"week":"NOW-3d","deployments":4,"lead_time_hours":102.8,"change_failure_rate":0,"recovery_hours":null}],"deploy_attempts":null,"deployments_unreadable":false,"deploy_names":[],"deployment_list":[{"id":"dep-0","name":"v3.27.0","sha":"9e7b2e8","finished":"NOW-1d","prs":[672,671,670,669,668,667],"authors":4,"lead_hours":70.8,"incidents":[]},{"id":"dep-1","name":"v3.26.0","sha":"9e60015","finished":"NOW-8d","prs":[669,668,667,666,665,664],"authors":4,"lead_hours":100.3,"incidents":[]},{"id":"dep-2","name":"v3.25.0","sha":"9e44d42","finished":"NOW-15d","prs":[666,665,664,663,662,661],"authors":4,"lead_hours":129.8,"incidents":[2026]},{"id":"dep-3","name":"v3.24.0","sha":"9e29a6f","finished":"NOW-22d","prs":[663,662,661,660,659,658],"authors":4,"lead_hours":159.3,"incidents":[]},{"id":"dep-4","name":"v3.23.0","sha":"9e0e79c","finished":"NOW-29d","prs":[660,659,658,657,656,655],"authors":4,"lead_hours":70.8,"incidents":[]},{"id":"dep-5","name":"v3.22.0","sha":"9df34c9","finished":"NOW-36d","prs":[657,656,655,654,653,652],"authors":4,"lead_hours":100.3,"incidents":[]},{"id":"dep-6","name":"v3.21.0","sha":"9dd81f6","finished":"NOW-43d","prs":[654,653,652,651,650,649],"authors":4,"lead_hours":129.8,"incidents":[]},{"id":"dep-7","name":"v3.20.0","sha":"9dbcf23","finished":"NOW-50d","prs":[651,650,649,648,647,646],"authors":4,"lead_hours":159.3,"incidents":[]},{"id":"dep-8","name":"v3.19.0","sha":"9da1c50","finished":"NOW-57d","prs":[648,647,646,645,644,643],"authors":4,"lead_hours":70.8,"incidents":[2026]},{"id":"dep-9","name":"v3.18.0","sha":"9d8697d","finished":"NOW-64d","prs":[645,644,643,642,641,640],"authors":4,"lead_hours":100.3,"incidents":[]},{"id":"dep-10","name":"v3.17.0","sha":"9d6b6aa","finished":"NOW-71d","prs":[642,641,640,639,638,637],"authors":4,"lead_hours":129.8,"incidents":[]},{"id":"dep-11","name":"v3.16.0","sha":"9d503d7","finished":"NOW-78d","prs":[639,638,637,636,635,634],"authors":4,"lead_hours":159.3,"incidents":[]},{"id":"dep-12","name":"v3.15.0","sha":"9d35104","finished":"NOW-85d","prs":[636,635,634,633,632,631],"authors":4,"lead_hours":70.8,"incidents":[]},{"id":"dep-13","name":"v3.14.0","sha":"9d19e31","finished":"NOW-92d","prs":[633,632,631,630,629,628],"authors":4,"lead_hours":100.3,"incidents":[]},{"id":"dep-14","name":"v3.13.0","sha":"9cfeb5e","finished":"NOW-99d","prs":[630,629,628,627,626,625],"authors":4,"lead_hours":129.8,"incidents":[2026]},{"id":"dep-15","name":"v3.12.0","sha":"9ce388b","finished":"NOW-106d","prs":[627,626,625,624,623,622],"authors":4,"lead_hours":159.3,"incidents":[]},{"id":"dep-16","name":"v3.11.0","sha":"9cc85b8","finished":"NOW-113d","prs":[624,623,622,621,620,619],"authors":4,"lead_hours":70.8,"incidents":[]},{"id":"dep-17","name":"v3.10.0","sha":"9cad2e5","finished":"NOW-120d","prs":[621,620,619,618,617,616],"authors":4,"lead_hours":100.3,"incidents":[]}],"releases":[{"tag":"v3.27.0","at":"NOW-2d","prs":6,"fixes":1,"fix_share":0.1667,"reverted":[],"incidents_after":0,"settled":false},{"tag":"v3.26.0","at":"NOW-11d","prs":11,"fixes":2,"fix_share":0.1818,"reverted":[],"incidents_after":0,"settled":false},{"tag":"v3.25.0","at":"NOW-20d","prs":7,"fixes":3,"fix_share":0.4286,"reverted":[641],"incidents_after":1,"settled":true},{"tag":"v3.24.0","at":"NOW-29d","prs":12,"fixes":1,"fix_share":0.0833,"reverted":[],"incidents_after":0,"settled":true},{"tag":"v3.23.0","at":"NOW-38d","prs":8,"fixes":2,"fix_share":0.25,"reverted":[],"incidents_after":0,"settled":true},{"tag":"v3.22.0","at":"NOW-47d","prs":13,"fixes":3,"fix_share":0.2308,"reverted":[],"incidents_after":0,"settled":true},{"tag":"v3.21.0","at":"NOW-56d","prs":9,"fixes":1,"fix_share":0.1111,"reverted":[],"incidents_after":0,"settled":true},{"tag":"v3.20.0","at":"NOW-65d","prs":14,"fixes":2,"fix_share":0.1429,"reverted":[],"incidents_after":0,"settled":true}],"bugs":{"weeks":[{"week":"NOW-80d","opened":3,"closed":2,"open":14},{"week":"NOW-73d","opened":6,"closed":7,"open":15},{"week":"NOW-66d","opened":4,"closed":6,"open":16},{"week":"NOW-59d","opened":7,"closed":5,"open":17},{"week":"NOW-52d","opened":5,"closed":4,"open":18},{"week":"NOW-45d","opened":3,"closed":3,"open":19},{"week":"NOW-38d","opened":6,"closed":2,"open":14},{"week":"NOW-31d","opened":4,"closed":7,"open":15},{"week":"NOW-24d","opened":7,"closed":6,"open":16},{"week":"NOW-17d","opened":5,"closed":5,"open":17},{"week":"NOW-10d","opened":3,"closed":4,"open":18},{"week":"NOW-3d","opened":6,"closed":3,"open":19}],"open":17,"median_open_days":23,"sources":["github"],"oldest":[{"src":"github","id":1200,"days":210},{"src":"github","id":1237,"days":177},{"src":"github","id":1274,"days":144},{"src":"github","id":1311,"days":111},{"src":"github","id":1348,"days":78}]},"change_risk":{"backtest":{"train":182,"test":78,"test_troubled":11,"auc":0.55,"top_fifth_trouble":0.13,"overall_trouble":0.141},"open":null,"troubled":23,"note":"Not predictive in this repo: on its newest pull requests it ranked trouble about as well as chance (AUC 0.55), so no score is shown."},"what_changed":[{"incident":{"source":"issue","number":2000,"created":"NOW-2d","resolved":null,"deployment":"dep-0"},"window_hours":72,"candidates":[{"kind":"deployment","ref":"9e7b2e8","at":"NOW-2d","why":"the deployment this incident is tied to","deployment":"dep-0"},{"kind":"pull request","ref":"#672","title":"Cache cart totals","at":"NOW-2d","why":"a revert later undid it"},{"kind":"dependency","ref":"#670","title":"Bump com.android.tools.build:gradle","at":"NOW-2d","why":"shipped in that deployment"}]},{"incident":{"source":"issue","number":2013,"created":"NOW-85d","resolved":null,"deployment":"dep-3"},"window_hours":72,"candidates":[{"kind":"deployment","ref":"9e29a6f","at":"NOW-85d","why":"the deployment this incident is tied to","deployment":"dep-3"},{"kind":"pull request","ref":"#663","title":"Cache cart totals","at":"NOW-85d","why":"a revert later undid it"},{"kind":"dependency","ref":"#661","title":"Bump com.android.tools.build:gradle","at":"NOW-85d","why":"shipped in that deployment"}]}],"code_survival":{"30":{"people":{"prs":64,"share":0.91},"agents":{"prs":18,"share":0.83}},"90":{"people":{"prs":41,"share":0.84},"agents":{"prs":9,"share":0.71}}},"code_quality":null,"sizes":{"n":30,"p50":96,"p75":214,"under_100":16,"100_155":5,"156_228":3,"over_228":6},"merge_frequency":1.3,"review_depth":2.1,"merged_without_review":{"n":3,"share":0.1},"merged_flags":{"lightning":[{"pr":668,"review_minutes":2},{"pr":655,"review_minutes":4}],"without_review":[{"pr":664},{"pr":650},{"pr":643}]},"devlake_pr_cycle":[{"month":"MON-2","avg_hours":129.8,"n":30},{"month":"MON-1","avg_hours":118,"n":34},{"month":"MON-0","avg_hours":106.2,"n":38}],"capex":{"file":"capex.csv","rows":146,"months":[{"month":"MON-5","prs":16,"agent_prs":0,"author_weeks":{"feature":6,"fix":3,"maintenance":2,"security":1,"docs":1,"other":1},"feature_share":0.4375},{"month":"MON-4","prs":15,"agent_prs":1,"author_weeks":{"feature":5,"fix":3,"maintenance":2,"security":1,"docs":1,"other":1},"feature_share":0.4},{"month":"MON-3","prs":12,"agent_prs":0,"author_weeks":{"feature":4,"fix":2,"maintenance":2,"security":1,"docs":1,"other":1},"feature_share":0.4167},{"month":"MON-2","prs":12,"agent_prs":1,"author_weeks":{"feature":4,"fix":2,"maintenance":2,"security":1,"docs":1,"other":1},"feature_share":0.4167},{"month":"MON-1","prs":10,"agent_prs":0,"author_weeks":{"feature":3,"fix":2,"maintenance":2,"security":1,"docs":1,"other":1},"feature_share":0.4},{"month":"MON-0","prs":8,"agent_prs":1,"author_weeks":{"feature":2,"fix":2,"maintenance":1,"security":1,"docs":1,"other":2},"feature_share":0.375}]}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"schema":1,"generated":"NOW-3h","open":[{"pr":709,"package":"com.android.tools.build:gradle","ecosystem":"Maven","from":"8.6.1","to":"8.7.0","bump":"minor","bot":"renovate","security":false,"age_hours":288},{"pr":714,"package":"com.squareup.okio:okio","ecosystem":"Maven","from":"3.2.0","to":"3.4.0","bump":"minor","bot":"renovate","security":true,"age_hours":70}],"security_overdue":[{"pr":714,"package":"com.squareup.okio:okio","ecosystem":"Maven","from":"3.2.0","to":"3.4.0","bump":"minor","bot":"renovate","security":true,"age_hours":70}],"merged_90d":9,"merge_median_hours":96,"bots":["renovate"],"last_opened":"NOW-3d","quiet_days":0}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"schema":1,"generated":"NOW-3h","window_days":90,"open":19,"drafts":2,"merged":30,"closed_unmerged":6,"stages":{"pickup":{"median_s":18360,"p90_s":47736,"n":26},"review":{"median_s":54360,"p90_s":141336,"n":23},"merge":{"median_s":11880,"p90_s":30888,"n":26},"cycle":{"median_s":83160,"p90_s":216216,"n":30}},"merged_without_review":1,"groups":{"insider":{"merged":27,"closed_unmerged":4,"merge_rate":0.92,"merged_without_review":1,"pickup":{"median_s":18360,"p90_s":47736,"n":26},"review":{"median_s":54360,"p90_s":141336,"n":23},"merge":{"median_s":11880,"p90_s":30888,"n":26},"cycle":{"median_s":83160,"p90_s":216216,"n":30}},"outsider":{"merged":3,"closed_unmerged":2,"merge_rate":0.6,"merged_without_review":0,"pickup":{"median_s":43920,"p90_s":114192,"n":3},"review":{"median_s":75960,"p90_s":197496,"n":3},"merge":{"median_s":14040,"p90_s":36504,"n":3},"cycle":{"median_s":155880,"p90_s":405288,"n":3}}},"queue":[{"n":712,"title":"Offline mode for orders tab","author":"ines","outsider":false,"actor":"reviewer","who":["marek"],"why":"review asked, not started","since":"NOW-8d","step":"review","waiting_s":691200,"usual_s":18360,"stale":false,"slow":true,"gaps":[{"what":"tests","why":"87% of merged PRs in app/src/main include test files"}]},{"n":709,"title":"Upgrade AGP to 8.7","author":"renovate[bot]","outsider":false,"actor":"author","who":["renovate[bot]"],"why":"checks failing","since":"NOW-12d","step":"checks","waiting_s":1036800,"usual_s":null,"stale":false,"slow":true,"gaps":[]},{"n":701,"title":"Fix crash on rotate in checkout","author":"first-timer-joe","outsider":true,"actor":"reviewer","who":["ines","marek"],"why":"outside contributor, no reply","since":"NOW-15d","step":"review","waiting_s":1296000,"usual_s":18360,"stale":false,"slow":true,"gaps":[{"what":"size","why":"912 lines; 90% of merged PRs in the whole repo have at most 640"}]},{"n":688,"title":"Compose migration: cart screen","author":"marek","outsider":false,"actor":"author","who":["marek"],"why":"changes requested, no reply","since":"NOW-34d","step":"changes","waiting_s":2937600,"usual_s":null,"stale":true,"slow":true,"gaps":[]},{"n":672,"title":"Biometric login","author":"ines","outsider":false,"actor":"reviewer","who":["marek"],"why":"review asked, not started","since":"NOW-44d","step":"review","waiting_s":3801600,"usual_s":18360,"stale":true,"slow":true,"gaps":[]}],"stale":2,"load":[{"reviewer":"marek","open_requests":3,"oldest_since":"NOW-2d"},{"reviewer":"ines","open_requests":1,"oldest_since":"NOW-5d"}],"monthly":[{"month":"MON-5","opened":18,"merged":16,"pickup_median_s":22950,"cycle_median_s":99740},{"month":"MON-4","opened":17,"merged":15,"pickup_median_s":22032,"cycle_median_s":96415},{"month":"MON-3","opened":15,"merged":12,"pickup_median_s":21114,"cycle_median_s":93091},{"month":"MON-2","opened":14,"merged":12,"pickup_median_s":20196,"cycle_median_s":89766},{"month":"MON-1","opened":13,"merged":10,"pickup_median_s":19278,"cycle_median_s":86441},{"month":"MON-0","opened":11,"merged":8,"pickup_median_s":18360,"cycle_median_s":83117}],"bots":{"open":2,"closed":9},"measures":{"flow.pickup_time":{"metric":"flow.pickup_time","version":1,"value":18360,"n":26,"low":15606,"high":22032,"unit":"s","as_of":"NOW-3h","window_days":90,"note":null},"flow.cycle_time":{"metric":"flow.cycle_time","version":1,"value":83160,"n":30,"low":70686,"high":99792,"unit":"s","as_of":"NOW-3h","window_days":90,"note":null},"flow.open_prs":{"metric":"flow.open_prs","version":1,"value":19,"n":19,"low":null,"high":null,"unit":"count","as_of":"NOW-3h","window_days":null,"note":null}},"habits":{"scope":"whole repo","merged_prs":77,"include":{"tests":0.64,"docs":0.18,"changelog":0.41},"size":{"median_lines":86,"p75_lines":210,"p90_lines":520},"asks":[{"ask":"tests","share":0.21,"prs":6},{"ask":"a smaller pull request","share":0.08,"prs":2}],"folders":[{"area":"app/src/main","merged_prs":49,"include":{"tests":0.87,"changelog":0.62,"docs":0.08},"size":{"median_lines":64,"p75_lines":150,"p90_lines":380},"reviewed_prs":29,"asks":[{"ask":"tests","share":0.2414,"prs":7}]},{"area":"feature/payments","merged_prs":22,"include":{"tests":0.73,"changelog":0.12,"docs":0.15},"size":{"median_lines":86,"p75_lines":190,"p90_lines":470},"reviewed_prs":13,"asks":[{"ask":"docs","share":0.2308,"prs":3}]},{"area":"core/network","merged_prs":14,"include":{"tests":0.59,"changelog":0.52,"docs":0.22},"size":{"median_lines":108,"p75_lines":230,"p90_lines":560},"reviewed_prs":8,"asks":[]}]},"excluded":0,"knowledge":{"areas":[{"area":"app/src/main","prs":49,"owner":null,"share":0.52,"single_owner":false,"owner_quiet_days":1},{"area":"feature/payments","prs":22,"owner":null,"share":0.77,"single_owner":true,"owner_quiet_days":12},{"area":"core/network","prs":14,"owner":null,"share":0.93,"single_owner":true,"owner_quiet_days":48},{"area":"buildSrc","prs":5,"owner":null,"share":0.6,"single_owner":false,"owner_quiet_days":4}],"hotspots":[{"area":"app/src/main","prs_90d":22,"prs":49},{"area":"feature/payments","prs_90d":10,"prs":22},{"area":"core/network","prs_90d":6,"prs":14},{"area":"buildSrc","prs_90d":2,"prs":5}]},"delivery":{"source":"releases","releases":13,"per_week":1.01,"lead_time_median_s":302400,"change_fail":{"failed":2,"of":13,"rate":0.1538,"proxy":true},"recovery_median_s":259200},"baselines":{"pickup":41040,"merge":23400,"author":65232}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"as_of":"NOW-3h","sources":{"CI Health":{"kind":"module","last_try":"NOW-3h","last_ok":"NOW-3h","failing_since":null,"error":null,"complete":true,"read":{"runs":48,"requests":61}},"Delivery":{"kind":"module","last_try":"NOW-3h","last_ok":"NOW-3h","failing_since":null,"error":null,"complete":true,"read":{}},"Discourse":{"kind":"connector","last_try":"NOW-5h","last_ok":"NOW-5h","failing_since":null,"error":null,"complete":true,"read":{"topic":118}},"Insights":{"kind":"module","last_try":"NOW-3h","last_ok":"NOW-3h","failing_since":null,"error":null,"complete":true,"read":{}},"Team Flow":{"kind":"module","last_try":"NOW-3h","last_ok":"NOW-3h","failing_since":null,"error":null,"complete":true,"read":{"prs":37,"points":12}}},"history":{"ci/days":{"oldest":"NOW-179d","newest":"NOW-0d","files":172,"bytes":7052000,"keeps_days":180},"flow/closed":{"oldest":"NOW-399d","newest":"NOW-0d","files":351,"bytes":14391000,"keeps_days":400}},"dropped":null}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"schema":1,"generated":"NOW-3h","findings":[{"kind":"review_wait","title":"Reviews start 28% later than in August","action":"Two reviewers carry 80% of reviews; add a third to CODEOWNERS.","hours":34,"n":11,"open_since":"2026-08-20","structural":true,"key":"review_wait","decision":null},{"kind":"fix_job","title":"connectedAndroidTest re-runs cost 8.8 h","action":"Move emulator tests to a nightly job.","hours":8.8,"n":9,"open_since":"2026-09-02","key":"fix_job","decision":null},{"kind":"outsider_wait","title":"An outside fix waits 15 days for a reply","action":"Reply on #701.","hours":15,"n":1,"open_since":"2026-10-09","key":"outsider_wait","decision":null},{"kind":"bump_red","title":"Update PRs sit red for days","action":"Fix the AGP 8.7 build so #709 can merge.","hours":6,"n":2,"open_since":"2026-10-13","key":"bump_red","decision":{"verb":"snooze","by":"tomasz","until":"NOW+9d","reason":"release week","at":"NOW-5d","kind":"finding","id":"bump_red"}}],"opportunity":{"hours":57.8,"findings":3,"inside_another":0},"track_record":{"since":"2026-07-01","top_findings":5,"shrank_by_half":3,"cleared":2},"red_ci":{"definition":"Time a ready pull request spent with a failing check on its newest commit, until a new commit, a passing re-run or the merge.","prs":30,"without_checks":2,"red_prs":12,"red_hours_total":12.6,"rerun_hours_total":6,"rerun_waits":4,"open_red":[{"pr":709,"since":"NOW-12d","hours":288}],"cycle_hours":{"red":{"median":67.3,"n":12},"clear":{"median":33.7,"n":18}},"measures":{"insight.red_ci_share":{"metric":"insight.red_ci_share","version":1,"value":0.4,"n":30,"low":0.34,"high":0.47000000000000003,"unit":"share","as_of":"NOW-3h","window_days":90,"note":null}},"rerun_jobs":[{"workflow":"CI","job":"connectedAndroidTest","hours":3.6,"prs":2,"runs":[]},{"workflow":"CI","job":"lint","hours":0.9,"prs":2,"runs":[]}],"rerun_tests":[{"test":"LoginViewModelTest.emitsError","hours":2.4,"prs":4,"pr_list":[1790,1799,1808,1817],"runs":[]}],"top":[{"pr":1790,"hours":77,"waits":[{"ended_by":"rerun"},{"ended_by":"push"}]},{"pr":1799,"hours":62.5,"waits":[{"ended_by":"rerun"}]},{"pr":1808,"hours":48.1,"waits":[{"ended_by":"rerun"}]}]},"chains":[{"test":"LoginViewModelTest.emitsError","hours":2.4,"prs":3,"pr_list":[1800,1807,1814],"state":"flaky","flake_events":3,"runs":60,"owners":["@acme/core"],"owners_from":"CODEOWNERS line 4","decision":{"verb":"mute","kind":"test","id":"LoginViewModelTest.emitsError","by":"ines","until":"NOW+5d","reason":"coroutine test rule lands next week","at":"NOW-9d"}}]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"weeks":[],"beside":{"flow":"pickup","friction":"first_try","satisfaction":"deployments"},"min_answers":5}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"schema":1,"generated":"NOW-2d","score":8.5,"probes":[{"probe":"hasDangerousWorkflowUntrustedCheckout","risk":"critical","effort":"S","result":"pass","why":"A pull_request_target or workflow_run workflow checks out the pull request's code with secrets in reach.","fix":"Use pull_request for untrusted code, or check it out only after a maintainer's label or approval gate.","findings":[],"guarded":[]},{"probe":"hasDangerousWorkflowScriptInjection","risk":"critical","effort":"S","result":"pass","why":"Text an outsider writes (a title, a body, a branch name) is pasted into a run: script.","fix":"Pass it through env: (FOO: ${{ github.event.issue.title }}) and use \"$FOO\" in the script.","findings":[],"guarded":[]},{"probe":"topLevelPermissions","risk":"high","effort":"S","result":"pass","why":"A workflow's token gets write access it may not need.","fix":"Add `permissions: contents: read` at the top and grant writes only on the jobs that need them.","findings":[],"guarded":[]},{"probe":"pinsDependencies","risk":"medium","effort":"M","result":"pass","why":"An action used by tag, or a script piped from the internet, can change under you (as tj-actions/changed-files did).","fix":"Pin each action to its full commit (uses: owner/action@<40-character sha> # v4) and download scripts before running them.","findings":[],"guarded":[]},{"probe":"branchProtectionLevel","risk":"high","effort":"S","result":"pass","why":"The default branch can be force-pushed or merged into without review or checks.","fix":"Add a ruleset on the default branch: block force pushes and deletion, require a review and the CI checks.","findings":[],"guarded":[]},{"probe":"securityPolicyPresent","risk":"medium","effort":"S","result":"pass","why":"No SECURITY.md tells people how to report a vulnerability privately.","fix":"Add SECURITY.md with a contact and a disclosure timeline, and turn on private vulnerability reporting.","findings":[],"guarded":[]},{"probe":"releasesAreSigned","risk":"high","effort":"M","result":"fail","why":"Recent releases carry no signature or provenance file to check them against.","fix":"Sign release assets with Sigstore (actions/attest-build-provenance) or publish .intoto.jsonl provenance.","findings":[],"guarded":[]},{"probe":"hasSBOM","risk":"medium","effort":"S","result":"pass","why":"No SBOM in the repo or the release assets.","fix":"Attach an SPDX or CycloneDX SBOM to each release (anchore/sbom-action).","findings":[],"guarded":[]},{"probe":"sastToolConfigured","risk":"medium","effort":"S","result":"pass","why":"No code scanning (CodeQL, Semgrep, SonarCloud) runs on pull requests.","fix":"Turn on CodeQL's default setup in the repo's Security settings, or add a Semgrep workflow.","findings":[],"guarded":[]},{"probe":"hasBinaryArtifacts","risk":"high","effort":"S","result":"pass","why":"Compiled files are committed, so nobody can review what they do.","fix":"Build them in CI instead and remove them from the repo.","findings":[],"guarded":[]},{"probe":"fuzzed","risk":"medium","effort":"M","result":"fail","why":"No fuzzing setup was found.","fix":"Add ClusterFuzzLite, Go native fuzz tests, or join OSS-Fuzz.","findings":[],"guarded":[]},{"probe":"hasOpenSSFBadge","risk":"low","effort":"M","result":"pass","why":"No OpenSSF Best Practices badge.","fix":"Fill in the questionnaire at bestpractices.dev.","findings":[],"guarded":[]},{"probe":"packagedWithAutomatedWorkflow","risk":"medium","effort":"S","result":"pass","why":"Releases aren't published by a workflow, so their build can't be traced.","fix":"Publish from a workflow (with trusted publishing on PyPI and npm).","findings":[],"guarded":[]}],"facts":{"workflows":{"sast":[".github/workflows/codeql.yml"],"publish":[".github/workflows/publish.yml"],"files":3},"tree":{"binaries":[],"sbom_files":["sbom.cdx.json"],"fuzzing":[]},"branch":{"tiers":[{"tier":1,"rule":"no force pushes or deletion","state":"met"},{"tier":2,"rule":"reviews required","state":"met"},{"tier":3,"rule":"status checks required","state":"met"},{"tier":4,"rule":"two reviewers and code owners","state":"met"},{"tier":5,"rule":"stale reviews dismissed, admins included","state":"missing"}],"readable":true,"level":4},"policy":{"file":"acme/mobile:SECURITY.md","contact":true,"disclosure":true,"private_reporting":true},"releases":{"releases":5,"signed":[],"sbom":["v3.27.0","v3.26.0"]},"oss_fuzz":false,"badge":"passing"},"history":[["NOW-77d",7.2],["NOW-70d",7.3],["NOW-63d",7.4],["NOW-56d",7.5],["NOW-49d",7.7],["NOW-42d",7.8],["NOW-35d",7.9],["NOW-28d",8],["NOW-21d",8.1],["NOW-14d",8.3],["NOW-7d",8.4],["NOW-0d",8.5]],"weakened":false}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
{"workflow":".github/workflows/connectedAndroidTest.yml","job":"api-30","state":"flaky","flake_events":7,"failures":7,"runs":60,"flake_rate":0.1167,"prs_affected":6,"retry_minutes":528}
|
|
2
|
+
{"workflow":".github/workflows/ci.yml","job":"assembleRelease","state":"ok","flake_events":0,"failures":0,"runs":120,"flake_rate":0,"prs_affected":0,"retry_minutes":0}
|
|
3
|
+
{"workflow":".github/workflows/ci.yml","job":"detekt","state":"ok","flake_events":0,"failures":0,"runs":120,"flake_rate":0,"prs_affected":0,"retry_minutes":0}
|
|
4
|
+
{"workflow":".github/workflows/ci.yml","job":"unit","state":"ok","flake_events":0,"failures":0,"runs":120,"flake_rate":0,"prs_affected":0,"retry_minutes":0}
|
|
5
|
+
{"workflow":".github/workflows/ci.yml","job":"ktlint","state":"ok","flake_events":0,"failures":0,"runs":120,"flake_rate":0,"prs_affected":0,"retry_minutes":0}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{"id":710,"pr_pickup_time":122,"pr_review_time":544,"pr_coding_time":684,"pr_deploy_time":1248,"pr_cycle_time":2850,"pr_merged_date":"2026-10-18T12:00:00Z"}
|
|
2
|
+
{"id":707,"pr_pickup_time":479,"pr_review_time":906,"pr_coding_time":1254,"pr_deploy_time":2288,"pr_cycle_time":3207,"pr_merged_date":"2026-10-12T12:00:00Z"}
|
|
3
|
+
{"id":704,"pr_pickup_time":326,"pr_review_time":1268,"pr_coding_time":1824,"pr_deploy_time":3328,"pr_cycle_time":3054,"pr_merged_date":"2026-10-06T12:00:00Z"}
|
|
4
|
+
{"id":701,"pr_pickup_time":173,"pr_review_time":1631,"pr_coding_time":2394,"pr_deploy_time":1248,"pr_cycle_time":2901,"pr_merged_date":"2026-09-30T12:00:00Z"}
|
|
5
|
+
{"id":698,"pr_pickup_time":530,"pr_review_time":1993,"pr_coding_time":684,"pr_deploy_time":2288,"pr_cycle_time":3258,"pr_merged_date":"2026-09-24T12:00:00Z"}
|
|
6
|
+
{"id":695,"pr_pickup_time":377,"pr_review_time":544,"pr_coding_time":1254,"pr_deploy_time":3328,"pr_cycle_time":3105,"pr_merged_date":"2026-09-18T12:00:00Z"}
|
|
7
|
+
{"id":692,"pr_pickup_time":224,"pr_review_time":906,"pr_coding_time":1824,"pr_deploy_time":1248,"pr_cycle_time":2952,"pr_merged_date":"2026-09-12T12:00:00Z"}
|
|
8
|
+
{"id":689,"pr_pickup_time":581,"pr_review_time":1268,"pr_coding_time":2394,"pr_deploy_time":2288,"pr_cycle_time":3309,"pr_merged_date":"2026-09-06T12:00:00Z"}
|
|
9
|
+
{"id":686,"pr_pickup_time":428,"pr_review_time":1631,"pr_coding_time":684,"pr_deploy_time":3328,"pr_cycle_time":3156,"pr_merged_date":"2026-08-31T12:00:00Z"}
|
|
10
|
+
{"id":683,"pr_pickup_time":275,"pr_review_time":1993,"pr_coding_time":1254,"pr_deploy_time":1248,"pr_cycle_time":3003,"pr_merged_date":"2026-08-25T12:00:00Z"}
|
|
11
|
+
{"id":680,"pr_pickup_time":122,"pr_review_time":544,"pr_coding_time":1824,"pr_deploy_time":2288,"pr_cycle_time":2850,"pr_merged_date":"2026-08-19T12:00:00Z"}
|
|
12
|
+
{"id":677,"pr_pickup_time":479,"pr_review_time":906,"pr_coding_time":2394,"pr_deploy_time":3328,"pr_cycle_time":3207,"pr_merged_date":"2026-08-13T12:00:00Z"}
|
|
13
|
+
{"id":674,"pr_pickup_time":326,"pr_review_time":1268,"pr_coding_time":684,"pr_deploy_time":1248,"pr_cycle_time":3054,"pr_merged_date":"2026-08-07T12:00:00Z"}
|
|
14
|
+
{"id":671,"pr_pickup_time":173,"pr_review_time":1631,"pr_coding_time":1254,"pr_deploy_time":2288,"pr_cycle_time":2901,"pr_merged_date":"2026-08-01T12:00:00Z"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{"id":710,"pull_request_key":710,"title":"Refactor config loading","author_name":"someone","merged_date":"2026-10-18T12:00:00Z"}
|
|
2
|
+
{"id":707,"pull_request_key":707,"title":"Add metrics for retries","author_name":"someone","merged_date":"2026-10-12T12:00:00Z"}
|
|
3
|
+
{"id":704,"pull_request_key":704,"title":"Fix flaky timeout","author_name":"someone","merged_date":"2026-10-06T12:00:00Z"}
|
|
4
|
+
{"id":701,"pull_request_key":701,"title":"Update docs","author_name":"someone","merged_date":"2026-09-30T12:00:00Z"}
|
|
5
|
+
{"id":698,"pull_request_key":698,"title":"Speed up cold start","author_name":"someone","merged_date":"2026-09-24T12:00:00Z"}
|
|
6
|
+
{"id":695,"pull_request_key":695,"title":"Tidy error messages","author_name":"someone","merged_date":"2026-09-18T12:00:00Z"}
|
|
7
|
+
{"id":692,"pull_request_key":692,"title":"Split large handler","author_name":"someone","merged_date":"2026-09-12T12:00:00Z"}
|
|
8
|
+
{"id":689,"pull_request_key":689,"title":"Refactor config loading","author_name":"someone","merged_date":"2026-09-06T12:00:00Z"}
|
|
9
|
+
{"id":686,"pull_request_key":686,"title":"Add metrics for retries","author_name":"someone","merged_date":"2026-08-31T12:00:00Z"}
|
|
10
|
+
{"id":683,"pull_request_key":683,"title":"Fix flaky timeout","author_name":"someone","merged_date":"2026-08-25T12:00:00Z"}
|
|
11
|
+
{"id":680,"pull_request_key":680,"title":"Update docs","author_name":"someone","merged_date":"2026-08-19T12:00:00Z"}
|
|
12
|
+
{"id":677,"pull_request_key":677,"title":"Speed up cold start","author_name":"someone","merged_date":"2026-08-13T12:00:00Z"}
|
|
13
|
+
{"id":674,"pull_request_key":674,"title":"Tidy error messages","author_name":"someone","merged_date":"2026-08-07T12:00:00Z"}
|
|
14
|
+
{"id":671,"pull_request_key":671,"title":"Split large handler","author_name":"someone","merged_date":"2026-08-01T12:00:00Z"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"generated":"NOW-3h","files":{"prs.jsonl":{"rows":19,"generated":"NOW-3h"},"ci_jobs.jsonl":{"rows":5,"generated":"NOW-3h"},"tests.jsonl":{"rows":1,"generated":"NOW-3h"},"devlake_pull_requests.jsonl":{"rows":14,"generated":"NOW-3h"},"devlake_project_pr_metrics.jsonl":{"rows":14,"generated":"NOW-3h"}}}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{"number":710,"title":"Refactor config loading","author_kind":"person","role":"insider","status":"MERGED","created_at":"2026-10-16T12:00:00Z","merged_at":"2026-10-18T12:00:00Z","pickup_s":7344,"additions":40,"deletions":10}
|
|
2
|
+
{"number":707,"title":"Add metrics for retries","author_kind":"person","role":"insider","status":"MERGED","created_at":"2026-10-10T12:00:00Z","merged_at":"2026-10-12T12:00:00Z","pickup_s":28764,"additions":77,"deletions":23}
|
|
3
|
+
{"number":704,"title":"Fix flaky timeout","author_kind":"person","role":"insider","status":"MERGED","created_at":"2026-10-04T12:00:00Z","merged_at":"2026-10-06T12:00:00Z","pickup_s":19584,"additions":114,"deletions":36}
|
|
4
|
+
{"number":701,"title":"Update docs","author_kind":"person","role":"insider","status":"MERGED","created_at":"2026-09-28T12:00:00Z","merged_at":"2026-09-30T12:00:00Z","pickup_s":10404,"additions":151,"deletions":49}
|
|
5
|
+
{"number":698,"title":"Speed up cold start","author_kind":"person","role":"insider","status":"MERGED","created_at":"2026-09-22T12:00:00Z","merged_at":"2026-09-24T12:00:00Z","pickup_s":31824,"additions":188,"deletions":62}
|
|
6
|
+
{"number":695,"title":"Tidy error messages","author_kind":"person","role":"outsider","status":"MERGED","created_at":"2026-09-16T12:00:00Z","merged_at":"2026-09-18T12:00:00Z","pickup_s":22644,"additions":225,"deletions":75}
|
|
7
|
+
{"number":692,"title":"Split large handler","author_kind":"person","role":"insider","status":"MERGED","created_at":"2026-09-10T12:00:00Z","merged_at":"2026-09-12T12:00:00Z","pickup_s":13464,"additions":262,"deletions":88}
|
|
8
|
+
{"number":689,"title":"Refactor config loading","author_kind":"person","role":"insider","status":"MERGED","created_at":"2026-09-04T12:00:00Z","merged_at":"2026-09-06T12:00:00Z","pickup_s":34884,"additions":299,"deletions":11}
|
|
9
|
+
{"number":686,"title":"Add metrics for retries","author_kind":"person","role":"insider","status":"MERGED","created_at":"2026-08-29T12:00:00Z","merged_at":"2026-08-31T12:00:00Z","pickup_s":25704,"additions":336,"deletions":24}
|
|
10
|
+
{"number":683,"title":"Fix flaky timeout","author_kind":"person","role":"insider","status":"MERGED","created_at":"2026-08-23T12:00:00Z","merged_at":"2026-08-25T12:00:00Z","pickup_s":16524,"additions":73,"deletions":37}
|
|
11
|
+
{"number":680,"title":"Update docs","author_kind":"person","role":"insider","status":"MERGED","created_at":"2026-08-17T12:00:00Z","merged_at":"2026-08-19T12:00:00Z","pickup_s":7344,"additions":110,"deletions":50}
|
|
12
|
+
{"number":677,"title":"Speed up cold start","author_kind":"person","role":"outsider","status":"MERGED","created_at":"2026-08-11T12:00:00Z","merged_at":"2026-08-13T12:00:00Z","pickup_s":28764,"additions":147,"deletions":63}
|
|
13
|
+
{"number":674,"title":"Tidy error messages","author_kind":"person","role":"insider","status":"MERGED","created_at":"2026-08-05T12:00:00Z","merged_at":"2026-08-07T12:00:00Z","pickup_s":19584,"additions":184,"deletions":76}
|
|
14
|
+
{"number":671,"title":"Split large handler","author_kind":"person","role":"insider","status":"MERGED","created_at":"2026-07-30T12:00:00Z","merged_at":"2026-08-01T12:00:00Z","pickup_s":10404,"additions":221,"deletions":89}
|
|
15
|
+
{"number":712,"title":"Offline mode for orders tab","author_kind":"person","role":"insider","status":"OPEN","created_at":"2026-10-12T12:00:00Z","merged_at":null,"pickup_s":null,"additions":372,"deletions":17}
|
|
16
|
+
{"number":709,"title":"Upgrade AGP to 8.7","author_kind":"bot","role":"insider","status":"OPEN","created_at":"2026-10-08T12:00:00Z","merged_at":null,"pickup_s":null,"additions":369,"deletions":14}
|
|
17
|
+
{"number":701,"title":"Fix crash on rotate in checkout","author_kind":"person","role":"outsider","status":"OPEN","created_at":"2026-10-05T12:00:00Z","merged_at":null,"pickup_s":null,"additions":361,"deletions":6}
|
|
18
|
+
{"number":688,"title":"Compose migration: cart screen","author_kind":"person","role":"insider","status":"OPEN","created_at":"2026-09-16T12:00:00Z","merged_at":null,"pickup_s":null,"additions":348,"deletions":63}
|
|
19
|
+
{"number":672,"title":"Biometric login","author_kind":"person","role":"insider","status":"OPEN","created_at":"2026-09-06T12:00:00Z","merged_at":null,"pickup_s":null,"additions":332,"deletions":47}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"test_id":"LoginViewModelTest.emitsError","state":"flaky","failures":3,"flake_events":3,"runs":60,"message":"kotlinx.coroutines.TimeoutCancellationException"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"schema":1,"generated":"NOW-3h","packages":236,"systems":{"MAVEN":230,"ACTIONS":6},"policy":{"deny":["AGPL-3.0-only"],"min_scorecard":5},"outside_lookups":true,"licences":{"denied":[],"accepted":[],"unknown":3,"by_licence":{"Apache-2.0":188,"MIT":21,"EPL-2.0":12,"BSD-3-Clause":6}},"drift":[],"scorecards":{"checked":41,"projects":48,"drops":[{"project":"github.com/square/okio","before":7.1,"after":5.4,"since":"NOW-20d","packages":["com.android.tools.build:gradle"]}],"low":[{"project":"github.com/legacy/left-pad-ng","score":3.2,"packages":["left-pad-ng"]}],"below_policy":[]},"runtimes":[{"runtime":"java","version":"17","file":"build.gradle.kts","use":"runs","eol":"2029-09-30","latest":"17.0.13","status":"supported","latest_date":"2024-10-15"}],"reachability":null}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"schema":1,"generated":"NOW-3h","ref":"main","scanner":"OSV-Scanner 2.7.0","offline":false,"files":["gradle.lockfile"],"skipped":[],"open":[{"id":"GHSA-w33c-445m-f8w7","aliases":["CVE-2023-3635"],"file":"gradle.lockfile","ecosystem":"Maven","package":"com.squareup.okio:okio","version":"3.2.0","severity":"moderate","malware":false,"fixed":"3.4.0","first_seen":"NOW-70d","imported":null}],"closed":[{"id":"GHSA-r9px-m959-cxf4"}]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"schema":1,"window_days":28,"heads_up":0.8,"min_n":10,"limits":{"pickup_p75_hours":5,"review_p75_hours":20,"cycle_p75_hours":72,"change_failure_rate":0.15},"names":{"pickup_p75_hours":"pickup time P75 (hours)","review_p75_hours":"review time P75 (hours)","cycle_p75_hours":"cycle time to merge P75 (hours)","change_failure_rate":"change failure rate"},"series":{"pickup_p75_hours":[["NOW-84d",6.23,14],["NOW-83d",6.95,14],["NOW-82d",6.54,14],["NOW-81d",7.26,14],["NOW-80d",6.85,14],["NOW-79d",6.44,14],["NOW-78d",7.16,14],["NOW-77d",6.15,14],["NOW-76d",5.78,14],["NOW-75d",6.43,14],["NOW-74d",6.06,14],["NOW-73d",5.68,14],["NOW-72d",6.34,14],["NOW-71d",5.97,14],["NOW-70d",7.58,14],["NOW-69d",7.15,14],["NOW-68d",6.72,14],["NOW-67d",7.48,14],["NOW-66d",7.05,14],["NOW-65d",6.62,14],["NOW-64d",7.37,14],["NOW-63d",6.35,14],["NOW-62d",5.96,14],["NOW-61d",6.65,14],["NOW-60d",6.25,14],["NOW-59d",6.94,14],["NOW-58d",6.55,14],["NOW-57d",6.16,14],["NOW-56d",6.32,14],["NOW-55d",5.95,14],["NOW-54d",5.59,14],["NOW-53d",6.23,14],["NOW-52d",5.86,14],["NOW-51d",5.5,14],["NOW-50d",6.14,14],["NOW-49d",6.16,14],["NOW-48d",6.84,14],["NOW-47d",6.45,14],["NOW-46d",6.06,14],["NOW-45d",6.74,14],["NOW-44d",6.35,14],["NOW-43d",5.96,14],["NOW-42d",6.02,14],["NOW-41d",5.67,14],["NOW-40d",5.32,14],["NOW-39d",5.93,14],["NOW-38d",5.58,14],["NOW-37d",6.2,14],["NOW-36d",5.84,14],["NOW-35d",5.59,14],["NOW-34d",6.21,14],["NOW-33d",5.86,14],["NOW-32d",5.5,14],["NOW-31d",6.12,14],["NOW-30d",5.77,14],["NOW-29d",5.41,14],["NOW-28d",5.63,14],["NOW-27d",5.29,14],["NOW-26d",5.88,14],["NOW-25d",5.54,14],["NOW-24d",5.21,14],["NOW-23d",5.79,14],["NOW-22d",5.46,14],["NOW-21d",4.85,14],["NOW-20d",5.4,14],["NOW-19d",5.08,14],["NOW-18d",4.77,14],["NOW-17d",5.32,14],["NOW-16d",5,14],["NOW-15d",5.55,14],["NOW-14d",5.04,14],["NOW-13d",4.73,14],["NOW-12d",5.27,14],["NOW-11d",4.96,14],["NOW-10d",4.66,14],["NOW-9d",5.19,14],["NOW-8d",4.89,14],["NOW-7d",4.68,14],["NOW-6d",5.22,14],["NOW-5d",4.91,14],["NOW-4d",5.45,14],["NOW-3d",5.14,14],["NOW-2d",4.83,14],["NOW-1d",5.1,14]],"review_p75_hours":[["NOW-84d",22.49,13],["NOW-83d",25.09,13],["NOW-82d",23.6,13],["NOW-81d",26.21,13],["NOW-80d",24.72,13],["NOW-79d",23.23,13],["NOW-78d",25.83,13],["NOW-77d",22.2,13],["NOW-76d",20.84,13],["NOW-75d",23.22,13],["NOW-74d",21.86,13],["NOW-73d",20.5,13],["NOW-72d",22.88,13],["NOW-71d",21.52,13],["NOW-70d",27.36,13],["NOW-69d",25.81,13],["NOW-68d",24.26,13],["NOW-67d",26.97,13],["NOW-66d",25.42,13],["NOW-65d",23.87,13],["NOW-64d",26.59,13],["NOW-63d",22.92,13],["NOW-62d",21.5,13],["NOW-61d",23.98,13],["NOW-60d",22.56,13],["NOW-59d",25.05,13],["NOW-58d",23.63,13],["NOW-57d",22.21,13],["NOW-56d",22.8,13],["NOW-55d",21.48,13],["NOW-54d",20.17,13],["NOW-53d",22.47,13],["NOW-52d",21.16,13],["NOW-51d",19.84,13],["NOW-50d",22.14,13],["NOW-49d",22.22,13],["NOW-48d",24.66,13],["NOW-47d",23.27,13],["NOW-46d",21.87,13],["NOW-45d",24.31,13],["NOW-44d",22.92,13],["NOW-43d",21.52,13],["NOW-42d",21.72,13],["NOW-41d",20.45,13],["NOW-40d",19.18,13],["NOW-39d",21.4,13],["NOW-38d",20.13,13],["NOW-37d",22.35,13],["NOW-36d",21.08,13],["NOW-35d",20.16,13],["NOW-34d",22.42,13],["NOW-33d",21.13,13],["NOW-32d",19.83,13],["NOW-31d",22.09,13],["NOW-30d",20.8,13],["NOW-29d",19.51,13],["NOW-28d",20.29,13],["NOW-27d",19.09,13],["NOW-26d",21.2,13],["NOW-25d",19.99,13],["NOW-24d",18.79,13],["NOW-23d",20.9,13],["NOW-22d",19.69,13],["NOW-21d",17.48,13],["NOW-20d",19.47,13],["NOW-19d",18.33,13],["NOW-18d",17.2,13],["NOW-17d",19.19,13],["NOW-16d",18.05,13],["NOW-15d",20.04,13],["NOW-14d",18.18,13],["NOW-13d",17.08,13],["NOW-12d",19,13],["NOW-11d",17.9,13],["NOW-10d",16.81,13],["NOW-9d",18.72,13],["NOW-8d",17.63,13],["NOW-7d",16.87,13],["NOW-6d",18.82,13],["NOW-5d",17.7,13],["NOW-4d",19.65,13],["NOW-3d",18.54,13],["NOW-2d",17.42,13],["NOW-1d",18.4,13]],"cycle_p75_hours":[["NOW-84d",31.41,13],["NOW-83d",35.05,13],["NOW-82d",32.97,13],["NOW-81d",36.6,13],["NOW-80d",34.53,13],["NOW-79d",32.45,13],["NOW-78d",36.08,13],["NOW-77d",31.01,13],["NOW-76d",29.11,13],["NOW-75d",32.43,13],["NOW-74d",30.53,13],["NOW-73d",28.64,13],["NOW-72d",31.95,13],["NOW-71d",30.06,13],["NOW-70d",38.22,13],["NOW-69d",36.05,13],["NOW-68d",33.88,13],["NOW-67d",37.68,13],["NOW-66d",35.51,13],["NOW-65d",33.34,13],["NOW-64d",37.13,13],["NOW-63d",32.01,13],["NOW-62d",30.03,13],["NOW-61d",33.5,13],["NOW-60d",31.51,13],["NOW-59d",34.99,13],["NOW-58d",33,13],["NOW-57d",31.02,13],["NOW-56d",31.84,13],["NOW-55d",30.01,13],["NOW-54d",28.17,13],["NOW-53d",31.38,13],["NOW-52d",29.55,13],["NOW-51d",27.72,13],["NOW-50d",30.92,13],["NOW-49d",31.03,13],["NOW-48d",34.45,13],["NOW-47d",32.5,13],["NOW-46d",30.54,13],["NOW-45d",33.96,13],["NOW-44d",32.01,13],["NOW-43d",30.05,13],["NOW-42d",30.33,13],["NOW-41d",28.56,13],["NOW-40d",26.79,13],["NOW-39d",29.89,13],["NOW-38d",28.12,13],["NOW-37d",31.22,13],["NOW-36d",29.45,13],["NOW-35d",28.15,13],["NOW-34d",31.31,13],["NOW-33d",29.51,13],["NOW-32d",27.7,13],["NOW-31d",30.86,13],["NOW-30d",29.06,13],["NOW-29d",27.25,13],["NOW-28d",28.35,13],["NOW-27d",26.67,13],["NOW-26d",29.61,13],["NOW-25d",27.93,13],["NOW-24d",26.25,13],["NOW-23d",29.19,13],["NOW-22d",27.51,13],["NOW-21d",24.42,13],["NOW-20d",27.2,13],["NOW-19d",25.61,13],["NOW-18d",24.02,13],["NOW-17d",26.8,13],["NOW-16d",25.21,13],["NOW-15d",27.99,13],["NOW-14d",25.39,13],["NOW-13d",23.86,13],["NOW-12d",26.53,13],["NOW-11d",25.01,13],["NOW-10d",23.48,13],["NOW-9d",26.15,13],["NOW-8d",24.62,13],["NOW-7d",23.56,13],["NOW-6d",26.28,13],["NOW-5d",24.73,13],["NOW-4d",27.45,13],["NOW-3d",25.89,13],["NOW-2d",24.34,13],["NOW-1d",25.7,13]],"change_failure_rate":[["NOW-84d",0.068,12],["NOW-83d",0.085,12],["NOW-82d",0.102,12],["NOW-81d",0.074,12],["NOW-80d",0.092,12],["NOW-79d",0.109,12],["NOW-78d",0.081,12],["NOW-77d",0.099,12],["NOW-76d",0.071,12],["NOW-75d",0.088,12],["NOW-74d",0.106,12],["NOW-73d",0.078,12],["NOW-72d",0.095,12],["NOW-71d",0.068,12],["NOW-70d",0.085,12],["NOW-69d",0.102,12],["NOW-68d",0.074,12],["NOW-67d",0.092,12],["NOW-66d",0.109,12],["NOW-65d",0.081,12],["NOW-64d",0.099,12],["NOW-63d",0.071,12],["NOW-62d",0.088,12],["NOW-61d",0.106,12],["NOW-60d",0.078,12],["NOW-59d",0.095,12],["NOW-58d",0.068,12],["NOW-57d",0.085,12],["NOW-56d",0.102,12],["NOW-55d",0.074,12],["NOW-54d",0.092,12],["NOW-53d",0.109,12],["NOW-52d",0.081,12],["NOW-51d",0.099,12],["NOW-50d",0.071,12],["NOW-49d",0.088,12],["NOW-48d",0.106,12],["NOW-47d",0.078,12],["NOW-46d",0.095,12],["NOW-45d",0.068,12],["NOW-44d",0.085,12],["NOW-43d",0.102,12],["NOW-42d",0.074,12],["NOW-41d",0.092,12],["NOW-40d",0.109,12],["NOW-39d",0.081,12],["NOW-38d",0.099,12],["NOW-37d",0.071,12],["NOW-36d",0.088,12],["NOW-35d",0.106,12],["NOW-34d",0.078,12],["NOW-33d",0.095,12],["NOW-32d",0.068,12],["NOW-31d",0.085,12],["NOW-30d",0.102,12],["NOW-29d",0.074,12],["NOW-28d",0.092,12],["NOW-27d",0.109,12],["NOW-26d",0.081,12],["NOW-25d",0.099,12],["NOW-24d",0.071,12],["NOW-23d",0.088,12],["NOW-22d",0.106,12],["NOW-21d",0.078,12],["NOW-20d",0.095,12],["NOW-19d",0.068,12],["NOW-18d",0.085,12],["NOW-17d",0.102,12],["NOW-16d",0.074,12],["NOW-15d",0.092,12],["NOW-14d",0.109,12],["NOW-13d",0.081,12],["NOW-12d",0.099,12],["NOW-11d",0.071,12],["NOW-10d",0.088,12],["NOW-9d",0.106,12],["NOW-8d",0.078,12],["NOW-7d",0.095,12],["NOW-6d",0.068,12],["NOW-5d",0.085,12],["NOW-4d",0.102,12],["NOW-3d",0.074,12],["NOW-2d",0.092,12],["NOW-1d",0.09,12]]}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"schema":1,"repo":"acme/payments-api","default_branch":"main","visibility":"private","modules":{"ci":{"updated":"NOW-12m","file":"data.json"},"flow":{"updated":"NOW-12m","file":"flow.json"},"delivery":{"updated":"NOW-12m","file":"delivery.json"},"insights":{"updated":"NOW-12m","file":"insights.json"},"community":{"updated":"NOW-12m","file":"community.json"},"portal":{"updated":"NOW-6h","file":"portal.json"},"alerts":{"updated":"NOW-12m","file":"alerts.json"},"deps":{"updated":"NOW-12m","file":"deps.json"},"supply":{"updated":"NOW-1d","file":"supply.json"},"vulns":{"updated":"NOW-1d","file":"vulns.json"},"security":{"updated":"NOW-2d","file":"security.json"}},"pages":[],"facts":{"ci_first_try":0.78,"ci_flaky":3,"ci_broken":1,"open_prs":37,"stale_prs":2,"pickup_p75_h":5.1,"review_p75_h":18.4,"cycle_p75_h":25.7,"deployments":130,"change_failure_rate":0.09,"newcomers_waiting":2,"findings":2,"first_review_median_s":8280,"community_score":71,"vulns_open":3,"vulns_serious":2,"decisions":2},"links":{"repo":"https://github.com/acme/payments-api","workflow":"stackvitals.yml","actions":"https://github.com/acme/payments-api/actions/workflows/stackvitals.yml","settings_file":"https://github.com/acme/payments-api/blob/main/.github/stackvitals.toml","edit_settings":"https://github.com/acme/payments-api/edit/main/.github/stackvitals.toml","new_issue":"https://github.com/acme/payments-api/issues/new"}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"schema":1,"generated":"NOW-12m","facts":{"first_answer_hours":9.5,"answered_1d_share":0.72,"newcomer_answered_share":0.64,"newcomer_return_rate":0.38},"score":{"score":71,"group":"Go, all sizes","repos":1204,"built_at":"NOW-6d","facts":[{"key":"first_answer_hours","name":"First answer to outside PRs","kind":"hours","you":9.5,"typical":16.2,"better_than":77},{"key":"newcomer_answered_share","name":"Newcomers answered within 2 weeks","kind":"share","you":0.64,"typical":0.71,"better_than":65}],"left_out":["newcomer_return_rate"]},"has_bench":true,"funnel":{"newcomers":12,"judged":8,"returned":3,"return_rate":0.38,"regulars":6,"maintainers":5},"answers":{"days":90,"issues":{"items":40,"km":{"median":9.5,"low":6.7,"high":14.3,"at_least":null,"answered":34,"waiting":1,"too_few":false,"closed_unanswered":1},"responders":4},"discussions":null,"left_out":null},"waiting":[{"kind":"issue","n":2091,"days":3,"created":"NOW-3d"},{"kind":"pr","n":1855,"days":2,"created":"NOW-2d"}],"waiting_total":2,"stars":{"weeks":[["NOW-80d",12],["NOW-73d",9],["NOW-66d",14],["NOW-59d",11],["NOW-52d",10],["NOW-45d",16],["NOW-38d",13],["NOW-31d",12],["NOW-24d",15],["NOW-17d",18],["NOW-10d",14],["NOW-3d",17]],"stars":2140,"gained_12w":161,"growth_12w":0.081},"traffic":{"days":14,"since":"NOW-14d","views":[["NOW-14d",20,12],["NOW-13d",49,12],["NOW-12d",37,12],["NOW-11d",26,12],["NOW-10d",54,12],["NOW-9d",43,12],["NOW-8d",31,12],["NOW-7d",20,12],["NOW-6d",49,12],["NOW-5d",37,12],["NOW-4d",26,12],["NOW-3d",54,12],["NOW-2d",43,12],["NOW-1d",31,12]],"clones":[["NOW-14d",5,3],["NOW-13d",11,3],["NOW-12d",8,3],["NOW-11d",6,3],["NOW-10d",12,3],["NOW-9d",10,3],["NOW-8d",7,3],["NOW-7d",5,3],["NOW-6d",11,3],["NOW-5d",8,3],["NOW-4d",6,3],["NOW-3d",12,3],["NOW-2d",10,3],["NOW-1d",7,3]],"views_total":560,"visitors_total":168,"clones_total":126,"referrers":[["github.com",300],["google.com",90]],"referrers_day":"NOW-1d"},"quarters":[{"quarter":"2026 Q1","items":30,"median_hours":12.4,"within_1d":0.62,"newcomers":8},{"quarter":"2026 Q2","items":34,"median_hours":11.4,"within_1d":0.65,"newcomers":10},{"quarter":"2026 Q3","items":38,"median_hours":10.5,"within_1d":0.68,"newcomers":12},{"quarter":"2026 Q4","items":42,"median_hours":9.5,"within_1d":0.72,"newcomers":14}],"cohorts":{"months":[{"month":"MON-5","newcomers":4,"back_by_90d":1,"back_90_180d":1},{"month":"MON-4","newcomers":7,"back_by_90d":2,"back_90_180d":null},{"month":"MON-3","newcomers":5,"back_by_90d":1,"back_90_180d":null},{"month":"MON-2","newcomers":8,"back_by_90d":null,"back_90_180d":null},{"month":"MON-1","newcomers":6,"back_by_90d":null,"back_90_180d":null},{"month":"MON-0","newcomers":4,"back_by_90d":null,"back_90_180d":null}]},"dependency":{"days":180,"bus_factor":4,"top_share":0.22,"people":17,"merged":188,"peers":{"bus_factor":{"typical":3,"low":2,"high":5},"top_share":{"typical":0.3,"low":0.2,"high":0.45}}},"tenure":{"days":90,"newcomers":{"n":6,"median_h":15.2,"answered_1d_share":0.57},"regulars":{"n":40,"median_h":7.6,"answered_1d_share":0.77}},"orgs":null,"changes":[{"metric":"community.first_answer","label":"first answer to outside contributors","now":9.5,"base":10.5,"unit":"h","note":null,"changed":false,"direction":null,"detectable":1.8}],"context":{"governance":false,"security_policy":true,"code_of_conduct":null,"funding":[],"discussions":false,"contributing":true,"response_policy":{"said":"within 2 working days","hours":48},"maintainers_listed":null,"code_owners":5,"stated":null},"forum":null,"chat":null,"lever":{"newcomers":48213,"repos":3912,"by_answer":[{"bucket":"within 1 day","newcomers":21004,"returned":0.312},{"bucket":"1-3 days","newcomers":9120,"returned":0.268},{"bucket":"3-14 days","newcomers":8210,"returned":0.214},{"bucket":"over 14 days","newcomers":4410,"returned":0.171},{"bucket":"no answer","newcomers":5469,"returned":0.094}],"by_outcome":[{"outcome":"merged","newcomers":30120,"returned":0.331},{"outcome":"closed unmerged","newcomers":12544,"returned":0.142},{"outcome":"still open","newcomers":5549,"returned":0.088}]}}
|