Skip to content

Fix markdown documentation formatting issues#10

Merged
leynos merged 5 commits intomainfrom
codex/fix-markdownlint-formatting-issues
Aug 15, 2025
Merged

Fix markdown documentation formatting issues#10
leynos merged 5 commits intomainfrom
codex/fix-markdownlint-formatting-issues

Conversation

@leynos
Copy link
Copy Markdown
Owner

@leynos leynos commented Aug 15, 2025

Summary

  • Rename duplicated guidance sections in AGENTS.md
  • Add explicit languages to fenced code blocks and tables in docs
  • Correct table markup and long lines across documentation

Testing

  • make fmt
  • make check-fmt
  • make lint
  • make test
  • make markdownlint (fails: AGENTS.md requires additional cleanup)

https://chatgpt.com/codex/tasks/task_e_689e50e7461483228a7ce1f06995cddd

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Aug 15, 2025

Summary by CodeRabbit

  • Documentation

    • Expanded language-specific guidance for Rust and Frontend (dependency management, error handling, public APIs, runtime validation, nominal branding, compiler settings, testing/observability/release discipline).
    • Improved formatting: language-tagged code blocks, refined headings and tables, footnote-based citations, and clearer wording/structure across multiple guides.
    • Added concise introductory context for the frontend and future platform shells.
  • Chores

    • Introduced Markdown linting configuration (selected rules enabled; long-line rule disabled) to standardise documentation formatting.

Walkthrough

Perform an editorial overhaul of AGENTS.md to add prescriptive Rust and Frontend (TypeScript) guidance and normalise formatting across multiple docs. Update dependency/error-handling/testing/runtime-validation/compiler/tooling guidance and retag code fences for better highlighting. Do not change code or public APIs.

Changes

Cohort / File(s) Change summary
Engineering Guidelines Overhaul
AGENTS.md
Restructure and expand guidance into language-specific sections (Rust, Frontend): dependency management rules (caret SemVer, forbid unstable specifiers), error-handling patterns (semantic enums, opaque vs domain errors), public API/export rules, runtime validation and nominal branding, compiler/TS config recommendations, testing/observability/release discipline, tooling/checklist updates, and code-style examples. Documentation-only; no API changes.
Docs Formatting Normalisation
docs/cloud-native-ephemeral-previews.md, docs/repository-structure.md, docs/wildside-high-level-design.md
Retag code fences with language identifiers (hcl/yaml/bash/text), convert inline numeric citations to Markdown footnotes, rework table headings to explicit markdown headers, adjust headings/indentation/wording for consistency. Preserve semantics and configuration values.
Linting Configuration Added
.markdownlint.json
Add Markdown lint configuration enabling MD022, MD031, MD032 and disabling MD013. Documentation/formatting change only.

Sequence Diagram(s)

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~8 minutes

Poem

Ink the rules and ship the light,
Rust and TS now set upright.
Headings tidy, fences bright,
Docs align and read just right.
No code shifted — only sight. ✨

✨ Finishing Touches
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch codex/fix-markdownlint-formatting-issues

🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

CodeRabbit Commands (Invoked using PR/Issue comments)

Type @coderabbitai help to get the list of available commands.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Status, Documentation and Community

  • Visit our Status Page to check the current availability of CodeRabbit.
  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Copy Markdown

@sourcery-ai sourcery-ai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry @leynos, you have reached your 24-hour rate limit for Sourcery. Please try again later

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 12

🔭 Outside diff range comments (15)
docs/wildside-high-level-design.md (1)

1168-1174: Fix broken citation sentence in Table 3 note.

The sentence “Note: Cost estimates are based on pricing data from sources , and.83 …” has broken/missing references and will fail markdownlint/content checks.

Apply this diff to remove the broken references while keeping the intent:

-Note: Cost estimates are based on pricing data from sources , and.83 LLM costs
+Note: Cost estimates are based on publicly available provider pricing at the time of writing. LLM costs
 are highly variable and represent the largest financial risk; the estimate
 assumes an average of 2 walks/month per user, 10 POIs per walk, and 1,000
 tokens per POI description at an average cost of $10/M tokens.
docs/repository-structure.md (3)

198-201: Remove stray “``” before code fences.

The orphaned fence marker (“``”) before the dockerfile fence breaks Markdown.

Apply:

-``
-
 ```dockerfile
 # ===== Build stage =====
 FROM rust:1.79-alpine AS build

228-234: Remove stray “``” before code fences.

The orphaned fence marker (“``”) before the dockerfile fence breaks Markdown.

Apply:

-``
-
 ```dockerfile
 # ===== Build stage =====
 FROM oven/bun:1 AS build

