Skip to content

docs(adr): add ADR 0016 for à la carte AIPCC content delivery - #4359

Open
jiridanek wants to merge 1 commit into
opendatahub-io:mainfrom
jiridanek:docs/adr-0016-a-la-carte-content-delivery
Open

docs(adr): add ADR 0016 for à la carte AIPCC content delivery#4359
jiridanek wants to merge 1 commit into
opendatahub-io:mainfrom
jiridanek:docs/adr-0016-a-la-carte-content-delivery

Conversation

@jiridanek

@jiridanek jiridanek commented Aug 11, 2026

Copy link
Copy Markdown
Member

Summary

  • Add ADR 0016 recording how the notebooks repository adopts AIPCC's à la carte content-delivery model.
  • Covers channel-based identity (cuda13.0-torch2.11-ubi9), Rolling/Stable maturity labels, lockfile + base image as the release contract, per-image channel selection, and mapping from the AIPCC Release Plan spreadsheet.
  • Links to canonical AIPCC work (AIPCC-27889, team-docs MR !263) and prior context (RHAIENG-569, AIPCC-13781).

Test plan

  • Documentation-only change; no code or build impact
  • ADR follows existing docs/architecture/decisions/ format and numbering (0016)
  • Reviewers familiar with AIPCC à la carte proposal confirm accuracy against MR !263

Made with Cursor

Summary by CodeRabbit

  • Documentation
    • Added an architecture decision record documenting channel-based, à la carte content delivery for AIPCC notebooks.
    • Defined channel identities based on accelerator, framework version, and operating system, with Rolling and Stable represented as metadata.
    • Documented per-image channel selection, lockfiles, immutable base-image pins, ABI compatibility limits, GA registration, EUS handling, and migration considerations.

Record how the notebooks repository adopts AIPCC channel-based content
identity (accel+torch+OS), Rolling/Stable maturity labels, lockfile-as-
contract, and per-image channel selection decoupled from rhoai/<release>.

Co-authored-by: Cursor <cursoragent@cursor.com>
@github-actions github-actions Bot added the review-requested GitHub Bot creates notification on #pr-review-ai-ide-team slack channel label Aug 11, 2026
@github-actions

Copy link
Copy Markdown
Contributor

@jiridanek — This PR is from a fork.
The build-rhoai CI job was skipped because subscription
builds (RHEL, AIPCC) need secrets unavailable to forks.
ODH builds and code quality checks still ran.

Recommended: Push your branch to the main repo for full CI:

git remote add upstream https://github.com/opendatahub-io/notebooks.git
git push upstream HEAD:jiridanek/your-branch-name

Then open a new PR from that branch.

No push access? A maintainer will cherry-pick and test your changes.

See CONTRIBUTING.md for details.

@openshift-ci openshift-ci Bot added size/l and removed size/l labels Aug 11, 2026
@coderabbitai

coderabbitai Bot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor
📝 Walkthrough

Walkthrough

The ADR proposes channel-based AIPCC content delivery for notebook images. It defines fixed channel identities based on accelerator, torch version, and OS, with Rolling and Stable metadata labels. It establishes immutable timestamped base images and per-image lockfiles as release artifacts. It maps legacy release-plan concepts to channels, documents repository migration work, defines ABI-ceiling handling and EUS retention, and records related references.

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

🚥 Pre-merge checks | ✅ 11
✅ Passed checks (11 passed)
Check name Status Explanation
Title check ✅ Passed The title uses imperative mood, has no trailing period, and clearly identifies the documentation change; a ticket reference is optional for docs changes.
Description check ✅ Passed The description explains the ADR scope, links related work, and provides a documentation-focused test plan, although it omits some repository checklist items.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Branch Prefix Policy ✅ Passed The change is based on origin/main, and the observed title docs(adr): add ADR 0016 for à la carte AIPCC content delivery has no branch prefix.
Contribution Quality And Spam Detection ✅ Passed The commit adds one substantive 360-line ADR, follows existing ADR format, links AIPCC/Jira work, and has no code or security fix; no qualifying security/code-quality signal is present.
No Hardcoded Secrets ✅ Passed No hardcoded secrets found (CWE-798): the added ADR has no credential-bearing URLs, secret assignments, private-key markers, or standalone base64 secrets.
No Weak Cryptography ✅ Passed The commit adds only one Markdown ADR; added lines contain no banned primitive, cryptographic implementation, or secret-comparison usage.
No Injection Vectors ✅ Passed The patch adds only Markdown and one static YAML example; no SQL, shell, eval/exec, unsafe YAML/pickle, or HTML injection sinks were found (CWE-78, CWE-79, CWE-89, CWE-94, CWE-502).
No Privileged Containers ✅ Passed The pull request adds only a Markdown ADR; no Kubernetes manifest, Helm template, Dockerfile, or prohibited privilege setting was added.
No Sensitive Data In Logs ✅ Passed The PR adds only one Markdown ADR; review found no logging statements, request/response dumps, credentials, tokens, API keys, or PII.
✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • Create stacked PR
  • Commit on current branch

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

