Skip to content

Conversation

@HardMax71
Copy link
Owner

@HardMax71 HardMax71 commented Dec 31, 2025

Summary by CodeRabbit

  • Documentation
    • Extensive rewrites and new pages across architecture, operations, testing, metrics, deployment, and components (idempotency, rate-limiting, middleware, execution queue, runtime registry, saved scripts, admin API, Grafana). Improved layout, diagrams, tables, and cross-file references; many examples condensed or moved to external references for clearer navigation.
  • API Docs
    • Swagger/UI rendering improved and several script-related endpoints grouped for clearer API discovery; OpenAPI schemas updated for replay/filtering fields.

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai
Copy link

coderabbitai bot commented Dec 31, 2025

📝 Walkthrough

Walkthrough

Large documentation overhaul: reflowed and reorganized many docs, replaced numerous inline code examples with external snippet references, added Mermaid diagrams and new pages, adjusted mkdocs/snippet config and styles, and added OpenAPI/swagger UI attributes and a router tag for saved scripts. No functional public API changes.

Changes

Cohort / File(s) Summary
Architecture docs (reflow & examples → external snippets)
docs/architecture/domain-exceptions.md, docs/architecture/event-storage.md, docs/architecture/model-conversion.md, docs/architecture/user-settings-events.md, docs/architecture/idempotency.md, docs/architecture/execution-queue.md, docs/architecture/middleware.md, docs/architecture/rate-limiting.md, docs/architecture/runtime-registry.md, docs/architecture/authentication.md
Reflowed/wrapped prose, reorganized headings, replaced many inline code blocks with external snippet markers, added Mermaid diagrams and boundary-focused narratives, moved implementation examples to referenced files; minor editorial/formatting tweaks and a concrete 10-event snapshot mention.
Operations & testing docs (structure, diagrams, placeholders)
docs/operations/nginx-configuration.md, docs/operations/notification-types.md, docs/operations/admin-api.md, docs/operations/deployment.md, docs/operations/grafana-integration.md, docs/operations/logging.md, docs/operations/metrics-reference.md, docs/testing/frontend-testing.md, docs/testing/kafka-test-stability.md, docs/testing/load-testing.md
Reorganized sections, condensed troubleshooting, replaced large inline examples with snippet references, added diagrams, expanded notification/metrics descriptions and behavioral notes (throttling, retries, subscription filtering), and introduced new operation pages.
Site config, styles, and navigation
mkdocs.yml, docs/stylesheets/extra.css
Added branding assets and pymdownx.snippets base_path, expanded site navigation, and new CSS rules (table sizing, hide Swagger filter input).
Reference / OpenAPI / API routes
docs/reference/api-reference.md, docs/reference/openapi.json, backend/app/api/routes/saved_scripts.py
Added swagger-ui attributes (deepLinking="true", docExpansion="list"), added tags: ["scripts"] to saved scripts router and OpenAPI operations, and adjusted some event/replay schema fields in openapi.json.
New component docs / pages & landing
docs/components/saved-scripts.md, docs/index.md
Added Saved Scripts component docs and revised landing page (architecture, features, sample code), with many examples rewritten or relocated to snippets.

Sequence Diagram(s)

(Skipped — changes are primarily documentation, minor metadata, and not a new multi-component control-flow feature.)

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Poem

🐇 I hopped through pages, moved snippets to their lairs,
Drew flowcharts like carrots and tidied up the pairs.
Lines wrapped like soft fur, diagrams placed with care,
Docs feel lighter now — a burrow bright and fair. 🥕

Pre-merge checks

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title accurately captures the main change: reorganizing documentation with snippet references and diagrams across multiple files (architecture, operations, components, testing, and reference docs).
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

📜 Recent review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 131a9bb and 2f3dcd3.

📒 Files selected for processing (2)
  • docs/operations/logging.md
  • docs/operations/metrics-reference.md
