Skip to content

Chore/repository hardening#134

Merged
raphael-frank merged 5 commits into
mainfrom
chore/repository-hardening
Jul 16, 2026
Merged

Chore/repository hardening#134
raphael-frank merged 5 commits into
mainfrom
chore/repository-hardening

Conversation

@raphael-frank

@raphael-frank raphael-frank commented Jul 15, 2026

Copy link
Copy Markdown
Collaborator

I fixed some outstanding of the documentation and added a root level makefile for simplifications.

Closes #132

Summary by CodeRabbit

  • New Features

    • Added convenient repo-root commands to start/stop, view logs/status, and run repo-wide test, lint, build, and verify checks.
    • Updated architecture documentation with refreshed subsystem decomposition, use-case overview, and an expanded domain/object model diagram.
  • Documentation

    • Clarified GenAI persistence: generated report text is stored in PostgreSQL under a dedicated reports schema, while RAG documents are stored in the Chroma vector store.
    • Added guidance for regenerating Mermaid diagrams and included a note for manual diagram remediation.
    • Refined the problem statement to emphasize using trainer feedback plus club reference material for progress reports.

architecture.md claimed no service reads another's schema directly,
but event/letter services do via read-only shadow entities backed by
the shared `reader` Postgres role. Both README.md and architecture.md
also said GenAI persists to Chroma "instead of" PostgreSQL, omitting
that it owns a sixth `reports` schema where generated report text is
actually written.
…l diagrams