@openshift-ci
openshift-ci Bot requested a review from dibryant August 11, 2026 13:21
@openshift-ci openshift-ci Bot added the size/l label Aug 11, 2026
@openshift-ci
openshift-ci Bot requested a review from ysok August 11, 2026 13:21
@openshift-ci

openshift-ci Bot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign daniellutz for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@openshift-ci openshift-ci Bot added size/l and removed size/l labels Aug 11, 2026
@codecov-commenter

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 44.29%. Comparing base (34126ac) to head (4ef5f2b).

Additional details and impacted files

Impacted file tree graph

@@           Coverage Diff           @@
##             main    #4359   +/-   ##
=======================================
  Coverage   44.29%   44.29%           
=======================================
  Files          46       46           
  Lines        5861     5861           
  Branches      977      977           
=======================================
  Hits         2596     2596           
  Misses       3045     3045           
  Partials      220      220           
Flag Coverage Δ
python 44.29% <ø> (ø)

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


Continue to review full report in Codecov by Harness.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 34126ac...4ef5f2b. Read the comment docs.

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@coderabbitai coderabbitai Bot left a comment

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.

Actionable comments posted: 2

🧹 Nitpick comments (1)
docs/architecture/decisions/0016-adopt-a-la-carte-content-delivery-for-aipcc-notebooks.md (1)

98-104: 🗄️ Data Integrity & Integration | 🔵 Trivial | ⚡ Quick win

Make GA channel adoption auditable.

The ADR requires per-channel GA registration and a durable adoption record, but the mechanism is marked TBD. Add the responsible role, record location, and completion criterion, or link a tracking issue with those exit criteria. Otherwise, a release can ship with correct repository pins but no evidence that AIPCC received the required adoption.

🤖 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/architecture/decisions/0016-adopt-a-la-carte-content-delivery-for-aipcc-notebooks.md`
around lines 98 - 104, Update the GA channel adoption section of the ADR to
replace the “mechanism TBD” statement with an actionable process: identify the
responsible role, specify where the durable channel and lockfile adoption record
is stored, and define the evidence required to consider registration complete.
Alternatively, link a tracking issue that explicitly contains those same exit
criteria.
🤖 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/architecture/decisions/0016-adopt-a-la-carte-content-delivery-for-aipcc-notebooks.md`:
- Around line 193-203: Revise the “Channel support follows consumption” section
to define a single unambiguous formula: calculate each consumer’s end date as
the minimum of its release EOL, base-image support end, and upstream torch
support end, then set the channel end date to the maximum of those consumer end
dates. Clarify that LTS/EUS consumers use the 18-month timeline within this
calculation, and that channels without supported consumers follow the separately
specified minimum deprecation-notice window once Release Engineering sets it.
- Around line 180-191: Update the release-contract decision to define a
versioned, immutable release manifest for each image family, mapping it to an
immutable Git reference, exact lockfile, and base-image digest. Replace
references to the moving main or stable branch and post-GA lockfile updates as
the GA identity, and document the registry immutability guarantee if timestamp
tags remain the base-image identity.

---

Nitpick comments:
In
`@docs/architecture/decisions/0016-adopt-a-la-carte-content-delivery-for-aipcc-notebooks.md`:
- Around line 98-104: Update the GA channel adoption section of the ADR to
replace the “mechanism TBD” statement with an actionable process: identify the
responsible role, specify where the durable channel and lockfile adoption record
is stored, and define the evidence required to consider registration complete.
Alternatively, link a tracking issue that explicitly contains those same exit
criteria.
🪄 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: Repository YAML (base), Central YAML (inherited), Repository UI (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: 60e490b9-0532-45eb-9b31-44e91480081f

📥 Commits

Reviewing files that changed from the base of the PR and between 34126ac and 4ef5f2b.

📒 Files selected for processing (1)
  • docs/architecture/decisions/0016-adopt-a-la-carte-content-delivery-for-aipcc-notebooks.md
🔗 Linked repositories identified

CodeRabbit considers these linked repositories for cross-repo context during reviews:

  • opendatahub-io/kubeflow (manual)
  • opendatahub-io/opendatahub-operator (manual)
  • opendatahub-io/odh-dashboard (manual)

Comment on lines +180 to +191
### Lockfile plus base image is the release contract

"What did RHOAI 3.6 GA ship?" is answered by **this repository's lockfile**
(Renovate/Dependabot-managed, on `main` or a stable branch) plus the immutable
timestamp-tagged RHAIBI base image referenced in `build-args/konflux.*.conf`.
AIPCC builds every compatible package version in a channel and retains published
versions for the channel's supported lifecycle; the lockfile pins exactly what a
release shipped and is fully reproducible against the channel.

Post-GA, ABI-compatible fixes (qualified CVEs and urgent bug fixes) flow through
channel updates. This team bumps its lockfile; RHOAI release management approves
each z-stream re-pin.

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.

🗄️ Data Integrity & Integration | 🟠 Major | 🏗️ Heavy lift

Make the release contract immutable and per-image.

Lines 81-82 define the release contract as a set of lockfiles and base-image pins. Lines 182-184 refer to a singular lockfile on main or a stable branch. Lines 189-191 allow that lockfile to change after GA. A moving branch cannot identify the GA snapshot.

Define a versioned release manifest that maps each image family to an immutable Git reference, exact lockfile, and base-image digest. If timestamp tags are the intended identity, document the registry immutability guarantee. Otherwise, the claim of full reproducibility is not valid.

🤖 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/architecture/decisions/0016-adopt-a-la-carte-content-delivery-for-aipcc-notebooks.md`
around lines 180 - 191, Update the release-contract decision to define a
versioned, immutable release manifest for each image family, mapping it to an
immutable Git reference, exact lockfile, and base-image digest. Replace
references to the moving main or stable branch and post-GA lockfile updates as
the GA identity, and document the registry immutability guarantee if timestamp
tags remain the base-image identity.

Comment on lines +193 to +203
### Channel support follows consumption

A channel is supported while **any** product version that consumes it is
supported. Support duration is **capped** to the shortest of: the consuming
release branch's lifetime, base-image content support, and upstream torch
support — so consumers may be asked to move to a newer-torch channel at the next
release rather than maintaining aged-out torch streams indefinitely. Its end date
is the maximum of its consumers' EOLs. For LTS/EUS consumers, a channel they
consume is maintained to the LTS timeline (18 months). Channels no supported
release adopts are deprecated quickly, with a minimum deprecation notice (exact
window TBD with Release Engineering).

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.

🎯 Functional Correctness | 🟠 Major | 🏗️ Heavy lift

Resolve the conflicting channel support rules.

Line 195 says a channel remains supported while any consuming product is supported. Lines 196-199 cap support at the shortest dependency lifetime. Line 200 then sets the channel end date to the maximum consumer EOL. These rules produce different dates.

Define one formula, such as consumer_end = min(release_eol, base_image_support_end, torch_support_end) and channel_end = max(consumer_end). State how the 18-month EUS rule and the TBD deprecation window apply. Without this clarification, a required channel can be retired too early or retained beyond its support boundary.

🤖 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/architecture/decisions/0016-adopt-a-la-carte-content-delivery-for-aipcc-notebooks.md`
around lines 193 - 203, Revise the “Channel support follows consumption” section
to define a single unambiguous formula: calculate each consumer’s end date as
the minimum of its release EOL, base-image support end, and upstream torch
support end, then set the channel end date to the maximum of those consumer end
dates. Clarify that LTS/EUS consumers use the 18-month timeline within this
calculation, and that channels without supported consumers follow the separately
specified minimum deprecation-notice window once Release Engineering sets it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

review-requested GitHub Bot creates notification on #pr-review-ai-ide-team slack channel size/l

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants