Skip to content

fix(ci): lint-readme green — lychee.toml parse error, markdownlint config + content fixes - #163

Merged
srpatcha merged 4 commits into
masterfrom
fix/lint-readme-green
Oct 6, 2026
Merged

srpatcha merged 4 commits into
masterfrom
fix/lint-readme-green

Conversation

@srpatcha

@srpatcha srpatcha commented Oct 6, 2026

Copy link
Copy Markdown
Member

Fixes #162

lint-readme has been red on master since the port in 6fc5b85.

lychee — lychee.toml failed to parse (unknown field 'lychee' at [lychee]); config keys are top-level. Removed the table header; the excludes stay as they were.

markdownlint — the workflow was ported without the .markdownlint.yml it uses in embeddedos-org/embeddedos-org (9475a30). This PR ports it, plus MD024 siblings_only for the guide's repeated per-chapter subsections. The 174 errors left after that are fixed in the content, not by disabling rules. Notable fix: all 18 chapter links in the ecosystem guide TOC were broken (headings used --, the anchors expect —). The guide also had one body H1 too many, and each Part was its own H1: I removed the H1 that duplicated the front-matter title and moved Parts/Appendices down one level.

No checks were disabled; no continue-on-error.

Local verification (workflow's own commands, lychee 0.24.2 as in CI):

$ npx --yes markdownlint-cli '**/*.md' --ignore node_modules --ignore docs/wiki; echo $?
0
$ lychee --offline --no-progress --verbose --exclude-path '^docs/wiki/' './**/*.md'
🔍 87 Total (in 8ms) 🔗 65 Unique ✅ 64 OK 🚫 0 Errors 👻 23 Excluded
$ python3 scripts/check-product-canon.py
OK: no canonical-list violations.

lychee exited 3 before checking a single link: its config keys are
top-level, so the `[lychee]` table header made the whole file an
unknown-field parse error. Dropping the header keeps every existing
exclude and lets the offline check run (64 OK, 0 errors).

The lint-readme workflow was ported from embeddedos-org/embeddedos-org
in 6fc5b85 without the .markdownlint.yml it runs with there (9475a30),
so markdownlint ran on defaults and reported 476 errors, 253 of them
MD060 table-pipe style. Port that config (MD013 tables exempt, MD060
consistent) and add MD024 siblings_only: the ecosystem guide repeats
Overview/Key Features/Architecture under every chapter; duplicate
headings under the same parent are still reported.

Refs #162
Content fixes for the 174 markdownlint errors left after the config
commit, following the embeddedos-org cleanup (87c3262):

- ecosystem guide: the TOC links to em-dash anchors but chapter
  headings used `--`, so all 18 chapter links were dead (MD051). Use
  the em dash the TOC and the front-matter title already use.
- ecosystem guide: the body H1 duplicated the front-matter title and
  every Part was another H1 (MD025). Drop the duplicate and demote the
  Part/Appendices subtree one level, so there is one title.
- `text` on 27 bare diagram/tree fences (MD040); autolink bare URLs
  and emails, backtick the repo name in merge-proposal (MD034); join
  example quotes with `>` (MD028); missing blank lines (MD022/MD032),
  extra blank line (MD012), stray H1 in CLAUDE.md (MD025); byline and
  colophon kept on two lines via a hard break instead of
  emphasis-only paragraphs (MD036); prose reflowed to 80 columns
  (MD013) with wording unchanged.

Fixes #162
@srpatcha

srpatcha commented Oct 6, 2026

Copy link
Copy Markdown
Member Author

The failing test job (PR Quality Check, run 37426805042) predates this PR and isn't caused by it. Both lint-readme jobs this PR targets pass.

  • Every failure is [firefox] or [webkit] with browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/firefox-1543/.... playwright.config.js sets up chromium, firefox and webkit projects, but the workflow only runs npx playwright install --with-deps chromium.
  • PR chore: add governance and community navigation #161 (run 34563172662, 2026-09-11) failed with exactly the same result before this branch existed: 260 failed / 260 passed, same missing-firefox error.

This PR doesn't touch HTML, JS or Playwright config. I've kept that fix out of this PR so its scope stays limited to #162.

playwright.config.js defines chromium, firefox and webkit projects, but the
workflow installed only chromium. Every firefox and webkit test failed at
browserType.launch ('Executable doesn't exist'), so 'test' was red on every
PR, including merged #151, #157 and #161.
Firefox renders XML in its own viewer, where page.textContent('body') never
resolves, so 'sitemap.xml is valid' timed out on Firefox once the browser
was actually installed. The test now fetches the file and checks it is a
<urlset> naming the site.
@srpatcha
srpatcha merged commit 528fde6 into master Oct 6, 2026
7 checks passed
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.

lint-readme red on master: lychee.toml does not parse, 476 markdownlint errors

1 participant