Skip to content

chore(status): update public status history - #107

Merged
github-actions[bot] merged 105 commits into
masterfrom
automation/status-history
Aug 26, 2026
Merged

chore(status): update public status history#107
github-actions[bot] merged 105 commits into
masterfrom
automation/status-history

Conversation

@github-actions

Copy link
Copy Markdown
Contributor

Automated six-hour service reachability update.

The workflow restricts this pull request to public/status/history.json, builds the site before merging, and waits for the configured independent reviewer to approve the exact commit.

@github-actions
github-actions Bot marked this pull request as draft August 24, 2026 06:29
@github-actions
github-actions Bot marked this pull request as ready for review August 24, 2026 06:29
@github-actions
github-actions Bot marked this pull request as draft August 24, 2026 12:28
@github-actions
github-actions Bot marked this pull request as ready for review August 24, 2026 12:28
@github-actions
github-actions Bot marked this pull request as draft August 24, 2026 18:28
@github-actions
github-actions Bot marked this pull request as ready for review August 24, 2026 18:28
@github-actions
github-actions Bot marked this pull request as draft August 25, 2026 00:29
@github-actions
github-actions Bot marked this pull request as ready for review August 25, 2026 00:29
@github-actions
github-actions Bot marked this pull request as draft August 25, 2026 06:29
@github-actions
github-actions Bot marked this pull request as ready for review August 25, 2026 06:29
@github-actions
github-actions Bot marked this pull request as draft August 25, 2026 12:28
@github-actions
github-actions Bot marked this pull request as ready for review August 25, 2026 12:28
@github-actions
github-actions Bot marked this pull request as draft August 25, 2026 18:28
@github-actions
github-actions Bot marked this pull request as ready for review August 25, 2026 18:28

@tangletools tangletools left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Auto-approved GitHub Actions PR — 736d3d32

This PR was opened by trusted GitHub Actions automation.
The full PR reviewer audit still runs separately and will publish findings if it detects issues.

This approval is provisional. It rests on the audit running. If the audit cannot run — for example the CLI bridge rejects it — this approval is dismissed rather than left standing, so an unrun check never reads as a passing one.

tangletools · auto-approval · reason: github_actions_author · 2026-08-25T20:32:33Z

@tangletools tangletools left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Value Audit — sound

Verdict sound
Coverage 2 of 2 lenses (value, usefulness)
Concerns 1 (1 weak-concern)
Heuristic 0.0s
Duplication 0.0s
Interrogation 65.5s (2 bridge agents)
Total 65.5s

💰 Value — sound

Routine automated append of six-hour reachability samples (Aug 20-25, 4 checks/day/service across 6 services) to the status-page data file; data integrity verified against the PR base and the update flows through the repo's established reviewer-gated pipeline, so ship.

  • What it does: Updates public/status/history.json from generatedAt 2026-08-20T06:28Z to 2026-08-25T18:28Z: appends 5 new days x 4 checks per service to each history array, completes the in-progress 2026-08-20 day (2->4 checks), and refreshes each service's current snapshot. Notably the router service is now recorded as down (HTTP 200 but health body status != ok, per the jsonStatusField check in scripts/collec
  • Goals it achieves: Keeps the public status page (src/pages/status.astro imports this JSON at build time, line 3) current: fresh per-service uptime history, accurate current-state banner (router down), and generatedAt freshness. It is the data half of a self-hosted status system that needs no external uptime vendor.
  • Assessment: Good on its merits. I diffed the merged file against the true base blob (e0d9a11): all 6 services present in identical order, zero dropped days within the 90-day window, zero mutated historical samples — only the in-progress day appended, exactly the merge semantics of scripts/collect-status.mjs:118-136. The scary-looking router-block deletion/re-add in the truncated diff is alignment noise; order
  • Better / existing approach: none — this is the right approach. Alternatives are worse: client-side health fetches from the status page would leak internal endpoints, fight CORS, and lose history; an external status vendor adds a dependency the repo deliberately avoided. Committing the JSON is required because the Astro page imports it at build time for a static Cloudflare Pages deploy. Searched scripts/, .github/workflows/,
  • Model: opencode/zai-coding-plan/glm-5.2
  • Bridge attempts: 2
  • Bridge warning: opencode/kimi-for-coding/k2p7: opencode: opencode error event without a message: {"type":"error","timestamp":1787691439449,"sessionID":"ses_fc5496c07ffesTKTpbeTMG2QZo","error":{"name":"UnknownError","data":{"message":"Unexpected server error. Check server logs for details.","ref":"err_3dafb2a5"}}}

🎯 Usefulness — sound

Routine automated data refresh in a closed, established pipeline: cron collector writes public/status/history.json, this PR lands it, and src/pages/status.astro bakes it into the /status page at build time.

  • Integration: Fully wired and reachable. The file is imported at build time by src/pages/status.astro:3, which renders the /status table from services[].current (ok/httpStatus/latencyMs/checkedAt, href, name, domain at status.astro:36-52). Producer side is scripts/collect-status.mjs:4 (run via the collect-status.yml cron and publish-status-history.sh:105, which also enforces the PR-scope/build/review gates desc
  • Fit with existing patterns: Matches the codebase's pattern exactly: data lives in public/ as a static asset, consumed via a build-time Astro import rather than a runtime fetch — same grain as the rest of the static site. No competing status mechanism exists (grep for history.json/collect-status found only this pipeline).
  • Real-world viability: Holds up on non-happy paths. The diff itself carries a real error-path case: router reports ok:false, status:down with httpStatus:200 — the collector's JSON-body check (collect-status.mjs:92-94, jsonStatusField 'status' != 'ok') correctly flagging an unhealthy payload behind a 200; the page will render it red as 'Unavailable' (status.astro:43-44). Merge logic appended 2026-08-20's 2→4 checks witho
  • Model: opencode/zai-coding-plan/glm-5.2
  • Bridge attempts: 1

🎯 Usefulness Audit

🟡 Per-day history is accumulated but not yet rendered anywhere [problem-fit] ``

status.astro only reads services[].current; the per-day history entries (uptimePct, samples) that make up most of this diff's bytes have no renderer today (the page even disclaims 'not an incident history'). This is forward-looking data collection in a bounded 90-day window, not dead surface — but if no history view is planned, the samples arrays are payload weight in the repo for nothing. No action required to ship this data refresh.


What this audit checks

It judges the change on its merits — not whether it was tasked out in an issue. Unticketed, fast-moving work is fine; the question is whether the change is good and whether a better or existing approach should be used instead.

Pass What it asks
Heuristic Vague title? Whitespace-only or cruft-bearing diff? (content signals only)
Duplication Do added function/class names already exist elsewhere in the repo?
Value Audit What does it do? What goal does it achieve? Is it good? Better architecture or already-exists?
Usefulness Audit Does it integrate and fit? Will it hold up in real use and actually get used?

Findings are concerns, not blocks — the human reviewer decides what to do with them.

value-audit · 20260825T205823Z

@tangletools

Copy link
Copy Markdown
Contributor

✅ No Blockers — 736d3d32

Review health 100/100 · Reviewer score 92/100 · Confidence 65/100 · 3 findings (3 low)

opencode GLM 5.2 opencode DeepSeek v4 Pro opencode DeepSeek v4 Flash aggregate
Readiness 92 92 92 92
Confidence 65 65 65 65
Correctness 92 92 92 92
Security 92 92 92 92
Testing 92 92 92 92
Architecture 92 92 92 92

Reviewer score is advisory once the run is complete and the verdict has no blockers.

Full multi-shot audit completed 1/1 planned shots over 1 changed files. Global verifier still owns final merge decision. | Full multi-shot audit completed 1/1 planned shots over 1 changed files. Global verifier still owns final merge decision. | Full multi-shot audit completed 1/1 planned shots over 1 changed files. Global verifier still owns final merge decision.

🟡 LOW Router 'down' entries report HTTP 200, rendering a contradictory public signal — public/status/history.json

The router service is recorded ok:false/status:'down' with httpStatus:200 in current (line 1420) and across every down day 2026-08-13..08-25 (e.g. lines 1599, 1979, 2100). This is the collector's intended design: checkUrl https://router.tangle.tools/api/health passes HTTP 200 but the JSON body fails the jsonStatusField check (scripts/collect-status.mjs:32-34, 91-95), so ok=false while response.status=200. Consumer src/pages/status.astro:43-47 renders 'Unavailable' (red) in the same row as the literal HTTP '200', so a reader can misr

🟡 LOW Router reported 'down' with httpStatus 200 for 5 days (current + history) — public/status/history.json

The router service 'current' block records ok:false, status:'down', httpStatus:200, latencyMs:594 (line 1418/1420), and its history shows non-operational days 08-21 (degraded, ok=1/4) through 08-25 (down, ok=0/4), all with httpStatus:200. This is expected behavior of scripts/collect-status.mjs:78-95 (jsonStatusField 'status' / jsonStatusValue 'ok'), so a 200 whose JSON body has status != 'ok' is marked down, and no error field is recorded. Not a defect in this data commit, but the status page (status.astro:43-47) will render 'Unavailable' beside '200' for router, which is ambiguous to readers and indicates either a genuine 5-day router health degradation or a c

🟡 LOW Router service recorded down for 5 consecutive days (2026-08-21..2026-08-25) while incidents array stays empty — public/status/history.json

router history days 2026-08-22..2026-08-25 are status 'down' with ok 0 of 4 checks each, and current.ok=false at generatedAt 2026-08-25T18:28:34.791Z, with httpStatus 200 (health body status field != 'ok', per collect-status.mjs jsonStatusField check). This is accurate data, not a file defect, and status.astro will correctly render Router as 'Unavailable'. Flagging only so the merge of this automated PR is not read as benign: it publishes a live multi-day Router outage to the public status page. Fix: none needed in this file; resolve the router outage or add an incidents entry before/after merge if incident communication is desired.


tangletools · 2026-08-25T20:58:59Z · trace

tangletools
tangletools previously approved these changes Aug 25, 2026

@tangletools tangletools left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Approved — 3 non-blocking findings — 736d3d32

Full multi-shot audit completed 1/1 planned shots over 1 changed files. Global verifier still owns final merge decision. | Full multi-shot audit completed 1/1 planned shots over 1 changed files. Global verifier still owns final merge decision. | Full multi-shot audit completed 1/1 planned shots over 1 changed files. Global verifier still owns final merge decision.

Full immutable report for this review: trace

Summary comment for this run: full summary


tangletools · 2026-08-25T20:58:59Z · immutable trace

@github-actions
github-actions Bot marked this pull request as draft August 26, 2026 00:29
@github-actions
github-actions Bot marked this pull request as ready for review August 26, 2026 00:29

@tangletools tangletools left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Auto-approved GitHub Actions PR — 1728a541

This PR was opened by trusted GitHub Actions automation.
The full PR reviewer audit still runs separately and will publish findings if it detects issues.

This approval is provisional. It rests on the audit running. If the audit cannot run — for example the CLI bridge rejects it — this approval is dismissed rather than left standing, so an unrun check never reads as a passing one.

tangletools · auto-approval · reason: github_actions_author · 2026-08-26T00:29:36Z

@github-actions
github-actions Bot merged commit a851793 into master Aug 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant