Skip to content

Conversation

@rafabene
Copy link
Contributor

@rafabene rafabene commented Jan 7, 2026

Summary

Updates the Makefile Conventions standard to recognize Helm-chart repository patterns as valid alternatives to the base required targets.

Changes

  • Repository Type Variations section: Documents different repository types (Service, Helm-chart, Infrastructure, Documentation)
  • Target equivalents for Helm-chart repos: Maps standard targets to Helm equivalents (helm-lint, helm-template, helm-test)
  • Consistent naming: Renamed test-helm to helm-test for consistent helm-* pattern
  • Repository type indicator: Documents .hyperfleet.yaml file for tooling to identify repo types
  • Audit tool behavior: Describes how standards-audit should recognize these patterns
  • Documentation repos: Explicitly states Makefile is not required

Acceptance Criteria

  • Standard documents equivalent targets for Helm-chart repositories
  • Audit tools can recognize these patterns as compliant
  • Clear guidance on when each pattern applies

Related

Summary by CodeRabbit

  • Documentation
    • Added a new "Repository Type Variations" section (placed before Flag Conventions) with expanded guidance on repository types, required targets, and target equivalents.
    • Added guidance on declaring repository type via a root .hyperfleet.yaml and an auto-detection fallback.
    • Expanded audit semantics, target mappings (including Helm equivalents), multi-type examples, standardized helm-test naming, and illustrative examples.

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jan 7, 2026

Walkthrough

This PR updates the Makefile conventions doc by adding a new "Repository Type Variations" section, introducing repository types (Service, Helm-chart, Infrastructure, Documentation), and documenting a root .hyperfleet.yaml repository-type indicator plus auto-detection fallback rules. It expands target mappings (including helm-chart equivalents and renaming helm-test), updates audit semantics, reorders the TOC (moving Flag Conventions), and adds multi-type examples and Makefile/YAML snippets. All changes are documentation-only.

Sequence Diagram(s)

(omitted)

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

Suggested reviewers

  • xueli181114
  • ciaranRoche
🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the main change in the PR: adding documentation about repository type variations (Service, Helm-chart, Infrastructure, Documentation) to the Makefile conventions documentation.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


📜 Recent review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 24cee84 and 67fdb1f.

📒 Files selected for processing (1)
  • hyperfleet/standards/makefile-conventions.md
🔇 Additional comments (5)
hyperfleet/standards/makefile-conventions.md (5)

7-14: Excellent structural organization of the TOC.

The reordering logically flows from standard targets → repository type variations → flag conventions, which provides a natural progression from universal requirements to type-specific guidance to implementation details. This improves discoverability and readability.


152-175: Repository type variations section is comprehensive and well-conceived.

The introduction of explicit repository types with a clear mapping table between standard and helm-chart equivalents removes ambiguity about what "compliant" means for different repository architectures. The target mapping (especially build→N/A for helm-chart repos) is pragmatic.


177-211: Excellent guidance on repository type indicators and audit semantics.

The .hyperfleet.yaml specification is well-designed: prioritizing version-controlled metadata over GitHub topics, providing reasonable auto-detection heuristics (charts/ dir, go.mod, terraform/, markdown-only), and explicitly documenting the additive nature of targets for multi-type repositories (line 211). This gives tooling clear, consistent semantics.


213-257: Examples effectively demonstrate both single and multi-type repositories.

The multi-type example (service + helm-chart) and the audit output example provide concrete, actionable illustrations of the concepts. The audit output shows developers what "COMPLIANT" looks like, which improves clarity.


82-98: Target naming convention (test-helm → helm-test) is applied consistently.

The rename aligns Helm targets under the helm-* prefix pattern, improving consistency. All references throughout the document (optional targets table, examples, target equivalents, required targets by type, and multi-type example) use the new name consistently.

Also applies to: 172-172, 195-195, 237-237


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

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In @hyperfleet/standards/makefile-conventions.md:
- Line 211: The fenced code block in the audit tool example output is missing a
language identifier; update the triple-backtick block that currently contains
"Repository: adapter-landing-zone\n Type: helm-chart (from .hyperfleet.yaml)" to
include a language specifier (e.g., change ``` to ```plaintext) so the markdown
linter requirement for a fenced code block language is satisfied.
🧹 Nitpick comments (1)
hyperfleet/standards/makefile-conventions.md (1)

203-207: Auto-detection fallback logic could benefit from priority rules for edge cases.