The three mandatory UML-style diagrams didn't exist for the current
system - the only PNGs in the repo (docs/outdated/) model a
pre-refactor 3-service topology and are unreferenced from any current
doc. These are generated from Mermaid sources (docs/diagrams/*.mmd) so
they can be regenerated instead of drifting silently again.

Subsystem decomposition depicts the Kubernetes/Rancher deployment
specifically (nginx ingress, oauth2-proxy gating only the web-client,
per-service Bearer-JWT checks, two separate Postgres instances),
sourced from the actual Helm values/templates rather than a blurry
cross-environment abstraction.

Use case and analysis object model are built from the client's
perspective (navPolicy.ts's role table, types.ts's flat Role
attribute, each feature's role-gated mutations) rather than the
server's per-scope join-table entities, which don't reflect how the
system actually presents roles to users. Styled closer to the retired
docs/outdated/ diagrams: actor-specific use cases with a genuine
«include», and an abstract Member with role subclasses carrying real
operations.
Report generation only ever analyzes feedback entries plus RAG
knowledge-base excerpts (services/py-genai-helper/reports.py) - it
never reads attendance records, and member/team names are only
resolved for display, not analyzed.
Contributors currently have to know each service's own invocation
(gradlew from its own directory, pnpm from web-client/, docker compose
specifically from infra/ so the override merges) with no single
documented entrypoint. Adds up/down/logs/ps (compose lifecycle, always
cd'd into infra/ so docker-compose.override.yml auto-merges), and
test/lint/build that always run against everything (no per-service
targets, kept deliberately simple), plus verify mirroring what CI
checks per PR.
@raphael-frank
raphael-frank requested a review from f-s-h July 15, 2026 16:16
@raphael-frank raphael-frank self-assigned this Jul 15, 2026
@coderabbitai

coderabbitai Bot commented Jul 15, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 39dda9ee-073c-454a-ac21-0ede3731aa18

📥 Commits

Reviewing files that changed from the base of the PR and between ac62f69 and 10ec77e.

⛔ Files ignored due to path filters (2)
  • docs/diagrams/analysis-object-model.png is excluded by !**/*.png
  • docs/diagrams/use-case.png is excluded by !**/*.png
📒 Files selected for processing (3)
  • docs/diagrams/README.md
  • docs/diagrams/analysis-object-model.mmd
  • docs/diagrams/use-case.mmd
🚧 Files skipped from review as they are similar to previous changes (1)
  • docs/diagrams/README.md

📝 Walkthrough

Walkthrough

The change adds a root Makefile for Docker Compose and repository-wide checks, updates GenAI persistence and architecture documentation, and introduces Mermaid diagrams with regeneration guidance.

Changes

Repository workflows and documentation

Layer / File(s) Summary
Root-level developer orchestration
Makefile, README.md
Adds Docker Compose lifecycle targets and aggregate Gradle, Python, and web-client test, lint, build, and verification commands, with README usage instructions.
Persistence and GenAI documentation
README.md, docs/architecture.md, docs/problem-statement.md
Documents Chroma storage for RAG documents, PostgreSQL persistence for generated reports, the reports schema, read-only cross-schema access, and refined report-generation inputs.
Architecture diagrams and diagram maintenance
docs/architecture.md, docs/diagrams/*
Adds Mermaid source documentation and diagrams covering the object model, subsystem decomposition, and system use cases, with PNG regeneration instructions.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Suggested labels: infra

Suggested reviewers: f-s-h

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Linked Issues check ⚠️ Warning The PR only covers docs updates and a root Makefile; most #132 hardening items like CI, governance, dependency automation, and smoke tests are absent. Either add the missing hardening work before closing #132 or split the remaining requirements into separate PRs and keep this PR scoped to the implemented subset.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title is concise and accurately reflects the main change: repository hardening via docs updates and a root Makefile.
Out of Scope Changes check ✅ Passed The changes stay within repository hardening and documentation orchestration; no clearly unrelated or extra-scope code was introduced.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/repository-hardening

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.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/diagrams/use-case.mmd`:
- Around line 21-23: Update the Admin relationships in the use-case diagram to
match the documented role contract: include UC9 because it is available to both
Coach and Director, and remove or otherwise reconcile the Admin-only UC8a
relationship so Admin represents the union of those roles. Keep the Coach and
Director edges unchanged.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 82c7ecfb-1e11-41fa-bea1-539fdf6da73d

📥 Commits

Reviewing files that changed from the base of the PR and between 55fb6e0 and ac62f69.

⛔ Files ignored due to path filters (3)
  • docs/diagrams/analysis-object-model.png is excluded by !**/*.png
  • docs/diagrams/subsystem-decomposition.png is excluded by !**/*.png
  • docs/diagrams/use-case.png is excluded by !**/*.png
📒 Files selected for processing (3)
  • docs/diagrams/analysis-object-model.mmd
  • docs/diagrams/subsystem-decomposition.mmd
  • docs/diagrams/use-case.mmd
🚧 Files skipped from review as they are similar to previous changes (2)
  • docs/diagrams/subsystem-decomposition.mmd
  • docs/diagrams/analysis-object-model.mmd

Comment thread docs/diagrams/use-case.mmd Outdated
Comment on lines +21 to +23
Coach --> UC5 & UC7 & UC6 & UC8 & UC9 & UC10 & UC11b
Admin --> UC5 & UC7 & UC6 & UC8 & UC8a & UC10 & UC11a & UC11b
Director --> UC6 & UC8 & UC9 & UC10 & UC11b

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Align Admin’s edges with the documented capability contract.

docs/architecture.md:53-58 says Admin is exactly the union of Coach and Director, but this diagram omits Admin’s UC9 edge even though both roles have it, while UC8a is shown as Admin-only. Either update the documentation or add the missing/generalized relationships so the diagram and role contract agree.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/diagrams/use-case.mmd` around lines 21 - 23, Update the Admin
relationships in the use-case diagram to match the documented role contract:
include UC9 because it is available to both Coach and Director, and remove or
otherwise reconcile the Admin-only UC8a relationship so Admin represents the
union of those roles. Keep the Coach and Director edges unchanged.

@raphael-frank
raphael-frank force-pushed the chore/repository-hardening branch from ac62f69 to 10ec77e Compare July 16, 2026 09:04
@raphael-frank
raphael-frank merged commit 23630c0 into main Jul 16, 2026
18 checks passed
@raphael-frank
raphael-frank deleted the chore/repository-hardening branch July 16, 2026 09:35
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.

Chore: Repository hardening — configuration, CI, automation, and governance

1 participant