254-260: Remove stray “``” before code fences.

The orphaned fence marker (“``”) before the compose fence breaks Markdown.

Apply:

-``
-
 ```yaml
 version: "3.9"
 services:
   backend:
docs/cloud-native-ephemeral-previews.md (6)

108-116: Remove stray “```yaml” fence after closing an HCL block.

A dangling opening fence (“```yaml”) appears right after an hcl fence closes. This breaks Markdown rendering.

Apply:

-    ```yaml
-
 This configuration establishes the required providers and sets up the
 DigitalOcean provider.4 The DigitalOcean API token is defined as a sensitive
 variable, with the expectation that its value will be supplied via an

135-141: Remove stray “```yaml” fence after closing the VPC block.

Another dangling fence (“```yaml”) appears after the hcl block. Remove it.

Apply:

-    ```yaml
-
 ### DOKS Cluster Resource (`digitalocean_kubernetes_cluster`)

1147-1153: Fix YAML spacing in docker/build-push-action step.

Keys in the action inputs lack required spaces, which can confuse readers and tools.

Apply:

-          context:.
-          file:./Dockerfile # Path to the application's Dockerfile
+          context: .
+          file: ./Dockerfile # Path to the application's Dockerfile

1263-1277: Fix shell syntax in “Commit and Push Manifests” step.

The script has multiple syntax errors: “git add.”, missing space after if, and cd...

Apply:

-          git add.
-          if! git diff --staged --quiet; then
+          git add .
+          if ! git diff --staged --quiet; then
             git commit -m "Deploy preview for PR #${{ github.event.number }} at tag ${{ github.sha }}"
             git push
           else
             echo "No changes to commit."
           fi
-          cd..
+          cd ..

1310-1323: Fix teardown job guard condition.

The “if; then” is invalid and will fail if used as reference. Guard with a directory existence check.

Apply:

-          if; then
+          if [ -d "${MANIFESTS_DIR}" ]; then
             git config user.name "github-actions[bot]"
             git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
             git rm -r ${MANIFESTS_DIR}
             git commit -m "Teardown preview environment for PR #${PR_NUMBER}"
             git push
           else
             echo "Directory ${MANIFESTS_DIR} does not exist. Nothing to tear down."
           fi

1231-1239: Set TLS hosts as an array in yq patch.

ingress.tls.hosts must be an array. The current command assigns a scalar string.

Apply:

-          yq e ".spec.values.ingress.tls.hosts = \"${SUBDOMAIN}\"" -i ${MANIFESTS_DIR}/patch-main.yaml
-          yq e ".spec.values.ingress.tls.secretName = \"pr-${PR_NUMBER}-tls\"" -i ${MANIFESTS_DIR}/patch-main.yaml
+          yq e ".spec.values.ingress.tls = [{\"hosts\": [\"${SUBDOMAIN}\"], \"secretName\": \"pr-${PR_NUMBER}-tls\"}]" -i ${MANIFESTS_DIR}/patch-main.yaml
AGENTS.md (5)

168-180: Surround the “Dependency Management (Rust)” heading with blank lines.

Add a blank line before and after the heading to clear MD022.

Apply:

-### Dependency Management (Rust)
+### Dependency Management (Rust)
+
 ...
 
-### Error Handling (Rust)
+
+### Error Handling (Rust)

291-299: Surround the “Error Handling (Frontend)” heading with blank lines.

Add a blank line before the heading to satisfy MD022.

Apply:

-  `Date.now()` or `Math.random()` directly in business logic.
-### Error Handling (Frontend)
+  `Date.now()` or `Math.random()` directly in business logic.
+
+### Error Handling (Frontend)

316-326: Surround the “Dependency Management (Frontend)” heading and list with blank lines.

Fix MD022/MD032 by adding blank lines before the heading and before the list.

Apply:

-### Dependency Management (Frontend)
+### Dependency Management (Frontend)
+
 - **Version policy**: Use caret requirements (`^x.y.z`) for all direct
   dependencies. Avoid `*`, `>=` or tag aliases like `latest`. Use tilde
   (`~x.y.z`) only with a documented justification.

403-413: Surround the “Release Discipline” heading and list with blank lines.

Resolve MD022/MD032 for this section.

Apply:

-### Release Discipline
+### Release Discipline
+
 - **Conventional Commits + Changesets** for versioning (libraries) and change
   logs.

415-423: Surround the “Quick Checklist” list with blank lines.

Add a blank line after the heading and before the list to satisfy MD032.

Apply:

-### Quick Checklist (Before Commit)
-- `bun run fmt`, `bun run lint`, `bun run test` all clean; no Biome warnings;
+### Quick Checklist (Before Commit)
+
+- `bun run fmt`, `bun run lint`, `bun run test` all clean; no Biome warnings;
   no TypeScript errors; coverage thresholds hold.
📜 Review details

Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
Plan: Pro

💡 Knowledge Base configuration:

  • Jira integration is disabled

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 30cc25a and f1177f7.

📒 Files selected for processing (4)
  • AGENTS.md (9 hunks)
  • docs/cloud-native-ephemeral-previews.md (32 hunks)
  • docs/repository-structure.md (10 hunks)
  • docs/wildside-high-level-design.md (6 hunks)
🧰 Additional context used
📓 Path-based instructions (2)
**/*.md

📄 CodeRabbit Inference Engine (AGENTS.md)

**/*.md: Documentation must use en-GB-oxendict spelling and grammar (except LICENSE name)
Validate Markdown with make markdownlint
Run make fmt after doc changes to format Markdown and fix tables
Validate Mermaid diagrams by running make nixie
Wrap Markdown paragraphs and bullets at 80 columns; do not wrap tables/headings; code blocks at 120 columns; use dashes for bullets; use GFM footnotes

Files:

  • docs/cloud-native-ephemeral-previews.md
  • docs/repository-structure.md
  • docs/wildside-high-level-design.md
  • AGENTS.md

⚙️ CodeRabbit Configuration File

**/*.md: * Avoid 2nd person or 1st person pronouns ("I", "you", "we")

  • Use en-GB-oxendict (-ize / -our) spelling and grammar
  • Headings must not be wrapped.
  • Documents must start with a level 1 heading
  • Headings must correctly increase or decrease by no more than one level at a time
  • Use GitHub-flavoured Markdown style for footnotes and endnotes.
  • Numbered footnotes must be numbered by order of appearance in the document.

Files:

  • docs/cloud-native-ephemeral-previews.md
  • docs/repository-structure.md
  • docs/wildside-high-level-design.md
  • AGENTS.md
docs/**/*.md

📄 CodeRabbit Inference Engine (AGENTS.md)

docs/**/*.md: Use docs/ Markdown as the source of truth for requirements, dependencies, and architecture
Proactively update docs/ when decisions or dependencies change to keep documentation current
Keep small TS examples in docs that typecheck during builds; mirror production patterns

Files:

  • docs/cloud-native-ephemeral-previews.md
  • docs/repository-structure.md
  • docs/wildside-high-level-design.md
🪛 LanguageTool
docs/repository-structure.md

[style] ~86-~86: Redundant conjunctions can lead to confusion; consider removing a conjunction here.
Context: ...time (e.g., /api-docs/openapi.json) and/or emit a static spec/openapi.json via `...