The fallback detection lists signals for each type (e.g., charts/helm-chart, go.modservice) but does not specify behavior when multiple markers are present in the same repository. For example:

  • A repo with both go.mod and charts/ directories (e.g., a service with embedded Helm charts)
  • A repo with both terraform/ and .md files

Consider documenting detection priority rules or recommending that such repos always include an explicit .hyperfleet.yaml to avoid ambiguity.

📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 9b76e61 and 58141fc.

📒 Files selected for processing (1)
  • hyperfleet/standards/makefile-conventions.md
🧰 Additional context used
🪛 markdownlint-cli2 (0.18.1)
hyperfleet/standards/makefile-conventions.md

211-211: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🔇 Additional comments (4)
hyperfleet/standards/makefile-conventions.md (4)

12-14: Table of Contents updates align well with restructured sections.

The reordering to insert "Repository Type Variations" between standard targets and flag conventions matches the document flow and makes good logical sense.


81-81: Helm-related target naming standardized consistently.

The rename from test-helm to helm-test is applied across the optional targets table and examples, maintaining consistent helm-* naming conventions throughout.

Also applies to: 83-83, 96-96


154-186: Repository type variations are clearly documented with helpful examples and metadata format.

The section provides concrete definitions of each repository type, an intuitive .hyperfleet.yaml format for explicit typing, and realistic examples. The structure is well-organized and should guide repository maintainers effectively.


192-195: Clarify if helm-lint and helm-template are redundant as separate required targets.

The required targets for Helm-chart repos list helm-lint, helm-template, and helm-test all as required. However, the target equivalents table (line 170) states that the standard test target maps to helm-test, which in turn runs both helm-lint and helm-template validation. If helm-test is a composite target that already invokes both, there's potential redundancy or confusion about whether the underlying lint/template targets must also be independently required.

Do you intend helm-test to be a composite convenience target, with the underlying lint/template targets as optional building blocks? Or should helm-test be the only test-related required target (with lint/template being optional helpers)? Clarifying this distinction will help maintainers and auditors understand expectations more precisely.

- Add Repository Type Variations section documenting different repo types
- Define target equivalents for Helm-chart repositories (helm-lint, helm-template, helm-test)
- Rename test-helm to helm-test for consistent naming pattern
- Document .hyperfleet.yaml as repository type indicator
- Add audit tool behavior for recognizing repository patterns
- Documentation repos do not require Makefile

| Type | Description | Examples |
|------|-------------|----------|
| **Service** | Repositories that compile Go binaries | adapter-pullsecret, adapter-dns, sentinel |
Copy link
Collaborator

Choose a reason for hiding this comment

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

adapter-dns doesn't exist (yet), but it would be similar to landing-zone and will not contain a binary (IIRC)

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Ok. Removed

Copy link
Collaborator

Choose a reason for hiding this comment

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

Did I spoke too fast?
Re-thinking on it.... validators that provide a job, will build some sort of binary...

Right now our adapter jobs are just scripts, so the job they build don't require building a specific container image.

But there may be others that do.... in that case... will the repositories be service or helm type?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Good point! I've updated the documentation to support multiple types. If a repository builds binaries AND contains Helm charts, it can declare both:

types: [service, helm-chart]

The audit tool will validate required targets for each type. This way you don't have to choose - hybrid repos are explicitly supported. See the new "Example: Service repository with Helm charts" section.


| Standard Target | Helm-chart Equivalent | Notes |
|-----------------|----------------------|-------|
| `build` | N/A | No binaries to build; target may be omitted |
Copy link
Collaborator

Choose a reason for hiding this comment

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

It may be equivalent to helm template, since descriptors are the only thing being "built"

In some companies, the helm templates get rendered and stored in git and then deployed, so they can be considered as the "build output" of the repo

If this is not convincing, then better to omit it always and not say "target may be omited" since now we have to decide in every repo what to do

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Good point. I've updated to make it explicit that build is not applicable for Helm-chart repositories (removed the ambiguous "may be omitted" wording). Since helm-template validation is already included in helm-test, mapping it to build would be redundant


### Repository Type Indicator

To help tooling identify repository types, repositories **SHOULD** include a `.hyperfleet.yaml` file in the root directory:
Copy link
Collaborator

Choose a reason for hiding this comment

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

Isn't this something already provided by GitHub?

For "type" we can use the Topic property that you can set to a repository.

And then, the github API allows to query this info.

