Skip to content

Commit cc70db3

Browse files
tbjersclaude
andcommitted
docs: add CONTRIBUTING.md and issue templates, close out Phase 7 & 8
Fork-PR and deploy-button flows were verified manually; secret scanning is provided by GitGuardian rather than a committed gitleaks step. With those items and the new CONTRIBUTING.md/issue templates, Phase 7 and 8 are complete in PROGRESS.md and README's status table. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
1 parent fb8ddef commit cc70db3

6 files changed

Lines changed: 184 additions & 13 deletions

File tree

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
name: Bug report
2+
description: Something in coverage-tracker isn't working as expected.
3+
labels: ['bug']
4+
body:
5+
- type: textarea
6+
id: description
7+
attributes:
8+
label: What happened?
9+
description: A clear description of the bug.
10+
validations:
11+
required: true
12+
13+
- type: textarea
14+
id: repro
15+
attributes:
16+
label: Steps to reproduce
17+
description: What did you do, step by step?
18+
placeholder: |
19+
1. ...
20+
2. ...
21+
3. ...
22+
validations:
23+
required: true
24+
25+
- type: textarea
26+
id: expected
27+
attributes:
28+
label: Expected behavior
29+
validations:
30+
required: true
31+
32+
- type: textarea
33+
id: actual
34+
attributes:
35+
label: Actual behavior
36+
validations:
37+
required: true
38+
39+
- type: input
40+
id: worker-version
41+
attributes:
42+
label: Worker version / commit
43+
description: The `version` field in `package.json`, or the commit SHA you deployed.
44+
validations:
45+
required: false
46+
47+
- type: dropdown
48+
id: cloudflare-plan
49+
attributes:
50+
label: Cloudflare plan
51+
options:
52+
- Free
53+
- Paid (Workers/D1)
54+
- Not sure
55+
validations:
56+
required: false
57+
58+
- type: textarea
59+
id: logs
60+
attributes:
61+
label: Relevant logs
62+
description: Output from `wrangler tail`, browser console, or CI, if applicable.
63+
render: shell
64+
validations:
65+
required: false

.github/ISSUE_TEMPLATE/config.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
blank_issues_enabled: false
2+
contact_links:
3+
- name: Installation and setup help
4+
url: https://github.com/CoverageTracker/coverage-tracker/blob/main/docs/INSTALLATION.md
5+
about: Questions about deploying or configuring your own instance should start here, not as a bug report.
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
name: Feature request
2+
description: Suggest an idea for coverage-tracker.
3+
labels: ['enhancement']
4+
body:
5+
- type: textarea
6+
id: problem
7+
attributes:
8+
label: What problem does this solve?
9+
description: What are you trying to do that coverage-tracker doesn't support today?
10+
validations:
11+
required: true
12+
13+
- type: textarea
14+
id: solution
15+
attributes:
16+
label: Proposed solution
17+
description: What would you like to happen?
18+
validations:
19+
required: true
20+
21+
- type: textarea
22+
id: alternatives
23+
attributes:
24+
label: Alternatives considered
25+
description: Any workarounds or other approaches you've thought about.
26+
validations:
27+
required: false

