docs: community health files + README gaps#55
Merged
Conversation
…ONTRIBUTING.md (#10)
DocGerd
commented
Jul 17, 2026
… the worker (PR #55 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.
Closes #10
Summary
SECURITY.mdreferencing GitHub private vulnerability reporting(enabled on the repo as part of this PR —
private-vulnerability-reportingnow reports
enabled: true) andCONTRIBUTING.mdcovering ground rules,dev commands, the data pipeline, and the design-spec source of truth.
## Screenshotssection toREADME.md(start view + a plannedFlensburg → Sønderborg route) and a
## Architecturesection with amermaid diagram of the pipeline → committed-assets → runtime data flow,
plus a short timeout-policy note appended to the Development section.
docs/screenshots/capture.mjs, a standalone Playwright script (notwired into CI) that drives the live app to (re)generate the two README
screenshots on demand.
Deviations from the task brief
The brief's
capture.mjsdraft used selectors that don't match the currentapp (verified against
app/e2e/plan.spec.ts,HarborPicker.tsx,App.tsx,RouteSummary.tsxbefore running anything, per repo convention):<input>has no placeholder —getByPlaceholder(/search harbor/i)never matches. Fixed to the e2e pattern: region-scopedgetByRole('searchbox')insidegetByRole('region', { name: 'Origin' | 'Destination' })..harbor-picker li button, first result), not by name regex — a harbor's displayed name candiffer from the search string by locale (e.g. Sønderborg displays as
"Sonderburg" in German; see
plan.spec.ts's comment on this).aria-label("English anzeigen" on first load), not its visible "EN" text —
aria-labelwins over text content in accessible-name computation, and unscoped "EN"
string-matches several harbor names (Flensburg, Apenrade, ...) too.
RouteSummary(rig tabs, ★ recommendation, legs, totals) only mounts onthe "Routes" tab (
App.tsx:tab === 'routes'), not inline on "Plan" —the script switches tabs after planning before screenshotting.
NODE_PATH=app/node_modules(suggested as a fallback in the brief) doesnot work for this script: Node's ESM resolver, unlike CJS
require,ignores
NODE_PATHentirely. Sincedocs/screenshots/has no ancestornode_modulescontaining@playwright/test, the script instead resolvesit via an explicit relative
file://URL computed fromimport.meta.url(
app/node_modules/@playwright/test/index.mjs), sonode docs/screenshots/capture.mjsworks standalone from the repo root with noextra env var.
"Routes" tab (empirically, deep in the legs table) — the script now scrolls
.app-panelback to the top before the final screenshot so the ★recommendation and route totals are actually visible in the captured image,
not just the leg rows.
Both screenshots were regenerated against the live app with these fixes and
visually confirmed (map + harbor UI on the start view; a real rendered route
polyline, rig comparison with ★ recommendation, and per-leg table on the
route view) before committing.
Test plan
gh api repos/DocGerd/sail_command/private-vulnerability-reporting --jq .enabled→truenpx markdownlint-cli2 README.md SECURITY.md CONTRIBUTING.md— 11advisory findings (no committed config), all pre-existing style patterns
(long lines, bare URL, no first-line H1) or the same style applied to new
content; nothing blocking.
docs/screenshots/start-view.png/plan-route.pngregenerated vianode docs/screenshots/capture.mjsagainst the live app and visuallyconfirmed (322 KB / 382 KB, both well above the blank-capture threshold).
rich diff.
🤖 Generated with Claude Code