feat(vitals): persist comparable error-cluster reports - #28
Open
TimeToBuildBob wants to merge 2 commits into
Open
feat(vitals): persist comparable error-cluster reports#28TimeToBuildBob wants to merge 2 commits into
TimeToBuildBob wants to merge 2 commits into
Conversation
Git-Session-Id: 7941
Greptile SummaryThis PR adds persistent, comparable Android Play error-cluster reporting.
Confidence Score: 5/5The PR appears safe to merge; the previously reported inconsistent current-report publication has been fully fixed and no actionable new failure remains. The revised publisher stages each artifact, preserves existing versions as backups, and restores the previous pair or removes a first-time partial when the second replacement fails. The accompanying tests cover both refresh rollback and first publication failure. No repository-rule violations or accepted new correctness or security findings remain. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[Scheduled or manual errors command] --> B[Query Play error issues]
B --> C[Fetch optional samples]
C --> D[Normalize structural traces]
D --> E[Build versioned snapshot]
E --> F[Compare with current baseline]
F --> G[Publish immutable history]
G --> H[Stage current JSON and Markdown]
H --> I{Both replacements succeed?}
I -- Yes --> J[Remove temporary backups]
I -- No --> K[Restore previous pair or remove first partial]
J --> L[Commit generated reports]
K --> M[Fail collection]
Reviews (2): Last reviewed commit: "fix(vitals): publish current error repor..." | Re-trigger Greptile |
If current.md failed after current.json was replaced, the two live reports could describe different snapshots. Stage both files, replace them in order, and restore the previous pair (or delete a first-time partial) on failure.
Contributor
Author
|
@greptileai review |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
vitals.py errorscurrently prints transient prose, so release owners cannot compare Play error clusters across collections or retain triage decisions. This adds versioned JSON and ranked Markdown output plus a daily consumer that preserves every snapshot and compares counts by the authoritative Play issue ID.The collector uses explicit UTC query windows, requests count ordering, follows pagination, and records selection truncation. Missing clusters mean “not observed”; overlapping-window count changes and sample versions do not prove a release fixed an issue. Severity stays unclassified. Only reports without a Play issue ID use the versioned structural fingerprint.
--update-dirsaves current JSON/Markdown and immutable, atomically published history. Optional identity-keyed dispositions survive refreshes in a separate file. Sample output retains structural frames and timestamp/version provenance; raw report text, device data, and credentials are excluded. The existing scheduled Play workflow collects a seven-day top-100 report and removes its temporary credential on failure.Validation:
uv run ruff check .,uv run mypy *.py, and all 56 tests pass.The quality gate flagged shared-file overlap with #25; that PR adds rate-by-version metrics and freshness warnings, while this change covers the separate errorIssues/errorReports path.
Related to #17 and ActivityWatch/aw-android#176. This does not close the broader data-collection tracker.