CONTRIBUTING.md

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
# Contributing
2+
3+
Thanks for considering a contribution to coverage-tracker. This is a small,
4+
self-hostable project — most changes should be small too.
5+
6+
## Project layout
7+
8+
This repo has **three independent `package.json`s**, each with its own
9+
dependencies:
10+
11+
| Directory | What it is |
12+
| ------------------------- | ----------------------------------------------------- |
13+
| `/` (root) | The Cloudflare Worker — Hono API + cron rollup |
14+
| `dashboard/` | SvelteKit 5 dashboard, builds into the Worker |
15+
| `.github/actions/report/` | The reporting GitHub Action (parses coverage reports) |
16+
17+
Install and work on each independently:
18+
19+
```bash
20+
npm install # root (Worker)
21+
npm --prefix dashboard install # dashboard
22+
npm --prefix .github/actions/report install
23+
```
24+
25+
See the root [README.md](README.md#development) for the full local dev loop
26+
(`wrangler.json`, `.dev.vars`, D1 migrations, `npm run dev`).
27+
28+
## Before opening a PR
29+
30+
Run these at the root, unless you only touched one sub-project:
31+
32+
```bash
33+
npm run lint # ESLint (root)
34+
npm run format:check # Prettier (root)
35+
npm run typecheck # tsc --noEmit
36+
npm test # vitest, real D1 bindings via @cloudflare/vitest-pool-workers
37+
```
38+
39+
Or check formatting across all three projects at once:
40+
41+
```bash
42+
npm run format:all:check
43+
```
44+
45+
CI (`.github/workflows/ci.yml` and `action-test.yml`) runs the equivalent
46+
checks plus Playwright e2e tests and an Action self-test — a PR won't merge
47+
until those are green.
48+
49+
## Architecture invariants
50+
51+
Before touching auth, routing, or the D1 schema, read
52+
[CLAUDE.md](CLAUDE.md) — it documents the non-negotiable invariants for this
53+
project (single Worker serving both the SPA and the API, why `/api/*` must
54+
never sit behind a Cloudflare Access application, the two-table coverage
55+
rollup contract, etc.). PRs that violate one of those invariants will be
56+
asked to change regardless of whether the tests pass.
57+
58+
## Commit messages
59+
60+
This repo uses [Conventional Commits](https://www.conventionalcommits.org/):
61+
`feat:`, `fix:`, `chore:`, `docs:`, `ci:`, `test:`, `refactor:`, optionally
62+
scoped (`fix(report): ...`). Look at `git log` for examples.
63+
64+
## Code review
65+
66+
[docs/CODEOWNERS](docs/CODEOWNERS) lists who reviews changes to specific
67+
paths. Secret scanning runs automatically via GitGuardian — don't commit
68+
`.dev.vars`, `wrangler.json`, or any real credentials (see the templates:
69+
`.dev.vars.example`, `wrangler.example.jsonc`).
70+
71+
## License
72+
73+
By contributing, you agree your contribution is licensed under this repo's
74+
[MIT License](LICENSE).

README.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -253,12 +253,12 @@ npm run deploy
253253

254254
See [docs/PROGRESS.md](docs/PROGRESS.md) for a full breakdown. Current state:
255255

256-
| Phase | Description | Status |
257-
| ----- | ---------------------------------------------------- | ----------- |
258-
| 1–6 | Core Worker, webhooks, dashboard, reporting Action | Complete |
259-
|| Convergence refactor (single Worker + static assets) | Complete |
260-
| 7 | "Deploy to Cloudflare" button | In progress |
261-
| 8 | Docs, OSS hygiene, public release | In progress |
256+
| Phase | Description | Status |
257+
| ----- | ---------------------------------------------------- | -------- |
258+
| 1–6 | Core Worker, webhooks, dashboard, reporting Action | Complete |
259+
|| Convergence refactor (single Worker + static assets) | Complete |
260+
| 7 | "Deploy to Cloudflare" button | Complete |
261+
| 8 | Docs, OSS hygiene, public release | Complete |
262262

263263
---
264264

docs/PROGRESS.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ Self-test workflow created. Uses `min-coverage: '20'`; actual coverage is 98.09%
154154
- [x] **Push to main** — OIDC token mints, `/ingest` accepts it, 2 metrics ingested (`coverage: 98.09%`, `duplication: 0.00%`)
155155
- [x] **Push to feature branch** — Action exits cleanly with "Not on default branch (test/matrix-threshold-and-branch ≠ main) — skipping ingest." info log; job green, no 422, no metric written
156156
- [x] **PR from same repo** — baselines fetched, Check Run posted on PR head SHA with summary table; pass (`min-coverage: '20'`) and fail (`min-coverage: '99'`) cases both verified via PR #2
157-
- [ ] **Fork PR** (if applicable) — OIDC mint fails gracefully (warning, not failure); Check Run post skipped gracefully
157+
- [x] **Fork PR** — verified manually: OIDC mint fails gracefully (warning, not failure); Check Run post skipped gracefully
158158
- [x] **jscpd** — auto-installs on fresh runner; `Duplication: 0.00% (no clones detected)` collected; appears in Check Run summary table
159159
- [x] **Threshold breach**`min-coverage: '99'` with coverage at 98.09%; action fails with "One or more coverage thresholds were not met.", Check Run posted with `conclusion: failure`
160160

@@ -218,21 +218,21 @@ reads the file." See `docs/plans/consumer-generated-reports-migration-plan-v3.md
218218

219219
---
220220

221-
## Phase 7 — "Deploy to Cloudflare" button 🔶 In progress
221+
## Phase 7 — "Deploy to Cloudflare" button ✅ Complete
222222

223223
- [x] `deploy` npm script runs `wrangler d1 migrations apply DB --remote` before `wrangler deploy` — uses binding name (`DB`) not database name so the deploy flow works when users specify a different database name
224224
- [x] `wrangler.json` committed without `database_id` — Cloudflare's deploy flow provisions D1 automatically and fills in the ID
225225
- [x] Button added to `README.md`
226-
- [ ] Validate end-to-end via the deploy button flow (fork the repo, click button, confirm D1 is provisioned and migrations apply)
226+
- [x] Validated end-to-end via the deploy button flow (fork the repo, click button, confirmed D1 provisioned and migrations applied)
227227

228228
---
229229

230-
## Phase 8 — Docs, OSS hygiene, public release 🔶 In progress
230+
## Phase 8 — Docs, OSS hygiene, public release ✅ Complete
231231

232232
- [x] `docs/INSTALLATION.md` — full setup guide, updated for converged architecture
233233
- [x] Repository public at `github.com/CoverageTracker/coverage-tracker`
234234
- [x] `wrangler.example.jsonc` and `.dev.vars.example` committed as templates (updated for convergence)
235235
- [x] `README.md` — root-level project overview, quick-start, badge examples (updated for convergence)
236-
- [ ] `CONTRIBUTING.md`
237-
- [ ] GitHub issue templates
238-
- [ ] Pre-commit secret scan (gitleaks) in CI (A9)
236+
- [x] `CONTRIBUTING.md`
237+
- [x] GitHub issue templates
238+
- [x] Secret scanning provided by GitGuardian, per maintainer (supersedes the gitleaks CI step originally planned for A9)

0 commit comments

Comments
 (0)