Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
522 commits
Select commit Hold shift + click to select a range
a526ead
OSAC-2870: address cross-cutting review findings
tchughesiv Jul 21, 2026
8d652cb
OSAC-2870: use real OSAC-172 key for tenant-storage-tiers, drop legac…
tchughesiv Jul 21, 2026
3098ab2
OSAC-1201: PRD for Bare Metal Instance Types
ajamias Jul 21, 2026
2e2be1c
Merge pull request #59 from ajamias/baremetal-instance-types
openshift-merge-bot[bot] Jul 21, 2026
efd28ac
Merge pull request #134 from akshaynadkarni/feat/OSAC-2872-storage-co…
openshift-merge-bot[bot] Jul 22, 2026
f4012ee
Merge pull request #138 from eranco74/fix/OSAC-2946-design-review-ali…
openshift-merge-bot[bot] Jul 22, 2026
7b5da57
Merge pull request #139 from tchughesiv/OSAC-2870-standardize-ep-dire…
openshift-merge-bot[bot] Jul 22, 2026
b2a5d35
NO-ISSUE: update catalog items PRD to reflect team decisions
ElayAharoni Jul 22, 2026
5335d2c
NO-ISSUE: clarify UI vs API behavior for field definitions
ElayAharoni Jul 22, 2026
f4fad4d
NO-ISSUE: unify admin flows and exclude networking from wizard
ElayAharoni Jul 22, 2026
dd8efe8
Add PRD for OSAC-1710: ComputeInstance StorageTier Selection
clobrano Jul 22, 2026
f6af2a7
PRD OSAC-1710: address review feedback
clobrano Jul 22, 2026
c0c3a8f
PRD OSAC-1710: clarify mandatory tier applies after precedence resolu…
clobrano Jul 22, 2026
dba36c5
PRD OSAC-1710: clarify scope is tier selection, not multi-disk support
clobrano Jul 22, 2026
ae2cd52
PRD OSAC-1710: clarify tier assignment immutability
clobrano Jul 22, 2026
b9a125f
PRD OSAC-1710: rename directory to match OSAC-<key>-<slug> convention
clobrano Jul 22, 2026
8d84f69
OSAC-2917: add design document for GPU-enabled InstanceTypes
Tzif-Morgen Jul 22, 2026
da1820c
Add UI design document for catalog items management
ElayAharoni Jul 19, 2026
01ccef8
fix: sync UI design with README review feedback
ElayAharoni Jul 19, 2026
d18c2b8
fix: address all 7 CodeRabbit review comments
ElayAharoni Jul 19, 2026
fa35590
fix: field definitions are template-populated, not manually built
ElayAharoni Jul 19, 2026
e76683d
fix: field definitions derived from resource spec, not template
ElayAharoni Jul 19, 2026
53a0a44
fix: address all reviewer comments on UI design doc
ElayAharoni Jul 20, 2026
1c3d819
fix: add Basic/Advanced validation editor modes, defer tighten-only t…
ElayAharoni Jul 20, 2026
bd882dc
fix: align design with EP review feedback
ElayAharoni Jul 21, 2026
4494653
fix: address rawagner and batzionb review feedback on design
ElayAharoni Jul 21, 2026
029a722
fix: remove stale CatalogItemForm reference from proposal summary
ElayAharoni Jul 21, 2026
af0d31a
NO-ISSUE: update catalog items UI design to reflect team decisions
ElayAharoni Jul 22, 2026
9a3d6aa
Unify admin flows and exclude networking from wizard
ElayAharoni Jul 22, 2026
9ef556b
Unify edit flow between CSP Admin and Tenant Admin
ElayAharoni Jul 22, 2026
bf38ec5
Replace type filter and create dropdown with per-resource-type tabs
ElayAharoni Jul 22, 2026
c88da7b
Restructure wizard steps to mirror provisioning, remove Cypress
ElayAharoni Jul 22, 2026
15533a3
OSAC-2872: rename directory to match OSAC-NNNN-slug convention
ElayAharoni Jul 22, 2026
b993edc
OSAC-2917: address CodeRabbit review comments on GPU design
Tzif-Morgen Jul 22, 2026
b897e54
Fix networking fields per resource type
ElayAharoni Jul 22, 2026
421f7ee
design: FieldDefinitionsEditor as static form + node_sets specification
ElayAharoni Jul 22, 2026
7cc40cb
design: remove display name from field definition creation
ElayAharoni Jul 22, 2026
715535e
design: replace generic FieldDefinitionsEditor with per-kind step com…
ElayAharoni Jul 22, 2026
815139b
design: fix stale ValidationConstraintsEditor reference in test plan
ElayAharoni Jul 22, 2026
a43a0cf
OSAC-2917: fix misleading downgrade section wording
Tzif-Morgen Jul 22, 2026
4565e88
design: gallery list page, node_sets reuse, hardcoded defaults, allow…
ElayAharoni Jul 22, 2026
78f17d2
OSAC-2917: fix validation prose to include upper bound
Tzif-Morgen Jul 22, 2026
8c6b3d4
OSAC-2917: add ComputeInstance cleanup step to downgrade procedure
Tzif-Morgen Jul 22, 2026
1833223
NO-ISSUE: add project-level scope for Tenant Admin catalog items
ElayAharoni Jul 22, 2026
bd8d46e
design: add project-level scope for Tenant Admin catalog items
ElayAharoni Jul 22, 2026
11a0758
OSAC-2917: add documentation to non-goals
Tzif-Morgen Jul 22, 2026
73fd290
NO-ISSUE: fix project scoping to use existing metadata.project field
ElayAharoni Jul 22, 2026
722acfa
design: add default validation schemas and fix project field location
ElayAharoni Jul 22, 2026
0912fba
design: replace kebab menu with Switch toggle and detail page action …
ElayAharoni Jul 22, 2026
0951480
OSAC-2870: rename 8 more README-only EPs with resolvable Jira keys
tchughesiv Jul 22, 2026
a56fc0e
Merge pull request #144 from tchughesiv/OSAC-2870-followup-readme-key…
openshift-merge-bot[bot] Jul 22, 2026
4404175
design: remove hardcoded default values, keep only validation schemas
ElayAharoni Jul 22, 2026
5d86686
design: remove unrelated storage-control-plane prd from branch
ElayAharoni Jul 22, 2026
1e06a3a
design: restore storage-control-plane prd at original path
ElayAharoni Jul 22, 2026
5ec95e0
check-ep-naming: grandfather against live main, not just stale base_sha
tchughesiv Jul 22, 2026
352c289
Address review feedback: fail-closed consistency, test coverage, docs…
tchughesiv Jul 22, 2026
a3cfa6c
Merge pull request #140 from ElayAharoni/update-prd-team-decisions
openshift-merge-bot[bot] Jul 22, 2026
3c59d55
Merge pull request #128 from ElayAharoni/design/catalog-items-ui
openshift-merge-bot[bot] Jul 22, 2026
d17b902
Merge pull request #147 from tchughesiv/fix/ep-naming-live-grandfather
openshift-merge-bot[bot] Jul 22, 2026
4caf638
OSAC-2870: rename 3 more EPs that were tied up in open PRs during the…
tchughesiv Jul 22, 2026
0cb5ef6
OSAC-2870: rename 2 more EPs found via hidden Jira key in PR/commit t…
tchughesiv Jul 22, 2026
ff4e637
OSAC-2870: fix stray cross-reference introduced by unrelated merge (#…
tchughesiv Jul 22, 2026
d081a80
Design OSAC-1201: Bare Metal Instance Types
ajamias Jul 15, 2026
17d1d62
Design OSAC-1201: address CodeRabbit review comments
ajamias Jul 15, 2026
2c47ef9
Design OSAC-1201: address second round of CodeRabbit comments
ajamias Jul 15, 2026
642201e
Design OSAC-1201: revise — require instance type selection, use k8s m…
ajamias Jul 20, 2026
6bbef15
Add design document for OSAC-1330: Type-Safe Resource References
Jul 16, 2026
4ff95c3
Remove alternatives section from design document
Jul 16, 2026
037ec4c
Remove data migration/backfill from design
Jul 16, 2026
f15f6cd
Simplify trigger handling: remove forward, update reverse only
Jul 16, 2026
a1363e6
Rename design document from README.md to design.md
Jul 16, 2026
377c595
Design OSAC-1330: address review feedback
Jul 19, 2026
90d1ba5
Design OSAC-1330: add open question for forward trigger locking strategy
Jul 19, 2026
bb52823
Design OSAC-1330: fix InstanceTypeLocalReference ownership
Jul 19, 2026
2357dc8
Design OSAC-1330: address rccrdpccl review feedback
Jul 20, 2026
0363671
Design OSAC-1330: add tenant scoping to trigger migration
Jul 21, 2026
80adcef
Design OSAC-1330: expand test plan with Chunk 3 and 5 scenarios
Jul 21, 2026
f20f298
Design OSAC-1330: fix chunk attribution in test plan
Jul 21, 2026
974da47
Design OSAC-1330: add cross-tenant workflow for Cloud Provider Admin
Jul 21, 2026
76b9ed3
design: support id-only resolution in full references
Jul 21, 2026
563f709
design: public API uses bool shared instead of tenant/project strings
Jul 21, 2026
7a2a54c
design: include tenant admins in public API scoping rationale
Jul 22, 2026
07a3b3f
design: fix markdown lint, add concurrent test, align examples with s…
Jul 22, 2026
e5c9c52
design: rename directory to OSAC-1330-type-safe-resource-references
Jul 22, 2026
719d139
design: add id field to local references for backward compatibility
Jul 22, 2026
0f84bdc
design: fix private mutation example, markdown lint, test scope
Jul 22, 2026
b8be671
OSAC-1330: Add project to public refs, shared to private refs
Jul 22, 2026
ba56e9e
Design OSAC-1201: revise — updated architecture, tenant scoping, and …
ajamias Jul 22, 2026
e5b43d4
OSAC-1330: Reorder private proto fields, remove cross-tenant bullet
Jul 22, 2026
865d8db
OSAC-1330: Local refs derive scope from resource metadata, not auth c…
Jul 22, 2026
dcd80b6
Merge pull request #149 from tchughesiv/OSAC-2870-followup2-conflict-…
openshift-merge-bot[bot] Jul 22, 2026
cfcc904
Merge pull request #121 from htayrie-rh/design/OSAC-1330
openshift-merge-bot[bot] Jul 22, 2026
76885ce
OSAC-1061: PRD - Enforce Mandatory, Unique, and Immutable Resource Names
CrystalChun Jul 22, 2026
4f5d86f
OSAC-985: narrow CAP-17 wording to traceability
masayag Jul 22, 2026
b3fc3bb
Align Service definition and acceptance criterion with CAP-17 language
masayag Jul 22, 2026
3c0fb4d
Merge pull request #150 from CrystalChun/prd/OSAC-1061
openshift-merge-bot[bot] Jul 22, 2026
61ef29f
OSAC-2876: add Storage Control Plane design document
akshaynadkarni Jul 23, 2026
c56f2e7
PRD OSAC-1710: address review feedback
clobrano Jul 23, 2026
30dbb52
Address review comments
rawagner Jul 23, 2026
d63b85e
Add PRD for OSAC-2921: Add standardized display_name and description …
udis Jul 22, 2026
f98b530
OSAC-2917: revise GpuSpec per review feedback
Tzif-Morgen Jul 23, 2026
5a0c223
OSAC-2917: update AAP integration to read GPU from compute_instance
Tzif-Morgen Jul 23, 2026
e7ff71b
OSAC-2917: clarify gpu_devices removal from ocp_virt_vm role
Tzif-Morgen Jul 23, 2026
f71179d
OSAC-2917: add GPU cluster requirement to infrastructure needed
Tzif-Morgen Jul 23, 2026
6aaeb80
OSAC-2921: address PR review — revert flat-shape exclusion, all resou…
udis Jul 23, 2026
438359c
Clarify template structural data and validation flow for catalog items
tzvatot Jul 23, 2026
ddd25e6
OSAC-3065: fix design review triggering on PRD-only PRs
eranco74 Jul 23, 2026
33d2011
OSAC-1710: fix concatenated bullets in In Scope and Out of Scope
clobrano Jul 23, 2026
4836f0f
OSAC-2872: address CodeRabbit review feedback on design
akshaynadkarni Jul 23, 2026
7eaa87f
OSAC-2917: use nested GpuSpec struct on ComputeInstance CRD
Tzif-Morgen Jul 23, 2026
1c9ec99
OSAC-2872: adopt server-side vendor proxy model per review
akshaynadkarni Jul 23, 2026
ff69361
Merge pull request #142 from Tzif-Morgen/design/OSAC-2917
openshift-merge-bot[bot] Jul 23, 2026
a552022
OSAC-2872: adopt async reconciler model for volume lifecycle
akshaynadkarni Jul 23, 2026
6467790
OSAC-3065: fix paginated file listing in get_changed_files
eranco74 Jul 23, 2026
c25f30e
Merge pull request #153 from eranco74/fix/OSAC-3065-incremental-file-…
openshift-merge-bot[bot] Jul 23, 2026
254226f
OSAC-3123: EP Review Bot scores PRDs against a bespoke rubric that do…
osac-jira-ai-issue-solver[bot] Jul 23, 2026
f334b6e
OSAC-3123: address PR feedback
osac-jira-ai-issue-solver[bot] Jul 23, 2026
34fe67b
OSAC-2769: Design doc for Enforce Mandatory, Unique, Immutable resour…
CrystalChun Jul 23, 2026
5531cb0
OSAC-2872: fix tenant isolation, AAP teardown, orphan cleanup
akshaynadkarni Jul 23, 2026
69a91a0
Merge pull request #112 from tzvatot/fix/catalog-items-node-set-gap
openshift-merge-bot[bot] Jul 24, 2026
2f80f19
OSAC-1710: CI creation user stories apply to both Tenant User and Ten…
clobrano Jul 24, 2026
70f1c19
OSAC-2872: set StorageClass naming to osac-{tenant}-{tier}
akshaynadkarni Jul 24, 2026
0f91af5
OSAC-3057: make enhancement-proposals the canonical home for PRD/desi…
tchughesiv Jul 24, 2026
4b1b87c
OSAC-3057: quote the design-review/prd-review rubric criteria exactly
tchughesiv Jul 24, 2026
4e755ef
OSAC-1201: rename README.md to design.md per convention
ajamias Jul 24, 2026
3b3144b
Stage guidelines/enhancements from existing checkout for ep-review CI
tchughesiv Jul 24, 2026
97755d5
OSAC-3057: address CodeRabbit review feedback on PR #156
tchughesiv Jul 24, 2026
6875973
OSAC-1201: Align host-label resolution documentation
ajamias Jul 24, 2026
e2e872c
OSAC-1201: Define BareMetalLabelSelector to map[string]string conversion
ajamias Jul 24, 2026
6d404c6
Merge pull request #137 from clobrano/prd/OSAC-1710
openshift-merge-bot[bot] Jul 24, 2026
c489d1b
OSAC-2872: add explicit volume_context field mapping
akshaynadkarni Jul 24, 2026
6c9f40c
OSAC-1201: Align design with existing protobuf and CRD architecture
ajamias Jul 24, 2026
ac10ca0
OSAC-1421: revise cluster node_sets wizard to tenant-managed host types
batzionb Jul 9, 2026
5b0c62d
Merge pull request #154 from osac-dev-bot/osac-jira-ai-issue-solver/O…
openshift-merge-bot[bot] Jul 26, 2026
4e8ad80
OSAC-1577 — PRD: API Quality: Declarative Validation, Auto-Generated…
htayrie-rh Jul 26, 2026
2f28529
OSAC-3149: PRD: Metering for Network Bandwidth
masayag Jul 26, 2026
f782285
OSAC-3153: fix detect_skills matching ui-design.md as design.md
ItzikEzra-rh Jul 26, 2026
0ce29c5
Merge pull request #161 from ItzikEzra-rh/fix/OSAC-3153-detect-skills…
openshift-merge-bot[bot] Jul 26, 2026
88063ee
OSAC-3149: replace billing terminology with metering language
masayag Jul 26, 2026
9616d0f
OSAC-3149: address reviewer feedback on bandwidth data source risk
masayag Jul 26, 2026
20c2603
OSAC-3149: reframe internal acceptance criteria as user-observable ou…
masayag Jul 26, 2026
b82a705
Merge pull request #160 from masayag/prd/OSAC-3149
openshift-merge-bot[bot] Jul 26, 2026
628f6d0
OSAC-1029: rename unified networking EP/PRD files
danmanor Jul 8, 2026
e2a3941
OSAC-1029: fix contradictions in unified networking EP
danmanor Jul 8, 2026
148e700
OSAC-1029: restructure unified networking PRD to skill template format
danmanor Jul 8, 2026
f6f5949
OSAC-1435: add VMaaS networking EP and PRD
danmanor Jul 8, 2026
42d9346
OSAC-1436: add CaaS networking EP and PRD
danmanor Jul 8, 2026
4d23259
OSAC-1437: add BMaaS networking EP and PRD
danmanor Jul 8, 2026
d078d0c
OSAC-1029: rewrite per-service PRDs to be user-facing only
danmanor Jul 8, 2026
a4e1bce
OSAC-1029: fix trailing whitespace
danmanor Jul 8, 2026
3dc059b
OSAC-1435: add missing Tenant Admin and Cloud Infrastructure Admin us…
danmanor Jul 8, 2026
d91e036
OSAC-1029: add expansion-of references and fix proto comment consistency
danmanor Jul 8, 2026
b6c4fd4
OSAC-1029: rename simplified-resource-creation to default-networking
danmanor Jul 8, 2026
8f7fe5c
OSAC-1029: add default-networking design.md, update all references
danmanor Jul 8, 2026
2f50d4e
OSAC-1029: update dispatcher contract params in BMaaS and CaaS designs
danmanor Jul 9, 2026
6486166
OSAC-1029: clarify fabric manager vs provisioning template responsibi…
danmanor Jul 9, 2026
2b0e4ee
OSAC-1029: remove IPAM from fabric manager scope in BMaaS and CaaS de…
danmanor Jul 9, 2026
8476715
OSAC-1029: clarify auto-provisioning lifecycle, controller preconditi…
danmanor Jul 9, 2026
38f2af7
OSAC-1029: fix review findings — controller preconditions, cleanup or…
danmanor Jul 9, 2026
727e5b5
OSAC-1029: move subnet IPAM to operator, resolve IP allocation archit…
danmanor Jul 9, 2026
1d92385
OSAC-1029: fix 13 stale references after operator IPAM architectural …
danmanor Jul 9, 2026
08ebd72
OSAC-1029: fix final consistency issues — stale refs, labels, concurr…
danmanor Jul 9, 2026
eb5b113
OSAC-1029: resolve MetalLB IPAddressPool ownership (CaaS OQ#3)
danmanor Jul 9, 2026
bb36e94
OSAC-1029: fix default networking — fulfillment-service creates defau…
danmanor Jul 9, 2026
de9a010
OSAC-1029: final consistency fixes — region refs, default creation, C…
danmanor Jul 9, 2026
bd0b245
OSAC-1029: add gateway, prefixLength, dnsServers to host networking c…
danmanor Jul 9, 2026
531e80e
OSAC-1029: fix stale BMaaS YAML example — add gateway/prefixLength/dn…
danmanor Jul 9, 2026
779ced7
OSAC-1029: fix deletion flows — cleanup ownership, IP release, agent …
danmanor Jul 9, 2026
813c7ba
OSAC-1029: CaaS single-subnet model — one attachment per cluster
danmanor Jul 9, 2026
42a4f58
OSAC-1029: replace operator IPAM with DHCP for host-side networking
danmanor Jul 10, 2026
5c2ce0a
OSAC-1029: fix 4 stale "or static" references — DHCP only
danmanor Jul 10, 2026
41e9658
OSAC-1029: add Agent Pool Model — parking network and port transition…
danmanor Jul 10, 2026
24731ce
OSAC-1029: fix stale 'pinned VIPs' in CaaS resolved OQ#3
danmanor Jul 10, 2026
db43a04
OSAC-1029: fix cross-document consistency — singular attachment, fiel…
danmanor Jul 12, 2026
5d958cd
OSAC-1029: add ComputeNetworkAttachmentStatus for VMaaS IP discovery
danmanor Jul 12, 2026
bfb6a1f
OSAC-1029: flag BMaaS IP discovery as open question
danmanor Jul 12, 2026
19726af
OSAC-1029: fix 9 cross-document consistency issues
danmanor Jul 12, 2026
7190931
OSAC-1029: fix proto field numbers, PRD alignment, and architecture gaps
danmanor Jul 12, 2026
7b0cf81
OSAC-1029: remove design leakage from all PRDs
danmanor Jul 12, 2026
4f04a26
OSAC-1029: add CRD Go struct for ComputeNetworkAttachmentStatus
danmanor Jul 12, 2026
bbb62bd
OSAC-1029: resolve NATGateway reuse, mandatory defaults, address all …
danmanor Jul 13, 2026
11fced0
OSAC-1029: fix field 15→18 text refs, NATGateway cleanup gaps, step n…
danmanor Jul 13, 2026
2092058
OSAC-1029: clarify inter-subnet routing as fabric manager responsibility
danmanor Jul 13, 2026
4d12805
OSAC-1029: simplify external access — single flag + NATGateway as VN …
danmanor Jul 13, 2026
b0e444d
OSAC-1029: add NATGateway to default resources not-cleaned-up list
danmanor Jul 14, 2026
d52a0ae
OSAC-1029: resolve all open questions, add dual-stack default subnets
danmanor Jul 14, 2026
4cf62a1
OSAC-1029: fix stale body text after OQ resolutions, step numbering
danmanor Jul 14, 2026
ceff097
OSAC-1029: fix BMaaS IP discovery timing — separate query_dhcp_lease …
danmanor Jul 14, 2026
b276d98
OSAC-1029: add NATGateway VN readiness precondition + MetalLB VIP field
danmanor Jul 14, 2026
2a8cc84
OSAC-1029: fix end-of-file newline
danmanor Jul 14, 2026
a97a1f4
Merge pull request #156 from tchughesiv/docs/OSAC-3057-canonical-prd-…
openshift-merge-bot[bot] Jul 26, 2026
74b5dad
OSAC-1029: replace HostType with BareMetalInstanceType, fix EP naming
danmanor Jul 27, 2026
a392d41
OSAC-1029: fix metallb field placement, VMaaS struct prefix, CaaS IP …
danmanor Jul 27, 2026
c11b358
OSAC-1029: rename unified-networking to OSAC-1433-unified-networking
danmanor Jul 27, 2026
cd1cd44
OSAC-1029: rename default-networking to OSAC-1433-default-networking
danmanor Jul 27, 2026
4bd3534
OSAC-1029: fix k8sManager CaaS dependency, parking network config, br…
danmanor Jul 27, 2026
b5fbab7
Merge pull request #143 from masayag/fix/cap-17-wording
openshift-merge-bot[bot] Jul 27, 2026
d4462a4
OSAC-1029: revert CaaS to HostType, keep BareMetalInstanceType for BMaaS
danmanor Jul 27, 2026
ccd1b2e
OSAC-1029: align Jira tracking links with directory names (OSAC-1433)
danmanor Jul 27, 2026
5a625f9
OSAC-1029: fix remaining low-severity cosmetic issues
danmanor Jul 27, 2026
19e28b3
Merge pull request #108 from batzionb/prd/OSAC-1421-cluster-node-sets
openshift-merge-bot[bot] Jul 27, 2026
81a3843
Merge pull request #155 from CrystalChun/design/OSAC-1061
openshift-merge-bot[bot] Jul 27, 2026
5028518
OSAC-1029: use HostType for v0.2, document BareMetalInstanceType as f…
danmanor Jul 27, 2026
af573e1
OSAC-1029: fix ExternalIPPool prerequisite contradiction, add migrati…
danmanor Jul 27, 2026
bb96154
Merge pull request #107 from danmanor/OSAC-1029/restructure-unified-n…
openshift-merge-bot[bot] Jul 27, 2026
ed365f8
OSAC-2644: add PRD for BCM backend integration for BMaaS
Jul 23, 2026
fc08dbb
catalog-items-ui: node_sets are template-driven, not freely composed
ElayAharoni Jul 27, 2026
6ed6a4c
OSAC-1201: Add networking integration support and role conventions
ajamias Jul 27, 2026
f687f1a
OSAC-2872: redesign storage control plane based on feedback
akshaynadkarni Jul 27, 2026
553947a
OSAC-1201: revise design based on carbonin feedback
ajamias Jul 27, 2026
5d02577
Merge pull request #126 from mennyaboush/prd/OSAC-2644
openshift-merge-bot[bot] Jul 27, 2026
7ffb442
OSAC-2872: address CodeRabbit review feedback
akshaynadkarni Jul 27, 2026
0d61ce2
OSAC-2872: address remaining CodeRabbit comments
akshaynadkarni Jul 28, 2026
854f018
OSAC-2872: fix open question numbering
akshaynadkarni Jul 28, 2026
41a965b
OSAC-2921: address mhrivnak review — reframe scope, defer display beh…
udis Jul 28, 2026
3a00a0b
Merge pull request #167 from ElayAharoni/catalog-items-node-sets-temp…
openshift-merge-bot[bot] Jul 28, 2026
ede0a66
OSAC-2921: address remaining review feedback — user story wording
udis Jul 28, 2026
dee67f5
PRD OSAC-2921: address review feedback
udis Jul 28, 2026
a213bb9
Resolve open questions
rawagner Jul 28, 2026
9cbd3cd
Merge pull request #123 from rawagner/org_ui_design
openshift-merge-bot[bot] Jul 28, 2026
a59aca0
skip EP review for forgeSmith-bot PRs
ItzikEzra-rh Jul 28, 2026
0beca26
OSAC-2872: address reviewer comments on design PR
akshaynadkarni Jul 28, 2026
740f273
Merge pull request #151 from akshaynadkarni/osac-2876-storage-control…
openshift-merge-bot[bot] Jul 28, 2026
605b1b7
OSAC-2506: PRD for BMaaS, Storage, and Networking metering
masayag Jul 14, 2026
2bcc0e3
OSAC-2506: polish PRD for review
masayag Jul 15, 2026
74a9d48
OSAC-2506: address CodeRabbit review comments
masayag Jul 15, 2026
59c0f7a
OSAC-2506: align bandwidth user stories with vendor-dependent CAP-30
masayag Jul 16, 2026
a30196b
OSAC-2506: address reviewer feedback — rename directory, replace bill…
masayag Jul 22, 2026
0e172fc
OSAC-2506: narrow PRD to BMaaS metering only
masayag Jul 26, 2026
6be0dee
OSAC-2506: replace remaining billing/pricing terminology with meterin…
masayag Jul 26, 2026
77f2fcb
OSAC-2506: fix broken Part 1 links and add UI out-of-scope
masayag Jul 26, 2026
7efa26e
OSAC-2506: inline Part 1 cross-cutting ACs and remove billing-adjacen…
masayag Jul 26, 2026
c39dda9
OSAC-2506: address reviewer feedback on metering start and design lea…
masayag Jul 26, 2026
ecc9525
OSAC-2506: make consumption meter always-on, fix consistency AC
masayag Jul 27, 2026
f67c018
OSAC-2506: add provenance footer to BMaaS metering PRD
masayag Jul 27, 2026
5e0fb7c
PRD OSAC-2506: remove remaining optional-consumption wording
masayag Jul 27, 2026
4641069
PRD OSAC-2506: align glossary allocation lifecycle boundary
masayag Jul 27, 2026
b3b7673
PRD OSAC-2506: qualify Part 1 capability references in CAP-5
masayag Jul 27, 2026
c16e33e
OSAC-2506: address reviewer feedback — resolve FAILED-state question,…
masayag Jul 28, 2026
dfff315
OSAC-2506: clarify BMaaS metering for hosts used as cluster nodes
masayag Jul 28, 2026
15ee955
OSAC-2506: clarify AC #7 — BMaaS data accessible via same metering APIs
masayag Jul 28, 2026
f93c3c8
OSAC-2506: update provenance footer
masayag Jul 28, 2026
9aaff83
Merge pull request #170 from ItzikEzra-rh/fix/skip-ep-review-for-forge
openshift-merge-bot[bot] Jul 28, 2026
0d5afa0
Design OSAC-1201: revise — remove stale hostType CRD references
ajamias Jul 28, 2026
17ec270
Merge pull request #119 from ajamias/design/OSAC-1201
openshift-merge-bot[bot] Jul 28, 2026
1726304
Merge pull request #118 from masayag/prd/OSAC-2506
openshift-merge-bot[bot] Jul 29, 2026
3849613
Merge pull request #141 from udis/prd/OSAC-2921
openshift-merge-bot[bot] Jul 29, 2026
5aaeaed
chore: remove OSAC-1270 PRD for Forge defaults comparison
ItzikEzra-rh Jul 30, 2026
6e8c16e
Merge branch 'feat/OSAC-3193-forge-defaults-clean'
ItzikEzra-rh Jul 30, 2026
fd04768
OSAC-1567: design/spec comparison — 3 approaches
ItzikEzra-rh Jul 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
176 changes: 176 additions & 0 deletions .github/scripts/check_ep_naming.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,176 @@
#!/usr/bin/env python3
"""Validate enhancements/ directory and file naming for paths new to a PR.

Directories and files that already existed at the PR base branch are
grandfathered — this only enforces the naming convention on new work.

Enforcement requires a PR base SHA (set via PRE_COMMIT_PR_BASE_SHA, always
present in the CI pre-commit job). Local runs without it are advisory-only
(a note is printed, nothing is flagged) so the git hook never blocks a
commit that CI would pass.

PRE_COMMIT_PR_BASE_SHA is a snapshot of `main` taken from the
`pull_request` webhook payload at the PR's last open/synchronize event —
it does not advance just because `main` gains new commits, and re-running
an old CI job replays that same stale payload rather than refreshing it.
For a long-lived PR that hasn't been pushed to since some *other*,
unrelated PR merged a still-non-compliant directory into `main`, that
stale SHA predates the unrelated directory, so it looks "new" here and
gets (incorrectly) enforced against — even though the current PR never
touches it and it's already correctly grandfathered on `main` itself.

To avoid that false positive, grandfathering also checks the *live* tip
of the base branch (PRE_COMMIT_LIVE_BASE_REF, e.g. `origin/main`, fetched
fresh at the start of every CI run) in addition to the stale base SHA: a
path is grandfathered if it exists at *either* reference. This keeps
enforcement scoped to paths that are genuinely new — including for
contributors actively renaming their own non-compliant directory to fix
it, who should never be blocked by an unrelated pre-existing violation
elsewhere in the repo.
"""

import os
import re
import subprocess
import sys

NAME_RE = re.compile(r"^OSAC-[1-9][0-9]*-[a-z0-9]+(?:-[a-z0-9]+)*$")
CHECKED_FILENAMES = frozenset({"prd.md", "design.md"})

BASE_SHA_ENV_VAR = "PRE_COMMIT_PR_BASE_SHA"
LIVE_BASE_REF_ENV_VAR = "PRE_COMMIT_LIVE_BASE_REF"


def path_exists_at_ref(ref: str, path: str) -> bool:
result = subprocess.run(
["git", "cat-file", "-e", f"{ref}:{path}"],
capture_output=True,
check=False,
)
return result.returncode == 0


def ref_exists(ref: str) -> bool:
result = subprocess.run(
["git", "cat-file", "-e", ref], capture_output=True, check=False
)
return result.returncode == 0


def top_level_enhancement_dir(path: str) -> str | None:
prefix = "enhancements/"
if not path.startswith(prefix):
return None
rest = path[len(prefix):]
if "/" not in rest:
return None
return rest.split("/", 1)[0]


def resolve_live_base_ref(live_base_ref: str | None) -> str | None:
# The live ref is best-effort: it's only set in CI (and only useful once
# actions/checkout has actually fetched it). If it's absent or doesn't
# resolve, grandfathering silently falls back to the base-SHA-only
# behavior below rather than erroring — this is a supplementary check,
# not a required one.
if live_base_ref is not None and ref_exists(live_base_ref):
return live_base_ref
return None


def is_grandfathered(
path: str, base_sha: str | None, live_base_ref: str | None
) -> bool:
if base_sha is not None and path_exists_at_ref(base_sha, path):
return True
if live_base_ref is not None and path_exists_at_ref(live_base_ref, path):
return True
return False


def validate_paths(
paths: list[str],
base_sha: str | None,
live_base_ref: str | None = None,
) -> list[str]:
# No base SHA at all means this is a local, non-CI run (CI always sets
# PRE_COMMIT_PR_BASE_SHA). Enforcing here would block commits that CI
# would pass — e.g. anyone with the git hook installed editing a file in
# an existing legacy directory — and push contributors toward
# `--no-verify`, which skips every other hook too. So local runs are
# advisory-only; CI remains the sole enforcement gate.
if base_sha is None:
print(
"note: no PR base SHA available — normal for local, non-CI "
"runs (pre-commit has no way to know your PR's base branch "
"outside CI). Skipping enhancements/ naming/casing checks "
"here; the CI pre-commit job (which sets "
"PRE_COMMIT_PR_BASE_SHA) is the authoritative gate and will "
"still catch violations before merge.",
file=sys.stderr,
)
return []

# A base SHA *was* provided (i.e. we're in CI) but doesn't resolve —
# unlike the "no base SHA" case above, this indicates a CI
# misconfiguration (e.g. a shallow checkout) and should stay fail-closed
# rather than silently disabling enforcement. That fail-closed guarantee
# covers the live ref too: a checkout broken enough that the base SHA
# doesn't resolve can't be trusted to have fetched the live ref
# correctly either, so grandfathering is disabled entirely here, not
# just narrowed to one reference.
if not ref_exists(base_sha):
print(
f"warning: PR base SHA '{base_sha}' is not available in this "
"checkout (the checkout step needs fetch-depth: 0) — "
"grandfathering disabled, every enhancements/ path will be "
"validated as new",
file=sys.stderr,
)
base_sha = None
live_base_ref = None
else:
live_base_ref = resolve_live_base_ref(live_base_ref)

violations = []
for path in paths:
dir_name = top_level_enhancement_dir(path)
if dir_name is None:
continue

dir_path = f"enhancements/{dir_name}"
dir_is_grandfathered = is_grandfathered(dir_path, base_sha, live_base_ref)

if not dir_is_grandfathered and not NAME_RE.match(dir_name):
violations.append(
f"{path}: directory '{dir_name}' doesn't match the "
"required format OSAC-<jira-key>-<slug> (e.g. "
"OSAC-1110-storage-tier-api) — see CONTRIBUTING.md for "
"the full naming convention"
)

basename = path.rsplit("/", 1)[-1]
if basename.lower() not in CHECKED_FILENAMES or basename.lower() == basename:
continue

file_is_grandfathered = is_grandfathered(path, base_sha, live_base_ref)
if not file_is_grandfathered:
violations.append(
f"{path}: filename '{basename}' must be lowercase "
f"('{basename.lower()}')"
)

return violations


def main(argv: list[str]) -> int:
base_sha = os.environ.get(BASE_SHA_ENV_VAR) or None
live_base_ref = os.environ.get(LIVE_BASE_REF_ENV_VAR) or None
violations = validate_paths(argv, base_sha, live_base_ref)
for violation in violations:
print(violation, file=sys.stderr)
return 1 if violations else 0


if __name__ == "__main__":
sys.exit(main(sys.argv[1:]))
Loading
Loading