Dashboard › cli › Distillation
49245d4b-4cf4-4362-b1e0-d459831a1b9f["lore_tm_v1_gU1vsJ1MtvNLVpukoTnOLLoPow_MrrsC22Bg8z7I1FE","lore_tm_v1_XRRgXZorWyHbFEOQn8SvoemTNRDL2SwiCmJz_Z-9bFY","lore_tm_v1_2aH-ZmDG1rA5N2zRuTFobHUsH79ISyMToCGoub3Gjvg","lore_tm_v1_Y6eoBw355mZ5MqVNrzp38s8GBnxOhd9W-YLDKe1_whM"]
Date: Sep 10, 2026
sntrys_ token claim as request-base fallback can leak credentials, bypass host-scoping, weaken injected environment defenses, introduce precedence regressions, or produce unsafe URL handling; check regression tests; report findings first ordered by severity with exact file:line; if none, say PASS and note residual risks; return only the review report..lore.md must always be verified and updated before committing; during rebase/cherry-pick conflicts, always take HEAD/main’s version of .lore.md because it is auto-regenerated. The established conflict workflow is to stash with prefix lore-md-pre-rebase- before rebase, then restore and recommit afterward.git status, successful commit, and changed-file/insertion/deletion summary.mkdirSync(path, { recursive: true, mode: 0o700 }) from node:fs; plain recursive mkdir can inherit permissions that expose private local state to other users./home/byk/.local/share/opencode/worktree/0e8c2f3bbe145a3280d6fb6ed900a5121f382cf0/glowing-cactus; top-level entries include .craft.yml, .git, .github/, .gitignore, .lore.md, .nojekyll, .npmrc, .opencode/, .plans/, .ruff_cache/, AGENTS.md, apps/, CHANGELOG.md, codemods/, coverage/, dist-bin/, dist/, docs/, LICENSE.md, node_modules/, package.json, packages/, pnpm-lock.yaml, pnpm-workspace.yaml, README.md, and test-results.junit.xml (26 entries)..lore.md; packages/cli/plugins/sentry-cli/skills/sentry-cli/references/dashboard.md; event.md; explore.md; feedback.md; issue.md; log.md; replay.md; span.md; trace.md; packages/cli/src/lib/constants.ts; packages/cli/test/lib/constants.test.ts; and packages/cli/test/lib/security/sntrys-claim-mismatch.test.ts..lore.md changes include a new “Ground upgrade changes in existing source and regression tests” convention: inspect baseline implementation/tests before modifying CLI upgrade behavior; preserve exact public APIs, error types, reasons, messages, source-selection rules, cancellation behavior, and fallback semantics; add/update focused regressions for success and edge cases including malformed responses, empty results, HTTP/transport failures, abort reasons, invalid inputs, pagination, polling, patch-chain rejection, and source affinity; avoid broad fallback/error swallowing where tests distinguish failure classes, such as legacy fallback only for an expected 404.import("ink") at runtime; a pre-bundled self-contained Ink sidecar with Ink and React inlined by text-import-plugin was chosen over dynamic importing because runtime imports complicate SEA execution and CJS/React interop; keep Ink dependencies external from the main esbuild bundle only because the sidecar supplies them.report_error() telemetry must be fire-and-forget and unable to fail, block, delay, interrupt, or change installation; run it in a background subshell with set +e, silent short-timeout curl, a public write-only Sentry envelope DSN, no PII, and SENTRY_CLI_NO_TELEMETRY=1 opt-out; never wait for the telemetry subprocess in die() because preserving the installer’s original output, failure, and exit code matters more than delivery.buildOrgListCommand for simple organization-scoped lists; use dispatchOrgScopedList when complex modes need overrides; use raw buildListCommand with manual pagination only for standalone trace/span/dashboard-style commands. Hand-written orchestration was disfavored because it duplicates target resolution, fresh/cursor flags, bidirectional pagination, and hints.checkForUpdateInBackgroundImpl() and getUpdateNotificationWithCopy() must never throw or delay CLI execution; best-effort update notifications were chosen over propagating database, network, parsing, or cache failures because update checks are not command failures; catch/report exceptions with Sentry.captureException(), return null when unavailable, rate-limited, current, or stderr is not a TTY, and persist last_notified only after producing a notification.withTelemetry() may best-effort drain deferred work, but queue-flush failures must be swallowed so command results, scripted runs, and structured stdout are unaffected; disabled telemetry still calls its callback with undefined.