docs: local star-history chart, README refresh, and doc-consistency fixes - #48
Merged
Merged
Conversation
…ixes The README star-history chart broke because api.star-history.com returns 503 "All GitHub API tokens are rate-limited" for every repo (reproduced against facebook/react — service-wide, not our markup). Replace it with scripts/star_history.py + `make star-history`, which reads starred_at via `gh` and hand-renders committed light/dark SVGs into assets/ (no new deps). Fix a setup-breaking README error: step 8 named CI secrets DATABRICKS_PRINCIPAL_ID / DATABRICKS_SECRET, while onpush.yml actually reads DATABRICKS_CLIENT_ID / DATABRICKS_CLIENT_SECRET / TEMPLATE_ALERT_EMAILS. Anyone following it configured CI auth that silently failed. Correct the specs against the code: document --load-test, drop the false `bundle validate` CI step and the `--env local` claim the parser rejects, note paths-ignore and the health_check/integration-test retry exceptions, restore job1_sdp/ to the folder tree, un-blanket the .claude/ gitignore claim, and document `make whoami` / `make project-costs`. De-duplicate CLAUDE.md, where the resources/jobs.yml rule was stated four times. Widen the pre-commit ruff lint hook from ^src/ to ^(src|scripts)/ — scripts/ had never been linted, hiding 7 errors (now fixed). Add known-first-party = ["_sdk_sql"] so isort stops filing that local sibling under the third-party databricks imports. Also resolve the README TODOs (keyword-first H1, badges stay at top) and fix a stale pipeline.py comment claiming the SDP silver freezes price (it freezes product_name since #43). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…nd-consistency-fixes # Conflicts: # specs/CHANGELOG.md
Write the CHANGELOG entry at merge time (not during development, where scope growth forces rewrites), and cap each entry at ~5 rendered lines (~475 chars) on top of the existing 3-sentence rule — "3 sentences" alone had drifted into huge run-on entries. Applies to new entries only; the changelog stays append-only. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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.
What?
Three related things, all in the docs/repo-hygiene layer — no runtime behavior changes.
scripts/star_history.py+make star-historyrender committed light/dark SVGs intoassets/; the README's<picture>points at them.#TODOs (keyword-first H1; badges stay at top) and corrected the CI secret names in step 8.scripts/added to the ruff lint gate.#42/#43headers standardized onto the PR-URL format.Why?
The chart stopped rendering because
api.star-history.comreturns503 All GitHub API tokens are rate-limited— for every repo, reproduced againstfacebook/react. Nothing was wrong with our markup; the free tier had exhausted its GitHub token pool. Caching their SVG would have kept the dependency, so the chart is now built from the GitHub API directly.The most important fix is the smallest diff: README step 8 told people to configure
DATABRICKS_PRINCIPAL_ID/DATABRICKS_SECRET, butonpush.ymlreadsDATABRICKS_CLIENT_ID/DATABRICKS_CLIENT_SECRET/TEMPLATE_ALERT_EMAILS. Anyone following the setup guide configured CI auth that silently failed. For a template whose pitch is "fork this and go," that's the worst place to be wrong.specs/architecture.mdalready had the correct names, so the docs also contradicted each other.The rest came out of a documentation audit: the specs claimed a
bundle validateCI step that doesn't exist, an--env localvalue the parser rejects, omitted--load-testandjob1_sdp/entirely, and over-generalized the retry rule. CLAUDE.md is loaded every session, and theresources/jobs.ymlrule was stated in it four separate times.How?
gh api(Accept: application/vnd.github.star+json).<picture>light/dark switch.known-first-party = ["_sdk_sql"]was needed oncescripts/was linted: isort otherwise files that local sibling under the third-partydatabricksimports.CLAUDE.md): an entry is written immediately before merge rather than during development (scope grows; an early entry just gets rewritten), and is capped at ~5 rendered lines (~475 chars) on top of the 3-sentence rule — "3 sentences" alone had drifted into 17-line run-ons. Applies to new entries only; the changelog stays append-only, so the other 47 entries are untouched.Validation?
make unit-test— 16 passed.pre-commit run --all-files— both hooks pass;ruff check src/ scripts/clean; 23 files formatted.scripts/initially reported "Passed" — pre-commit skips untracked files. Once git-added, the hook caught it and failed. The gate genuinely coversscripts/.MAX_POINTS) andnice_ticksedge cases exercised with 1,000 synthetic stars.origin/main(which brought in feat: weekly USD cost pivots + generated markdown cost report #47, merged mid-branch); the only conflict was both branches adding a changelog entry at the top — resolved keeping feat: weekly USD cost pivots + generated markdown cost report #47.onpush.ymlexactly.Verified on the pushed branch: GitHub does rewrite relative paths inside
<source srcset>— both sources resolve to/andre-salvati/databricks-template/raw/<branch>/assets/…and serve200 image/svg+xml. This had been an open risk (<picture>has no fallback if a matched source fails, so a bad path would break dark mode outright); it is now confirmed working in both themes, and no absolute-URL workaround is needed.Impact in prod
No table, schema, cluster key, or task logic touched. The only
src/change is a corrected comment injob1_sdp/pipeline.py(it said the streaming silver freezes price; it freezesproduct_namesince #43). Docs-only pushes are skipped bypaths-ignore, but this PR also touchesscripts/,pyproject.toml, andsrc/, so CI will run.Chosen strategy: leave as-is (no schema change).
🤖 Generated with Claude Code