feat: Tier 3 bundle - hardening and observability gaps #30
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/tier-3-bundle"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Third bundle in the TODO sweep. Builds on
feat/tier-2-bundle; merge that one first or this PR's diff will look larger than it is.--dry-run/--quieteverywhere. Every remaining mutation path now honours the global flags: issue comment, set-state, set-estimation, sprint set, tag add/remove, link/unlink, attachment add/remove, work add/delete, and the multi-step daily-sync. Each prints a singleDRY-RUN: would ...line throughsay!and returns before any state-changing request fires, so scripted callers can stage a run end-to-end before flipping the switch. Daily-sync lists each step it would take.-vverbosity ladder. Counted flag (warn/info/debug/trace) wired into thetracing_subscriberenv filter;RUST_LOGstill wins when set. The dead--colorflag is removed.yt::client::get_with_retryretries idempotent GETs on transport errors and 5xx responses with a 200ms / 800ms backoff; 4xx fails immediately so auth and permission problems still surface quickly.yt work check. Today's window now anchors to local-time midnight viaOffsetDateTime::now_local()with a UTC fallback for containers without/etc/localtime. Adds thelocal-offsetfeature on thetimecrate.yt updatealready-up-to-date short-circuit. HEAD the package, parseLast-Modified, compare to the bakedYOUTRACK_CLI_BUILD_DATE. Older-or-equal prints a friendly message and exits 0. Unparseable / missing header silently falls through to the download. New--forcebypasses. Dry-run now precedes the freshness probe so--dry-runnever touches the network.Test plan
cargo fmt --allcargo clippy --all-targets --all-features -- --deny warningscargo test --all-targets(187 passed)yt --dry-run issue comment ISSUE-1 "hi"printsDRY-RUN:line and exits 0 without hitting the APIyt -vv config showprints debug-level tracingyt updateagainst a published binary older than the running build prints "Already up to date" and exits 0; same command with--forcere-downloads