🚧 Files skipped from review as they are similar to previous changes (1)
  • docs/operations/metrics-reference.md
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: Integration Tests
  • GitHub Check: E2E Tests
🔇 Additional comments (3)
docs/operations/logging.md (3)

110-110: ✅ Fixed the broken GitHub link from previous review.

The link to backend/app/core/correlation.py is now correct, addressing the earlier comment that flagged the non-existent middleware.py reference. Well done on the correction.


21-26: No action required—snippet references are valid.

Both mkdocs snippet references resolve correctly. The line ranges exist in the source file and contain the intended code:

  • Lines 110-147: setup_logger function with JSON formatter and correlation/OpenTelemetry filters ✓
  • Lines 35-59: _sanitize_sensitive_data method with sensitive data masking patterns ✓

103-103: Documentation is accurate — no changes needed.

The documentation correctly references LOG_LEVEL as the environment variable. This is confirmed in backend/app/settings.py (line 153), where the field is defined as LOG_LEVEL: str with case_sensitive=True, making it match the environment variable name directly.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@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: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
docs/architecture/model-conversion.md (2)

103-151: Update repository examples with correct class names and implementations.

The three repository examples contain critical discrepancies from the actual codebase:

  1. DomainMetadata does not exist — the codebase uses EventMetadata (defined in both backend/app/db/docs/event.py and backend/app/domain/events/event_models.py).

  2. SessionDocument and SessionUpdate do not exist — there are no session-related document or update classes in the repository.

  3. update_session() method does not existEventRepository has store_event() and get_event() but no update method for sessions.

  4. Metadata handling is incorrect in examples:

    • The store_event() example incorrectly shows manual metadata enum conversion; the actual implementation passes data directly to EventDocument(**data).
    • The get_event() example incorrectly shows wrapping metadata with DomainMetadata(**doc.metadata.model_dump()); the actual implementation simply uses Event(**doc.model_dump(exclude={"id", "revision_id"})).

Replace the update_session example with an actual repository method or remove it entirely. Correct the metadata handling to match actual implementations in backend/app/db/repositories/event_repository.py.


43-101: Update code examples to match actual codebase usage.

The conversion patterns documentation contains examples that don't consistently align with actual implementation:

  1. Dataclass to dict (lines 51–55): ✓ Correctly documented—the exact enum handling pattern with hasattr(v, "value") is used in admin_events_repository.py:225 and replay_repository.py:73.

  2. Pydantic to dict (lines 63–64): Partially incorrect—The model_dump(mode="json") example is correct (used in redis_bus.py:69), but model_dump(exclude_none=True) is not used in the codebase. Instead, the codebase uses model_dump_json(exclude_none=True) (found in sse_service.py:258, 262). Update line 63 to reflect this.

  3. Pydantic to Pydantic (lines 81–84): ✓ Correctly documented—from_attributes=True configs exist in multiple schemas (e.g., admin_user_overview.py, replay_models.py), and model_validate() is extensively used throughout.

  4. Dict to dataclass (lines 95–100): Pattern not found—The DomainMetadata class does not exist in the codebase, and this nested conversion pattern is not used in actual repositories. Either replace with a real example from the domain layer or remove if it's only theoretical guidance.

🧹 Nitpick comments (1)
docs/architecture/event-storage.md (1)

91-99: Consider snippet reference maintenance strategy.

The documentation restructuring successfully externalizes code examples, improving maintainability. However, hard-coded line ranges in snippet markers can become stale when source files are modified.

Consider documenting a process for:

  • Validating snippet references during CI/CD
  • Using named markers in source files (if pymdownx.snippets supports them) instead of line ranges
  • Periodic audits of documentation snippet accuracy
📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 258761b and 602ae32.

📒 Files selected for processing (7)
  • docs/architecture/domain-exceptions.md
  • docs/architecture/event-storage.md
  • docs/architecture/model-conversion.md
  • docs/architecture/user-settings-events.md
  • docs/operations/nginx-configuration.md
  • docs/operations/notification-types.md
  • mkdocs.yml
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Build Frontend
🔇 Additional comments (14)
mkdocs.yml (1)