The description is already there in our repos

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Good question! I considered GitHub Topics, but .hyperfleet.yaml is preferred for a few reasons:

  1. Works offline - the standards-audit tool runs locally on cloned repos without needing GitHub API calls
  2. Version-controlled - changes go through PR review, unlike Topics which can be changed by any admin
  3. Structured metadata - allows for future expansion (owner, team, etc.)
  4. Platform-agnostic - works regardless of git hosting provider

GitHub Topics are still useful for discovery/cataloging at the GitHub level, but for local tooling the file approach is more reliable. I've added a note explaining this in the document.

# .hyperfleet.yaml - Repository metadata for HyperFleet tooling
version: v1
repository:
type: helm-chart # One of: service, helm-chart, infrastructure, documentation
Copy link
Contributor

Choose a reason for hiding this comment

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

I am wondering what does type mean here? main code type or deployment type or running type or usage type?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Good point! The type refers to the repository build artifact type - what kind of output the repository produces (binary, Helm charts, infrastructure code, or documentation). I've updated the comment to clarify this and reference the Repository Types table that defines each type.

rafabene and others added 2 commits January 8, 2026 12:35
- Remove adapter-dns from Service examples (doesn't exist yet)
- Clarify build target is not applicable for Helm-chart repos
- Explain why .hyperfleet.yaml is preferred over GitHub Topics
- Improve type field comment to clarify it refers to build artifact type

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Rename 'type' to 'types' (always a list) to support hybrid repositories
- Add example of service repository with Helm charts
- Clarify that targets are additive and each type requires its own targets
- Update audit output example to use 'Types:' format

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In @hyperfleet/standards/makefile-conventions.md:
- Line 212: Replace the pseudo-headings that use bold emphasis (the "**...**"
subsection labels flagged by the linter) with proper markdown heading syntax by
changing each bold label to a level-3 heading (### followed by the same label
text), and ensure there is a blank line before and after each new heading to
satisfy markdown structure and the linter.
📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 40ac68e and 8bf279d.

📒 Files selected for processing (1)
  • hyperfleet/standards/makefile-conventions.md
🧰 Additional context used
🪛 markdownlint-cli2 (0.18.1)
hyperfleet/standards/makefile-conventions.md

211-211: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)

🔇 Additional comments (1)
hyperfleet/standards/makefile-conventions.md (1)

150-257: New Repository Type Variations section is well-structured and comprehensive.

The new section provides clear guidance on repository-type variations with well-organized subsections: repository types with descriptions, Helm-chart target equivalents, .hyperfleet.yaml metadata format, audit tool behavior, and practical multi-type examples. The renaming of test-helm to helm-test is consistent throughout the updated tables and examples.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In @hyperfleet/standards/makefile-conventions.md:
- Line 65: Two identical headings "Example invocation" cause an MD024 lint
error; rename one (or both) headings so they are unique and reflect their
context (for example "Example invocation — CLI" and "Example invocation —
Makefile" or "Usage example"). Update both header lines that read "Example
invocation" to distinct, descriptive titles and ensure any internal
links/anchors referencing them are updated accordingly.
📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 8bf279d and 24cee84.

📒 Files selected for processing (1)
  • hyperfleet/standards/makefile-conventions.md
🧰 Additional context used
🪛 markdownlint-cli2 (0.18.1)
hyperfleet/standards/makefile-conventions.md

92-92: Multiple headings with the same content

(MD024, no-duplicate-heading)

🔇 Additional comments (2)
hyperfleet/standards/makefile-conventions.md (2)

75-101: Consistent helm-test naming convention applied throughout.

The renaming from test-helm to helm-test correctly follows the helm-* pattern and aligns with Helm CLI conventions. Changes are consistently applied across the description (line 84), example (line 98), and optional targets table.


152-258: Comprehensive new Repository Type Variations section successfully documents all acceptance criteria.

This section excellently implements the PR objectives:

  • Repository types (Service, Helm-chart, Infrastructure, Documentation) are clearly defined with examples
  • Target equivalents for Helm-chart repos are thoroughly documented with the helm-test, helm-lint, helm-template pattern
  • .hyperfleet.yaml metadata indicator is well-explained with practical YAML example
  • Audit tool behavior explicitly documents compliance detection with sensible auto-detection fallback (charts/ → helm-chart, go.mod → service, etc.)
  • Target additivity principle is clearly stated (line 211)
  • Real-world examples cover single-type and multi-type repositories
  • Audit output example demonstrates expected compliance reporting format

- Rename 'Example invocation' to 'Example: Required targets'
- Rename second 'Example invocation' to 'Example: Optional targets'

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@rh-amarin rh-amarin merged commit a2fd1af into openshift-hyperfleet:main Jan 8, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants