Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
656 commits
Select commit Hold shift + click to select a range
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
5979f1a
build(deps): bump actions/setup-python from 5 to 7
dependabot[bot] Jul 27, 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
ee5bc84
OSAC-1577: add design document for API quality improvements
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
9fd6e88
OSAC-985: add metering and usage tracking design
masayag Jul 20, 2026
c1124c6
OSAC-985: clarify CE extension attributes mirror data fields for routing
masayag Jul 20, 2026
0047e15
OSAC-985: classify event types as billing-essential vs audit
masayag Jul 21, 2026
da0cf06
OSAC-985: define N+1 CaaS record notation inline
masayag Jul 21, 2026
a637c68
OSAC-985: explain osactrace purpose inline
masayag Jul 21, 2026
45f7a3a
OSAC-985: update provider adapter table
masayag Jul 21, 2026
e417499
OSAC-985: address CodeRabbit review comments
masayag Jul 21, 2026
cf4d61f
OSAC-985: address MaaS team review findings
masayag Jul 22, 2026
7f6ef3b
OSAC-985: address remaining CodeRabbit comments
masayag Jul 22, 2026
4a5ae33
OSAC-985: project_id available via metadata.project
masayag Jul 22, 2026
fd32f92
OSAC-985: address ygalblum review comments
masayag Jul 23, 2026
d7491c7
OSAC-985: clarify schema version examples in design
masayag Jul 27, 2026
721bba2
OSAC-985: address 8 CodeRabbit review findings
masayag Jul 27, 2026
470161b
OSAC-985: differentiate crash safety ordering by component
masayag Jul 28, 2026
c322913
OSAC-985: update last-updated frontmatter to 2026-07-28
masayag 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
cfd9e4a
OSAC-2872: route publish/unpublish through Storage Control Plane API
akshaynadkarni 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
3caade4
OSAC-2872: address CodeRabbit review on PR #172
akshaynadkarni Jul 29, 2026
9edee2a
OSAC-1577: address review feedback
Jul 29, 2026
c71486c
OSAC-1577: address CodeRabbit review feedback
Jul 29, 2026
1456293
Merge pull request #131 from masayag/design/OSAC-985
openshift-merge-bot[bot] Jul 29, 2026
7e86b13
OSAC-1382: Add PRD for Multi-Fabric East-West Networking
vladikr Jul 24, 2026
dfb7cf8
Design OSAC-1577: add public API equivalence graduation criterion
Jul 29, 2026
8a16f93
Design OSAC-1577: resolve route handling open question (plugin extens…
Jul 29, 2026
e18f52e
Design OSAC-1577: scope buf lint to staged output path
Jul 29, 2026
0db4aca
Merge pull request #165 from htayrie-rh/design/OSAC-1577
openshift-merge-bot[bot] Jul 29, 2026
7dceb6a
OSAC-2870: rename 5 more EPs per Jira-content cross-check (OSAC-2870 …
tchughesiv Jul 29, 2026
e54d22e
OSAC-2870: fix 2 stray cross-references found during full-repo audit
tchughesiv Jul 29, 2026
8358ac6
OSAC-2870: address CodeRabbit review feedback on #174
tchughesiv Jul 29, 2026
3d013ed
OSAC-1710: address round 3 review feedback
clobrano Jul 30, 2026
316eaea
OSAC-1710: address CodeRabbit review feedback on design
clobrano Jul 30, 2026
828a278
OSAC-1710: pass disk_index to tenant_storage_class role in YAML snippet
clobrano Jul 30, 2026
3feb4f8
Merge pull request #174 from tchughesiv/OSAC-2870-followup3-eran-jira…
openshift-merge-bot[bot] Jul 30, 2026
39f132d
Merge pull request #172 from akshaynadkarni/osac-2872-storage-cpapi
openshift-merge-bot[bot] Jul 30, 2026
9fab7b7
Merge pull request #117 from vladikr/prd/OSAC-1382
openshift-merge-bot[bot] Jul 30, 2026
2e5eae9
OSAC-3502: Document persona-consolidated user stories in prd_guide.md
tchughesiv Jul 31, 2026
fabf627
OSAC-3502: Document illustrative-example allowance in prd_guide.md
tchughesiv Jul 31, 2026
36cce64
OSAC-3502: Drop hyperlink to OSAC-1332 PRD, keep plain-text reference
tchughesiv Jul 31, 2026
7dbcc77
OSAC-3502: Drop redundant OSAC-1332 citation in Good examples
tchughesiv Jul 31, 2026
88aadcf
docs(OSAC-2921): add design for standardized metadata display_name
udis Aug 2, 2026
b0230a8
Remove "region" references from networking designs
danmanor Aug 2, 2026
2d8f396
Merge pull request #182 from danmanor/fix/remove-region-references
openshift-merge-bot[bot] Aug 2, 2026
5a34cc8
OSAC-1110: Add UI design document for storage tier management
ElayAharoni Aug 3, 2026
cd7f1cc
OSAC-1110: revise UI design against the now-merged backend
ElayAharoni Aug 3, 2026
fad1362
OSAC-1110: address CodeRabbit review and switch state label to shared…
ElayAharoni Aug 3, 2026
d416cc9
OSAC-1110: redesign backend association as a repeatable multi-row field
ElayAharoni Aug 3, 2026
a798d57
Merge pull request #178 from tchughesiv/OSAC-3502-prd-guide-persona-s…
openshift-merge-bot[bot] Aug 3, 2026
04847a6
OSAC-3573: Sharpen persona-consolidation and internal-service guidance
tchughesiv Aug 3, 2026
202a6f4
PRD: Pure Storage FlashBlade file storage (NFS) provider (#148)
DanNiESh Aug 3, 2026
4c9d395
OSAC-3573: Fix overclaimed cross-tenant visibility for Cloud Infra Admin
tchughesiv Aug 3, 2026
218d203
OSAC-3573: Avoid hard-coding the persona count
tchughesiv Aug 3, 2026
fe7e8d2
Merge pull request #184 from tchughesiv/OSAC-3573-persona-marker-guid…
openshift-merge-bot[bot] Aug 3, 2026
39a8aad
OSAC-2135: PRD for CaaS bare-metal worker node provisioning
avishayt Aug 4, 2026
29db0e4
Address review: remove design leakage from user story, assumptions, a…
avishayt Aug 4, 2026
b268aa5
OSAC-1110: address Akshay Nadkarni's PR review comments
ElayAharoni Aug 4, 2026
9a99933
PRD OSAC-2135: revise — address review feedback
avishayt Aug 4, 2026
59abbc7
PRD OSAC-2135: clarify tenant-owned vs CaaS-managed workflows
avishayt Aug 4, 2026
c68a5fd
OSAC-1110: reintroduce full StorageBackend admin UI
ElayAharoni Aug 4, 2026
0951180
OSAC-1110: fix nav/route-gating, modal-vs-page, and backend-lookup pe…
ElayAharoni Aug 4, 2026
fc25ee1
PRD OSAC-2135: address AlonaKaplan review feedback
avishayt Aug 4, 2026
3e3b444
Design OSAC-2921: address review feedback
udis Aug 4, 2026
2f6b321
Merge pull request #180 from udis/design/OSAC-2921
openshift-merge-bot[bot] Aug 4, 2026
42232c9
OSAC-1110: scope tier-to-backend UI to single selection per call deci…
ElayAharoni Aug 4, 2026
1cac992
OSAC-1110: define StorageBackend credential update semantics
ElayAharoni Aug 4, 2026
2be106c
Merge pull request #183 from ElayAharoni/design/OSAC-1110-storage-tie…
openshift-merge-bot[bot] Aug 4, 2026
1e6ec7a
Merge pull request #146 from clobrano/design/OSAC-1710
openshift-merge-bot[bot] Aug 4, 2026
1d67751
OSAC-1110: tighten Motivation to state rationale, not revision history
ElayAharoni Aug 5, 2026
34c1bae
OSAC-1110: cite the OSAC-1111 PRD alongside OSAC-1110's
ElayAharoni Aug 5, 2026
2009caf
Merge pull request #185 from avishayt/prd/OSAC-2135
openshift-merge-bot[bot] Aug 5, 2026
631305d
OSAC-1589: PRD - VM Worker Node Support for CaaS Clusters
vladikr Aug 5, 2026
0b5d2cc
Merge pull request #168 from vladikr/prd/OSAC-1589
openshift-merge-bot[bot] Aug 5, 2026
e49bc0c
Merge pull request #187 from ElayAharoni/docs/OSAC-1110-storage-ui-fo…
openshift-merge-bot[bot] Aug 5, 2026
2c398d2
OSAC-1269: update ClusterVersion PRD and design
sk-ilya Aug 5, 2026
112202d
Add PRD for OSAC-3254: Expose NIC MAC Addresses in BareMetalInstance …
adriengentil Aug 5, 2026
c218f89
Add UI to BareMetalInstance NIC MAC scope
adriengentil Aug 5, 2026
1c351b8
Reference OSAC-1437 for IP address scope
adriengentil Aug 5, 2026
6e12de2
Address review feedback on PRD
adriengentil Aug 5, 2026
b99c819
Align title with user-facing framing: Status -> Details
adriengentil Aug 5, 2026
3f0ab95
Merge pull request #163 from osac-project/dependabot/github_actions/a…
openshift-merge-bot[bot] Aug 5, 2026
f48d233
Bump actions/checkout from 7.0.0 to 7.0.1
dependabot[bot] Aug 5, 2026
74264f3
Hyphenate bare-metal as compound adjective
adriengentil Aug 5, 2026
eec861d
Merge pull request #164 from osac-project/dependabot/github_actions/a…
openshift-merge-bot[bot] Aug 5, 2026
85ba4b5
OSAC-2540: Add DiskImage design document
slintes Jul 22, 2026
6506f1a
OSAC-2540: Address review feedback - architecture validation, formatting
slintes Jul 22, 2026
916570d
OSAC-2540: Address AI design review - graduation criteria, docs, summary
slintes Jul 22, 2026
196fead
OSAC-2540: Address ygalblum review feedback
slintes Jul 23, 2026
8ecadde
OSAC-2540: address coderabbit round 3 feedback on DiskImage design
slintes Jul 23, 2026
e42de98
OSAC-2540: add tenant visibility to CatalogItem DiskImage validation
slintes Jul 23, 2026
9d93b4b
OSAC-2540: address round 5 review feedback on DiskImage design
slintes Jul 23, 2026
1d2b3ff
OSAC-2540: restore provenance footer on DiskImage design
slintes Jul 23, 2026
587c248
Design OSAC-2540: address review round 6
slintes Jul 23, 2026
ad33601
Design OSAC-2540: address review round 7
slintes Jul 24, 2026
04ad2b7
Design OSAC-2540: fix guest_os_family required vs default inconsistency
slintes Jul 24, 2026
d77f7b9
OSAC-2540: add BareMetalInstance goal to design
slintes Jul 27, 2026
bc639a8
OSAC-2540: address mhrivnak review feedback round 11
slintes Jul 27, 2026
4efc6dc
OSAC-2540: rename state field to lifecycle
slintes Jul 28, 2026
90a570e
OSAC-2540: fix reconciler code snippet getters
slintes Jul 28, 2026
082d178
OSAC-2540: document GuestOSFamily data flow and KubeVirt mapping
slintes Jul 29, 2026
69f5667
OSAC-2540: add GuestOSFamily VM configuration summary table
slintes Aug 4, 2026
be1110a
OSAC-2540: allow Tenant Users to create tenant-scoped DiskImages
slintes Aug 5, 2026
60cd88e
Add UI design for OSAC-3586
batzionb Aug 5, 2026
39be33e
Fix trailing whitespace in OSAC-3586 UI design
batzionb Aug 5, 2026
6e6a779
Design OSAC-3586: clarify admin instance type hook naming
batzionb Aug 5, 2026
c40639d
Design OSAC-3586: clarify list page error state
batzionb Aug 5, 2026
e5a8429
Design OSAC-3586: align list error wording with current pages
batzionb Aug 5, 2026
3138e6a
Design OSAC-3586: tighten create form validation details
batzionb Aug 5, 2026
4a59521
fix last-updated
slintes Aug 6, 2026
51871ef
Design OSAC-3586: align route and action labels
batzionb Aug 6, 2026
3ec207b
Design OSAC-3586: allow delete for obsolete types
batzionb Aug 6, 2026
1c8624b
Design OSAC-3586: switch deprecated color to orange
batzionb Aug 6, 2026
696700f
Merge pull request #193 from batzionb/design/OSAC-3586
openshift-merge-bot[bot] Aug 6, 2026
c4d0af7
Add testplan for OSAC-2540 DiskImage design
slintes Aug 6, 2026
d9790dc
OSAC-985: align design requirement references with PRD convention
masayag Aug 6, 2026
8286b86
Merge pull request #194 from masayag/fix/OSAC-985-requirement-id-alig…
openshift-merge-bot[bot] Aug 6, 2026
0adf46f
Add PRD for OSAC-3538: Catalog Items v2 — Field Governance Redesign
avishayt Aug 6, 2026
4ed7f93
PRD OSAC-3538: address review feedback
avishayt Aug 6, 2026
e9dda18
OSAC-2645: add design document for BCM backend integration
Aug 4, 2026
791b0e0
Merge pull request #145 from slintes/design/OSAC-2540
openshift-merge-bot[bot] Aug 6, 2026
6e2722a
Merge pull request #173 from mennyaboush/design/OSAC-2645
openshift-merge-bot[bot] Aug 7, 2026
091cdf2
PRD OSAC-3538: address round 3 review feedback
avishayt Aug 9, 2026
05c11e5
PRD OSAC-3538: scope image requirement to VM and bare metal catalog i…
avishayt Aug 9, 2026
b4230a8
Merge pull request #195 from avishayt/prd/OSAC-3538
openshift-merge-bot[bot] Aug 9, 2026
6f75664
Merge pull request #192 from adriengentil/prd/OSAC-3254
openshift-merge-bot[bot] Aug 9, 2026
556ea95
Merge pull request #191 from sk-ilya/prd-update
openshift-merge-bot[bot] Aug 9, 2026
1653788
Add PRD for OSAC-3833
forgeSmith-bot Aug 9, 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