82-85: LGTM! Snippet configuration supports documentation refactoring.

The expanded base_path configuration correctly enables snippet resolution from both the repository root and docs directory, which is necessary for the --8<-- markers used throughout the restructured documentation files.

docs/architecture/user-settings-events.md (2)

47-56: Mermaid diagram syntax is correct.

The flowchart effectively visualizes the settings reconstruction process with cache flow.


12-13: All snippet references in the documentation are valid and accurate. The referenced files exist with sufficient line counts, and each code snippet range points to meaningful content:

  • user.py:72:86 references the UserSettingsUpdatedEvent class (valid)
  • user_settings_service.py:22:24 references TypeAdapter definitions (valid)
  • user_settings_service.py:88:120 references the update_user_settings method (valid)
  • user_settings_service.py:243:254 references the _apply_event method (valid)
  • user_settings_service.py:34:40 references cache initialization (valid)
  • user_settings_service.py:58:68 references the initialize method (valid)
  • user_settings_service.py:171:189 references the get_settings_history method (valid)

No updates needed.

docs/operations/nginx-configuration.md (2)

8-13: Mermaid diagram clearly illustrates architecture.

The flowchart effectively shows the routing between browser, Nginx, backend, and static files.


23-24: Verify nginx configuration snippet references in documentation.

The documentation references specific line ranges from frontend/nginx.conf.template and frontend/Dockerfile.prod. Confirm that:

  • Referenced files exist at the expected locations
  • Line ranges (nginx.conf.template: 1:6, 8:13, 15:25, 27:54, 57:75, 77:84; Dockerfile.prod: 12:21) match the actual file content
  • Updates to source files are reflected in documentation line numbers

Applies to lines: 23-24, 35-36, 44-45, 60-61, 76-77, 85-86, 123-124

docs/architecture/event-storage.md (2)

44-53: Mermaid diagram effectively visualizes write flow.

The graph clearly shows the event flow from application code through KafkaEventService, EventStore, Kafka, and back to EventStoreConsumer.


15-16: Verify snippet references for event storage code.

The documentation references specific line ranges in event storage implementation files. Ensure these remain accurate as the code evolves.

Review the following referenced files and line ranges:

  • backend/app/db/docs/event.py:30:45
  • backend/app/events/event_store.py:18:26, 56:64
  • backend/app/domain/replay/models.py:13:31, 49:90

Also applies to documentation lines: 24-25, 30-31, 78-79, 84-85

Verify that:

  1. All referenced files exist in the repository
  2. The specified line ranges do not exceed the total line count of each file
  3. The --8<-- snippet inclusion syntax in docs/architecture/event-storage.md correctly points to these ranges
  4. The snippet content accurately reflects the current state of the implementation files
docs/architecture/domain-exceptions.md (1)

89-90: All snippet references in the documentation are valid and point to correct code locations. The referenced line ranges contain meaningful, complete code:

  • backend/app/domain/saga/exceptions.py:11:17 contains the SagaAccessDeniedError class
  • backend/app/domain/notification/exceptions.py:11:18 contains the NotificationThrottledError class
  • backend/app/core/exceptions/handlers.py:17:44 contains exception handler configuration code

No updates needed to these snippet references.

docs/operations/notification-types.md (3)

6-16: Architecture diagram is clear.

The Mermaid diagram effectively visualizes the notification flow from execution events through the NotificationService to multiple delivery channels. The structure aligns well with the subsequent sections.


60-86: Snippet markers are correctly configured and line ranges are valid.

The mkdocs configuration includes the pymdownx.snippets plugin with proper base path resolution. All three snippet markers reference valid line ranges in backend/app/services/notification_service.py:

  • Lines 76–101: check_throttle method (throttling logic)
  • Lines 156–160: _channel_handlers dict (channel routing)
  • Lines 801–823: _should_skip_notification method (subscription filtering)

