feat(desk): a Repo health section on the overview, from the repo-standard conformance snapshot (#81) - #82
Merged
Conversation
…dard conformance snapshot (#81) The desk answers what to pick up, what is spoken for and what is open. It could not answer which repos run the standard CI, and whether it passes — the question .github-private#912 asked, and the one #485 filed for the fleet feed and never started. That answer now exists as a public snapshot, published daily by bounded-systems/.github's repo-standard-conformance lane. A fourth section, the same shape as the other three: selectCi refuses any feed not named repo-standard-conformance or without a parseable generated_at, carries the lane's totals through untouched, and lists the repos with findings worst first, each finding as a sentence. The Worker reads CI_FEED_URL once per overview request beside the other two feeds and fails closed per section: an unreadable snapshot keeps its slot, says why, and the page still serves 5xx. The summary line says the denominator out loud — how many repos call the standard, how many are green, how many could not be measured — because "42 with findings" alone hides the fact that matters. Rows are repos, not issues, so row() learned to omit the number tail when there is none, rather than printing null. No host of its own yet; the section links to the snapshot. Nothing here ranks, scores, or re-counts. Rendered against the live feeds before commit: 200, section present. Closes #81 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CAE3i1NCfwwSVYScKWvEdd
…i reads finding copy with hasOwn CodeQL flagged the bare-URL includes() in worker.test.mjs as incomplete URL substring sanitization (js/incomplete-url-substring-sanitization, high). The assertion meant the link target, so it now matches the href attribute, as the render tests already do — stronger, and no longer a sanitizer shape. Alongside: a finding code named like an Object.prototype member would have resolved to a function rather than passing through as text. hasOwn, and a case that pins it. Claim-issue: #81 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CAE3i1NCfwwSVYScKWvEdd
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.
Closes #81. Epic: bounded-systems/.github-private#912. Feed: bounded-systems/.github#381 (#383, #385).
What this adds
A fourth section on desk.bounded.tools, the same shape as the other three: Repo health — which public repos run the org's standard CI, and whether it passes.
selectCi(feed)insrc/select.js: refuses any feed not namedrepo-standard-conformanceor without a parseablegenerated_at; carries the lane'stotalsthrough untouched (never re-counts); lists the repos with findings, worst first, each finding code rendered as a sentence (unknown codes pass through as written).selectOverview, rendered by the existingoverviewSection. Rows are repos, not issues, sorow()now omits the number tail when there is none rather than printingnull. The section links to the snapshot itself (href) until aci.host exists.CI_FEED_URLinwrangler.jsonc, read once per overview request beside the other two feeds. Fails closed per section: an unreadable or wrong feed keeps its slot, says why, and the page still serves 5xx.Verified
npm test): 14 new acrossselect,worker,render— feed-name and date refusals, worst-first ordering, totals carried verbatim, unknown finding codes, empty snapshot, a section missing from the overview failing closed, the wrong feed served asCI_FEED_URLrefused, a missingCI_FEED_URLnamed, rows without a number.What it does not do
It does not rank, score, or re-count. Findings are the lane's and gaps are the lane's limits; neither is summed here. It reads no private projection. A
ci.host is the next increment, not this one.Manual items
None.
CI_FEED_URLis a var inwrangler.jsoncand ships with the deploy.🤖 Generated with Claude Code
https://claude.ai/code/session_01CAE3i1NCfwwSVYScKWvEdd
Generated by Claude Code