Skip to content

docs: add reference to MLOps template contract (fixes #151) - #166

Closed
emberb170d wants to merge 6 commits into
Create-Python-App:mainfrom
emberb170d:mlops-contract-docs
Closed

docs: add reference to MLOps template contract (fixes #151)#166
emberb170d wants to merge 6 commits into
Create-Python-App:mainfrom
emberb170d:mlops-contract-docs

Conversation

@emberb170d

@emberb170demberb170d commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Adds reference to MLOps template contract in documentation

Summary by CodeRabbit

  • Documentation

    • Added guidance for route ownership, reserved paths, extension prefixes, middleware, conflict declarations, and onboarding.
    • Added authoring examples for handling route and data-path collisions.
    • Documented compatible templates, testing commands, environment variables, and potential extension conflicts.
    • Added a link to the shared MLOps template contract.
  • Template Updates

    • Standardized formatting settings across starter templates.
    • Declared Python 3.12 as the supported version for available Python-based templates.

@coderabbitai

coderabbitaiBot commented Aug 10, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

The PR adds FastAPI AI route ownership and conflict documentation, expands the chat extension README, links the MLOps contract, and adds shared editor settings and Python 3.12 declarations to templates.

Changes

Extension documentation

Layer / File(s)Summary
Route ownership and conflict contract
docs/recipes/FASTAPI_AI_ROUTE_OWNERSHIP.md, docs/AUTHORING.md
Documents protected routes, extension prefixes, mounting rules, middleware, incompatibleWith declarations, validation checks, and the MLOps contract reference.
Chat extension reference
extensions/fastapi-ai-chat/README.md
Documents compatible types, test commands, environment variables, and route conflicts with other chat extensions.

Template defaults

Layer / File(s)Summary
Template formatting and Python defaults
templates/*/.editorconfig, templates/*/.python-version
Adds common editor formatting rules and Python 3.12 declarations to the templates.

Estimated code review effort: 2 (Simple) | ~10 minutes

Possibly related issues

  • cpa-templates issue 120 — Covers the addition of the FastAPI AI route ownership guide.
  • cpa-templates issue 122 — Covers the chat extension compatibility, environment, test, and conflict documentation.
  • cpa-templates issue 152 — Covers the .editorconfig additions across the templates.

Possibly related PRs

Suggested reviewers:ulises-jeremias

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title accurately describes the documentation reference to the MLOps template contract and links it to issue #151.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.
✨ Finishing Touches 💡 1
⚔️ Resolve merge conflicts 💡
  • Resolve merge conflict in branch mlops-contract-docs
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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.

@coderabbitaicoderabbitaiBot 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: 2

🤖 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/AUTHORING.md`:
- Around line 410-420: Complete the “Data path collision (modality packs)”
example in docs/AUTHORING.md by showing entries for all three packs:
all-mlops-tabular-data, all-mlops-image-data, and all-mlops-sequence-data. Make
each incompatibleWith list symmetric and include every pairwise conflict,
consistent with the one-modality-pack rule; do not leave the block as a partial
example.
In `@extensions/fastapi-ai-chat/README.md`:
- Line 56: Update the AI_CHAT_PROVIDER documentation in the README to list mock
as the only currently supported provider, removing unimplemented providers from
the supported-values description and optionally labeling them as future
placeholders. Keep the generated template and test behavior consistent with this
documented provider scope.
🪄 Autofix

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: 1be16644-0eb3-4ac9-9541-4dbd0f7dafe6

📥 Commits

Reviewing files that changed from the base of the PR and between 62aacc3 and 6df3191.

📒 Files selected for processing (14)
  • docs/AUTHORING.md
  • docs/recipes/FASTAPI_AI_ROUTE_OWNERSHIP.md
  • extensions/fastapi-ai-chat/README.md
  • templates/celery-worker/.editorconfig
  • templates/celery-worker/.python-version
  • templates/cli-starter/.editorconfig
  • templates/cli-starter/.python-version
  • templates/django-api/.editorconfig
  • templates/django-api/.python-version
  • templates/fastapi-starter/.editorconfig
  • templates/fastapi-starter/.python-version
  • templates/mlops-sklearn-starter/.editorconfig
  • templates/mlops-sklearn-starter/.python-version
  • templates/uv-workspace-starter/.editorconfig

Comment threaddocs/AUTHORING.md
Comment on lines +410 to +420
**Example 2 — Data path collision (modality packs):**

```json
{
"name": "MLOps Tabular Data",
"slug": "all-mlops-tabular-data",
"incompatibleWith": ["all-mlops-image-data", "all-mlops-sequence-data"]
}
```

Competing modality packs overwrite the same `data/` paths. Only one per generated project.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

Complete the MLOps conflict matrix.

The example at Lines [413-417] defines only all-mlops-tabular-data. It omits reciprocal declarations for all-mlops-image-data and all-mlops-sequence-data. It also omits the image-to-sequence conflict, although Line [420] says that only one modality pack can be selected.

docs/recipes/FASTAPI_AI_ROUTE_OWNERSHIP.md, Lines [107-108], requires symmetric incompatibleWith pairs. Show all three entries with a complete pairwise matrix, or label this block explicitly as a partial example.

Proposed completion
 {
"name": "MLOps Tabular Data",
"slug": "all-mlops-tabular-data",
"incompatibleWith": ["all-mlops-image-data", "all-mlops-sequence-data"]
-}+},+{+ "name": "MLOps Image Data",+ "slug": "all-mlops-image-data",+ "incompatibleWith": ["all-mlops-tabular-data", "all-mlops-sequence-data"]+},+{+ "name": "MLOps Sequence Data",+ "slug": "all-mlops-sequence-data",+ "incompatibleWith": ["all-mlops-tabular-data", "all-mlops-image-data"]+}
🤖 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/AUTHORING.md` around lines 410 - 420, Complete the “Data path collision
(modality packs)” example in docs/AUTHORING.md by showing entries for all three
packs: all-mlops-tabular-data, all-mlops-image-data, and
all-mlops-sequence-data. Make each incompatibleWith list symmetric and include
every pairwise conflict, consistent with the one-modality-pack rule; do not
leave the block as a partial example.


| Variable | Default | Description |
|----------|---------|-------------|
| `AI_CHAT_PROVIDER` | `mock` | Provider: `mock`, `openai`, `anthropic`, `google`, etc. |

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

Document only implemented providers.

Line [56] lists openai, anthropic, and google, but the generated template describes its provider abstraction as mock-only in extensions/fastapi-ai-chat/README.md, Lines [9-10]. The service error path and extensions/fastapi-ai-chat/template/tests/test_chat.py, Lines [74-86], also treat unknown providers as failures.

Either implement and test these providers, or document mock as the only supported provider and mark the others as future placeholders.

🤖 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 `@extensions/fastapi-ai-chat/README.md` at line 56, Update the AI_CHAT_PROVIDER
documentation in the README to list mock as the only currently supported
provider, removing unimplemented providers from the supported-values description
and optionally labeling them as future placeholders. Keep the generated template
and test behavior consistent with this documented provider scope.

@ulises-jeremias

Copy link
Copy Markdown
Member

Closing. The #151 MLOps contract link already landed in #164. The leftover files collide with #171 / #170 / #169, and a few of the route/README claims do not match the current tree (for example /api/v1/health/ready vs /healthz, RAG routes with no router.py, and AI_CHAT_PROVIDER values other than mock). Please treat #171 / #170 / #169 as the source of truth for those topics.

Sign up for freeto 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.

2 participants

@emberb170d@ulises-jeremias