No issues detected.


88-94: All GitHub links verified and are current.

The three backend files referenced in the Key files section all exist at the correct paths in the repository. The GitHub links in the documentation are properly formatted and point to the correct files in the main branch:

  • services/notification_service.py
  • db/docs/notification.py
  • db/repositories/notification_repository.py
docs/architecture/model-conversion.md (3)

5-10: Architecture rationale is well-articulated.

The "Why these patterns" section clearly explains the separation of concerns across layers and emphasizes that conversion happens at boundaries (repositories/services), not inside models. This rationale supports the detailed patterns that follow.


12-35: Layer diagram effectively illustrates conversion boundaries.

The Mermaid diagram clearly shows the four layers (API, Service, Domain, Infrastructure) and their connections. The bidirectional arrows between API↔Service and Service↔Domain/Infrastructure correctly represent where conversions occur.


163-171: Quick reference table is a useful lookup resource.

The table at lines 163–171 provides a concise summary of conversion methods for common patterns (Dataclass ↔ Dict, Pydantic ↔ Dict, Dict ↔ Dataclass, Pydantic ↔ Pydantic). This complements the detailed sections above and serves as a practical reference for developers.

@HardMax71 HardMax71 changed the title updated docs chore: reorganize docs with snippet references and diagrams Dec 31, 2025
@codecov-commenter
Copy link

codecov-commenter commented Jan 1, 2026

⚠️ Please install the 'codecov app svg image' to ensure uploads and comments are reliably processed by Codecov.

Codecov Report

✅ All modified and coverable lines are covered by tests.
❗ Your organization needs to install the Codecov GitHub app to enable full functionality.

Flag Coverage Δ
backend-e2e 52.18% <100.00%> (ø)
backend-integration 68.80% <100.00%> (+0.05%) ⬆️
backend-unit 52.93% <0.00%> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
backend/app/api/routes/saved_scripts.py 100.00% <100.00%> (ø)

... and 2 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Copy link

@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: 4

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
docs/testing/load-testing.md (1)

33-47: Fix environment variables table: incorrect default for LOAD_BASE_URL and missing variables.

The documented default for LOAD_BASE_URL is incorrect. The code (backend/tests/load/config.py:13) uses https://[::1]:443 (IPv6 localhost), not https://localhost:443. Additionally, six environment variables are missing from the table:

  • LOAD_RAMP (default: 5) — Ramp-up time in seconds
  • LOAD_ENABLE_SSE (default: true) — Enable SSE endpoint testing
  • LOAD_ENABLE_SCRIPTS (default: true) — Enable saved scripts endpoint testing
  • LOAD_ENABLE_SETTINGS (default: true) — Enable user settings endpoint testing
  • LOAD_ENABLE_NOTIFICATIONS (default: true) — Enable notifications endpoint testing
  • LOAD_OUTPUT_DIR (default: tests/load/out) — Output directory for reports

Update the table to include the correct LOAD_BASE_URL default and add these missing variables.

🧹 Nitpick comments (4)
docs/architecture/model-conversion.md (1)

166-174: Quick reference table useful, but minor inconsistencies with earlier sections.

The quick-reference table effectively summarizes conversion methods. However, note these minor discrepancies:

  • Line 170 (Dataclass→Dict): Shows the full dict comprehension with enum handling. Consider simplifying to asdict(obj) (with enum handling) or noting "see Dataclass to dict section above."
  • Line 171 (Pydantic→Dict): Shows bare obj.model_dump(), but the detailed section recommends exclude_none=True and/or mode="json" depending on use case. Quick-ref could note these as common variants.

These are minor and don't break clarity, but standardizing the level of detail could help.

docs/stylesheets/extra.css (1)

173-176: Consider accessibility when hiding the Swagger filter input

Using display: none !important fully removes the operation filter from both sighted users and assistive tech. If the goal is just to declutter visually while keeping it available for screen readers or power users, consider an “sr-only”/visually-hidden pattern or moving this control elsewhere instead of hard-hiding it.

docs/reference/openapi.json (1)

7563-7802: Replay filter extensions look coherent; verify schema symmetry is intentional

Extending ReplayFilter with event_ids, correlation_id, aggregate_id, and exclude_event_types and mirroring exclude_event_types in ReplayFilterSchema makes the replay APIs more expressive and consistent with other request models (e.g., EventReplayRequest and event filters). Typing and shapes all look correct.

One thing to double‑check: ReplayFilter now supports additional keys (event_ids, correlation_id, aggregate_id) that ReplayFilterSchema does not. If ReplayFilterSchema is meant to represent the same conceptual filter (e.g., persisted replay configs shown back via the API), you may want them to stay in sync; if configs are intentionally narrower than ad‑hoc filters, the current asymmetry is fine.

docs/architecture/idempotency.md (1)

118-118: Minor: Consider tighter phrasing for "Key lookups that created new records".

The phrase "created new records" is slightly verbose. Consider alternatives like "created records" or simply "new key registrations" for conciseness.

📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 602ae32 and 131a9bb.

📒 Files selected for processing (22)
  • backend/app/api/routes/saved_scripts.py
  • docs/architecture/authentication.md
  • docs/architecture/execution-queue.md
  • docs/architecture/idempotency.md
  • docs/architecture/middleware.md
  • docs/architecture/model-conversion.md
  • docs/architecture/rate-limiting.md
  • docs/architecture/runtime-registry.md
  • docs/components/saved-scripts.md
  • docs/index.md
  • docs/operations/admin-api.md
  • docs/operations/deployment.md
  • docs/operations/grafana-integration.md
  • docs/operations/logging.md
  • docs/operations/metrics-reference.md
  • docs/reference/api-reference.md
  • docs/reference/openapi.json
  • docs/stylesheets/extra.css
  • docs/testing/frontend-testing.md
  • docs/testing/kafka-test-stability.md
  • docs/testing/load-testing.md
  • mkdocs.yml
✅ Files skipped from review due to trivial changes (6)
  • docs/architecture/rate-limiting.md
  • docs/testing/frontend-testing.md
  • docs/architecture/middleware.md
  • docs/architecture/execution-queue.md
  • docs/operations/grafana-integration.md
  • docs/components/saved-scripts.md
🧰 Additional context used
🪛 LanguageTool
docs/operations/deployment.md

[uncategorized] ~401-~401: The official name of this software platform is spelled with a capital “H”.
Context: ...yaml) | Production overrides | | [.github/workflows/docker.yml](https://github.c...

(GITHUB)

docs/architecture/idempotency.md

[style] ~118-~118: ‘new records’ might be wordy. Consider a shorter alternative.
Context: ...ache_misses- Key lookups that created new records -idempotency_duplicates_blocked` - Ev...

(EN_WORDINESS_PREMIUM_NEW_RECORDS)

docs/operations/metrics-reference.md

[grammar] ~52-~52: Use a hyphen to join words.
Context: ... | ### Rate Limit Metrics Track rate limiting behavior. | Metric ...

(QB_NEW_EN_HYPHEN)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: E2E Tests
  • GitHub Check: Integration Tests
🔇 Additional comments (43)
docs/testing/kafka-test-stability.md (3)

5-5: Documentation rewording improves clarity and conciseness.

The textual changes effectively streamline explanations of the problem, race condition, and related technical details without losing accuracy. The reflow reads naturally and maintains appropriate technical depth.

Also applies to: 11-12, 16-19


50-68: Inline code examples in alternative approaches are appropriate.

Keeping code examples inline for the alternative solutions (pytest marks and fixture) is the right call—they provide complete context for readers exploring options. The extraction of only the primary fix to an external reference maintains a good balance between documentation conciseness and readability.


23-28: Snippet reference verified and correctly configured.

The external snippet reference is valid and will render correctly:

  • File backend/app/events/core/producer.py exists and lines 22–24 contain the lock initialization code with documentation comments
  • MkDocs snippets extension (pymdownx.snippets) is configured in mkdocs.yml
  • The line range captures the complete lock definition and its explanatory context

No action needed.

docs/architecture/model-conversion.md (4)

5-39: Clear architectural narrative with effective diagram.

The reframed introduction and Mermaid diagram effectively communicate the layered architecture and boundary-based conversion principle. The visual separation of API, Service, Domain, and Infrastructure layers is much clearer than before.


40-100: Well-chosen conversion patterns with practical examples.

The conversion patterns cover the common cases (dataclass→dict, Pydantic↔dict, Pydantic↔Pydantic, dict→dataclass) with clear, idiomatic code. Enum handling (lines 50–52) and nested object conversion (lines 94–98) are particularly useful.

Please confirm that Pydantic v2 is the project requirement, as all examples use v2 syntax (model_dump(), model_validate(), ConfigDict).


102-150: Concrete repository examples reinforce layer boundaries.

The save/load/update examples effectively demonstrate the repository as a conversion boundary. Patterns are consistent with the earlier conversion guidance and show realistic use of asdict() and model_dump() with nested object handling.

Verify that the document and domain types referenced (EventDocument, SessionDocument, Event, DomainMetadata, SessionUpdate) exist in the codebase and follow the patterns shown. If external code snippets are referenced in the PR title's "snippet references," confirm these examples are accurate pointers or should be replaced with linked references.


152-164: Anti-patterns clarification resolves prior concern, but could be more explicit.

The addition at lines 162–164 effectively addresses the previous review's concern by acknowledging that thin wrappers like BaseEvent.to_dict() and to_public_dict() are acceptable. However, the distinction could be even clearer: the anti-pattern is manually listing fields, not the existence of wrapper methods that delegate to framework utilities.

Consider explicitly scoping the guidance to make this distinction sharper:

"Thin wrappers that delegate to model_dump() with specific options are acceptable—e.g., BaseEvent.to_dict() applies by_alias=True, mode="json" consistently. Similarly, methods with additional behavior like filtering private keys (to_public_dict()) are fine. The anti-pattern is manually listing and mapping fields without a clear abstraction."

This makes it explicit that the existing patterns are acknowledged and encouraged.

Verify that BaseEvent.to_dict() exists in backend/app/infrastructure/kafka/events/base.py and uses the pattern described (thin wrapper with by_alias=True, mode="json" or similar).

docs/testing/load-testing.md (5)

3-5: Clear and concise introduction.

The reworded description effectively scopes the suite and sets expectations without excessive detail.


9-16: Verify client count default and clarify quick-start override.

The quick start command specifies --clients 30, but the Environment variables section below lists LOAD_CLIENTS=25 as the default. This inconsistency may confuse users about the actual defaults. Either update the command to use the default (25) or explain why the override is recommended.

Additionally, verify that the inline options list (line 15–16) is exhaustive. If there are other CLI options not listed, consider expanding the description.


18-18: Clarify default report output path in quick start.

The quick start command (line 12) does not specify --output, which means it uses a default directory. Ensure the default path matches the documented path shown here. Consider adding a note that --output is optional and defaults to backend/tests/load/out/.


49-60: Good expansion of metrics and implementation details.

The expanded section provides helpful context about covered endpoints, metrics collection, and implementation patterns (CSRF tokens, SSE sampling). This will help users understand the test suite's scope and implementation.

Please verify that the GitHub link on line 61 correctly points to the tests/load/ directory (currently targets main branch). If this PR is being merged to main, the link should be accurate; otherwise, it may need adjustment after merge.


20-31: Verify property-based test file and test names exist, and standardize path format with Quick start section.

The property-based fuzz tests section references backend/tests/load/test_property_monkey.py and specific test names (test_register_never_500, test_grafana_webhook_never_500). Confirm these exist and that the pytest command will run successfully.

Additionally, this section uses an explicit file path (backend/tests/load/...), while the Quick start section uses a module import path (python -m tests.load.cli). Standardize the path format for consistency — either use python -m tests.load.test_property_monkey or update Quick start to use explicit paths.

docs/stylesheets/extra.css (1)

135-142: Table layout tweaks look fine

Forcing .md-typeset__table to full width and keeping unclassed tables as display: table with a smaller font is a straightforward readability improvement and shouldn’t affect behavior.

backend/app/api/routes/saved_scripts.py (1)

14-14: Router-level tags=["scripts"] is appropriate and consistent

Tagging the saved_scripts router with "scripts" matches the /scripts paths and the OpenAPI grouping, and won’t affect runtime behavior.

Please just confirm that "scripts" matches any existing OpenAPI tag definitions or UI expectations (e.g., section names in the docs) so you don’t accidentally create duplicate/near-duplicate tag groups.

docs/reference/openapi.json (1)

620-808: Scripts endpoints tagging is consistent and helpful

Adding "scripts" tags to all /api/v1/scripts and /api/v1/scripts/{script_id} operations aligns nicely with the router metadata and will group these routes cleanly in Swagger/clients without changing behavior.

docs/reference/api-reference.md (1)

1-3: Swagger UI options align well with the updated OpenAPI structure

Enabling deepLinking="true" and docExpansion="list" should make navigating the now tag‑grouped API (e.g., "scripts") easier without altering request/response semantics.

docs/operations/admin-api.md (1)

18-18: [Unable to complete verification - repository access failed]

docs/operations/logging.md (2)

9-16: No action required. The pymdownx.superfences extension with Mermaid support is already properly configured in mkdocs.yml with a custom fence for mermaid type, enabling the flowchart diagram to render correctly.

Likely an incorrect or invalid review comment.


24-26: All snippet references and line ranges are correct. The pymdownx.snippets extension is enabled in mkdocs.yml with proper configuration, both line ranges (110-147 and 35-59) exist in backend/app/core/logging.py, and the content matches the descriptions (setup_logger function and sanitization logic respectively).

docs/architecture/runtime-registry.md (1)

22-24: All snippet references are correctly configured and valid.

The pymdownx.snippets extension is properly enabled in mkdocs.yml, backend/app/runtime_registry.py exists, and all four referenced line ranges (6-10, 12-17, 19-50, 52-78) are valid within the file's 186 lines. The snippets will render correctly in the documentation.

docs/operations/metrics-reference.md (2)

1-168: Comprehensive metrics reference with clear structure and practical examples.

The documentation effectively covers all metric categories with detailed tables, configuration guidance, and real PromQL examples. The architecture explanation is clear, and the Key Files section provides helpful navigation to implementation details.


11-11: Snippet reference is correctly configured and paths verified.

The mkdocs-snippets plugin is properly configured in mkdocs.yml with appropriate base paths, and the file backend/app/core/metrics/base.py exists with 79 lines. Lines 13-19 contain the MetricsConfig dataclass definition as expected for the metrics initialization code snippet.

docs/architecture/idempotency.md (2)

9-33: Mermaid flowchart clearly illustrates idempotency decision logic.

The architecture diagram effectively shows the key decision points: duplicate detection, timeout handling, and retry pathways. Subgraph organization makes the flow easy to follow.


1-129: Thorough idempotency architecture documentation with excellent visual aids.

Clear explanation of strategies, lifecycle, middleware integration, and configuration. The flowchart and structured sections make this accessible to both implementers and maintainers.

docs/architecture/authentication.md (3)

8-30: Sequence diagram effectively illustrates JWT + CSRF authentication flow.

The diagram clearly shows the login process with token generation and the pattern for subsequent authenticated requests with CSRF validation. Good visual representation of the double-submit CSRF pattern.


1-145: Comprehensive authentication architecture with clear frontend and backend flows.

Excellent documentation covering the full authentication lifecycle, CSRF protection, session handling, and offline-first considerations. The sequence diagram and code snippets provide both architectural overview and implementation details. Security best practices (httpOnly cookies, CSRF validation, token expiration) are well-explained.


127-127: Configuration is correct — all swagger-ui and openapi.json references are properly set up.

The swagger-ui-tag plugin is enabled in mkdocs.yml, docs/reference/openapi.json exists with authentication-tagged endpoints, and the filter="authentication" parameter is fully supported by the plugin for pre-filtering to endpoints matching that tag.

docs/index.md (6)

6-26: LGTM! Clear and concise quick start instructions.

The simplified deployment flow with the service table and verification step provides a good user experience for getting started quickly.


28-30: Good troubleshooting addition.

This note proactively addresses a common metrics issue users encounter.


32-48: Excellent restructuring with the language versions table.

The tabular format makes it much easier to scan supported languages and versions compared to prose descriptions.


54-67: Great addition of the architecture diagram.

The mermaid flowchart provides a clear visual overview of the system's data flow.


114-140: Well-chosen Python 3.10+ example.

The code demonstrates modern Python features (TypeGuard, match statement) and the expected output is correct.


84-108: All linked documentation files exist in the repository. No action required.

mkdocs.yml (3)

84-87: Critical configuration for snippet references.

The base_path configuration is correctly set to support the snippet references (--8<-- markers) used throughout the documentation. The dual paths (. and docs) provide flexibility for referencing both repository root files and docs-relative files.


14-15: Ensure the logo asset file exists in the repository.

The mkdocs.yml references assets/images/logo.png for both logo and favicon. Verify that docs/assets/images/logo.png is included in this PR or already present in the repository.


111-156: All newly added navigation entries reference existing files.

All 10 newly referenced documentation files are present in the repository: authentication, rate-limiting, idempotency, execution-queue, runtime-registry, middleware, saved-scripts, metrics-reference, grafana-integration, and admin-api.

docs/operations/deployment.md (7)

7-28: Excellent architectural overview diagram.

The mermaid flowchart clearly illustrates the deployment architecture and how local/production modes share container images.


76-92: Clear visualization of the Docker build strategy.

The diagram effectively communicates the multi-stage build approach and dependency caching strategy.


130-141: Useful healthcheck reference table.

The consolidated healthcheck commands provide a quick reference for troubleshooting service availability.


211-215: The values.yaml file reference and line range are correct. helm/integr8scode/values.yaml exists and lines 10-19 contain relevant configuration examples including imagePullPolicy and imageRegistry with appropriate documentation.


32-36: Snippet reference is valid. The deploy.sh file exists at the repository root and lines 6-18 contain meaningful usage documentation for the script's available commands.


393-401: Reference table for key deployment files is well-organized and accurate.

All files referenced in the table exist in the repository and are correctly linked. The descriptions clearly convey the purpose of each file, making it a helpful resource for developers working with the deployment setup.


95-111: Remove incorrect claim about .venv preservation.

The docker-compose.yaml snippet (lines 95-99) mounts only application code directories (app, workers, scripts, certs), not the .venv. The .venv is built into the Docker image during the build phase (set in Dockerfile.base line 26: ENV PATH="/app/.venv/bin:$PATH") and is not a mounted volume. Revise to clarify that volume mounts enable live code changes only, while dependencies in the .venv remain part of the built image.

Likely an incorrect or invalid review comment.

@sonarqubecloud
Copy link

sonarqubecloud bot commented Jan 1, 2026

@HardMax71 HardMax71 merged commit a22ffae into main Jan 1, 2026
17 checks passed
@HardMax71 HardMax71 deleted the docs-update branch January 1, 2026 00:22
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.

3 participants