(AND_OR)


[uncategorized] ~87-~87: Possible missing article found.
Context: ....jsonviabuild.rs` or a small bin. + Frontend runs orval under bun to generate a ...

(AI_HYDRA_LEO_MISSING_THE)


[style] ~94-~94: Consider using the typographical ellipsis character here instead.
Context: ...a::ToSchema)]. + api/handlers carry#[utoipa::path(...)]per route. +main.rsderives#[de...

(ELLIPSIS)


[style] ~102-~102: Would you like to use the Oxford spelling “centralizes”? The spelling ‘centralises’ is also correct.
Context: ...nctions. + A small src/api/fetcher.ts centralises base URL, auth, and error handling. + T...

(OXFORD_SPELLING_Z_NOT_S)


[misspelling] ~103-~103: This word is normally spelled as one.
Context: ...error handling. + TanStack Query hooks (hand-written or template‑generated) wrap the client ...

(EN_COMPOUNDS_HAND_WRITTEN)


[uncategorized] ~138-~138: Loose punctuation mark.
Context: ...ls. + packages/tokens/src/tokens.json: global primitives (color.*, space.*...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~140-~140: Loose punctuation mark.
Context: ...ges/tokens/src/themes/{light,dark}.json: semantic overrides (semantic.bg.defa...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~142-~142: Loose punctuation mark.
Context: ...ckages/tokens/build/style-dictionary.js: exports + dist/css/variables.css` (C...

(UNLIKELY_OPENING_PUNCTUATION)


[grammar] ~365-~365: The word ‘registry’ is not correct in this context. Use one of the suggestions or replace it with an appropriate verb.
Context: ...acts**: + Build backend image → push to registry. + Build frontend dist → upload to S...

(VB_TO_NN_DT)

AGENTS.md

[uncategorized] ~55-~55: Possible missing comma found.
Context: ...d demonstrating the behaviour being corrected both to validate the fix and to guard a...

(AI_HYDRA_LEO_MISSING_COMMA)


[grammar] ~69-~69: Did you mean “fewer”? The noun “characters” is countable.
Context: ... change (ideally 50 characters or less). - Body: Separate the subject from...

(FEWER_LESS)


[style] ~78-~78: Would you like to use the Oxford spelling “Recognizing”? The spelling ‘Recognising’ is also correct.
Context: ...# Refactoring Heuristics & Workflow - Recognising Refactoring Needs: Regularly assess t...

(OXFORD_SPELLING_Z_NOT_S)


[style] ~95-~95: Consider using “many”.
Context: ...change requiring small modifications in many different classes or functions. - **Post-Commit R...

(NUMEROUS_DIFFERENT)


[grammar] ~102-~102: “Change” is a singular noun. It appears that the verb form is incorrect.
Context: ...mit** after the functional change commit. - Ensure the refactoring adheres to th...

(PCT_SINGULAR_NOUN_PLURAL_VERB_AGREEMENT)


[style] ~237-~237: The double modal “requires installed” is nonstandard (only accepted in certain dialects). Consider “to be installed”.
Context: ...bun.lock; audit:snyk requires installed dependencies—run bun install before i...

(NEEDS_FIXED)


[style] ~288-~288: Would you like to use the Oxford spelling “Centralize”? The spelling ‘Centralise’ is also correct.
Context: ...signal in fetchers. - Time & RNG: Centralise now() and rng() adapters; never cal...

(OXFORD_SPELLING_Z_NOT_S)

🪛 markdownlint-cli2 (0.17.2)
AGENTS.md

77-77: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


78-78: Lists should be surrounded by blank lines

(MD032, blanks-around-lists)


168-168: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


181-181: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


265-265: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


285-285: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


291-291: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


316-316: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


403-403: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


415-415: Lists should be surrounded by blank lines

(MD032, blanks-around-lists)

⏰ Context from checks skipped due to timeout of 120000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: build
  • GitHub Check: build
🔇 Additional comments (4)
docs/wildside-high-level-design.md (1)

269-281: Validate Table Alignment and Formatting

  • Confirm each row in the Competitive Feature Matrix uses exactly six columns (seven ‘|’ characters).
  • Run your markdown formatter and linter (make fmt && make markdownlint) locally to ensure no table lines wrap.
docs/cloud-native-ephemeral-previews.md (1)

87-97: Run linting and validate fenced code blocks
Run make fmt and make markdownlint in your local environment. Confirm all HCL, YAML and Bash code blocks in docs/cloud-native-ephemeral-previews.md are syntactically valid and copy-pasteable at these ranges:

  • Lines 87–97
  • Lines 125–136
  • Lines 144–152
  • Lines 200–210
  • Lines 275–303
  • Lines 318–353
  • Lines 761–778
  • Lines 829–860
  • Lines 1088–1099

Fix any lint errors to ensure every fenced block compiles or parses without issues.

AGENTS.md (2)

1-467: Run Markdown toolchain locally

Run make fmt and make markdownlint in your local environment to confirm that AGENTS.md no longer triggers MD022, MD031, or MD032 errors.


288-290: Use Oxford “-ize” spelling per style guide.

Change “Centralise” to “Centralize”.

Apply:

-- **Time & RNG**: Centralise `now()` and `rng()` adapters; never call
+- **Time & RNG**: Centralize `now()` and `rng()` adapters; never call

Likely an incorrect or invalid review comment.

Comment thread AGENTS.md
Comment thread AGENTS.md
Comment thread AGENTS.md Outdated
Comment thread AGENTS.md Outdated
Comment thread docs/repository-structure.md Outdated
Comment thread docs/repository-structure.md Outdated
Comment thread docs/repository-structure.md Outdated
Comment thread docs/repository-structure.md Outdated
Comment thread docs/repository-structure.md Outdated
Comment thread docs/wildside-high-level-design.md Outdated
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

🔭 Outside diff range comments (5)
docs/repository-structure.md (2)

235-245: Remove second‑person phrasing in Dockerfile comments.

Docs must avoid second‑person pronouns. Rewrite the comments to be impersonal.

Apply:

 RUN apk add --no-cache musl-dev pkgconfig openssl-dev # adjust for your deps
@@
-# build with musl (if your deps allow); otherwise use gnu + distroless base later
+# build with musl (where dependencies allow); otherwise use gnu + distroless base later

And:

-RUN apk add --no-cache musl-dev pkgconfig openssl-dev # adjust for your deps
+RUN apk add --no-cache musl-dev pkgconfig openssl-dev # adjust for required dependencies

278-282: Avoid “you” in guidance; keep en‑GB style.

Replace second‑person phrasing with neutral language.

Apply:

-- For local dev, you can also serve via `vite dev` or a simple nginx container.
+- For local development, serve via `vite dev` or a simple nginx container.
docs/wildside-high-level-design.md (2)

146-152: Replace all stray inline numeric citations with GFM footnotes

Grep detected multiple bare numerals across docs/wildside-high-level-design.md—including “6” at line 148, list markers like “1.” at line 227, and similar instances at lines 298, 321, 385, 827, 927, 1116, 1148, 1173, etc. Convert every inline number to a [^n] reference and define each in the “Works Cited” section.

Pinpoint locations:

  • docs/wildside-high-level-design.md:148 (“6”)
  • docs/wildside-high-level-design.md:227 (“1.” in numbered list)
  • docs/wildside-high-level-design.md:298 (“Section 4” context)
  • docs/wildside-high-level-design.md:321 (“T_max” list)
  • docs/wildside-high-level-design.md:385 (“Section 5.4”)
  • docs/wildside-high-level-design.md:827 (token usage footnote)
  • docs/wildside-high-level-design.md:927 (PostGIS geometry footnote)
  • docs/wildside-high-level-design.md:1116 (per-request cost “81”)
  • docs/wildside-high-level-design.md:1148 (model cost “0.60”/“2.40”)
  • docs/wildside-high-level-design.md:1173 (token assumption)

Example diff for line 148:

- OpenStreetMap as a primary data source 6, validates the viability of this
+ OpenStreetMap as a primary data source[^komoot-osm], validates the viability of this

Then append at the end of the file:

[^komoot-osm]: Komoot. “OpenStreetMap as a primary data source.” <URL to source>

Repeat for each inline numeral, incrementing or naming the footnote key to match the referenced source. Ensure the “Works Cited” section lists every [^n].


1169-1174: Fix malformed citations in cost estimation note

Replace the broken citation string—currently referencing [^46]—with the correct footnotes for Render, DigitalOcean Postgres and Anthropic pricing.

• File docs/wildside-high-level-design.md, line 1170

- Note: Cost estimates are based on pricing data from sources , and[^46] LLM costs
+ Note: Cost estimates are based on pricing data from [^25], [^41], and [^13]. LLM costs

Ensure footnotes [^25] (Render), [^41] (DigitalOcean PostgreSQL) and [^13] (Anthropic API) are defined in the Works Cited section.

AGENTS.md (1)

228-253: Surround the “Project scripts (Bun)” list with a blank line (MD032).

A list must be surrounded by blank lines. Add one after the “Project scripts (Bun):” line.

Apply:

-**Project scripts (Bun)**:
-- `fmt`: `biome format --write .`
+**Project scripts (Bun)**:
+
+- `fmt`: `biome format --write .`
📜 Review details

Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
Plan: Pro

💡 Knowledge Base configuration:

  • Jira integration is disabled

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between f1177f7 and 0c2f14b.

📒 Files selected for processing (4)
  • .markdownlint.json (1 hunks)
  • AGENTS.md (10 hunks)
  • docs/repository-structure.md (4 hunks)
  • docs/wildside-high-level-design.md (41 hunks)
🧰 Additional context used
📓 Path-based instructions (2)
**/*.md

📄 CodeRabbit Inference Engine (AGENTS.md)

**/*.md: Documentation must use en-GB-oxendict spelling and grammar (except LICENSE name)
Validate Markdown with make markdownlint
Run make fmt after doc changes to format Markdown and fix tables
Validate Mermaid diagrams by running make nixie
Wrap Markdown paragraphs and bullets at 80 columns; do not wrap tables/headings; code blocks at 120 columns; use dashes for bullets; use GFM footnotes

Files:

  • AGENTS.md
  • docs/wildside-high-level-design.md
  • docs/repository-structure.md

⚙️ CodeRabbit Configuration File

**/*.md: * Avoid 2nd person or 1st person pronouns ("I", "you", "we")

  • Use en-GB-oxendict (-ize / -our) spelling and grammar
  • Headings must not be wrapped.
  • Documents must start with a level 1 heading
  • Headings must correctly increase or decrease by no more than one level at a time
  • Use GitHub-flavoured Markdown style for footnotes and endnotes.
  • Numbered footnotes must be numbered by order of appearance in the document.

Files:

  • AGENTS.md
  • docs/wildside-high-level-design.md
  • docs/repository-structure.md
docs/**/*.md

📄 CodeRabbit Inference Engine (AGENTS.md)

docs/**/*.md: Use docs/ Markdown as the source of truth for requirements, dependencies, and architecture
Proactively update docs/ when decisions or dependencies change to keep documentation current
Keep small TS examples in docs that typecheck during builds; mirror production patterns

Files:

  • docs/wildside-high-level-design.md
  • docs/repository-structure.md
🧠 Learnings (2)
📚 Learning: 2025-07-28T19:14:46.188Z
Learnt from: CR
PR: leynos/femtologging#0
File: AGENTS.md:0-0
Timestamp: 2025-07-28T19:14:46.188Z
Learning: Before considering a change complete or proposing a commit, ensure it meets all quality gates: validated by relevant unittests and behavioural tests, bugfixes have a unittest, passes all tests, passes lint checks, adheres to formatting standards.

Applied to files:

  • AGENTS.md
📚 Learning: 2025-08-10T12:40:16.561Z
Learnt from: CR
PR: leynos/netsuke#0
File: AGENTS.md:0-0
Timestamp: 2025-08-10T12:40:16.561Z
Learning: Quality Gates: Before considering a change complete or proposing a commit, ensure it meets the following criteria: New functionality or changes in behaviour are fully validated by relevant unittests and behavioural tests.

Applied to files:

  • AGENTS.md
🪛 LanguageTool
AGENTS.md

[style] ~87-~87: Would you like to use the Oxford spelling “Recognizing”? The spelling ‘Recognising’ is also correct.
Context: ... Refactoring Heuristics & Workflow - Recognising Refactoring Needs: Regularly assess t...

(OXFORD_SPELLING_Z_NOT_S)


[style] ~104-~104: Consider using “many”.
Context: ...change requiring small modifications in many different classes or functions. - **Post-Commit R...

(NUMEROUS_DIFFERENT)


[grammar] ~111-~111: “Change” is a singular noun. It appears that the verb form is incorrect.
Context: ...mit** after the functional change commit. - Ensure the refactoring adheres to th...

(PCT_SINGULAR_NOUN_PLURAL_VERB_AGREEMENT)


[style] ~252-~252: The double modal “requires installed” is nonstandard (only accepted in certain dialects). Consider “to be installed”.
Context: ...bun.lock; audit:snyk requires installed dependencies—run bun install before i...

(NEEDS_FIXED)


[style] ~308-~308: Would you like to use the Oxford spelling “Centralize”? The spelling ‘Centralise’ is also correct.
Context: ...signal in fetchers. - Time & RNG: Centralise now() and rng() adapters; never cal...

(OXFORD_SPELLING_Z_NOT_S)


[uncategorized] ~447-~447: Loose punctuation mark.
Context: ...ecklist (Before Commit) - bun run fmt, bun run lint, bun run test all clea...

(UNLIKELY_OPENING_PUNCTUATION)

⏰ Context from checks skipped due to timeout of 120000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: build
  • GitHub Check: build
🔇 Additional comments (6)
docs/repository-structure.md (1)

138-140: LGTM: “centralizes/handwritten” matches Oxford “-ize” and compound style.

Spelling aligns with en‑GB‑oxendict and prior feedback; keep as is.

docs/wildside-high-level-design.md (1)

1-888: LGTM: Footnotes, table captions, and spacing conform to style.

The migration to GFM footnotes, table captions as headings, and spacing around lists/fences look correct and align with repo rules.

AGENTS.md (4)

179-203: LGTM: Rust dependency and error handling guidance is precise and actionable.

Caret SemVer, prohibition of wildcards, and opaque error boundaries are well‑stated.


311-320: LGTM: Frontend error semantics follow sound patterns.

Discriminated unions for domain errors and mapping at the UI boundary are correct.


445-455: LGTM: The “Quick Checklist” is aligned with house rules.

The checks reflect Biome, TS, audit, AbortSignal, and docs/export expectations.


49-66: Confirm AGENTS.md passes markdown spacing rules

All headings, lists, and fenced code blocks are properly surrounded by blank lines. No MD022, MD031, or MD032 violations remain across the file.

Comment thread .markdownlint.json Outdated
Comment on lines +1 to +6
{
"MD022": true,
"MD031": true,
"MD032": true,
"MD013": false
}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Re-enable MD013 with config matching house style (80/120 wrap).

The repo guideline mandates wrapping paragraphs/bullets at 80 columns and allowing code blocks up to 120. Disabling MD013 prevents enforcing this. Enable MD013 with appropriate options.

Apply:

 {
   "MD022": true,
   "MD031": true,
   "MD032": true,
-  "MD013": false
+  "MD013": {
+    "line_length": 80,
+    "code_block_line_length": 120,
+    "tables": false,
+    "headings": false
+  }
 }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
{
"MD022": true,
"MD031": true,
"MD032": true,
"MD013": false
}
{
"MD022": true,
"MD031": true,
"MD032": true,
"MD013": {
"line_length": 80,
"code_block_line_length": 120,
"tables": false,
"headings": false
}
}
🤖 Prompt for AI Agents
In .markdownlint.json lines 1-6, MD013 is disabled; re-enable it and configure
it to enforce an 80-character wrap for normal text while permitting up to 120
characters for code blocks by replacing the boolean with an object (e.g., set
MD013 to an object that sets "line_length": 80 and configures code-block
allowance to 120), keeping the other rules unchanged.

Comment thread AGENTS.md Outdated
Comment on lines 87 to 92
- **Recognising Refactoring Needs:** Regularly assess the codebase for potential
refactoring opportunities. Consider refactoring when you observe:
- **Long Methods/Functions:** Functions or methods that are excessively long
- **Long Methods/Functions:** Functions or methods that are excessively long
or try to do too many things.
- **Duplicated Code:** Identical or very similar code blocks appearing in
- **Duplicated Code:** Identical or very similar code blocks appearing in
multiple places.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Insert a blank line before the refactoring bullet list (MD032).

A list must be preceded by a blank line. Add one between the sentence ending “observe:” and the first bullet.

Apply:

-  refactoring opportunities. Consider refactoring when you observe:
-- **Long Methods/Functions:** Functions or methods that are excessively long
+  refactoring opportunities. Consider refactoring when you observe:
+
+- **Long Methods/Functions:** Functions or methods that are excessively long

Committable suggestion skipped: line range outside the PR's diff.

🧰 Tools
🪛 LanguageTool

[style] ~87-~87: Would you like to use the Oxford spelling “Recognizing”? The spelling ‘Recognising’ is also correct.
Context: ... Refactoring Heuristics & Workflow - Recognising Refactoring Needs: Regularly assess t...

(OXFORD_SPELLING_Z_NOT_S)

🤖 Prompt for AI Agents
In AGENTS.md around lines 87 to 92, the bulleted list following the sentence
ending "observe:" is not separated by a blank line (MD032); insert a single
blank line between that sentence and the first list item so the list is properly
preceded by an empty line, then save and verify the markdown linter no longer
flags MD032.

Comment thread AGENTS.md Outdated

## Refactoring Heuristics & Workflow

- **Recognising Refactoring Needs:** Regularly assess the codebase for potential
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick (assertive)

Use Oxford “-ize”: change “Recognising” → “Recognizing”.

Align with en‑GB‑oxendict spelling.

Apply:

-**Recognising Refactoring Needs:** Regularly assess the codebase for potential
+**Recognizing Refactoring Needs:** Regularly assess the codebase for potential
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- **Recognising Refactoring Needs:** Regularly assess the codebase for potential
- **Recognizing Refactoring Needs:** Regularly assess the codebase for potential
🧰 Tools
🪛 LanguageTool

[style] ~87-~87: Would you like to use the Oxford spelling “Recognizing”? The spelling ‘Recognising’ is also correct.
Context: ... Refactoring Heuristics & Workflow - Recognising Refactoring Needs: Regularly assess t...

(OXFORD_SPELLING_Z_NOT_S)

🤖 Prompt for AI Agents
In AGENTS.md around line 87, the word "Recognising" uses en-GB spelling but the
project requires Oxford "-ize" (en-GB-oxendict) conventions; replace
"Recognising Refactoring Needs:" with "Recognizing Refactoring Needs:" (and
update any other occurrences of "Recognising" to "Recognizing") to align
spelling across the document.

Comment thread AGENTS.md
Comment on lines +110 to 115
- Perform the refactoring as a **separate, atomic commit** *after* the
functional change commit.
- Ensure the refactoring adheres to the testing guidelines (behavioural tests
- Ensure the refactoring adheres to the testing guidelines (behavioural tests
pass before and after, unit tests added for new units).
- Ensure the refactoring commit itself passes all quality gates.
- Ensure the refactoring commit itself passes all quality gates.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Nest the action list under “Separate Atomic Refactors”.

Indent the two step bullets to make them children of the “Separate Atomic Refactors” item. This improves structure and satisfies markdownlint expectations for nested lists.

Apply:

-**Separate Atomic Refactors:** If refactoring is deemed necessary:
-- Perform the refactoring as a **separate, atomic commit** *after* the
+**Separate Atomic Refactors:** If refactoring is deemed necessary:
+  - Perform the refactoring as a **separate, atomic commit** *after* the
     functional change commit.
-- Ensure the refactoring adheres to the testing guidelines (behavioural tests
+  - Ensure the refactoring adheres to the testing guidelines (behavioural tests
     pass before and after, unit tests added for new units).
- - Ensure the refactoring commit itself passes all quality gates.
+  - Ensure the refactoring commit itself passes all quality gates.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- Perform the refactoring as a **separate, atomic commit** *after* the
functional change commit.
- Ensure the refactoring adheres to the testing guidelines (behavioural tests
- Ensure the refactoring adheres to the testing guidelines (behavioural tests
pass before and after, unit tests added for new units).
- Ensure the refactoring commit itself passes all quality gates.
- Ensure the refactoring commit itself passes all quality gates.
- **Separate Atomic Refactors:** If refactoring is deemed necessary:
- Perform the refactoring as a **separate, atomic commit** *after* the functional change commit.
- Ensure the refactoring adheres to the testing guidelines (behavioural tests pass before and after, unit tests added for new units).
- Ensure the refactoring commit itself passes all quality gates.
🧰 Tools
🪛 LanguageTool

[grammar] ~111-~111: “Change” is a singular noun. It appears that the verb form is incorrect.
Context: ...mit** after the functional change commit. - Ensure the refactoring adheres to th...

(PCT_SINGULAR_NOUN_PLURAL_VERB_AGREEMENT)

🤖 Prompt for AI Agents
In AGENTS.md around lines 110 to 115, the two step bullets are not indented as
children under the "Separate Atomic Refactors" list item; indent those two lines
by one additional list-level (e.g., 4 spaces or a tab) so they become nested
bullets under "Separate Atomic Refactors", keep the existing wording and
punctuation, and verify the markdown renders as a nested list and passes
markdownlint.

Comment thread AGENTS.md
Comment on lines 306 to 310
- **Cancellation**: Accept `AbortSignal` for any async that can hang (fetches,
long UI work). Wire signals through TanStack Query via `signal` in fetchers.
- **Time & RNG**: Centralise `now()` and `rng()` adapters; never call
`Date.now()` or `Math.random()` directly in business logic.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick (assertive)

Use Oxford “-ize”: change “Centralise” → “Centralize”.

Keep spelling consistent with the style guide.

Apply:

-**Time & RNG**: Centralise `now()` and `rng()` adapters; never call
+**Time & RNG**: Centralize `now()` and `rng()` adapters; never call
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- **Cancellation**: Accept `AbortSignal` for any async that can hang (fetches,
long UI work). Wire signals through TanStack Query via `signal` in fetchers.
- **Time & RNG**: Centralise `now()` and `rng()` adapters; never call
`Date.now()` or `Math.random()` directly in business logic.
- **Cancellation**: Accept `AbortSignal` for any async that can hang (fetches,
long UI work). Wire signals through TanStack Query via `signal` in fetchers.
- **Time & RNG**: Centralize `now()` and `rng()` adapters; never call
`Date.now()` or `Math.random()` directly in business logic.
🧰 Tools
🪛 LanguageTool

[style] ~308-~308: Would you like to use the Oxford spelling “Centralize”? The spelling ‘Centralise’ is also correct.
Context: ...signal in fetchers. - Time & RNG: Centralise now() and rng() adapters; never cal...

(OXFORD_SPELLING_Z_NOT_S)

🤖 Prompt for AI Agents
In AGENTS.md around lines 306 to 310, the word "Centralise" uses British
spelling; change it to Oxford "-ize" form "Centralize" to match the project's
style guide and keep spelling consistent across the document. Update that single
word while leaving surrounding text unchanged.

@leynos leynos merged commit 531ce13 into main Aug 15, 2025
2 checks passed
@leynos leynos deleted the codex/fix-markdownlint-formatting-issues branch August 15, 2025 18:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant