Skip to content

OSAC-2870: rename 5 more EPs - #149

Merged
openshift-merge-bot[bot] merged 3 commits into
osac-project:mainfrom
tchughesiv:OSAC-2870-followup2-conflict-resolved-renames
Jul 22, 2026
Merged

openshift-merge-bot[bot] merged 3 commits into
osac-project:mainfrom
tchughesiv:OSAC-2870-followup2-conflict-resolved-renames

Conversation

@tchughesiv

@tchughesiv tchughesiv commented Jul 22, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Third pass of the OSAC-2870 enhancement-proposals naming cleanup (following #139 and #144). Renames 5 more directories:

  • 3 that had a resolvable Jira key the whole time, but were excluded from the original audit's scope specifically because each had an active PR open against it when that audit was drafted — the original pass deliberately avoided renaming directories mid-flight under someone else's unrelated in-progress work.
  • 2 more found afterward by a follow-up audit: their docs had no Jira key anywhere in the frontmatter or body, but the original PR/commit title that created the directory did (e.g. MGMT-23384: Add Carbide integration enhancement proposal (#27)) — confirmed by cross-checking that the doc's listed author matches the resolved Jira issue's assignee.

Revisiting now: the first 3's blocking PRs (#108, #131, #134, #143) are either merged or still open with unrelated CHANGES_REQUESTED feedback outstanding, so a rename today doesn't disrupt an otherwise-ready merge for any of them — see the per-PR rebase impact below. The 2 found via hidden PR-title keys have no open PRs against them at all.

Changes

Directory Renamed to Why it was excluded from the original audit
storage-control-plane-osac-2872 OSAC-2872-storage-control-plane Key existed, but the directory itself hadn't merged to main yet — it landed via #134, which was still open when #139 was planned/built, and merged only ~1 hour before #139 did.
cluster-and-vm-provisioning-wizard OSAC-1421-cluster-and-vm-provisioning-wizard Key (OSAC-1421) has been in the doc's tracking-link since June; #108 was open against this directory at audit time.
metering-and-usage-tracking OSAC-985-metering-and-usage-tracking Key (OSAC-985) has been in the doc's tracking-link for weeks; #131 and #143 were both open against this directory at audit time.
carbide-integration OSAC-1191-carbide-integration Doc had no Jira key at all (tracking-link: None). Key found in MGMT-23384 in PR #27's title → resolves to OSAC-102 (Story) → OSAC-31 (Epic) → OSAC-1191 (Feature).
computeinstance-phase-condition-expansion OSAC-1027-computeinstance-phase-condition-expansion Doc had tracking-link: TBD. Key found in MGMT-22638 in PR #24's title → resolves to OSAC-395 (Task) → OSAC-53 (Epic) → OSAC-1027 (Feature).

All 5 renames used git mv to preserve file history (visible as 100%-similarity renames in the diff).

Cross-references updated

Searched the full repo (all file types, not just .md) for references to all 5 old directory names, plus re-swept every retired directory name from the entire OSAC-2870 effort (25 renames across all prior PRs) to catch anything introduced by unrelated merges since our last audit. Found and updated three:

  • OSAC-1319-bare-metal-instance-ui/design.md linked to /enhancements/cluster-and-vm-provisioning-wizard, now points to /enhancements/OSAC-1421-cluster-and-vm-provisioning-wizard.
  • OSAC-55-vm-snapshots/README.md linked to /enhancements/computeinstance-phase-condition-expansion, now points to /enhancements/OSAC-1027-computeinstance-phase-condition-expansion.
  • catalog-items/ui-design.md (merged via #128 after our earlier renaming passes) linked to /enhancements/cluster-and-vm-provisioning-wizard, now points to /enhancements/OSAC-1421-cluster-and-vm-provisioning-wizard. This one wasn't stale when OSAC-2870: Standardize enhancement-proposals directory/file naming convention #139/OSAC-2870: rename 8 more README-only EPs with resolvable Jira keys #144 were built — it didn't exist yet — so it's a good example of why a periodic re-sweep is worth doing.

The remaining hits from the full re-sweep were all in .github/scripts/test_check_ep_naming.py — unit test fixtures using old directory names as arbitrary/illustrative path strings (e.g. reproducing the #121 false-positive scenario), not live references. Left those alone.

Notes for reviewers

  • Original authors, tagged for awareness of their directory's move (no action needed unless something looks wrong):
  • #108 and #143 are still open, but each only modifies files that already exist at these paths — git's rename detection should let both rebase cleanly against the new path without manual intervention, the same way #136 merged cleanly against an earlier OSAC-2870 rename. Neither is close to merging on its own right now regardless (OSAC-1421: Tenant-managed cluster node_sets #108 has outstanding CHANGES_REQUESTED from AlonaKaplan; Design: OSAC Metering and Usage Tracking #131/OSAC-985: narrow CAP-17 wording to traceability #143 likewise), so this isn't racing anything toward merge.
  • #131 (still open, adds a new metering-and-usage-tracking/design.md) is the one exception — since it's adding a file git has no rename history for, it won't automatically follow the directory rename. Flagged this directly on the PR so its author can retarget to enhancements/OSAC-985-metering-and-usage-tracking/design.md on their next rebase (which they'll need to do anyway to address open review feedback).
  • Didn't touch type-safe-resource-references (OSAC-1330) — #121 has already renamed it to OSAC-1330-type-safe-resource-references in its own branch (alongside adding design.md), so there's nothing left for this PR to do there; duplicating that rename here would only create unnecessary rebase friction for OSAC-2766: Design - Type-Safe Resource References #121 once it lands.
  • Also didn't touch simplified-resource-creation or the unified-networking/unified-networking-prd pair — both flagged as genuinely ambiguous (a stale/mismatched Jira key in one case, a legacy split-PRD-and-design-across-two-directories structure in the other) rather than a simple rename; left for a separate decision.
  • carbide-integration / computeinstance-phase-condition-expansion discovery method: checked every remaining non-conforming directory's origin commit and originating PR's title/body/comments for a Jira key not present in the doc itself. Two hits, both MGMT- keys translated to OSAC- and traced up to a Feature via the parent chain. Cross-checked each against the doc's own authors: field matching the resolved issue's assignee, to guard against picking up an unrelated key that happened to appear in the same PR/commit title. All other remaining non-conforming directories (bare-metal-fulfillment, catalog-items, dns-api, organizations, repository-consolidation, tenant-specific-storageclasses/vm-api-fields, vmaas) came up empty on this same title/body/comment search — genuinely keyless.

Testing

  • pre-commit run --all-files locally — all hooks pass, including check-ep-naming.
  • Confirmed via grep that no stray references to any of the 5 old directory names remain anywhere in the repo.

@openshift-ci-robot

openshift-ci-robot commented Jul 22, 2026 •

Copy link
Copy Markdown

@tchughesiv: This pull request references OSAC-2870 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the sub-task to target the "5.0.0" version, but no target version was set.

Details

In response to this:

Summary

Third pass of the OSAC-2870 enhancement-proposals naming cleanup (following #139 and #144). Renames 3 more directories that were missed in the earlier passes — not due to a missing Jira key, but because each had an active, unmerged PR against it at the time the original audit/plan was drafted, so renaming them then would have been chasing a moving target.

Changes

Directory Renamed to Why it was missed earlier
storage-control-plane-osac-2872 OSAC-2872-storage-control-plane Key existed, but the directory itself hadn't merged to main yet — it landed via #134, which was still open when #139 was planned/built, and merged only ~1 hour before #139 did.
cluster-and-vm-provisioning-wizard OSAC-1421-cluster-and-vm-provisioning-wizard Key (OSAC-1421) has been in the doc's tracking-link since June; #108 was open against this directory at audit time.
metering-and-usage-tracking OSAC-985-metering-and-usage-tracking Key (OSAC-985) has been in the doc's tracking-link for weeks; #131 and #143 were both open against this directory at audit time.

All 3 renames used git mv to preserve file history (visible as 100%-similarity renames in the diff).

Cross-references updated

Searched the full repo for references to all 3 old directory names. Found and updated one: OSAC-1319-bare-metal-instance-ui/design.md linked to /enhancements/cluster-and-vm-provisioning-wizard, now points to /enhancements/OSAC-1421-cluster-and-vm-provisioning-wizard. No other cross-references found for any of the 3 directories.

Notes for reviewers

  • #108 (open, modifies existing design.md/prd.md in cluster-and-vm-provisioning-wizard) and #143 (open, modifies existing metering-and-usage-tracking/prd.md) both only modify files that already exist at these paths — git's rename detection should let both merge/rebase cleanly against the new path without manual intervention, the same way #136 merged cleanly against an earlier OSAC-2870 rename.
  • #131 (open, adds a new metering-and-usage-tracking/design.md) is the one exception — since it's adding a file git has no rename history for, it won't automatically follow the directory rename. Flagging this on #131 directly so its author can retarget to enhancements/OSAC-985-metering-and-usage-tracking/design.md when they rebase.
  • Didn't touch type-safe-resource-references (OSAC-1330) despite it having a clear, resolvable key — #121 is currently open and actively adding a new design.md to that exact directory (same class of risk as #131 above, but for a still-open PR I haven't yet flagged separately). Deferring that one until #121 merges or is retargeted.
  • Also didn't touch simplified-resource-creation or the unified-networking/unified-networking-prd pair — both flagged as genuinely ambiguous (a stale/mismatched Jira key in one case, a legacy split-PRD-and-design-across-two-directories structure in the other) rather than a simple rename; left for a separate decision.

Testing

  • pre-commit run --all-files locally — all hooks pass, including check-ep-naming.
  • Confirmed via grep that no stray references to any of the 3 old directory names remain anywhere in the repo.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@openshift-ci
openshift-ci Bot requested review from avishayt and trewest July 22, 2026 16:17
@coderabbitai

coderabbitai Bot commented Jul 22, 2026 •

Copy link
Copy Markdown

Review Change Stack

Walkthrough

Adds PRDs for storage control-plane and metering initiatives, defines the OSAC-1421 cluster and VM provisioning wizard, updates a related Bare Metal design reference, and replaces outdated enhancement tracking links.

Changes

Cluster and VM provisioning wizard

Layer / File(s) Summary
Wizard requirements and field contracts
enhancements/OSAC-1421-cluster-and-vm-provisioning-wizard/prd.md
Defines the five-step flow, field model, picker contracts, payload rules, validation, acceptance criteria, dependencies, and open decisions.
Wizard workflow and implementation design
enhancements/OSAC-1421-cluster-and-vm-provisioning-wizard/design.md, enhancements/OSAC-1319-bare-metal-instance-ui/design.md
Describes routing, adapters, catalog overlays, API usage, form validation, error handling, security constraints, and test scenarios; updates the related Bare Metal reference.

Storage control plane PRD

Layer / File(s) Summary
Storage control plane capabilities
enhancements/OSAC-2872-storage-control-plane/prd.md
Defines storage driver, tier, authorization, credential, inventory, API, packaging, deployment, and out-of-scope requirements.
Storage workflows and prerequisites
enhancements/OSAC-2872-storage-control-plane/prd.md
Defines tenant/provider workflows, volume ownership visibility, provisioning behavior, assumptions, and prerequisite integrations.

Metering and usage tracking PRD

Layer / File(s) Summary
Metering vocabulary and scope
enhancements/OSAC-985-metering-and-usage-tracking/prd.md
Introduces terminology, scope, goals, non-goals, and actor capabilities.
Metering behavior and operating rules
enhancements/OSAC-985-metering-and-usage-tracking/prd.md
Defines acceptance criteria, operational expectations, assumptions, risks, and metering decisions.
Charge calculation and service meters
enhancements/OSAC-985-metering-and-usage-tracking/prd.md
Defines charge calculations and VMaaS, CaaS, and MaaS metering units.

Enhancement tracking metadata

Layer / File(s) Summary
Tracking references
enhancements/OSAC-1027-computeinstance-phase-condition-expansion/README.md, enhancements/OSAC-1191-carbide-integration/README.md, enhancements/OSAC-55-vm-snapshots/README.md
Replaces placeholder or outdated tracking references with current Jira links and paths.

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

Possibly related PRs

Suggested labels: approved

Suggested reviewers: avishayt, trewest

🚥 Pre-merge checks | ✅ 11
✅ Passed checks (11 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
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.
No-Hardcoded-Secrets ✅ Passed Touched docs only contain Jira/Google-doc links and schema text; no string-literal secrets, embedded creds, or long base64 blobs were found.
No-Weak-Crypto ✅ Passed PR changes only markdown docs/renames; scan of changed files found no MD5/SHA1/DES/RC4/3DES/Blowfish/ECB or secret-comparison code.
No-Injection-Vectors ✅ Passed The PR diff is docs-only, and the changed markdown contains no injection sinks like eval, yaml.load, shell=True, or dangerouslySetInnerHTML.
Container-Privileges ✅ Passed Only a markdown link changed; no K8s/container manifests or privileged settings were introduced.
No-Sensitive-Data-In-Logs ✅ Passed PR only updates enhancement-doc links/renames; diff scan found no added lines with passwords, tokens, secrets, emails, hostnames, or customer data.
Ai-Attribution ✅ Passed All 3 branch commits use Red Hat’s Assisted-by trailer for Claude Code, and no Co-Authored-By AI trailer appears.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title matches the naming-cleanup focus of the PR, though the "5 more EPs" count is not exact.
✨ Finishing Touches
🧪 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.

@github-actions

github-actions Bot commented Jul 22, 2026 •

Copy link
Copy Markdown

AI Design Review: EP-149

Score: 7/8 | Verdict: PASS

Criterion Score Notes
Feasibility 2/2 This is a directory-rename housekeeping PR, not a design document. The renames are trivially implementable, correctly executed with git mv to preserve file history (100% similarity), and the single cross-reference in OSAC-1319-bare-metal-instance-ui/design.md was found and updated. The author verified via grep that no stale references remain.
Testability 1/2 The author ran pre-commit run --all-files (including check-ep-naming) and confirmed via grep that no stray references to old directory names remain. This is appropriate validation for a rename PR, though it is described in the PR body rather than a formal test plan section — scored 1 rather than 2 since the rubric expects structured test plans, but none is meaningfully applicable to a rename operation.
Scope 2/2 Scope is exceptionally well-defined. The PR explicitly enumerates the 3 directories renamed, explains why each was missed in earlier passes (active PRs at audit time), and documents what was intentionally excluded (type-safe-resource-references deferred until #121 merges; simplified-resource-creation and unified-networking flagged as ambiguous). Impact on open PRs (#108, #131, #143) is analyzed individually with clear guidance for each author.
Architecture 2/2 The renames follow the OSAC naming convention (-/) established in the workspace AGENTS.md. Cross-references were audited and updated. No design content was added or modified — the files are 100%-similarity renames. The approach is consistent with the two prior cleanup passes (#139, #144).

Verdict: Well-executed housekeeping PR that renames 3 enhancement-proposal directories to follow OSAC naming conventions — the design review rubric is a mismatch for this PR type, but the changes are correct, thorough, and clearly scoped.

Feedback: This PR is a naming-convention cleanup, not a design document, so the design review rubric doesn't meaningfully apply — no action needed on the low testability score. The PR itself is exemplary housekeeping: clear rationale for inclusions and exclusions, impact analysis on open PRs, and verification that no stale references remain. Consider adding a comment on #131 (as noted) to prompt the author to retarget their new file to the renamed directory path.

Critical (0)

None.

Important (0)

None.

Suggestions (2)

  1. The PR description mentions flagging Design: OSAC Metering and Usage Tracking #131 about the directory rename since git won't auto-follow the new path for a newly-added file — verify that comment was actually posted on Design: OSAC Metering and Usage Tracking #131 to prevent a merge conflict.
  2. Consider batching the remaining deferred renames (type-safe-resource-references, simplified-resource-creation, unified-networking) into a tracking comment or checklist on OSAC-2870 so they don't get lost.

Review cost

Model: claude-opus-4-6
Cost: $0.3516
Tokens: 7 in / 3.4k out
Cache: 224.3k read
Active time: 1m 18s
API calls: 0

@tchughesiv tchughesiv changed the title OSAC-2870: rename 3 more EPs that were tied up in open PRs during the main pass OSAC-2870: rename 3 more EPs Jul 22, 2026
… main pass

These 3 directories were missed by the original OSAC-2870 naming
cleanup (osac-project#139/osac-project#144) specifically because they had active, unmerged PRs
against them at the time the plan was drafted, so their Jira keys and
directory names were still moving targets:

- storage-control-plane-osac-2872 -> OSAC-2872-storage-control-plane
  (Jira key existed, but was still on an open PR (osac-project#134) that hadn't
  merged to main yet when osac-project#139 was planned/built)
- cluster-and-vm-provisioning-wizard -> OSAC-1421-cluster-and-vm-provisioning-wizard
  (key OSAC-1421 has been in the doc's tracking-link since June; PR osac-project#108
  was open against it at audit time)
- metering-and-usage-tracking -> OSAC-985-metering-and-usage-tracking
  (key OSAC-985 has been in the doc's tracking-link for weeks; PRs osac-project#131
  and osac-project#143 were open against it at audit time)

Updated the one cross-reference found repo-wide pointing at the old
cluster-and-vm-provisioning-wizard path (in
OSAC-1319-bare-metal-instance-ui/design.md). No cross-references found
for the other two.

Note: PR osac-project#131 (open, adds a new metering-and-usage-tracking/design.md)
will need to retarget to the new path when it rebases, since it adds a
file git has no rename history for -- flagging this on that PR
separately.

Assisted-by: Claude Code <noreply@anthropic.com>
Signed-off-by: Tommy Hughes <tohughes@redhat.com>
…itle

- carbide-integration -> OSAC-1191-carbide-integration
  (MGMT-23384 in PR osac-project#27 title -> OSAC-102 Story -> OSAC-31 Epic -> OSAC-1191 Feature;
  confirmed by author match: doc author Trey West == OSAC-102 assignee)
- computeinstance-phase-condition-expansion -> OSAC-1027-computeinstance-phase-condition-expansion
  (MGMT-22638 in PR osac-project#24 title -> OSAC-395 Task -> OSAC-53 Epic -> OSAC-1027 Feature;
  confirmed by author match: doc author Akshay Nadkarni == OSAC-395 assignee)

Updated tracking-link frontmatter for both and the one cross-reference
in OSAC-55-vm-snapshots/README.md.

Assisted-by: Claude Code <noreply@anthropic.com>
Signed-off-by: Tommy Hughes <tohughes@redhat.com>
@tchughesiv
tchughesiv force-pushed the OSAC-2870-followup2-conflict-resolved-renames branch from 61c103b to 0cb5ef6 Compare July 22, 2026 17:14
@tchughesiv tchughesiv changed the title OSAC-2870: rename 3 more EPs OSAC-2870: rename 5 more EPs (3 conflict-resolved, 2 found via hidden PR-title Jira keys) Jul 22, 2026
@tchughesiv tchughesiv changed the title OSAC-2870: rename 5 more EPs (3 conflict-resolved, 2 found via hidden PR-title Jira keys) OSAC-2870: rename 5 more EPs Jul 22, 2026
@github-actions

github-actions Bot commented Jul 22, 2026 •

Copy link
Copy Markdown

AI Design Review: EP-149

Score: 6/8 | Verdict: PASS

Criterion Score Notes
Feasibility 2/2 The changes are trivially correct and complete — straightforward directory renames to add OSAC Jira key prefixes, tracking-link placeholder replacements with real Jira URLs, and cross-reference updates to match new paths. No implementation risk.
Testability 1/2 No formal test plan is described, but one is not expected for a file-rename housekeeping PR. The changes are verifiable by confirming renamed paths resolve correctly and cross-references (e.g., see-also links in OSAC-55 README, internal reference in OSAC-1319 design.md) point to valid targets. Score of 1 reflects absence of explicit verification steps rather than a true gap.
Scope 2/2 Scope is clear and well-bounded: standardize enhancement-proposals directory names to the - convention documented in AGENTS.md, update tracking-link frontmatter from placeholders to real Jira URLs, and fix internal cross-references. No scope creep — the PR touches only what needs renaming and does not modify design content.
Architecture 1/2 No architectural decisions are present because this is a housekeeping PR, not a design. The naming convention change aligns with the project's documented file path convention (- from AGENTS.md Enhancement Proposals section). Score of 1 reflects convention compliance without any architectural substance to evaluate.

Verdict: This PR is a well-executed housekeeping change that standardizes enhancement directory naming to the - convention and backfills tracking links — it is not a design document, so design-specific criteria (architecture depth, test strategy) are not meaningfully applicable.

Feedback: The renames and reference updates are clean and complete. Verify that no other files in the repo reference the old directory paths (e.g., other design documents' see-also fields, any CI scripts, or documentation links) — a grep for the old slugs (e.g., 'carbide-integration', 'metering-and-usage-tracking', 'storage-control-plane-osac-2872') across the full repo would catch any missed cross-references. Consider adding a brief PR description noting the naming convention being enforced so reviewers understand the motivation at a glance.

Critical (0)

None.

Important (1)

  1. Potential stale cross-references: The diff updates see-also in OSAC-55 and an internal link in OSAC-1319, but other documents in the repo may still reference the old directory names. A repo-wide grep for the pre-rename slugs ('computeinstance-phase-condition-expansion', 'carbide-integration', 'cluster-and-vm-provisioning-wizard', 'storage-control-plane-osac-2872', 'metering-and-usage-tracking') should be run to catch any missed references.

Suggestions (2)

  1. The OSAC-1191 tracking-link cleanup also removes the inline comment '# link to the tracking ticket...' — this is fine since other files don't carry it, but confirms this was a template artifact worth removing.
  2. Consider a CI check or pre-commit hook that enforces the - directory naming convention for new enhancements to prevent future drift.

Review cost

Model: claude-opus-4-6
Cost: $0.2991
Tokens: 5 in / 3.5k out
Cache: 122.6k read
Active time: 1m 14s
API calls: 0

…sac-project#128)

catalog-items/ui-design.md (merged via osac-project#128 after our earlier passes) still
linked to the pre-rename '/enhancements/cluster-and-vm-provisioning-wizard'
path. Caught by a full-repo sweep (all file types, not just .md) across
every retired directory name from the whole OSAC-2870 effort.

Assisted-by: Claude Code <noreply@anthropic.com>
Signed-off-by: Tommy Hughes <tohughes@redhat.com>

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

🤖 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 `@enhancements/OSAC-1421-cluster-and-vm-provisioning-wizard/design.md`:
- Around line 31-32: Update the Next-button validation wording in the design
document to say “fields that have not yet been blurred” or “fields that have not
been blurred,” replacing the current “fields that have not blurred” phrasing.
- Line 107: Resolve the cluster create adapter’s contract for empty node_sets,
then update the Configuration, create-payload, and Review requirements to
specify exactly one representation: either omit spec.node_sets or send an empty
map. Ensure all affected wording consistently documents the selected wire
format.
- Around line 146-165: Correct the inconsistent OsacForm path casing in the
design document: align the `OsacForm` reference with the surrounding shared-form
directory casing, using the repository’s actual casing consistently across the
documented component paths.

In `@enhancements/OSAC-1421-cluster-and-vm-provisioning-wizard/prd.md`:
- Around line 195-198: Update prd.md lines 195-198 to exempt sensitive fields
from literal Review value parity, specifically pull_secret and potentially
sensitive user_data, requiring redacted values or presence indicators without
logging or persisting contents. Update design.md lines 69-75 to define masked
Review rendering, and lines 181-184 to apply the masking requirement beyond
General to all relevant sensitive fields.
- Around line 224-253: Synchronize the v1 decisions across
enhancements/OSAC-1421-cluster-and-vm-provisioning-wizard/prd.md lines 224-253
and update its §2.1.1 and acceptance criteria to explicitly define ssh key
requiredness, empty Cluster template node_sets behavior, and whether additional
disks are supported. In
enhancements/OSAC-1421-cluster-and-vm-provisioning-wizard/design.md line 175,
retain only decisions that are also documented in the PRD; remove or revise any
unresolved or inconsistent decision.

In `@enhancements/OSAC-2872-storage-control-plane/prd.md`:
- Line 21: Update the volume lifecycle definition in the PRD to include explicit
failure or unknown states for interrupted create and delete operations. Specify
the resulting user-visible behavior, including how inventory reflects uncertain
status and how cleanup or retry prevents volumes from remaining stuck or leaked,
while preserving the existing normal lifecycle states.
- Around line 17-19: Update the Storage control plane services and vendor plugin
deployment model to require a trusted control-plane proxy or brokered identity
for backend access, ensuring tenant-cluster compromise cannot expose vendor
credentials or directly access storage backends. If plugins must retain direct
backend access, revise the credential-isolation guarantee throughout the PRD to
explicitly define the weaker security boundary before implementation.
- Around line 47-61: Clarify the storage capability statement and the “view my
persistent volumes and claims” requirement so authorization scopes are explicit:
Tenant Admins may list/get all volumes owned by their organization across
clusters, while Tenant Users may list/get only volumes they created or own. Keep
creation, deletion, and unconfigured StorageClass behavior aligned with the
existing role permissions.

In `@enhancements/OSAC-985-metering-and-usage-tracking/prd.md`:
- Line 203: Update the instance-type-seconds definition in the metering table so
its usage formula returns 3,600 instance-type-seconds for one hour, without
currency. Represent the charge calculation separately as usage multiplied by the
applicable price-per-second rate.
- Around line 191-193: Update the VMaaS metering description around
instance-type-seconds to remove the claim that instance types bundle a fixed
boot disk. Keep instance-type-seconds limited to instance uptime and state that
boot-disk/storage usage will be handled separately when storage metering enters
scope, consistent with the existing instance-type contract.
- Line 87: Update the MaaS metering requirements around CAP-13 and the related
sections at the referenced acceptance criteria and formulas to define an
inference request-count meter, including its unit, rate, and acceptance
criterion; ensure the formulas and downstream usage definitions consistently
include this meter, or remove the per-inference-request billing language if
request-based charging is not supported.
- Around line 218-224: Clarify the token aggregation rules in the metering
description and table: cached tokens must be accounted for separately and
excluded from billable input-token totals, so the same cached input is not
counted twice. State how total input usage is derived when cached and non-cached
prompt tokens are both present.
- Around line 46-47: Resolve the scope inconsistency between the deferred
storage/networking metering statements and the stopped/paused VM acceptance
criteria around the VM metering requirements. Either remove or defer the
criteria requiring storage and public-IP/networking resources to be metered for
stopped or paused VMs, or explicitly add the necessary resource meters to this
PRD’s scope and update the relevant deferred-scope entries consistently.
🪄 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: Repository: osac-project/coderabbit/.coderabbit.yaml

Review profile: ASSERTIVE

Plan: Enterprise

Run ID: 8bf0370d-69c3-43e9-a793-93edea4f0762

📥 Commits

Reviewing files that changed from the base of the PR and between d17b902 and 0cb5ef6.

📒 Files selected for processing (8)
  • enhancements/OSAC-1027-computeinstance-phase-condition-expansion/README.md
  • enhancements/OSAC-1191-carbide-integration/README.md
  • enhancements/OSAC-1319-bare-metal-instance-ui/design.md
  • enhancements/OSAC-1421-cluster-and-vm-provisioning-wizard/design.md
  • enhancements/OSAC-1421-cluster-and-vm-provisioning-wizard/prd.md
  • enhancements/OSAC-2872-storage-control-plane/prd.md
  • enhancements/OSAC-55-vm-snapshots/README.md
  • enhancements/OSAC-985-metering-and-usage-tracking/prd.md

@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.

Caution

Inline review comments failed to post. This is likely due to GitHub's internal server error or limits when posting large numbers of comments. If you are seeing this consistently it is likely a permissions issue. Please check "Moderation" -> "Code review limits" under your organization settings.

Actionable comments posted: 13

🤖 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 `@enhancements/OSAC-1421-cluster-and-vm-provisioning-wizard/design.md`:
- Around line 31-32: Update the Next-button validation wording in the design
document to say “fields that have not yet been blurred” or “fields that have not
been blurred,” replacing the current “fields that have not blurred” phrasing.
- Line 107: Resolve the cluster create adapter’s contract for empty node_sets,
then update the Configuration, create-payload, and Review requirements to
specify exactly one representation: either omit spec.node_sets or send an empty
map. Ensure all affected wording consistently documents the selected wire
format.
- Around line 146-165: Correct the inconsistent OsacForm path casing in the
design document: align the `OsacForm` reference with the surrounding shared-form
directory casing, using the repository’s actual casing consistently across the
documented component paths.

In `@enhancements/OSAC-1421-cluster-and-vm-provisioning-wizard/prd.md`:
- Around line 195-198: Update prd.md lines 195-198 to exempt sensitive fields
from literal Review value parity, specifically pull_secret and potentially
sensitive user_data, requiring redacted values or presence indicators without
logging or persisting contents. Update design.md lines 69-75 to define masked
Review rendering, and lines 181-184 to apply the masking requirement beyond
General to all relevant sensitive fields.
- Around line 224-253: Synchronize the v1 decisions across
enhancements/OSAC-1421-cluster-and-vm-provisioning-wizard/prd.md lines 224-253
and update its §2.1.1 and acceptance criteria to explicitly define ssh key
requiredness, empty Cluster template node_sets behavior, and whether additional
disks are supported. In
enhancements/OSAC-1421-cluster-and-vm-provisioning-wizard/design.md line 175,
retain only decisions that are also documented in the PRD; remove or revise any
unresolved or inconsistent decision.

In `@enhancements/OSAC-2872-storage-control-plane/prd.md`:
- Line 21: Update the volume lifecycle definition in the PRD to include explicit
failure or unknown states for interrupted create and delete operations. Specify
the resulting user-visible behavior, including how inventory reflects uncertain
status and how cleanup or retry prevents volumes from remaining stuck or leaked,
while preserving the existing normal lifecycle states.
- Around line 17-19: Update the Storage control plane services and vendor plugin
deployment model to require a trusted control-plane proxy or brokered identity
for backend access, ensuring tenant-cluster compromise cannot expose vendor
credentials or directly access storage backends. If plugins must retain direct
backend access, revise the credential-isolation guarantee throughout the PRD to
explicitly define the weaker security boundary before implementation.
- Around line 47-61: Clarify the storage capability statement and the “view my
persistent volumes and claims” requirement so authorization scopes are explicit:
Tenant Admins may list/get all volumes owned by their organization across
clusters, while Tenant Users may list/get only volumes they created or own. Keep
creation, deletion, and unconfigured StorageClass behavior aligned with the
existing role permissions.

In `@enhancements/OSAC-985-metering-and-usage-tracking/prd.md`:
- Line 203: Update the instance-type-seconds definition in the metering table so
its usage formula returns 3,600 instance-type-seconds for one hour, without
currency. Represent the charge calculation separately as usage multiplied by the
applicable price-per-second rate.
- Around line 191-193: Update the VMaaS metering description around
instance-type-seconds to remove the claim that instance types bundle a fixed
boot disk. Keep instance-type-seconds limited to instance uptime and state that
boot-disk/storage usage will be handled separately when storage metering enters
scope, consistent with the existing instance-type contract.
- Line 87: Update the MaaS metering requirements around CAP-13 and the related
sections at the referenced acceptance criteria and formulas to define an
inference request-count meter, including its unit, rate, and acceptance
criterion; ensure the formulas and downstream usage definitions consistently
include this meter, or remove the per-inference-request billing language if
request-based charging is not supported.
- Around line 218-224: Clarify the token aggregation rules in the metering
description and table: cached tokens must be accounted for separately and
excluded from billable input-token totals, so the same cached input is not
counted twice. State how total input usage is derived when cached and non-cached
prompt tokens are both present.
- Around line 46-47: Resolve the scope inconsistency between the deferred
storage/networking metering statements and the stopped/paused VM acceptance
criteria around the VM metering requirements. Either remove or defer the
criteria requiring storage and public-IP/networking resources to be metered for
stopped or paused VMs, or explicitly add the necessary resource meters to this
PRD’s scope and update the relevant deferred-scope entries consistently.
🪄 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: Repository: osac-project/coderabbit/.coderabbit.yaml

Review profile: ASSERTIVE

Plan: Enterprise

Run ID: 8bf0370d-69c3-43e9-a793-93edea4f0762

📥 Commits

Reviewing files that changed from the base of the PR and between d17b902 and 0cb5ef6.

📒 Files selected for processing (8)
  • enhancements/OSAC-1027-computeinstance-phase-condition-expansion/README.md
  • enhancements/OSAC-1191-carbide-integration/README.md
  • enhancements/OSAC-1319-bare-metal-instance-ui/design.md
  • enhancements/OSAC-1421-cluster-and-vm-provisioning-wizard/design.md
  • enhancements/OSAC-1421-cluster-and-vm-provisioning-wizard/prd.md
  • enhancements/OSAC-2872-storage-control-plane/prd.md
  • enhancements/OSAC-55-vm-snapshots/README.md
  • enhancements/OSAC-985-metering-and-usage-tracking/prd.md
🛑 Comments failed to post (13)
enhancements/OSAC-1421-cluster-and-vm-provisioning-wizard/design.md (3)

31-32: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Fix the wording around untouched fields.

Use “fields that have not yet been blurred” or “fields that have not been blurred.”

🧰 Tools
🪛 LanguageTool

[grammar] ~32-~32: Ensure spelling is correct
Context: ... that have not blurred. - On successful create, navigate to the VM or cluster Details ...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

🤖 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 `@enhancements/OSAC-1421-cluster-and-vm-provisioning-wizard/design.md` around
lines 31 - 32, Update the Next-button validation wording in the design document
to say “fields that have not yet been blurred” or “fields that have not been
blurred,” replacing the current “fields that have not blurred” phrasing.

Source: Linters/SAST tools


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

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Locate and inspect the referenced design excerpt plus nearby contract context.
if [ -f "enhancements/OSAC-1421-cluster-and-vm-provisioning-wizard/design.md" ]; then
  echo "== referenced excerpt =="
  sed -n '90,120p' enhancements/OSAC-1421-cluster-and-vm-provisioning-wizard/design.md | cat -n -v
  echo
  echo "== adjacent API/schema mentions =="
  rg -n "node_sets|spec\.node_sets|nodeSets|Create payload|Create API|payload|schema|template" enhancements/OSAC-1421-cluster-and-vm-provisioning-wizard/design.md
else
  echo "referenced file not found"
  echo "matching files:"
  fd -a 'design\.md$' enhancements 2>/dev/null | sed -n '1,50p'
fi

echo
echo "== workspace search for create payload semantics =="
rg -n "create payload|Create payload|omit.*node_sets|node_sets|spec\.node_sets|nodeSets" . -g '!node_modules' -g '!dist' -g '!build' | sed -n '1,160p'

Repository: osac-project/enhancement-proposals

Length of output: 23618


Choose one empty-node_sets create payload representation.

The current wording allows either omitting spec.node_sets or sending an empty map, which maps to two incompatible wire formats for the cluster create adapter. Resolve the create API contract first, then document one consistent payload for the PRD/design.

🤖 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 `@enhancements/OSAC-1421-cluster-and-vm-provisioning-wizard/design.md` at line
107, Resolve the cluster create adapter’s contract for empty node_sets, then
update the Configuration, create-payload, and Review requirements to specify
exactly one representation: either omit spec.node_sets or send an empty map.
Ensure all affected wording consistently documents the selected wire format.

146-165: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "Tracked OsacForm/form directories/files:"
git ls-files | sed -n '/libs\/ui-components\/src\/components\/form/i; /libs\/ui-components\/src\/components\/Form/i; /libs\/ui-components\/src\/components\/form/i; /libs\/ui-components\/src\/components\/Form/i;' | grep -Ei 'libs/ui-components/src/components/(form|Form)/|OsacForm' || true
echo
echo "Find OsacForm exact/insensitive:"
fd -i 'OsacForm' .
echo
echo "Find references to OsacForm/Form/form casing in design/code:"
rg -n --hidden 'OsacForm|components/form|components/Form|from ["'\''][^"\']*form[^"\']*["'\'']|from ["'\''][^"\']*Form[^"\']*["'\'']' -g '!node_modules' -g '!dist' -g '!build' . || true

Repository: osac-project/enhancement-proposals

Length of output: 575


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "Top-level files matching Form/form component names:"
git ls-files | grep -Ei 'osacform|form' || true
echo
echo "Directory containing component code, if present:"
fd -i ^form$ . | sed 's#^\./##' || true
echo
echo "Design references around wrapper layout:"
rg -n 'libs/ui-components/src/components/(form|Form)/(Form|OsacForm|.*Field|Wizard|Fields|Picker|PickerSelect)|`@osac/ui-components`|OsacForm|FormGroup' enhancements/OSAC-1421-cluster-and-vm-provisioning-wizard/design.md || true

Repository: osac-project/enhancement-proposals

Length of output: 4757


Correct the OsacForm path casing.

The document lists shared components under libs/ui-components/src/components/form/, but the OsacForm location uses components/Form/OsacForm.tsx. Either update the wrapper path to components/form/OsacForm.tsx if that is the real casing, or adjust the shared-form directory casing in the surrounding text so this design does not point at two different paths.

🤖 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 `@enhancements/OSAC-1421-cluster-and-vm-provisioning-wizard/design.md` around
lines 146 - 165, Correct the inconsistent OsacForm path casing in the design
document: align the `OsacForm` reference with the surrounding shared-form
directory casing, using the repository’s actual casing consistently across the
documented component paths.
enhancements/OSAC-1421-cluster-and-vm-provisioning-wizard/prd.md (2)

195-198: 🔒 Security & Privacy | 🟠 Major | ⚡ Quick win

Prevent sensitive data disclosure on Review.

The “same values” requirement conflicts with masking Secret-backed fields. Review must display redacted values or presence indicators for pull_secret and potentially sensitive user_data, without logging or persisting their contents.

  • enhancements/OSAC-1421-cluster-and-vm-provisioning-wizard/prd.md#L195-L198: exempt sensitive fields from literal value parity.
  • enhancements/OSAC-1421-cluster-and-vm-provisioning-wizard/design.md#L69-L75: define masked Review rendering.
  • enhancements/OSAC-1421-cluster-and-vm-provisioning-wizard/design.md#L181-L184: extend the masking requirement beyond General.
📍 Affects 2 files
  • enhancements/OSAC-1421-cluster-and-vm-provisioning-wizard/prd.md#L195-L198 (this comment)
  • enhancements/OSAC-1421-cluster-and-vm-provisioning-wizard/design.md#L69-L75
  • enhancements/OSAC-1421-cluster-and-vm-provisioning-wizard/design.md#L181-L184
🤖 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 `@enhancements/OSAC-1421-cluster-and-vm-provisioning-wizard/prd.md` around
lines 195 - 198, Update prd.md lines 195-198 to exempt sensitive fields from
literal Review value parity, specifically pull_secret and potentially sensitive
user_data, requiring redacted values or presence indicators without logging or
persisting contents. Update design.md lines 69-75 to define masked Review
rendering, and lines 181-184 to apply the masking requirement beyond General to
all relevant sensitive fields.

224-253: 🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

Keep the PRD and design decisions synchronized.

The PRD leaves requiredness, empty node_sets, and additional disks open, while the design resolves them for v1. These decisions affect validation and payload construction.

  • enhancements/OSAC-1421-cluster-and-vm-provisioning-wizard/prd.md#L224-L253: record the selected v1 decisions and update acceptance criteria.
  • enhancements/OSAC-1421-cluster-and-vm-provisioning-wizard/design.md#L175-L175: retain only decisions that are reflected in the PRD.
📍 Affects 2 files
  • enhancements/OSAC-1421-cluster-and-vm-provisioning-wizard/prd.md#L224-L253 (this comment)
  • enhancements/OSAC-1421-cluster-and-vm-provisioning-wizard/design.md#L175-L175
🤖 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 `@enhancements/OSAC-1421-cluster-and-vm-provisioning-wizard/prd.md` around
lines 224 - 253, Synchronize the v1 decisions across
enhancements/OSAC-1421-cluster-and-vm-provisioning-wizard/prd.md lines 224-253
and update its §2.1.1 and acceptance criteria to explicitly define ssh key
requiredness, empty Cluster template node_sets behavior, and whether additional
disks are supported. In
enhancements/OSAC-1421-cluster-and-vm-provisioning-wizard/design.md line 175,
retain only decisions that are also documented in the PRD; remove or revise any
unresolved or inconsistent decision.
enhancements/OSAC-2872-storage-control-plane/prd.md (3)

17-19: 🔒 Security & Privacy | 🟠 Major | 🏗️ Heavy lift

Align the credential-isolation guarantee with the deployment model.

The PRD deploys vendor plugins on tenant clusters, but also promises that a compromised tenant cluster cannot access storage backends. If backend credentials or direct backend access are available to the plugin in that cluster, compromise can expose or use them. Require a trusted control-plane proxy/brokered identity, or explicitly weaken and redefine this guarantee before implementation.

Also applies to: 27-27, 69-69

🤖 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 `@enhancements/OSAC-2872-storage-control-plane/prd.md` around lines 17 - 19,
Update the Storage control plane services and vendor plugin deployment model to
require a trusted control-plane proxy or brokered identity for backend access,
ensuring tenant-cluster compromise cannot expose vendor credentials or directly
access storage backends. If plugins must retain direct backend access, revise
the credential-isolation guarantee throughout the PRD to explicitly define the
weaker security boundary before implementation.

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

Define failure states for volume inventory and deletion.

The lifecycle omits failed or interrupted create/delete operations, yet the user story promises that deleting a PVC cleans up the underlying volume. Add explicit failure/unknown semantics and the resulting user-visible behavior; otherwise failed operations can remain stuck in creating or deleting, causing inaccurate inventory and leaked storage.

Also applies to: 51-51

🤖 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 `@enhancements/OSAC-2872-storage-control-plane/prd.md` at line 21, Update the
volume lifecycle definition in the PRD to include explicit failure or unknown
states for interrupted create and delete operations. Specify the resulting
user-visible behavior, including how inventory reflects uncertain status and how
cleanup or retry prevents volumes from remaining stuck or leaked, while
preserving the existing normal lifecycle states.

47-61: 🔒 Security & Privacy | 🟠 Major | ⚡ Quick win

Resolve the Tenant Admin/User authorization ambiguity.

Line 47 says both roles have the same capabilities, while Line 61 gives Tenant Admin organization-wide volume visibility. Define the list/get scope explicitly—such as organization-wide for Tenant Admin and self-owned volumes for Tenant User—to prevent inconsistent or over-broad authorization implementations.

🧰 Tools
🪛 LanguageTool

[style] ~51-~51: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ...addresses. - As a Tenant Admin/User, I want to delete a PVC, so that the underlying vo...

(REP_WANT_TO_VB)


[style] ~53-~53: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...aned up and the storage is released. - As a Tenant Admin/User, I want to view my ...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~53-~53: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ... released. - As a Tenant Admin/User, I want to view my persistent volumes and claims u...

(REP_WANT_TO_VB)


[style] ~55-~55: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...monitor storage usage on my cluster. - As a Tenant Admin/User, I want a PVC refer...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~57-~57: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...d consistent with native Kubernetes. - As a Tenant Admin/User, I want storage to ...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~59-~59: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...VCs without requesting manual setup. - As a Tenant User, I want every volume I cr...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~61-~61: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...storage usage is attributable to me. - As a Tenant Admin, I want to see all volum...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

🤖 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 `@enhancements/OSAC-2872-storage-control-plane/prd.md` around lines 47 - 61,
Clarify the storage capability statement and the “view my persistent volumes and
claims” requirement so authorization scopes are explicit: Tenant Admins may
list/get all volumes owned by their organization across clusters, while Tenant
Users may list/get only volumes they created or own. Keep creation, deletion,
and unconfigured StorageClass behavior aligned with the existing role
permissions.
enhancements/OSAC-985-metering-and-usage-tracking/prd.md (5)

46-47: 🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

Resolve the deferred-scope conflict for VM-attached resources.

Line [46] defers storage metering and Line [47] defers public-IP/networking metering, but Lines [85] and [105] require those resources to be metered while a VM is stopped or paused. Either defer these acceptance criteria or explicitly bring the required resource meters into scope.

Also applies to: 85-85, 103-105

🧰 Tools
🪛 LanguageTool

[grammar] ~47-~47: Ensure spelling is correct
Context: ...ce metering — VirtualNetworks, Subnets, PublicIPs, NAT Gateways (deferred to a future PRD...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

🤖 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 `@enhancements/OSAC-985-metering-and-usage-tracking/prd.md` around lines 46 -
47, Resolve the scope inconsistency between the deferred storage/networking
metering statements and the stopped/paused VM acceptance criteria around the VM
metering requirements. Either remove or defer the criteria requiring storage and
public-IP/networking resources to be metered for stopped or paused VMs, or
explicitly add the necessary resource meters to this PRD’s scope and update the
relevant deferred-scope entries consistently.

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

Define the MaaS per-request meter.

Line [87] promises charges per inference request, but the acceptance criteria and formulas define only token meters. Add a request-count meter, unit, rate, and acceptance criterion, or remove the per-request billing requirement.

Also applies to: 118-121, 220-224

🤖 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 `@enhancements/OSAC-985-metering-and-usage-tracking/prd.md` at line 87, Update
the MaaS metering requirements around CAP-13 and the related sections at the
referenced acceptance criteria and formulas to define an inference request-count
meter, including its unit, rate, and acceptance criterion; ensure the formulas
and downstream usage definitions consistently include this meter, or remove the
per-inference-request billing language if request-based charging is not
supported.

191-193: 🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

Align boot-disk treatment with the existing instance-type contract.

Line [193] says instance types bundle a fixed boot disk, but enhancements/OSAC-46-vm-instance-types/README.md:44-70 keeps storage specifications and boot disks separate. Do not include boot storage in instance-type-seconds; specify separate storage handling when that meter enters scope.

🤖 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 `@enhancements/OSAC-985-metering-and-usage-tracking/prd.md` around lines 191 -
193, Update the VMaaS metering description around instance-type-seconds to
remove the claim that instance types bundle a fixed boot disk. Keep
instance-type-seconds limited to instance uptime and state that
boot-disk/storage usage will be handled separately when storage metering enters
scope, consistent with the existing instance-type contract.

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

Separate meter units from currency calculations.

The instance-type-seconds formula returns $3.60, which is a charge rather than a meter quantity. Define usage as 3,600 instance-type-seconds and calculate charges separately as usage multiplied by the rate.

🤖 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 `@enhancements/OSAC-985-metering-and-usage-tracking/prd.md` at line 203, Update
the instance-type-seconds definition in the metering table so its usage formula
returns 3,600 instance-type-seconds for one hour, without currency. Represent
the charge calculation separately as usage multiplied by the applicable
price-per-second rate.

218-224: 🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

Make cached-token accounting mutually exclusive.

The document defines input tokens as the full prompt and cached tokens as a separate meter, without stating whether cached tokens are included in input or total tokens. Clarify the aggregation rule to prevent cached input from being double-counted.

🤖 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 `@enhancements/OSAC-985-metering-and-usage-tracking/prd.md` around lines 218 -
224, Clarify the token aggregation rules in the metering description and table:
cached tokens must be accounted for separately and excluded from billable
input-token totals, so the same cached input is not counted twice. State how
total input usage is derived when cached and non-cached prompt tokens are both
present.

@tchughesiv

Copy link
Copy Markdown
Contributor Author

@coderabbitai
Thanks for the thorough review. This PR's scope is intentionally narrow: renaming enhancements/* directories to the OSAC-NNNN-slug convention, fixing 2 casing issues, and repairing the cross-references/frontmatter broken by those renames (tracked in OSAC-2870).

@coderabbitai

coderabbitai Bot commented Jul 22, 2026 •

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

@tchughesiv Understood. I’ll keep feedback scoped to the OSAC-NNNN-slug directory renames, the two casing corrections, and any affected cross-references or front matter under OSAC-2870.

ᕱ⑅ᕱ


✏️ Learnings added
Learnt from: tchughesiv
URL: https://github.com/osac-project/enhancement-proposals/pull/149

Timestamp: 2026-07-22T17:37:13.483Z
Learning: For GitHub pull request `#149` in osac-project/enhancement-proposals, the intended scope of OSAC-2870 is limited to renaming `enhancements/*` directories to the `OSAC-NNNN-slug` convention, correcting two casing issues, and repairing cross-references or front matter affected by those renames. Review feedback should remain within that scope.

Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.

@eranco74 eranco74 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.

/lgtm
/approve

@openshift-ci

openshift-ci Bot commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: eranco74, tchughesiv

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

The pull request process is described 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-merge-bot
openshift-merge-bot Bot merged commit dcd80b6 into osac-project:main Jul 22, 2026
5 checks passed
tchughesiv added a commit to tchughesiv/enhancement-proposals that referenced this pull request Jul 23, 2026
The per-judge claude-sonnet-4-6 override belongs in OSAC-2264 (the PR
that introduces the qualitative_finding_quality judge entry and is
where the override was originally dropped during a rebase), not
OSAC-2266 as previously stated. Already restored directly in
OSAC-2264 PR osac-project#149 (commit 7e5346c8).

Assisted-by: Claude Code <noreply@anthropic.com>
Signed-off-by: Tommy Hughes <tohughes@redhat.com>
tchughesiv added a commit to tchughesiv/enhancement-proposals that referenced this pull request Jul 29, 2026
Full-repo sweep across all 41 retired directory names from the entire
OSAC-2870 effort (not just this PR's 5) turned up two more stale
references that earlier passes missed:

- OSAC-1330-type-safe-resource-references/design.md still linked to
  '/enhancements/networking' (renamed to OSAC-356-networking in osac-project#144).
  This directory was self-renamed by osac-project#121's own branch, so it never
  went through our cross-reference sweep.
- OSAC-985-metering-and-usage-tracking/design.md still linked to
  '/enhancements/vm-instance-types' (renamed to OSAC-46-vm-instance-types
  in osac-project#144). metering-and-usage-tracking was one of the directories
  deferred at that time due to an open PR, so it was excluded from
  that pass's cross-reference sweep and the reference went stale once
  the deferred rename landed in osac-project#149.

No open PRs conflict with either file (re-verified).

Assisted-by: Claude Code <noreply@anthropic.com>
Signed-off-by: Tommy Hughes <tohughes@redhat.com>
tchughesiv added a commit to tchughesiv/enhancement-proposals that referenced this pull request Jul 30, 2026
The per-judge claude-sonnet-4-6 override belongs in OSAC-2264 (the PR
that introduces the qualitative_finding_quality judge entry and is
where the override was originally dropped during a rebase), not
OSAC-2266 as previously stated. Already restored directly in
OSAC-2264 PR osac-project#149 (commit 7e5346c8).

Assisted-by: Claude Code <noreply@anthropic.com>
Signed-off-by: Tommy Hughes <tohughes@redhat.com>
empovit pushed a commit to empovit/osac-enhancement-proposals that referenced this pull request Aug 2, 2026
Full-repo sweep across all 41 retired directory names from the entire
OSAC-2870 effort (not just this PR's 5) turned up two more stale
references that earlier passes missed:

- OSAC-1330-type-safe-resource-references/design.md still linked to
  '/enhancements/networking' (renamed to OSAC-356-networking in osac-project#144).
  This directory was self-renamed by osac-project#121's own branch, so it never
  went through our cross-reference sweep.
- OSAC-985-metering-and-usage-tracking/design.md still linked to
  '/enhancements/vm-instance-types' (renamed to OSAC-46-vm-instance-types
  in osac-project#144). metering-and-usage-tracking was one of the directories
  deferred at that time due to an open PR, so it was excluded from
  that pass's cross-reference sweep and the reference went stale once
  the deferred rename landed in osac-project#149.

No open PRs conflict with either file (re-verified).

Assisted-by: Claude Code <noreply@anthropic.com>
Signed-off-by: Tommy Hughes <tohughes@redhat.com>
@osac-project osac-project deleted a comment from github-actions Bot Aug 24, 2026
@osac-project osac-project deleted a comment from github-actions Bot Aug 24, 2026
@osac-project osac-project deleted a comment from github-actions Bot Aug 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants