-
Notifications
You must be signed in to change notification settings - Fork 119
PoC: new OpenAPI schema generator #1216
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Note Other AI code review bot(s) detectedCodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review. WalkthroughThis change replaces the Changes
Sequence Diagram(s)sequenceDiagram
participant Dev as Developer
participant CI as CI Workflow
participant CozyGen as cozyvalues-gen
participant Repo as Repository
Dev->>Repo: Update Makefiles and workflow to use cozyvalues-gen
CI->>CozyGen: Run cozyvalues-gen with values.yaml and schema.json
CozyGen-->>Repo: Generate README.md and values.schema.json
CI->>Repo: Commit generated documentation and schema files
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
Suggested labels
Suggested reviewers
Poem
Note ⚡️ Unit Test Generation is now available in beta!Learn more here, or try it out under "Finishing Touches" below. ✨ Finishing Touches🧪 Generate 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. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Summary of Changes
Hello @kvaps, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!
In this pull request, I've implemented a new documentation convention by adding explicit type annotations to the @param
and @field
comments within values.yaml
files. This change is a foundational step, serving as a Proof of Concept, to enable the automated generation of OpenAPI schemas directly from these YAML configuration files, which should improve documentation and potentially enable better tooling and validation.
Highlights
- Type Annotation Introduction: I've introduced explicit type annotations within the comments of
values.yaml
files. These annotations specify the data type for each parameter, such as{bool}
,{string}
,{int}
, and more complex types like{map[string]user}
or{[]gpu}
. - Application-Specific Updates: I've applied these new type annotation conventions to the
values.yaml
files for both thepostgres
andvirtual-machine
applications, covering a wide range of their configurable parameters. - Enabling Schema Generation: This work serves as a Proof of Concept (PoC) to lay the groundwork for a new OpenAPI schema generator. The added type information will be crucial for automatically generating accurate and detailed OpenAPI schemas from these configuration files.
Using Gemini Code Assist
The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.
Invoking Gemini
You can request assistance from Gemini at any point in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command>
or @gemini-code-assist <command>
. Below is a summary of the supported commands.
Feature | Command | Description |
---|---|---|
Code Review | /gemini review |
Performs a code review for the current pull request in its current state. |
Pull Request Summary | /gemini summary |
Provides a summary of the current pull request in its current state. |
Comment | @gemini-code-assist | Responds in comments when explicitly tagged, both in issue comments and review comments. |
Help | /gemini help |
Displays a list of available commands. |
Customization
To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/
folder in the base of the repository. Detailed instructions can be found here.
Limitations & Feedback
Gemini Code Assist is currently in preview and may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments to provide feedback.
You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.
Footnotes
-
Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution. ↩
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code Review
This pull request introduces a new documentation format in values.yaml
files, likely for an OpenAPI schema generator. The changes add type information and descriptions to various parameters for the postgres
and virtual-machine
charts. The review focuses on the correctness and consistency of these new annotations, identifying issues in the postgres/values.yaml
and virtual-machine/values.yaml
files. Addressing these issues is important to ensure the generated schema is accurate.
1f562db
to
fa797e4
Compare
fa797e4
to
05bb7c3
Compare
4ec2245
to
a8d0f7d
Compare
a8d0f7d
to
1b89fbf
Compare
packages/apps/postgres/README.md
Outdated
| -------------------------------- | ------------------------------------------- | --------------------- | ----- | | ||
| `users` | Users configuration | `map[string]user` | `{}` | | ||
| `users[name].password` | Password for the user | `*string` | | | ||
| `users[name].replication` | Whether the user has replication privileges | `*bool` | | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's not quite clear what *bool
is. Optional? Anyway, a boolean should always have a default value, but this line has nothing in the fourth column.
packages/apps/postgres/README.md
Outdated
| `bootstrap` | Bootstrap configuration | `object` | `null` | | ||
| `bootstrap.enabled` | Restore database cluster from a backup | `bool` | | | ||
| `bootstrap.recoveryTime` | Timestamp (PITR) up to which recovery will proceed, expressed in RFC 3339 format. If left empty, will restore latest | `string` | | | ||
| `bootstrap.oldName` | Name of database cluster before deleting | `string` | | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's clarify the description. It's the name of the database which was backed up, and now we want to restore the data to a new database (because that's how CNPG works), right?
Name of database cluster to recover from
Name of backed up database
Name of the current database cluster
And why deleting? Will it be deleted after we recover the backup?
packages/apps/postgres/README.md
Outdated
| `backup` | Backup configuration | `object` | `null` | | ||
| `backup.enabled` | Enable regular backups | `bool` | | | ||
| `backup.schedule` | Cron schedule for automated backups | `string` | | | ||
| `backup.retentionPolicy` | Retention policy | `string` | | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Note to self. Retention policy needs examples. For now, it's simply a retention period, not a comprehensive policy, such as grandfather-father-son or anything similar.
packages/apps/postgres/README.md
Outdated
| `resources.cpu` | CPU | `*quantity` | | | ||
| `resources.memory` | Memory | `*quantity` | | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Very cool, we can now describt variables in objects without explicitly defining them in values.yaml.
840de2f
to
59dd38d
Compare
59dd38d
to
7d236b4
Compare
- https://github.com/cozystack/cozyvalues-gen - cozystack/cozystack#1216 Signed-off-by: Nick Volynkin <nick.volynkin@gmail.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
♻️ Duplicate comments (4)
packages/apps/postgres/values.schema.json (4)
1-4
: Add$schema
meta-field for IDE / linter support
Without the draft URI most JSON-schema aware tools will not recognise or validate this document automatically.{ + "$schema": "http://json-schema.org/draft-07/schema#", "title": "Chart Values", "type": "object",
17-25
:backup.*
still unconditionally required – breaks installs when backups are disabled
The earlier review already highlighted that every backup field is required even whenenabled: false
, causing Helm validation to fail for the default chart. Wrap the requirement in anif/then
block keyed offenabled
.- "required": [ - "destinationPath", - "enabled", - "endpointURL", - "retentionPolicy", - "s3AccessKey", - "s3SecretKey", - "schedule" - ], + "allOf": [ + { + "if": { "properties": { "enabled": { "const": true } } }, + "then": { + "required": [ + "destinationPath", + "endpointURL", + "retentionPolicy", + "s3AccessKey", + "s3SecretKey", + "schedule" + ] + } + } + ],
72-76
:bootstrap.oldName
/recoveryTime
should only be mandatory when bootstrap is enabled
Same unconditional‐requirement problem as above; please apply the same conditional pattern.- "required": [ - "enabled", - "oldName", - "recoveryTime" - ], + "allOf": [ + { + "if": { "properties": { "enabled": { "const": true } } }, + "then": { "required": [ "oldName", "recoveryTime" ] } + } + ],
112-124
: Over-strictpostgresql.parameters
requirement
Requiringparameters
– and inside itmax_connections
– forces users to specify them even when defaults are fine. Either remove therequired
arrays or gate them behind anif
that fires only when the user suppliesparameters
.- "required": [ - "parameters" - ], + // Make parameters optional, but if provided ensure max_connections is present + "allOf": [ + { + "if": { "required": [ "parameters" ] }, + "then": { + "properties": { + "parameters": { + "required": [ "max_connections" ] + } + } + } + } + ], ... - "required": [ - "max_connections" - ], + // `max_connections` only required by the outer condition
🧹 Nitpick comments (5)
packages/extra/monitoring/README.md (3)
15-18
: Avoid undocumented type aliases – expandmetricsStorage
inline or document it
[]metricsStorage
relies on an implicit alias that isn’t described anywhere in the README, andcozyvalues-gen
has no support for@typedef
. Readers (and generators) have to guess the structure. Either:
- Rename the column to
[]object
and rely on the field list that follows, or- Add a short paragraph introducing the
metricsStorage
shape before the table.This keeps the docs self-contained and tool-friendly.
74-77
: Add explicit time units tologsStorages[*].retentionPeriod
example
"1"
is ambiguous (seconds? days?). Use the same unit style as the metrics examples, e.g.:-| `logsStorages[0].retentionPeriod` | Retention period for the logs in the storage instance | `string` | `1` | +| `logsStorages[0].retentionPeriod` | Retention period for the logs in the storage instance | `string` | `1d` |Consistency improves readability and prevents mis-configuration.
98-98
: Wrap bare URL to satisfy markdownlint (MD034)-| `alerta.alerts.telegram.chatID` | Specify multiple ID's separated by comma. Get yours in https://t.me/chatid_echo_bot | `string` | `""` | +| `alerta.alerts.telegram.chatID` | Specify multiple ID's separated by comma. Get yours in <https://t.me/chatid_echo_bot> | `string` | `""` |Prevents lint noise without altering content.
packages/apps/virtual-machine/README.md (1)
38-39
: Consider renaming column header to “Default” for clarityThe last column currently reads “Value”, while the contents clearly document default values rather than examples or allowed ranges. Most Cozystack READMEs use “Default”, which is immediately self-describing.
-| Name | Description | Type | Value | +| Name | Description | Type | Default |packages/apps/virtual-machine/values.yaml (1)
24-25
: Strip trailing spaces to satisfy YAML lintLine 25 contains two trailing spaces flagged by YAMLlint (
trailing-spaces
). While harmless at runtime, it breaks CI style checks.-## @field systemDisk.storageClass {*string} StorageClass used to store the data +## @field systemDisk.storageClass {*string} StorageClass used to store the data
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (13)
.github/workflows/pre-commit.yml
(1 hunks)packages/apps/postgres/Makefile
(1 hunks)packages/apps/postgres/README.md
(1 hunks)packages/apps/postgres/values.schema.json
(1 hunks)packages/apps/postgres/values.yaml
(4 hunks)packages/apps/virtual-machine/Makefile
(1 hunks)packages/apps/virtual-machine/README.md
(1 hunks)packages/apps/virtual-machine/values.schema.json
(4 hunks)packages/apps/virtual-machine/values.yaml
(2 hunks)packages/extra/monitoring/Makefile
(1 hunks)packages/extra/monitoring/README.md
(1 hunks)packages/extra/monitoring/values.schema.json
(1 hunks)packages/extra/monitoring/values.yaml
(4 hunks)
✅ Files skipped from review due to trivial changes (1)
- packages/apps/postgres/values.yaml
🚧 Files skipped from review as they are similar to previous changes (8)
- packages/extra/monitoring/Makefile
- .github/workflows/pre-commit.yml
- packages/apps/virtual-machine/Makefile
- packages/apps/postgres/Makefile
- packages/apps/postgres/README.md
- packages/extra/monitoring/values.yaml
- packages/extra/monitoring/values.schema.json
- packages/apps/virtual-machine/values.schema.json
🧰 Additional context used
🧠 Learnings (8)
📓 Common learnings
Learnt from: NickVolynkin
PR: cozystack/cozystack#1120
File: packages/apps/ferretdb/README.md:35-37
Timestamp: 2025-07-02T09:58:11.406Z
Learning: In the cozystack repository, the maintainer NickVolynkin prefers to keep realistic-looking example credentials in README documentation rather than using generic placeholders like <ACCESS_KEY>, even though they are just examples and not real secrets.
Learnt from: NickVolynkin
PR: cozystack/cozystack#1196
File: packages/apps/http-cache/Makefile:24-27
Timestamp: 2025-07-14T16:23:12.803Z
Learning: In the cozystack repository, the `readme-generator` tool removes enum contents from values.schema.json files during its operation. Therefore, when using readme-generator in Makefiles, any enum values need to be injected back into the schema using yq commands after readme-generator has run, not before.
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/extra/monitoring/README.md:30-31
Timestamp: 2025-07-26T18:26:01.447Z
Learning: The cozyvalues-gen tool has a known issue (https://github.com/cozystack/cozyvalues-gen/issues/10) where it incorrectly places Grafana configuration entries under the wrong documentation sections, specifically placing grafana.resources.requests.* entries in the Metrics storage configuration table instead of the Grafana configuration table.
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/apps/postgres/values.yaml:55-60
Timestamp: 2025-07-26T17:54:57.273Z
Learning: In the cozystack repository, the cozyvalues-gen tool does not support `@typedef` syntax for defining custom type aliases in documentation comments.
Learnt from: NickVolynkin
PR: cozystack/cozystack#1120
File: packages/apps/clickhouse/README.md:60-67
Timestamp: 2025-07-03T05:54:51.264Z
Learning: The `cozy-lib.resources.sanitize` function in packages/library/cozy-lib/templates/_resources.tpl supports both standard Kubernetes resource format (with limits:/requests: sections) and flat format (direct resource specifications). The flat format takes priority over nested values. CozyStack apps include cozy-lib as a chart dependency through symlinks in packages/apps/*/charts/cozy-lib directories.
📚 Learning: the cozyvalues-gen tool has a known issue (https://github.com/cozystack/cozyvalues-gen/issues/10) wh...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/extra/monitoring/README.md:30-31
Timestamp: 2025-07-26T18:26:01.447Z
Learning: The cozyvalues-gen tool has a known issue (https://github.com/cozystack/cozyvalues-gen/issues/10) where it incorrectly places Grafana configuration entries under the wrong documentation sections, specifically placing grafana.resources.requests.* entries in the Metrics storage configuration table instead of the Grafana configuration table.
Applied to files:
packages/extra/monitoring/README.md
packages/apps/virtual-machine/README.md
packages/apps/virtual-machine/values.yaml
📚 Learning: in the cozystack repository, the maintainer nickvolynkin prefers to keep realistic-looking example c...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1120
File: packages/apps/ferretdb/README.md:35-37
Timestamp: 2025-07-02T09:58:11.406Z
Learning: In the cozystack repository, the maintainer NickVolynkin prefers to keep realistic-looking example credentials in README documentation rather than using generic placeholders like <ACCESS_KEY>, even though they are just examples and not real secrets.
Applied to files:
packages/extra/monitoring/README.md
packages/apps/virtual-machine/README.md
packages/apps/virtual-machine/values.yaml
📚 Learning: in the cozystack repository, the cozyvalues-gen tool does not support `@typedef` syntax for defining...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/apps/postgres/values.yaml:55-60
Timestamp: 2025-07-26T17:54:57.273Z
Learning: In the cozystack repository, the cozyvalues-gen tool does not support `@typedef` syntax for defining custom type aliases in documentation comments.
Applied to files:
packages/extra/monitoring/README.md
packages/apps/virtual-machine/README.md
packages/apps/virtual-machine/values.yaml
📚 Learning: in the cozystack repository, the `readme-generator` tool removes enum contents from values.schema.js...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1196
File: packages/apps/http-cache/Makefile:24-27
Timestamp: 2025-07-14T16:23:12.803Z
Learning: In the cozystack repository, the `readme-generator` tool removes enum contents from values.schema.json files during its operation. Therefore, when using readme-generator in Makefiles, any enum values need to be injected back into the schema using yq commands after readme-generator has run, not before.
Applied to files:
packages/apps/postgres/values.schema.json
packages/apps/virtual-machine/README.md
packages/apps/virtual-machine/values.yaml
📚 Learning: in the cozystack repository, for the virtual-machine app's resources.sockets parameter, the value is...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/apps/virtual-machine/values.yaml:0-0
Timestamp: 2025-07-26T18:12:05.641Z
Learning: In the cozystack repository, for the virtual-machine app's resources.sockets parameter, the value is intentionally kept as a string in values.yaml despite being documented as {int} type, because the string-to-integer parsing happens elsewhere in the system pipeline rather than at the YAML validation level.
Applied to files:
packages/apps/virtual-machine/README.md
packages/apps/virtual-machine/values.yaml
📚 Learning: in cozystack's schema generator annotation format, when documenting fields of array items, use the s...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/apps/virtual-machine/values.yaml:31-33
Timestamp: 2025-07-26T18:01:52.557Z
Learning: In cozystack's schema generator annotation format, when documenting fields of array items, use the singular form of the item type rather than array notation. For example, for a parameter `gpus {[]gpu}`, use `@field gpu.name` rather than `@field gpus[].name` to refer to the name field of each GPU object in the array.
Applied to files:
packages/apps/virtual-machine/values.yaml
📚 Learning: in cozystack, the plural form for the kubernetes custom resource is `kuberneteses.apps.cozystack.io`...
Learnt from: lllamnyp
PR: cozystack/cozystack#1130
File: hack/e2e-apps/kubernetes.bats:101-101
Timestamp: 2025-07-11T06:11:25.438Z
Learning: In cozystack, the plural form for the Kubernetes custom resource is `kuberneteses.apps.cozystack.io`, not `kubernetes.apps.cozystack.io`. This is defined in the API schema even though it's not grammatically perfect.
Applied to files:
packages/apps/virtual-machine/values.yaml
🪛 markdownlint-cli2 (0.17.2)
packages/extra/monitoring/README.md
98-98: Bare URL used
(MD034, no-bare-urls)
🪛 Gitleaks (8.27.2)
packages/apps/postgres/values.schema.json
13-13: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.
(generic-api-key)
14-14: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.
(generic-api-key)
🪛 LanguageTool
packages/apps/virtual-machine/README.md
[style] ~56-~56: To form a complete sentence, be sure to include a subject or ‘there’.
Context: ... of SSH public keys for authentication. Can be a single key or a list of keys. ...
(MISSING_IT_THERE)
🪛 YAMLlint (1.37.1)
packages/apps/virtual-machine/values.yaml
[error] 25-25: trailing spaces
(trailing-spaces)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: Build
🔇 Additional comments (2)
packages/apps/postgres/values.schema.json (1)
48-55
: Example S3 credentials flagged by gitleaks – safe to keep but confirm intent
Static analysis marks these strings as generic API keys. Given the repository convention of using realistic-looking placeholders, this is probably intentional. If they are genuine secrets, rotate & remove immediately.packages/apps/virtual-machine/values.yaml (1)
6-10
: LGTM — enum annotation matches supplied default
externalMethod
is restricted toPortList,WholeIP
and the YAML default is"PortList"
.
No issues detected here.
| Name | Description | Type | Value | | ||
| ------------------------- | ----------------------------------------------------------------------------------------------------------- | ---------- | ------------ | | ||
| `external` | Enable external access from outside the cluster | `bool` | `false` | | ||
| `externalMethod` | Specify method to pass through the traffic to the virtual machine. Allowed values: `WholeIP` and `PortList` | `string` | `{}` | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
Default {}
violates declared string
type for externalMethod
The table advertises externalMethod
as string
, yet the default column shows {}
(an object).
values.yaml
actually ships with the quoted string "PortList"
.
-| `externalMethod` | Specify method to pass through the traffic to the virtual machine. Allowed values: `WholeIP` and `PortList` | `string` | `{}` |
+| `externalMethod` | Specify method to pass through the traffic to the virtual machine. Allowed values: `WholeIP` and `PortList` | `string` | `"PortList"` |
Leaving the mismatch will confuse users and automated docs consumers.
🏁 Script executed:
#!/bin/bash
grep -R "externalMethod" -n packages/apps/virtual-machine/values.yaml || echo "externalMethod not found"
Length of output: 266
Update default value for externalMethod
in README to match values.yaml
The README currently shows {}
as the default, but values.yaml
defines
externalMethod: "PortList"
This mismatch will confuse users and automated tooling.
• File to change: packages/apps/virtual-machine/README.md
• Line ~41: replace default value in the table
Proposed diff:
-| `externalMethod` | Specify method to pass through the traffic to the virtual machine. Allowed values: `WholeIP` and `PortList` | `string` | `{}` |
+| `externalMethod` | Specify method to pass through the traffic to the virtual machine. Allowed values: `WholeIP` and `PortList` | `string` | `"PortList"` |
🤖 Prompt for AI Agents
In packages/apps/virtual-machine/README.md at line 41, update the default value
for the `externalMethod` property in the table from `{}` to `"PortList"` to
match the default defined in values.yaml. This ensures consistency between
documentation and configuration defaults.
ac9802d
to
379ab1f
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
♻️ Duplicate comments (5)
packages/apps/virtual-machine/README.md (1)
42-42
: README still shows{}
forexternalMethod
default – mismatch withvalues.yaml
values.yaml
setsexternalMethod: "PortList"but the table documents an object (
{}
), which is an invalid value for astring
.
This inconsistency keeps resurfacing and will keep confusing users and tooling until fixed.-| `externalMethod` | Specify method to pass through the traffic to the virtual machine. Allowed values: `WholeIP` and `PortList` | `string` | `{}` | +| `externalMethod` | Specify method to pass through the traffic to the virtual machine. Allowed values: `WholeIP` and `PortList` | `string` | `"PortList"` |packages/apps/postgres/values.schema.json (4)
5-25
:backup.*
still unconditionally required – previous comment remains unresolved
End-users must now supply S3 keys even whenbackup.enabled
isfalse
, breaking default installs.
Wrap the requirement array in anif/then
guard onenabled
.
64-90
:bootstrap.oldName
/recoveryTime
should be required only whenbootstrap.enabled
is true
Same conditional-requirement issue noted earlier.
142-162
: Over-strict requirement ofpostgresql.parameters.max_connections
blocks defaults
Forcing users to specifyparameters
andmax_connections
prevents a helm install with stock values.
Guard the requirement withif: {required:["parameters"]}
or drop it altogether.
1-4
: Add$schema
meta-field for editor & CI tooling to recognise draft version
Without it, many IDEs / linters cannot validate the file automatically.{ + "$schema": "http://json-schema.org/draft-07/schema#", "title": "Chart Values", "type": "object",
🧹 Nitpick comments (4)
packages/apps/virtual-machine/values.yaml (1)
24-26
: Trim trailing whitespace to keep the file YAML-lint cleanLine 25 contains only the comment prefix followed by stray spaces.
Not a functional problem, but it breaksyamllint -d "{extends: default, rules: {trailing-spaces: enable}}"
in CI.-## +##packages/apps/postgres/values.schema.json (1)
194-211
: Consider forbidding undeclared resource keys for stronger validation
Adding"additionalProperties": false
toresources
(and likewise at the root) prevents silent typos.packages/extra/monitoring/README.md (1)
71-74
: Bare URL triggers markdown-lint and breaks autolinkingReplace the naked URL with a proper link to silence MD034 and make the docs nicer.
-| `alerta.alerts.telegram.chatID` | Specify multiple ID's separated by comma. Get yours in https://t.me/chatid_echo_bot | `string` | `""` | +| `alerta.alerts.telegram.chatID` | Specify multiple IDs separated by comma. Get yours in [@chatid_echo_bot](https://t.me/chatid_echo_bot) | `string` | `""` |packages/extra/monitoring/values.schema.json (1)
210-213
: Add explicit default to keep schema⇆docs in syncThe README shows
host
defaulting to an empty string.
Consider adding"default": ""here so generators and UI builders present the same behaviour.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (13)
.github/workflows/pre-commit.yml
(1 hunks)packages/apps/postgres/Makefile
(1 hunks)packages/apps/postgres/README.md
(1 hunks)packages/apps/postgres/values.schema.json
(1 hunks)packages/apps/postgres/values.yaml
(3 hunks)packages/apps/virtual-machine/Makefile
(1 hunks)packages/apps/virtual-machine/README.md
(1 hunks)packages/apps/virtual-machine/values.schema.json
(4 hunks)packages/apps/virtual-machine/values.yaml
(2 hunks)packages/extra/monitoring/Makefile
(1 hunks)packages/extra/monitoring/README.md
(1 hunks)packages/extra/monitoring/values.schema.json
(1 hunks)packages/extra/monitoring/values.yaml
(4 hunks)
✅ Files skipped from review due to trivial changes (1)
- packages/apps/postgres/values.yaml
🚧 Files skipped from review as they are similar to previous changes (7)
- .github/workflows/pre-commit.yml
- packages/extra/monitoring/Makefile
- packages/apps/virtual-machine/Makefile
- packages/apps/postgres/Makefile
- packages/apps/postgres/README.md
- packages/extra/monitoring/values.yaml
- packages/apps/virtual-machine/values.schema.json
🧰 Additional context used
🧠 Learnings (9)
📓 Common learnings
Learnt from: NickVolynkin
PR: cozystack/cozystack#1120
File: packages/apps/ferretdb/README.md:35-37
Timestamp: 2025-07-02T09:58:11.406Z
Learning: In the cozystack repository, the maintainer NickVolynkin prefers to keep realistic-looking example credentials in README documentation rather than using generic placeholders like <ACCESS_KEY>, even though they are just examples and not real secrets.
Learnt from: NickVolynkin
PR: cozystack/cozystack#1196
File: packages/apps/http-cache/Makefile:24-27
Timestamp: 2025-07-14T16:23:12.803Z
Learning: In the cozystack repository, the `readme-generator` tool removes enum contents from values.schema.json files during its operation. Therefore, when using readme-generator in Makefiles, any enum values need to be injected back into the schema using yq commands after readme-generator has run, not before.
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/extra/monitoring/README.md:30-31
Timestamp: 2025-07-26T18:26:01.447Z
Learning: The cozyvalues-gen tool has a known issue (https://github.com/cozystack/cozyvalues-gen/issues/10) where it incorrectly places Grafana configuration entries under the wrong documentation sections, specifically placing grafana.resources.requests.* entries in the Metrics storage configuration table instead of the Grafana configuration table.
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/apps/postgres/values.yaml:55-60
Timestamp: 2025-07-26T17:54:57.273Z
Learning: In the cozystack repository, the cozyvalues-gen tool does not support `@typedef` syntax for defining custom type aliases in documentation comments.
Learnt from: NickVolynkin
PR: cozystack/cozystack#1120
File: packages/apps/clickhouse/README.md:60-67
Timestamp: 2025-07-03T05:54:51.264Z
Learning: The `cozy-lib.resources.sanitize` function in packages/library/cozy-lib/templates/_resources.tpl supports both standard Kubernetes resource format (with limits:/requests: sections) and flat format (direct resource specifications). The flat format takes priority over nested values. CozyStack apps include cozy-lib as a chart dependency through symlinks in packages/apps/*/charts/cozy-lib directories.
📚 Learning: the cozyvalues-gen tool has a known issue (https://github.com/cozystack/cozyvalues-gen/issues/10) wh...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/extra/monitoring/README.md:30-31
Timestamp: 2025-07-26T18:26:01.447Z
Learning: The cozyvalues-gen tool has a known issue (https://github.com/cozystack/cozyvalues-gen/issues/10) where it incorrectly places Grafana configuration entries under the wrong documentation sections, specifically placing grafana.resources.requests.* entries in the Metrics storage configuration table instead of the Grafana configuration table.
Applied to files:
packages/extra/monitoring/README.md
packages/extra/monitoring/values.schema.json
packages/apps/virtual-machine/README.md
packages/apps/virtual-machine/values.yaml
📚 Learning: in the cozystack repository, the maintainer nickvolynkin prefers to keep realistic-looking example c...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1120
File: packages/apps/ferretdb/README.md:35-37
Timestamp: 2025-07-02T09:58:11.406Z
Learning: In the cozystack repository, the maintainer NickVolynkin prefers to keep realistic-looking example credentials in README documentation rather than using generic placeholders like <ACCESS_KEY>, even though they are just examples and not real secrets.
Applied to files:
packages/extra/monitoring/README.md
packages/extra/monitoring/values.schema.json
packages/apps/virtual-machine/README.md
packages/apps/virtual-machine/values.yaml
📚 Learning: in the cozystack repository, the cozyvalues-gen tool does not support `@typedef` syntax for defining...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/apps/postgres/values.yaml:55-60
Timestamp: 2025-07-26T17:54:57.273Z
Learning: In the cozystack repository, the cozyvalues-gen tool does not support `@typedef` syntax for defining custom type aliases in documentation comments.
Applied to files:
packages/extra/monitoring/README.md
packages/apps/virtual-machine/README.md
packages/apps/virtual-machine/values.yaml
📚 Learning: in the cozystack repository, the `readme-generator` tool removes enum contents from values.schema.js...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1196
File: packages/apps/http-cache/Makefile:24-27
Timestamp: 2025-07-14T16:23:12.803Z
Learning: In the cozystack repository, the `readme-generator` tool removes enum contents from values.schema.json files during its operation. Therefore, when using readme-generator in Makefiles, any enum values need to be injected back into the schema using yq commands after readme-generator has run, not before.
Applied to files:
packages/extra/monitoring/values.schema.json
packages/apps/postgres/values.schema.json
packages/apps/virtual-machine/README.md
packages/apps/virtual-machine/values.yaml
📚 Learning: the `cozy-lib.resources.sanitize` function in packages/library/cozy-lib/templates/_resources.tpl sup...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1120
File: packages/apps/clickhouse/README.md:60-67
Timestamp: 2025-07-03T05:54:51.264Z
Learning: The `cozy-lib.resources.sanitize` function in packages/library/cozy-lib/templates/_resources.tpl supports both standard Kubernetes resource format (with limits:/requests: sections) and flat format (direct resource specifications). The flat format takes priority over nested values. CozyStack apps include cozy-lib as a chart dependency through symlinks in packages/apps/*/charts/cozy-lib directories.
Applied to files:
packages/extra/monitoring/values.schema.json
📚 Learning: in the cozystack repository, for the virtual-machine app's resources.sockets parameter, the value is...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/apps/virtual-machine/values.yaml:0-0
Timestamp: 2025-07-26T18:12:05.641Z
Learning: In the cozystack repository, for the virtual-machine app's resources.sockets parameter, the value is intentionally kept as a string in values.yaml despite being documented as {int} type, because the string-to-integer parsing happens elsewhere in the system pipeline rather than at the YAML validation level.
Applied to files:
packages/apps/virtual-machine/README.md
packages/apps/virtual-machine/values.yaml
📚 Learning: in cozystack's schema generator annotation format, when documenting fields of array items, use the s...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/apps/virtual-machine/values.yaml:31-33
Timestamp: 2025-07-26T18:01:52.557Z
Learning: In cozystack's schema generator annotation format, when documenting fields of array items, use the singular form of the item type rather than array notation. For example, for a parameter `gpus {[]gpu}`, use `@field gpu.name` rather than `@field gpus[].name` to refer to the name field of each GPU object in the array.
Applied to files:
packages/apps/virtual-machine/values.yaml
📚 Learning: in cozystack, the plural form for the kubernetes custom resource is `kuberneteses.apps.cozystack.io`...
Learnt from: lllamnyp
PR: cozystack/cozystack#1130
File: hack/e2e-apps/kubernetes.bats:101-101
Timestamp: 2025-07-11T06:11:25.438Z
Learning: In cozystack, the plural form for the Kubernetes custom resource is `kuberneteses.apps.cozystack.io`, not `kubernetes.apps.cozystack.io`. This is defined in the API schema even though it's not grammatically perfect.
Applied to files:
packages/apps/virtual-machine/values.yaml
🪛 markdownlint-cli2 (0.17.2)
packages/extra/monitoring/README.md
73-73: Bare URL used
(MD034, no-bare-urls)
🪛 LanguageTool
packages/apps/virtual-machine/README.md
[style] ~57-~57: To form a complete sentence, be sure to include a subject or ‘there’.
Context: ... of SSH public keys for authentication. Can be a single key or a list of keys. ...
(MISSING_IT_THERE)
🪛 YAMLlint (1.37.1)
packages/apps/virtual-machine/values.yaml
[error] 25-25: trailing spaces
(trailing-spaces)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: Build
🔇 Additional comments (1)
packages/extra/monitoring/README.md (1)
7-11
: Schema & docs diverge onhost
defaultThe table shows default
""
, yetvalues.schema.json
provides no default forhost
.
Pick one source of truth to avoid drift.
379ab1f
to
89d11aa
Compare
There was a problem hiding this 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
♻️ Duplicate comments (6)
packages/apps/postgres/values.schema.json (4)
1-4
: Add$schema
meta-field for IDE/linter support
The draft reference is still missing, so many tools won’t recognise this as a JSON Schema document.{ + "$schema": "http://json-schema.org/draft-07/schema#", "title": "Chart Values",
17-25
:backup.*
fields are unconditionally required
Whenbackup.enabled
isfalse
, Helm validation still forces users to provide S3 keys, paths, etc. Wrap the requirement in anif/then
conditional so these fields are only required when backups are enabled.
(See previous review for an exact snippet.)
72-75
: Same conditional-requirement problem forbootstrap.oldName
oldName
(and probablyrecoveryTime
) should only be mandatory whenbootstrap.enabled
is true; otherwise default installs fail. Apply the sameif/then
technique suggested earlier.
142-154
: Over-strict requirement onpostgresql.parameters
→ blocks default installs
Requiring the wholeparameters
object (andmax_connections
inside) forces every user to override defaults. Either drop therequired
arrays or guard them with anif/then
that triggers only when the user explicitly setsparameters
.packages/extra/monitoring/README.md (1)
24-42
: minAllowed / maxAllowed child-row descriptions are still flippedThe descriptions for the
*.minAllowed.*
and*.maxAllowed.*
CPU / memory rows under every component remain reversed (limit ↔ request).
This was pointed out in an earlier review but the table is unchanged, so users will keep mis-configuring resources.-…minAllowed.cpu` | CPU limit (maximum available value) -…minAllowed.memory` | Memory limit (maximum available value) -…maxAllowed.cpu` | CPU request (minimal available value) -…maxAllowed.memory` | Memory request (minimal available value) +…minAllowed.cpu` | CPU request (minimal available value) +…minAllowed.memory` | Memory request (minimal available value) +…maxAllowed.cpu` | CPU limit (maximum available value) +…maxAllowed.memory` | Memory limit (maximum available value)Apply the same swap for the
vminsert
,vmselect
, andvmstorage
blocks to keep terminology consistent with Kubernetes and with the parent-row wording.packages/apps/virtual-machine/README.md (1)
42-43
: Default value{}
contradicts declaredstring
type andvalues.yaml
The row for
externalMethod
documentsType
=string
, yet the default shown is{}
(object).
values.yaml
sets the default to"PortList"
. The mismatch will confuse users and break tooling that relies on the README defaults.-| `externalMethod` | Specify method to pass through the traffic to the virtual machine. Allowed values: `WholeIP` and `PortList` | `string` | `{}` | +| `externalMethod` | Specify method to pass through the traffic to the virtual machine. Allowed values: `WholeIP` and `PortList` | `string` | `"PortList"` |
🧹 Nitpick comments (2)
packages/extra/monitoring/README.md (1)
73-73
: Wrap bare URL to satisfy markdownlint (MD034)Line 73 contains a naked URL. Surround it with angle brackets or convert to a markdown link to silence linters.
-…comma. Get yours in https://t.me/chatid_echo_bot +…comma. Get yours in <https://t.me/chatid_echo_bot>packages/apps/virtual-machine/README.md (1)
48-58
: Minor wording nit – add subject for clarityThe sentence “Can be a single key or a list of keys.” lacks a subject; LanguageTool flags it.
Consider:-List of SSH public keys for authentication. Can be a single key or a list of keys. +List of SSH public keys for authentication. It can be a single key or a list of keys.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (13)
.github/workflows/pre-commit.yml
(1 hunks)packages/apps/postgres/Makefile
(1 hunks)packages/apps/postgres/README.md
(1 hunks)packages/apps/postgres/values.schema.json
(1 hunks)packages/apps/postgres/values.yaml
(3 hunks)packages/apps/virtual-machine/Makefile
(1 hunks)packages/apps/virtual-machine/README.md
(1 hunks)packages/apps/virtual-machine/values.schema.json
(4 hunks)packages/apps/virtual-machine/values.yaml
(2 hunks)packages/extra/monitoring/Makefile
(1 hunks)packages/extra/monitoring/README.md
(1 hunks)packages/extra/monitoring/values.schema.json
(1 hunks)packages/extra/monitoring/values.yaml
(4 hunks)
✅ Files skipped from review due to trivial changes (1)
- packages/extra/monitoring/values.yaml
🚧 Files skipped from review as they are similar to previous changes (8)
- packages/extra/monitoring/Makefile
- packages/apps/virtual-machine/Makefile
- packages/apps/postgres/Makefile
- packages/apps/postgres/values.yaml
- .github/workflows/pre-commit.yml
- packages/extra/monitoring/values.schema.json
- packages/apps/postgres/README.md
- packages/apps/virtual-machine/values.schema.json
🧰 Additional context used
🧠 Learnings (8)
📓 Common learnings
Learnt from: NickVolynkin
PR: cozystack/cozystack#1120
File: packages/apps/ferretdb/README.md:35-37
Timestamp: 2025-07-02T09:58:11.406Z
Learning: In the cozystack repository, the maintainer NickVolynkin prefers to keep realistic-looking example credentials in README documentation rather than using generic placeholders like <ACCESS_KEY>, even though they are just examples and not real secrets.
Learnt from: NickVolynkin
PR: cozystack/cozystack#1196
File: packages/apps/http-cache/Makefile:24-27
Timestamp: 2025-07-14T16:23:12.803Z
Learning: In the cozystack repository, the `readme-generator` tool removes enum contents from values.schema.json files during its operation. Therefore, when using readme-generator in Makefiles, any enum values need to be injected back into the schema using yq commands after readme-generator has run, not before.
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/extra/monitoring/README.md:30-31
Timestamp: 2025-07-26T18:26:01.447Z
Learning: The cozyvalues-gen tool has a known issue (https://github.com/cozystack/cozyvalues-gen/issues/10) where it incorrectly places Grafana configuration entries under the wrong documentation sections, specifically placing grafana.resources.requests.* entries in the Metrics storage configuration table instead of the Grafana configuration table.
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/apps/postgres/values.yaml:55-60
Timestamp: 2025-07-26T17:54:57.273Z
Learning: In the cozystack repository, the cozyvalues-gen tool does not support `@typedef` syntax for defining custom type aliases in documentation comments.
Learnt from: NickVolynkin
PR: cozystack/cozystack#1120
File: packages/apps/clickhouse/README.md:60-67
Timestamp: 2025-07-03T05:54:51.264Z
Learning: The `cozy-lib.resources.sanitize` function in packages/library/cozy-lib/templates/_resources.tpl supports both standard Kubernetes resource format (with limits:/requests: sections) and flat format (direct resource specifications). The flat format takes priority over nested values. CozyStack apps include cozy-lib as a chart dependency through symlinks in packages/apps/*/charts/cozy-lib directories.
📚 Learning: in the cozystack repository, for the virtual-machine app's resources.sockets parameter, the value is...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/apps/virtual-machine/values.yaml:0-0
Timestamp: 2025-07-26T18:12:05.641Z
Learning: In the cozystack repository, for the virtual-machine app's resources.sockets parameter, the value is intentionally kept as a string in values.yaml despite being documented as {int} type, because the string-to-integer parsing happens elsewhere in the system pipeline rather than at the YAML validation level.
Applied to files:
packages/apps/virtual-machine/README.md
packages/apps/virtual-machine/values.yaml
📚 Learning: in the cozystack repository, the cozyvalues-gen tool does not support `@typedef` syntax for defining...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/apps/postgres/values.yaml:55-60
Timestamp: 2025-07-26T17:54:57.273Z
Learning: In the cozystack repository, the cozyvalues-gen tool does not support `@typedef` syntax for defining custom type aliases in documentation comments.
Applied to files:
packages/apps/virtual-machine/README.md
packages/apps/virtual-machine/values.yaml
packages/extra/monitoring/README.md
📚 Learning: the cozyvalues-gen tool has a known issue (https://github.com/cozystack/cozyvalues-gen/issues/10) wh...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/extra/monitoring/README.md:30-31
Timestamp: 2025-07-26T18:26:01.447Z
Learning: The cozyvalues-gen tool has a known issue (https://github.com/cozystack/cozyvalues-gen/issues/10) where it incorrectly places Grafana configuration entries under the wrong documentation sections, specifically placing grafana.resources.requests.* entries in the Metrics storage configuration table instead of the Grafana configuration table.
Applied to files:
packages/apps/virtual-machine/README.md
packages/apps/virtual-machine/values.yaml
packages/extra/monitoring/README.md
📚 Learning: in the cozystack repository, the `readme-generator` tool removes enum contents from values.schema.js...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1196
File: packages/apps/http-cache/Makefile:24-27
Timestamp: 2025-07-14T16:23:12.803Z
Learning: In the cozystack repository, the `readme-generator` tool removes enum contents from values.schema.json files during its operation. Therefore, when using readme-generator in Makefiles, any enum values need to be injected back into the schema using yq commands after readme-generator has run, not before.
Applied to files:
packages/apps/virtual-machine/README.md
packages/apps/virtual-machine/values.yaml
📚 Learning: in the cozystack repository, the maintainer nickvolynkin prefers to keep realistic-looking example c...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1120
File: packages/apps/ferretdb/README.md:35-37
Timestamp: 2025-07-02T09:58:11.406Z
Learning: In the cozystack repository, the maintainer NickVolynkin prefers to keep realistic-looking example credentials in README documentation rather than using generic placeholders like <ACCESS_KEY>, even though they are just examples and not real secrets.
Applied to files:
packages/apps/virtual-machine/README.md
packages/apps/virtual-machine/values.yaml
packages/extra/monitoring/README.md
📚 Learning: in cozystack's schema generator annotation format, when documenting fields of array items, use the s...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/apps/virtual-machine/values.yaml:31-33
Timestamp: 2025-07-26T18:01:52.557Z
Learning: In cozystack's schema generator annotation format, when documenting fields of array items, use the singular form of the item type rather than array notation. For example, for a parameter `gpus {[]gpu}`, use `@field gpu.name` rather than `@field gpus[].name` to refer to the name field of each GPU object in the array.
Applied to files:
packages/apps/virtual-machine/values.yaml
packages/extra/monitoring/README.md
📚 Learning: in cozystack, the plural form for the kubernetes custom resource is `kuberneteses.apps.cozystack.io`...
Learnt from: lllamnyp
PR: cozystack/cozystack#1130
File: hack/e2e-apps/kubernetes.bats:101-101
Timestamp: 2025-07-11T06:11:25.438Z
Learning: In cozystack, the plural form for the Kubernetes custom resource is `kuberneteses.apps.cozystack.io`, not `kubernetes.apps.cozystack.io`. This is defined in the API schema even though it's not grammatically perfect.
Applied to files:
packages/apps/virtual-machine/values.yaml
🪛 LanguageTool
packages/apps/virtual-machine/README.md
[style] ~57-~57: To form a complete sentence, be sure to include a subject or ‘there’.
Context: ... of SSH public keys for authentication. Can be a single key or a list of keys. ...
(MISSING_IT_THERE)
🪛 YAMLlint (1.37.1)
packages/apps/virtual-machine/values.yaml
[error] 25-25: trailing spaces
(trailing-spaces)
🪛 markdownlint-cli2 (0.17.2)
packages/extra/monitoring/README.md
73-73: Bare URL used
(MD034, no-bare-urls)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: Build
89d11aa
to
6250eaf
Compare
There was a problem hiding this 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
♻️ Duplicate comments (7)
packages/apps/postgres/values.schema.json (4)
1-4
: Add missing$schema
meta-field for IDE / linter support
The root object still omits the draft identifier that was requested earlier.
Add it immediately after the opening brace.{ + "$schema": "http://json-schema.org/draft-07/schema#", "title": "Chart Values", "type": "object",
17-25
:backup.*
is unconditionally required – breaks installs with backups disabled
All backup properties are markedrequired
, sohelm install --set backup.enabled=false
is impossible.
Wrap the requirement in anif/then
that only triggers whenbackup.enabled
istrue
(see previous review).
72-75
:bootstrap.oldName
should only be required whenbootstrap.enabled
is true
Same unconditional-requirement problem as before – users must always specify an old cluster name even when bootstrap is disabled.
142-154
: Over-strictpostgresql.parameters
requirement blocks default installs
Requiring the entireparameters
object (andmax_connections
inside it) forces every user to override defaults.
Either drop therequired
clause or guard it with anif/then
.packages/apps/virtual-machine/README.md (1)
42-43
: Default value & type forexternalMethod
still inconsistent withvalues.yaml
.README shows default
{}
whilevalues.yaml
sets"PortList"
.
{}
is an object and violates the declared string type & allowed-values enum.-| `externalMethod` | Specify method to pass through the traffic to the virtual machine. Allowed values: `WholeIP` and `PortList` | `string` | `{}` | +| `externalMethod` | Specify method to pass through the traffic to the virtual machine. Allowed values: `WholeIP` and `PortList` | `string` | `"PortList"` |packages/apps/virtual-machine/values.yaml (1)
24-25
: Trailing whitespace breaksyamllint
.Line 25 ends with extra spaces, still tripping the
trailing-spaces
rule that CI flagged earlier.-## @field systemDisk.storageClass {*string} StorageClass used to store the data␠␠ +## @field systemDisk.storageClass {*string} StorageClass used to store the datapackages/extra/monitoring/README.md (1)
23-42
: minAllowed / maxAllowed CPU- & memory descriptions are still reversedThis has been pointed out in earlier reviews but the mix-up remains:
minAllowed.*
rows (Lines 24-25, 31-32, 38-39) should describe requests (minimum).maxAllowed.*
rows (Lines 27-28, 34-35, 41-42) should describe limits (maximum).Current wording does the opposite and will mislead operators & UI generators.
-| `metricsStorages[i].vminsert.minAllowed.cpu` | CPU limit (maximum available value) | `*string` | `null` | +| `metricsStorages[i].vminsert.minAllowed.cpu` | CPU request (minimum guaranteed value) | `*string` | `null` | ... -| `metricsStorages[i].vminsert.maxAllowed.cpu` | CPU request (minimal available value) | `*string` | `null` | +| `metricsStorages[i].vminsert.maxAllowed.cpu` | CPU limit (maximum available value) | `*string` | `null` |Apply the same swap for
memory
and for thevmselect
/vmstorage
blocks below, then align the JSON schema accordingly to avoid validation drift.
🧹 Nitpick comments (1)
packages/extra/monitoring/README.md (1)
73-74
: Bare URL—wrap it in Markdown syntaxMarkdown-lint flags the raw link on Line 73.
-| `alerta.alerts.telegram.chatID` | Specify multiple ID's separated by comma. Get yours in https://t.me/chatid_echo_bot | `string` | `""` | +| `alerta.alerts.telegram.chatID` | Specify multiple IDs separated by comma—get yours in [@chatid_echo_bot](https://t.me/chatid_echo_bot) | `string` | `""` |Small polish but keeps the docs lint-clean.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (13)
.github/workflows/pre-commit.yml
(1 hunks)packages/apps/postgres/Makefile
(1 hunks)packages/apps/postgres/README.md
(1 hunks)packages/apps/postgres/values.schema.json
(1 hunks)packages/apps/postgres/values.yaml
(3 hunks)packages/apps/virtual-machine/Makefile
(1 hunks)packages/apps/virtual-machine/README.md
(1 hunks)packages/apps/virtual-machine/values.schema.json
(4 hunks)packages/apps/virtual-machine/values.yaml
(2 hunks)packages/extra/monitoring/Makefile
(1 hunks)packages/extra/monitoring/README.md
(1 hunks)packages/extra/monitoring/values.schema.json
(1 hunks)packages/extra/monitoring/values.yaml
(4 hunks)
✅ Files skipped from review due to trivial changes (1)
- packages/extra/monitoring/values.yaml
🚧 Files skipped from review as they are similar to previous changes (8)
- .github/workflows/pre-commit.yml
- packages/extra/monitoring/Makefile
- packages/apps/postgres/values.yaml
- packages/apps/virtual-machine/Makefile
- packages/apps/postgres/Makefile
- packages/apps/postgres/README.md
- packages/extra/monitoring/values.schema.json
- packages/apps/virtual-machine/values.schema.json
🧰 Additional context used
🧠 Learnings (8)
📓 Common learnings
Learnt from: NickVolynkin
PR: cozystack/cozystack#1120
File: packages/apps/ferretdb/README.md:35-37
Timestamp: 2025-07-02T09:58:11.406Z
Learning: In the cozystack repository, the maintainer NickVolynkin prefers to keep realistic-looking example credentials in README documentation rather than using generic placeholders like <ACCESS_KEY>, even though they are just examples and not real secrets.
Learnt from: NickVolynkin
PR: cozystack/cozystack#1196
File: packages/apps/http-cache/Makefile:24-27
Timestamp: 2025-07-14T16:23:12.803Z
Learning: In the cozystack repository, the `readme-generator` tool removes enum contents from values.schema.json files during its operation. Therefore, when using readme-generator in Makefiles, any enum values need to be injected back into the schema using yq commands after readme-generator has run, not before.
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/extra/monitoring/README.md:30-31
Timestamp: 2025-07-26T18:26:01.447Z
Learning: The cozyvalues-gen tool has a known issue (https://github.com/cozystack/cozyvalues-gen/issues/10) where it incorrectly places Grafana configuration entries under the wrong documentation sections, specifically placing grafana.resources.requests.* entries in the Metrics storage configuration table instead of the Grafana configuration table.
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/apps/postgres/values.yaml:55-60
Timestamp: 2025-07-26T17:54:57.273Z
Learning: In the cozystack repository, the cozyvalues-gen tool does not support `@typedef` syntax for defining custom type aliases in documentation comments.
Learnt from: NickVolynkin
PR: cozystack/cozystack#1120
File: packages/apps/clickhouse/README.md:60-67
Timestamp: 2025-07-03T05:54:51.264Z
Learning: The `cozy-lib.resources.sanitize` function in packages/library/cozy-lib/templates/_resources.tpl supports both standard Kubernetes resource format (with limits:/requests: sections) and flat format (direct resource specifications). The flat format takes priority over nested values. CozyStack apps include cozy-lib as a chart dependency through symlinks in packages/apps/*/charts/cozy-lib directories.
📚 Learning: the cozyvalues-gen tool has a known issue (https://github.com/cozystack/cozyvalues-gen/issues/10) wh...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/extra/monitoring/README.md:30-31
Timestamp: 2025-07-26T18:26:01.447Z
Learning: The cozyvalues-gen tool has a known issue (https://github.com/cozystack/cozyvalues-gen/issues/10) where it incorrectly places Grafana configuration entries under the wrong documentation sections, specifically placing grafana.resources.requests.* entries in the Metrics storage configuration table instead of the Grafana configuration table.
Applied to files:
packages/extra/monitoring/README.md
packages/apps/virtual-machine/README.md
packages/apps/virtual-machine/values.yaml
📚 Learning: in the cozystack repository, the maintainer nickvolynkin prefers to keep realistic-looking example c...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1120
File: packages/apps/ferretdb/README.md:35-37
Timestamp: 2025-07-02T09:58:11.406Z
Learning: In the cozystack repository, the maintainer NickVolynkin prefers to keep realistic-looking example credentials in README documentation rather than using generic placeholders like <ACCESS_KEY>, even though they are just examples and not real secrets.
Applied to files:
packages/extra/monitoring/README.md
packages/apps/virtual-machine/README.md
packages/apps/virtual-machine/values.yaml
📚 Learning: in the cozystack repository, the cozyvalues-gen tool does not support `@typedef` syntax for defining...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/apps/postgres/values.yaml:55-60
Timestamp: 2025-07-26T17:54:57.273Z
Learning: In the cozystack repository, the cozyvalues-gen tool does not support `@typedef` syntax for defining custom type aliases in documentation comments.
Applied to files:
packages/extra/monitoring/README.md
packages/apps/virtual-machine/README.md
packages/apps/virtual-machine/values.yaml
📚 Learning: in cozystack's schema generator annotation format, when documenting fields of array items, use the s...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/apps/virtual-machine/values.yaml:31-33
Timestamp: 2025-07-26T18:01:52.557Z
Learning: In cozystack's schema generator annotation format, when documenting fields of array items, use the singular form of the item type rather than array notation. For example, for a parameter `gpus {[]gpu}`, use `@field gpu.name` rather than `@field gpus[].name` to refer to the name field of each GPU object in the array.
Applied to files:
packages/extra/monitoring/README.md
packages/apps/virtual-machine/values.yaml
📚 Learning: in the cozystack repository, the `readme-generator` tool removes enum contents from values.schema.js...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1196
File: packages/apps/http-cache/Makefile:24-27
Timestamp: 2025-07-14T16:23:12.803Z
Learning: In the cozystack repository, the `readme-generator` tool removes enum contents from values.schema.json files during its operation. Therefore, when using readme-generator in Makefiles, any enum values need to be injected back into the schema using yq commands after readme-generator has run, not before.
Applied to files:
packages/apps/postgres/values.schema.json
packages/apps/virtual-machine/README.md
packages/apps/virtual-machine/values.yaml
📚 Learning: in the cozystack repository, for the virtual-machine app's resources.sockets parameter, the value is...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/apps/virtual-machine/values.yaml:0-0
Timestamp: 2025-07-26T18:12:05.641Z
Learning: In the cozystack repository, for the virtual-machine app's resources.sockets parameter, the value is intentionally kept as a string in values.yaml despite being documented as {int} type, because the string-to-integer parsing happens elsewhere in the system pipeline rather than at the YAML validation level.
Applied to files:
packages/apps/virtual-machine/README.md
packages/apps/virtual-machine/values.yaml
📚 Learning: in cozystack, the plural form for the kubernetes custom resource is `kuberneteses.apps.cozystack.io`...
Learnt from: lllamnyp
PR: cozystack/cozystack#1130
File: hack/e2e-apps/kubernetes.bats:101-101
Timestamp: 2025-07-11T06:11:25.438Z
Learning: In cozystack, the plural form for the Kubernetes custom resource is `kuberneteses.apps.cozystack.io`, not `kubernetes.apps.cozystack.io`. This is defined in the API schema even though it's not grammatically perfect.
Applied to files:
packages/apps/virtual-machine/values.yaml
🪛 markdownlint-cli2 (0.17.2)
packages/extra/monitoring/README.md
73-73: Bare URL used
(MD034, no-bare-urls)
🪛 GitHub Actions: Pre-Commit Checks
packages/apps/postgres/values.schema.json
[error] 225-235: Make generate step modified values.schema.json: Updated 'size' property with new description, added pattern validation and 'x-kubernetes-int-or-string' flag.
🪛 LanguageTool
packages/apps/virtual-machine/README.md
[style] ~57-~57: To form a complete sentence, be sure to include a subject or ‘there’.
Context: ... of SSH public keys for authentication. Can be a single key or a list of keys. ...
(MISSING_IT_THERE)
🪛 YAMLlint (1.37.1)
packages/apps/virtual-machine/values.yaml
[error] 25-25: trailing spaces
(trailing-spaces)
🔇 Additional comments (1)
packages/extra/monitoring/README.md (1)
82-84
: Verified:grafana.db.size
exists in schemaThe
grafana
section ofpackages/extra/monitoring/values.schema.json
(lines 107–145) includes:
- default
db.size
="10Gi"
properties.db.properties.size
withtype: "string"
anddefault: "10Gi"
No further changes required.
6250eaf
to
2969f66
Compare
2969f66
to
a5571fb
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
♻️ Duplicate comments (8)
packages/apps/virtual-machine/README.md (1)
42-43
:externalMethod
default still mismatchesvalues.yaml
The table shows
{}
(object) for a field documented asstring
, whilevalues.yaml
ships with"PortList"
.
Keeping this divergence will keep confusing users and tooling.packages/apps/virtual-machine/values.yaml (1)
23-25
: Trim trailing whitespace to unblockyamllint
/ CILine 24 ends with stray spaces and currently fails the
trailing-spaces
rule.
Nothing functional, but it will break pre-commit hooks and pipelines that runyamllint
.-## @field systemDisk.storageClass {*string} StorageClass used to store the data␠␠ +## @field systemDisk.storageClass {*string} StorageClass used to store the datapackages/apps/postgres/values.schema.json (4)
1-4
: Add$schema
meta-field for editor & CI validation
The root object is still missing the JSON-Schema draft URL that many tools rely on for automatic validation.
17-25
: Conditional requirement forbackup.*
still missing
All backup fields remain unconditionally required, breaking installs whenbackup.enabled
isfalse
.
72-75
:bootstrap.oldName
should not be mandatory when bootstrap is disabled
The schema still forces users to supplyoldName
, contradicting the intended optional bootstrap flow.
142-154
: Over-strictpostgresql.parameters
requirement persists
Requiring the entireparameters
object – and inside itmax_connections
– prevents default installs.packages/extra/monitoring/README.md (1)
23-42
: minAllowed / maxAllowed descriptions are still invertedThe inner rows under
minAllowed
describe limits while the rows undermaxAllowed
describe requests. This is the exact mismatch flagged in an earlier review and has not been corrected, so the generated docs will continue to mislead users.-| `metricsStorages[i].vminsert.minAllowed.cpu` | CPU limit (maximum available value) | `*string` | `null` | +| `metricsStorages[i].vminsert.minAllowed.cpu` | CPU request (minimal available value) | `*string` | `null` | ... -| `metricsStorages[i].vminsert.maxAllowed.cpu` | CPU request (minimal available value) | `*string` | `null` | +| `metricsStorages[i].vminsert.maxAllowed.cpu` | CPU limit (maximum available value) | `*string` | `null` |Apply the same swap for
memory
and for everyvmselect
/vmstorage
block underneath to keep wording consistent across the table and with Kubernetes conventions.packages/extra/monitoring/values.schema.json (1)
304-343
: CPU/Memory request-vs-limit wording still swapped in schemaInside every
maxAllowed
block the nestedcpu
/memory
fields say “request (minimal …)”, while the surrounding object is described as limits;minAllowed
has the opposite mismatch. This mirrors the README issue and was previously reported.- "description": "CPU request (minimal available value)", + "description": "CPU limit (maximum available value)", ... - "description": "Memory request (minimal available value)", + "description": "Memory limit (maximum available value)",Apply the symmetrical swap inside each
minAllowed
block (limit ➜ request
) for all three components (vminsert
,vmselect
,vmstorage
) to keep schema text consistent with the semantic intent and with the default values chosen.Also applies to: 350-389, 396-435
🧹 Nitpick comments (2)
packages/apps/postgres/values.schema.json (1)
13-15
: Prefer realistic example credentials over angle-bracket placeholders
Project convention is to use believable dummy keys (e.g.AKIAEXAMPLE
) instead of<access key>
/<secret key>
to aid copy-paste workflows.Also applies to: 50-56
packages/extra/monitoring/README.md (1)
73-74
: Wrap bare URL in markdown linkMarkdown-lint (MD034) still flags the naked URL. Wrap it to silence the linter and keep style consistent:
-| `alerta.alerts.telegram.chatID` | Specify multiple ID's separated by comma. Get yours in https://t.me/chatid_echo_bot | `string` | `""` | +| `alerta.alerts.telegram.chatID` | Specify multiple ID's separated by comma. Get yours in <https://t.me/chatid_echo_bot> | `string` | `""` |
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (13)
.github/workflows/pre-commit.yml
(1 hunks)packages/apps/postgres/Makefile
(1 hunks)packages/apps/postgres/README.md
(1 hunks)packages/apps/postgres/values.schema.json
(1 hunks)packages/apps/postgres/values.yaml
(3 hunks)packages/apps/virtual-machine/Makefile
(1 hunks)packages/apps/virtual-machine/README.md
(1 hunks)packages/apps/virtual-machine/values.schema.json
(4 hunks)packages/apps/virtual-machine/values.yaml
(2 hunks)packages/extra/monitoring/Makefile
(1 hunks)packages/extra/monitoring/README.md
(1 hunks)packages/extra/monitoring/values.schema.json
(1 hunks)packages/extra/monitoring/values.yaml
(4 hunks)
✅ Files skipped from review due to trivial changes (2)
- packages/extra/monitoring/values.yaml
- packages/apps/postgres/values.yaml
🚧 Files skipped from review as they are similar to previous changes (6)
- packages/apps/postgres/Makefile
- .github/workflows/pre-commit.yml
- packages/apps/virtual-machine/Makefile
- packages/extra/monitoring/Makefile
- packages/apps/postgres/README.md
- packages/apps/virtual-machine/values.schema.json
🧰 Additional context used
🧠 Learnings (9)
📓 Common learnings
Learnt from: NickVolynkin
PR: cozystack/cozystack#1120
File: packages/apps/ferretdb/README.md:35-37
Timestamp: 2025-07-02T09:58:11.406Z
Learning: In the cozystack repository, the maintainer NickVolynkin prefers to keep realistic-looking example credentials in README documentation rather than using generic placeholders like <ACCESS_KEY>, even though they are just examples and not real secrets.
Learnt from: NickVolynkin
PR: cozystack/cozystack#1196
File: packages/apps/http-cache/Makefile:24-27
Timestamp: 2025-07-14T16:23:12.803Z
Learning: In the cozystack repository, the `readme-generator` tool removes enum contents from values.schema.json files during its operation. Therefore, when using readme-generator in Makefiles, any enum values need to be injected back into the schema using yq commands after readme-generator has run, not before.
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/extra/monitoring/README.md:30-31
Timestamp: 2025-07-26T18:26:01.447Z
Learning: The cozyvalues-gen tool has a known issue (https://github.com/cozystack/cozyvalues-gen/issues/10) where it incorrectly places Grafana configuration entries under the wrong documentation sections, specifically placing grafana.resources.requests.* entries in the Metrics storage configuration table instead of the Grafana configuration table.
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/apps/postgres/values.yaml:55-60
Timestamp: 2025-07-26T17:54:57.273Z
Learning: In the cozystack repository, the cozyvalues-gen tool does not support `@typedef` syntax for defining custom type aliases in documentation comments.
Learnt from: NickVolynkin
PR: cozystack/cozystack#1120
File: packages/apps/clickhouse/README.md:60-67
Timestamp: 2025-07-03T05:54:51.264Z
Learning: The `cozy-lib.resources.sanitize` function in packages/library/cozy-lib/templates/_resources.tpl supports both standard Kubernetes resource format (with limits:/requests: sections) and flat format (direct resource specifications). The flat format takes priority over nested values. CozyStack apps include cozy-lib as a chart dependency through symlinks in packages/apps/*/charts/cozy-lib directories.
📚 Learning: the cozyvalues-gen tool has a known issue (https://github.com/cozystack/cozyvalues-gen/issues/10) wh...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/extra/monitoring/README.md:30-31
Timestamp: 2025-07-26T18:26:01.447Z
Learning: The cozyvalues-gen tool has a known issue (https://github.com/cozystack/cozyvalues-gen/issues/10) where it incorrectly places Grafana configuration entries under the wrong documentation sections, specifically placing grafana.resources.requests.* entries in the Metrics storage configuration table instead of the Grafana configuration table.
Applied to files:
packages/extra/monitoring/README.md
packages/extra/monitoring/values.schema.json
packages/apps/virtual-machine/README.md
packages/apps/virtual-machine/values.yaml
📚 Learning: in the cozystack repository, the maintainer nickvolynkin prefers to keep realistic-looking example c...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1120
File: packages/apps/ferretdb/README.md:35-37
Timestamp: 2025-07-02T09:58:11.406Z
Learning: In the cozystack repository, the maintainer NickVolynkin prefers to keep realistic-looking example credentials in README documentation rather than using generic placeholders like <ACCESS_KEY>, even though they are just examples and not real secrets.
Applied to files:
packages/extra/monitoring/README.md
packages/extra/monitoring/values.schema.json
packages/apps/virtual-machine/README.md
packages/apps/virtual-machine/values.yaml
📚 Learning: in the cozystack repository, the cozyvalues-gen tool does not support `@typedef` syntax for defining...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/apps/postgres/values.yaml:55-60
Timestamp: 2025-07-26T17:54:57.273Z
Learning: In the cozystack repository, the cozyvalues-gen tool does not support `@typedef` syntax for defining custom type aliases in documentation comments.
Applied to files:
packages/extra/monitoring/README.md
packages/apps/virtual-machine/README.md
packages/apps/virtual-machine/values.yaml
📚 Learning: in cozystack's schema generator annotation format, when documenting fields of array items, use the s...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/apps/virtual-machine/values.yaml:31-33
Timestamp: 2025-07-26T18:01:52.557Z
Learning: In cozystack's schema generator annotation format, when documenting fields of array items, use the singular form of the item type rather than array notation. For example, for a parameter `gpus {[]gpu}`, use `@field gpu.name` rather than `@field gpus[].name` to refer to the name field of each GPU object in the array.
Applied to files:
packages/extra/monitoring/README.md
packages/apps/virtual-machine/values.yaml
📚 Learning: in the cozystack repository, the `readme-generator` tool removes enum contents from values.schema.js...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1196
File: packages/apps/http-cache/Makefile:24-27
Timestamp: 2025-07-14T16:23:12.803Z
Learning: In the cozystack repository, the `readme-generator` tool removes enum contents from values.schema.json files during its operation. Therefore, when using readme-generator in Makefiles, any enum values need to be injected back into the schema using yq commands after readme-generator has run, not before.
Applied to files:
packages/extra/monitoring/values.schema.json
packages/apps/virtual-machine/README.md
packages/apps/virtual-machine/values.yaml
📚 Learning: the `cozy-lib.resources.sanitize` function in packages/library/cozy-lib/templates/_resources.tpl sup...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1120
File: packages/apps/clickhouse/README.md:60-67
Timestamp: 2025-07-03T05:54:51.264Z
Learning: The `cozy-lib.resources.sanitize` function in packages/library/cozy-lib/templates/_resources.tpl supports both standard Kubernetes resource format (with limits:/requests: sections) and flat format (direct resource specifications). The flat format takes priority over nested values. CozyStack apps include cozy-lib as a chart dependency through symlinks in packages/apps/*/charts/cozy-lib directories.
Applied to files:
packages/extra/monitoring/values.schema.json
📚 Learning: in the cozystack repository, for the virtual-machine app's resources.sockets parameter, the value is...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/apps/virtual-machine/values.yaml:0-0
Timestamp: 2025-07-26T18:12:05.641Z
Learning: In the cozystack repository, for the virtual-machine app's resources.sockets parameter, the value is intentionally kept as a string in values.yaml despite being documented as {int} type, because the string-to-integer parsing happens elsewhere in the system pipeline rather than at the YAML validation level.
Applied to files:
packages/apps/virtual-machine/README.md
packages/apps/virtual-machine/values.yaml
📚 Learning: in cozystack, the plural form for the kubernetes custom resource is `kuberneteses.apps.cozystack.io`...
Learnt from: lllamnyp
PR: cozystack/cozystack#1130
File: hack/e2e-apps/kubernetes.bats:101-101
Timestamp: 2025-07-11T06:11:25.438Z
Learning: In cozystack, the plural form for the Kubernetes custom resource is `kuberneteses.apps.cozystack.io`, not `kubernetes.apps.cozystack.io`. This is defined in the API schema even though it's not grammatically perfect.
Applied to files:
packages/apps/virtual-machine/values.yaml
🪛 markdownlint-cli2 (0.17.2)
packages/extra/monitoring/README.md
73-73: Bare URL used
(MD034, no-bare-urls)
🪛 LanguageTool
packages/apps/virtual-machine/README.md
[style] ~57-~57: To form a complete sentence, be sure to include a subject or ‘there’.
Context: ... of SSH public keys for authentication. Can be a single key or a list of keys. ...
(MISSING_IT_THERE)
🪛 YAMLlint (1.37.1)
packages/apps/virtual-machine/values.yaml
[error] 25-25: trailing spaces
(trailing-spaces)
🔇 Additional comments (1)
packages/apps/postgres/values.schema.json (1)
227-233
: Pattern &x-kubernetes-int-or-string
correctly restored
Thesize
field now includes the validation pattern and Kubernetes extension, resolving earlier CI failures.
a5571fb
to
f0834d8
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
♻️ Duplicate comments (9)
packages/apps/postgres/values.schema.json (4)
17-25
:backup.*
still unconditionally required
Previous feedback noted that these fields must only be required whenenabled
istrue
, yet they remain in a static"required"
array. Helm validation will still fail when backups are disabled.Reference earlier review; please wrap the requirement in an
if/then
conditional as already suggested.
72-75
: Conditional requirement missing forbootstrap.oldName
oldName
should be mandatory only whenbootstrap.enabled
istrue
, but it is listed in the always-on"required"
set. This repeats the issue flagged in the previous review.
142-154
: Over-strictpostgresql.parameters
requirement persists
The schema still forces users to supply the entireparameters
object andmax_connections
, blocking default installs. Please either drop the"required"
clauses or guard them withif/then
logic as already recommended.
1-4
: Add$schema
meta-field for IDE/linter supportThe document still lacks the standard
$schema
identifier, so editors cannot auto-validate it.
Apply the following patch at the very top:{ + "$schema": "http://json-schema.org/draft-07/schema#", "title": "Chart Values",
packages/extra/monitoring/README.md (1)
24-28
:minAllowed
/maxAllowed
CPU & memory descriptions are still invertedThe nested rows keep describing limits under minAllowed and requests under maxAllowed, contradicting the parent-row wording (“Minimum … requests” vs “Maximum … limits”).
This was already flagged in earlier reviews but remains unchanged.-| `metricsStorages[i].vminsert.minAllowed.cpu` | CPU limit (maximum available value) | `*string` | `null` | +| `metricsStorages[i].vminsert.minAllowed.cpu` | CPU request (minimal available value) | `*string` | `null` | ... -| `metricsStorages[i].vminsert.maxAllowed.cpu` | CPU request (minimal available value) | `*string` | `null` | +| `metricsStorages[i].vminsert.maxAllowed.cpu` | CPU limit (maximum available value) | `*string` | `null` |Apply the same swap for the corresponding
memory
rows and for everyvmselect
/vmstorage
block below, to keep docs coherent and avoid misleading users.Also applies to: 31-35, 38-42
packages/extra/monitoring/values.schema.json (3)
308-336
: Descriptions invminsert.maxAllowed
/minAllowed
are swappedInside
maxAllowed
the fields still say “request (minimal …)”, whileminAllowed
says “limit (maximum …)”. This is the exact inversion reported earlier and will propagate wrong hints into generated UIs.- "description": "CPU request (minimal available value)", + "description": "CPU limit (maximum available value)", ... - "description": "Memory request (minimal available value)", + "description": "Memory limit (maximum available value)",Mirror the opposite change in the sibling
minAllowed
object.
354-382
: Same inverted descriptions forvmselect
blockThe request/limit wording is still reversed here as well; please rectify as in the vminsert section.
400-428
:vmstorage
block repeats the inversionSwap the request/limit phrases in
maxAllowed
vsminAllowed
to stay consistent across all components.packages/apps/virtual-machine/README.md (1)
42-42
: Default value forexternalMethod
is still inconsistent withvalues.yaml
values.yaml
setsexternalMethod: "PortList"but the table lists
{}
. This repeat-mismatch keeps confusing users and tools that ingest the docs.
🧹 Nitpick comments (3)
packages/extra/monitoring/README.md (1)
73-74
: Wrap bare URL to satisfy markdownlint-MD034Line 73 contains a plain link; wrap it in angle brackets to silence the linter.
-| `alerta.alerts.telegram.chatID` | Specify multiple ID's separated by comma. Get yours in https://t.me/chatid_echo_bot | `string` | `""` | +| `alerta.alerts.telegram.chatID` | Specify multiple ID's separated by comma. Get yours in <https://t.me/chatid_echo_bot> | `string` | `""` |packages/apps/virtual-machine/README.md (1)
50-57
: Minor wording tweak for clarity
“List of SSH public keys for authentication.” is a sentence fragment—prefixing with “A” (or “There is a”) will read better:A list of SSH public keys …
packages/apps/virtual-machine/values.yaml (1)
6-7
: Keep description order consistent with the declared enum
The enum is declared asPortList,WholeIP
while the explanatory text listsWholeIP
first. A tiny detail, but aligning the two avoids cognitive hiccups when scanning.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (13)
.github/workflows/pre-commit.yml
(1 hunks)packages/apps/postgres/Makefile
(1 hunks)packages/apps/postgres/README.md
(1 hunks)packages/apps/postgres/values.schema.json
(1 hunks)packages/apps/postgres/values.yaml
(3 hunks)packages/apps/virtual-machine/Makefile
(1 hunks)packages/apps/virtual-machine/README.md
(1 hunks)packages/apps/virtual-machine/values.schema.json
(4 hunks)packages/apps/virtual-machine/values.yaml
(2 hunks)packages/extra/monitoring/Makefile
(1 hunks)packages/extra/monitoring/README.md
(1 hunks)packages/extra/monitoring/values.schema.json
(1 hunks)packages/extra/monitoring/values.yaml
(4 hunks)
🚧 Files skipped from review as they are similar to previous changes (8)
- .github/workflows/pre-commit.yml
- packages/apps/postgres/Makefile
- packages/apps/virtual-machine/Makefile
- packages/apps/postgres/values.yaml
- packages/extra/monitoring/Makefile
- packages/apps/postgres/README.md
- packages/extra/monitoring/values.yaml
- packages/apps/virtual-machine/values.schema.json
🧰 Additional context used
🧠 Learnings (9)
📓 Common learnings
Learnt from: NickVolynkin
PR: cozystack/cozystack#1120
File: packages/apps/ferretdb/README.md:35-37
Timestamp: 2025-07-02T09:58:11.406Z
Learning: In the cozystack repository, the maintainer NickVolynkin prefers to keep realistic-looking example credentials in README documentation rather than using generic placeholders like <ACCESS_KEY>, even though they are just examples and not real secrets.
Learnt from: NickVolynkin
PR: cozystack/cozystack#1196
File: packages/apps/http-cache/Makefile:24-27
Timestamp: 2025-07-14T16:23:12.803Z
Learning: In the cozystack repository, the `readme-generator` tool removes enum contents from values.schema.json files during its operation. Therefore, when using readme-generator in Makefiles, any enum values need to be injected back into the schema using yq commands after readme-generator has run, not before.
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/extra/monitoring/README.md:30-31
Timestamp: 2025-07-26T18:26:01.447Z
Learning: The cozyvalues-gen tool has a known issue (https://github.com/cozystack/cozyvalues-gen/issues/10) where it incorrectly places Grafana configuration entries under the wrong documentation sections, specifically placing grafana.resources.requests.* entries in the Metrics storage configuration table instead of the Grafana configuration table.
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/apps/postgres/values.yaml:55-60
Timestamp: 2025-07-26T17:54:57.273Z
Learning: In the cozystack repository, the cozyvalues-gen tool does not support `@typedef` syntax for defining custom type aliases in documentation comments.
Learnt from: NickVolynkin
PR: cozystack/cozystack#1120
File: packages/apps/clickhouse/README.md:60-67
Timestamp: 2025-07-03T05:54:51.264Z
Learning: The `cozy-lib.resources.sanitize` function in packages/library/cozy-lib/templates/_resources.tpl supports both standard Kubernetes resource format (with limits:/requests: sections) and flat format (direct resource specifications). The flat format takes priority over nested values. CozyStack apps include cozy-lib as a chart dependency through symlinks in packages/apps/*/charts/cozy-lib directories.
📚 Learning: the cozyvalues-gen tool has a known issue (https://github.com/cozystack/cozyvalues-gen/issues/10) wh...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/extra/monitoring/README.md:30-31
Timestamp: 2025-07-26T18:26:01.447Z
Learning: The cozyvalues-gen tool has a known issue (https://github.com/cozystack/cozyvalues-gen/issues/10) where it incorrectly places Grafana configuration entries under the wrong documentation sections, specifically placing grafana.resources.requests.* entries in the Metrics storage configuration table instead of the Grafana configuration table.
Applied to files:
packages/extra/monitoring/README.md
packages/extra/monitoring/values.schema.json
packages/apps/virtual-machine/README.md
packages/apps/virtual-machine/values.yaml
📚 Learning: in the cozystack repository, the maintainer nickvolynkin prefers to keep realistic-looking example c...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1120
File: packages/apps/ferretdb/README.md:35-37
Timestamp: 2025-07-02T09:58:11.406Z
Learning: In the cozystack repository, the maintainer NickVolynkin prefers to keep realistic-looking example credentials in README documentation rather than using generic placeholders like <ACCESS_KEY>, even though they are just examples and not real secrets.
Applied to files:
packages/extra/monitoring/README.md
packages/extra/monitoring/values.schema.json
packages/apps/virtual-machine/README.md
packages/apps/virtual-machine/values.yaml
📚 Learning: in the cozystack repository, the cozyvalues-gen tool does not support `@typedef` syntax for defining...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/apps/postgres/values.yaml:55-60
Timestamp: 2025-07-26T17:54:57.273Z
Learning: In the cozystack repository, the cozyvalues-gen tool does not support `@typedef` syntax for defining custom type aliases in documentation comments.
Applied to files:
packages/extra/monitoring/README.md
packages/apps/virtual-machine/README.md
packages/apps/virtual-machine/values.yaml
📚 Learning: in cozystack's schema generator annotation format, when documenting fields of array items, use the s...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/apps/virtual-machine/values.yaml:31-33
Timestamp: 2025-07-26T18:01:52.557Z
Learning: In cozystack's schema generator annotation format, when documenting fields of array items, use the singular form of the item type rather than array notation. For example, for a parameter `gpus {[]gpu}`, use `@field gpu.name` rather than `@field gpus[].name` to refer to the name field of each GPU object in the array.
Applied to files:
packages/extra/monitoring/README.md
packages/apps/virtual-machine/values.yaml
📚 Learning: in the cozystack repository, the `readme-generator` tool removes enum contents from values.schema.js...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1196
File: packages/apps/http-cache/Makefile:24-27
Timestamp: 2025-07-14T16:23:12.803Z
Learning: In the cozystack repository, the `readme-generator` tool removes enum contents from values.schema.json files during its operation. Therefore, when using readme-generator in Makefiles, any enum values need to be injected back into the schema using yq commands after readme-generator has run, not before.
Applied to files:
packages/extra/monitoring/values.schema.json
packages/apps/postgres/values.schema.json
packages/apps/virtual-machine/README.md
packages/apps/virtual-machine/values.yaml
📚 Learning: the `cozy-lib.resources.sanitize` function in packages/library/cozy-lib/templates/_resources.tpl sup...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1120
File: packages/apps/clickhouse/README.md:60-67
Timestamp: 2025-07-03T05:54:51.264Z
Learning: The `cozy-lib.resources.sanitize` function in packages/library/cozy-lib/templates/_resources.tpl supports both standard Kubernetes resource format (with limits:/requests: sections) and flat format (direct resource specifications). The flat format takes priority over nested values. CozyStack apps include cozy-lib as a chart dependency through symlinks in packages/apps/*/charts/cozy-lib directories.
Applied to files:
packages/extra/monitoring/values.schema.json
📚 Learning: in the cozystack repository, for the virtual-machine app's resources.sockets parameter, the value is...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/apps/virtual-machine/values.yaml:0-0
Timestamp: 2025-07-26T18:12:05.641Z
Learning: In the cozystack repository, for the virtual-machine app's resources.sockets parameter, the value is intentionally kept as a string in values.yaml despite being documented as {int} type, because the string-to-integer parsing happens elsewhere in the system pipeline rather than at the YAML validation level.
Applied to files:
packages/apps/virtual-machine/README.md
packages/apps/virtual-machine/values.yaml
📚 Learning: in cozystack, the plural form for the kubernetes custom resource is `kuberneteses.apps.cozystack.io`...
Learnt from: lllamnyp
PR: cozystack/cozystack#1130
File: hack/e2e-apps/kubernetes.bats:101-101
Timestamp: 2025-07-11T06:11:25.438Z
Learning: In cozystack, the plural form for the Kubernetes custom resource is `kuberneteses.apps.cozystack.io`, not `kubernetes.apps.cozystack.io`. This is defined in the API schema even though it's not grammatically perfect.
Applied to files:
packages/apps/virtual-machine/values.yaml
🪛 markdownlint-cli2 (0.17.2)
packages/extra/monitoring/README.md
73-73: Bare URL used
(MD034, no-bare-urls)
🪛 LanguageTool
packages/apps/virtual-machine/README.md
[style] ~57-~57: To form a complete sentence, be sure to include a subject or ‘there’.
Context: ... of SSH public keys for authentication. Can be a single key or a list of keys. ...
(MISSING_IT_THERE)
🪛 YAMLlint (1.37.1)
packages/apps/virtual-machine/values.yaml
[error] 25-25: trailing spaces
(trailing-spaces)
🔇 Additional comments (1)
packages/apps/virtual-machine/README.md (1)
47-50
:systemDisk
default should mirror the actual shipped values
The chart ships a populatedsystemDisk
object (image: ubuntu
,storage: 5Gi
,storageClass: replicated
), yet the table shows{}
. Either truncate the defaults everywhere or document the concrete defaults here for transparency.
f0834d8
to
bbf78ba
Compare
There was a problem hiding this 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
♻️ Duplicate comments (7)
packages/apps/postgres/values.schema.json (4)
1-4
: Add$schema
meta-field (still missing)The schema still lacks the standard
$schema
declaration, so editors & CI linters cannot auto-detect the draft version.
This has been flagged before.{ + "$schema": "http://json-schema.org/draft-07/schema#", "title": "Chart Values",
17-25
: Backup fields must be required only whenbackup.enabled
is true
destinationPath
,endpointURL
, credentials, etc. are always required, which breakshelm install
when backups are disabled.
Wrap them in anif/then
conditional instead of a top-levelrequired
list.- "required": [ - "destinationPath", - "enabled", - "endpointURL", - "retentionPolicy", - "s3AccessKey", - "s3SecretKey", - "schedule" - ], + "allOf": [ + { + "if": { "properties": { "enabled": { "const": true } } }, + "then": { "required": [ + "destinationPath", + "endpointURL", + "retentionPolicy", + "s3AccessKey", + "s3SecretKey", + "schedule" + ]} + } + ],
72-75
:bootstrap.oldName
must be conditional onbootstrap.enabled
oldName
(and usuallyrecoveryTime
) should not be mandatory when bootstrap is disabled. The unconditionalrequired
list repeats the earlier issue.Replace with the same
if/then
pattern used forbackup
.
142-154
: Over-strict requirement forpostgresql.parameters
Requiring the whole
parameters
object – and inside itmax_connections
– forces every install to specify them even when Postgres defaults are fine. This was already raised.Either drop the
required
clauses, or make them conditional on the user specifyingparameters
.packages/extra/monitoring/README.md (1)
23-42
: minAllowed / maxAllowed CPU-&-memory descriptions are still flippedThe nested rows keep describing limits under
minAllowed
and requests undermaxAllowed
, while the parent-row wording states the opposite.
This is the same issue flagged earlier – users will keep mis-interpreting resource semantics.-| `metricsStorages[i].vminsert.minAllowed.cpu` | CPU limit (maximum available value) | +| `metricsStorages[i].vminsert.minAllowed.cpu` | CPU request (minimal available value) | ... -| `metricsStorages[i].vminsert.maxAllowed.cpu` | CPU request (minimal available value) | +| `metricsStorages[i].vminsert.maxAllowed.cpu` | CPU limit (maximum available value) |Apply the same swap for the corresponding
memory
rows and for everyvmselect
/vmstorage
block below.
After adjusting the README, align the JSON schema defaults and descriptions accordingly to avoid further drift.Also applies to: 30-35, 37-42
packages/extra/monitoring/values.schema.json (1)
308-322
: maxAllowed/minAllowed resource descriptions & defaults are invertedInside every component:
maxAllowed
object (limits) still labels itscpu
/memory
properties as “request (minimal …)” and sets tiny defaults (100m
,256Mi
).minAllowed
object (requests) labels its properties as “limit (maximum …)” with large defaults (1
,1Gi
).This directly contradicts both the parent descriptions and Kubernetes naming conventions, and will mislead automation that surfaces these descriptions.
- "description": "CPU request (minimal available value)", - "default": "100m", + "description": "CPU limit (maximum available value)", + "default": "1", ... - "description": "CPU limit (maximum available value)", - "default": "1", + "description": "CPU request (minimal available value)", + "default": "100m",Do the analogous swap for every
memory
field and repeat forvmselect
&vmstorage
blocks.Once fixed, re-run
make generate
so README and schema stay in sync and CI passes.Also applies to: 329-340, 354-367, 374-387, 400-413, 420-433
packages/apps/virtual-machine/README.md (1)
42-42
: Default forexternalMethod
is wrong and breaks doc-to-config parity
values.yaml
setsexternalMethod: "PortList"but the table declares the default as
{}
(an object) while the type column saysstring
. This contradiction will mislead users and any automation that relies on the README.-| `externalMethod` | Specify method to pass through the traffic to the virtual machine. Allowed values: `WholeIP` and `PortList` | `string` | `{}` | +| `externalMethod` | Specify method to pass through the traffic to the virtual machine. Allowed values: `WholeIP` and `PortList` | `string` | `"PortList"` |
🧹 Nitpick comments (3)
packages/apps/postgres/values.schema.json (2)
178-185
: Add non-negative constraints to quorum replica countsNegative replica counts are meaningless. Define
minimum: 0
(or1
formaxSyncReplicas
if that’s the intent) to catch typos early."maxSyncReplicas": { "description": "...", "type": "integer", + "minimum": 0, "default": 0 }, "minSyncReplicas": { "description": "...", "type": "integer", + "minimum": 0, "default": 0 }
189-193
: Validatereplicas
cannot be less than 1Zero or negative replicas disable the cluster entirely. Add
minimum: 1
for safer defaults."replicas": { "description": "Number of Postgres replicas", "type": "integer", + "minimum": 1, "default": 2 },
packages/apps/virtual-machine/README.md (1)
39-40
: Column header is misleading – rename “Value” to “Default”The table shows the default configuration shipped in
values.yaml
, so the last column should be called “Default” (or “Default value”) rather than “Value” to avoid confusion for users and tooling that parse these docs.-| Name | Description | Type | Value | +| Name | Description | Type | Default |
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (13)
.github/workflows/pre-commit.yml
(1 hunks)packages/apps/postgres/Makefile
(1 hunks)packages/apps/postgres/README.md
(1 hunks)packages/apps/postgres/values.schema.json
(1 hunks)packages/apps/postgres/values.yaml
(3 hunks)packages/apps/virtual-machine/Makefile
(1 hunks)packages/apps/virtual-machine/README.md
(1 hunks)packages/apps/virtual-machine/values.schema.json
(3 hunks)packages/apps/virtual-machine/values.yaml
(2 hunks)packages/extra/monitoring/Makefile
(1 hunks)packages/extra/monitoring/README.md
(1 hunks)packages/extra/monitoring/values.schema.json
(1 hunks)packages/extra/monitoring/values.yaml
(4 hunks)
✅ Files skipped from review due to trivial changes (1)
- packages/extra/monitoring/values.yaml
🚧 Files skipped from review as they are similar to previous changes (7)
- .github/workflows/pre-commit.yml
- packages/apps/virtual-machine/Makefile
- packages/extra/monitoring/Makefile
- packages/apps/postgres/README.md
- packages/apps/virtual-machine/values.schema.json
- packages/apps/postgres/values.yaml
- packages/apps/postgres/Makefile
🧰 Additional context used
🧠 Learnings (9)
📓 Common learnings
Learnt from: NickVolynkin
PR: cozystack/cozystack#1120
File: packages/apps/ferretdb/README.md:35-37
Timestamp: 2025-07-02T09:58:11.406Z
Learning: In the cozystack repository, the maintainer NickVolynkin prefers to keep realistic-looking example credentials in README documentation rather than using generic placeholders like <ACCESS_KEY>, even though they are just examples and not real secrets.
Learnt from: NickVolynkin
PR: cozystack/cozystack#1196
File: packages/apps/http-cache/Makefile:24-27
Timestamp: 2025-07-14T16:23:12.803Z
Learning: In the cozystack repository, the `readme-generator` tool removes enum contents from values.schema.json files during its operation. Therefore, when using readme-generator in Makefiles, any enum values need to be injected back into the schema using yq commands after readme-generator has run, not before.
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/extra/monitoring/README.md:30-31
Timestamp: 2025-07-26T18:26:01.447Z
Learning: The cozyvalues-gen tool has a known issue (https://github.com/cozystack/cozyvalues-gen/issues/10) where it incorrectly places Grafana configuration entries under the wrong documentation sections, specifically placing grafana.resources.requests.* entries in the Metrics storage configuration table instead of the Grafana configuration table.
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/apps/postgres/values.yaml:55-60
Timestamp: 2025-07-26T17:54:57.273Z
Learning: In the cozystack repository, the cozyvalues-gen tool does not support `@typedef` syntax for defining custom type aliases in documentation comments.
Learnt from: NickVolynkin
PR: cozystack/cozystack#1120
File: packages/apps/clickhouse/README.md:60-67
Timestamp: 2025-07-03T05:54:51.264Z
Learning: The `cozy-lib.resources.sanitize` function in packages/library/cozy-lib/templates/_resources.tpl supports both standard Kubernetes resource format (with limits:/requests: sections) and flat format (direct resource specifications). The flat format takes priority over nested values. CozyStack apps include cozy-lib as a chart dependency through symlinks in packages/apps/*/charts/cozy-lib directories.
📚 Learning: the cozyvalues-gen tool has a known issue (https://github.com/cozystack/cozyvalues-gen/issues/10) wh...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/extra/monitoring/README.md:30-31
Timestamp: 2025-07-26T18:26:01.447Z
Learning: The cozyvalues-gen tool has a known issue (https://github.com/cozystack/cozyvalues-gen/issues/10) where it incorrectly places Grafana configuration entries under the wrong documentation sections, specifically placing grafana.resources.requests.* entries in the Metrics storage configuration table instead of the Grafana configuration table.
Applied to files:
packages/extra/monitoring/README.md
packages/extra/monitoring/values.schema.json
packages/apps/virtual-machine/README.md
packages/apps/virtual-machine/values.yaml
📚 Learning: in the cozystack repository, the maintainer nickvolynkin prefers to keep realistic-looking example c...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1120
File: packages/apps/ferretdb/README.md:35-37
Timestamp: 2025-07-02T09:58:11.406Z
Learning: In the cozystack repository, the maintainer NickVolynkin prefers to keep realistic-looking example credentials in README documentation rather than using generic placeholders like <ACCESS_KEY>, even though they are just examples and not real secrets.
Applied to files:
packages/extra/monitoring/README.md
packages/extra/monitoring/values.schema.json
packages/apps/virtual-machine/README.md
packages/apps/virtual-machine/values.yaml
📚 Learning: in the cozystack repository, the cozyvalues-gen tool does not support `@typedef` syntax for defining...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/apps/postgres/values.yaml:55-60
Timestamp: 2025-07-26T17:54:57.273Z
Learning: In the cozystack repository, the cozyvalues-gen tool does not support `@typedef` syntax for defining custom type aliases in documentation comments.
Applied to files:
packages/extra/monitoring/README.md
packages/apps/virtual-machine/README.md
packages/apps/virtual-machine/values.yaml
📚 Learning: in cozystack's schema generator annotation format, when documenting fields of array items, use the s...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/apps/virtual-machine/values.yaml:31-33
Timestamp: 2025-07-26T18:01:52.557Z
Learning: In cozystack's schema generator annotation format, when documenting fields of array items, use the singular form of the item type rather than array notation. For example, for a parameter `gpus {[]gpu}`, use `@field gpu.name` rather than `@field gpus[].name` to refer to the name field of each GPU object in the array.
Applied to files:
packages/extra/monitoring/README.md
packages/apps/virtual-machine/values.yaml
📚 Learning: in the cozystack repository, the `readme-generator` tool removes enum contents from values.schema.js...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1196
File: packages/apps/http-cache/Makefile:24-27
Timestamp: 2025-07-14T16:23:12.803Z
Learning: In the cozystack repository, the `readme-generator` tool removes enum contents from values.schema.json files during its operation. Therefore, when using readme-generator in Makefiles, any enum values need to be injected back into the schema using yq commands after readme-generator has run, not before.
Applied to files:
packages/extra/monitoring/values.schema.json
packages/apps/postgres/values.schema.json
packages/apps/virtual-machine/README.md
packages/apps/virtual-machine/values.yaml
📚 Learning: the `cozy-lib.resources.sanitize` function in packages/library/cozy-lib/templates/_resources.tpl sup...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1120
File: packages/apps/clickhouse/README.md:60-67
Timestamp: 2025-07-03T05:54:51.264Z
Learning: The `cozy-lib.resources.sanitize` function in packages/library/cozy-lib/templates/_resources.tpl supports both standard Kubernetes resource format (with limits:/requests: sections) and flat format (direct resource specifications). The flat format takes priority over nested values. CozyStack apps include cozy-lib as a chart dependency through symlinks in packages/apps/*/charts/cozy-lib directories.
Applied to files:
packages/extra/monitoring/values.schema.json
📚 Learning: in the cozystack repository, for the virtual-machine app's resources.sockets parameter, the value is...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/apps/virtual-machine/values.yaml:0-0
Timestamp: 2025-07-26T18:12:05.641Z
Learning: In the cozystack repository, for the virtual-machine app's resources.sockets parameter, the value is intentionally kept as a string in values.yaml despite being documented as {int} type, because the string-to-integer parsing happens elsewhere in the system pipeline rather than at the YAML validation level.
Applied to files:
packages/apps/virtual-machine/README.md
packages/apps/virtual-machine/values.yaml
📚 Learning: in cozystack, the plural form for the kubernetes custom resource is `kuberneteses.apps.cozystack.io`...
Learnt from: lllamnyp
PR: cozystack/cozystack#1130
File: hack/e2e-apps/kubernetes.bats:101-101
Timestamp: 2025-07-11T06:11:25.438Z
Learning: In cozystack, the plural form for the Kubernetes custom resource is `kuberneteses.apps.cozystack.io`, not `kubernetes.apps.cozystack.io`. This is defined in the API schema even though it's not grammatically perfect.
Applied to files:
packages/apps/virtual-machine/values.yaml
🪛 LanguageTool
packages/apps/virtual-machine/README.md
[style] ~57-~57: To form a complete sentence, be sure to include a subject or ‘there’.
Context: ... of SSH public keys for authentication. Can be a single key or a list of keys. ...
(MISSING_IT_THERE)
🪛 YAMLlint (1.37.1)
packages/apps/virtual-machine/values.yaml
[error] 25-25: trailing spaces
(trailing-spaces)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: Build
8dc242e
to
519c4b3
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
♻️ Duplicate comments (7)
packages/apps/postgres/values.schema.json (4)
1-3
: Add$schema
meta-field for IDE / linter support
The document still lacks a$schema
declaration, so editors cannot auto-validate against the correct draft.
5-25
:backup.*
always required – validation fails when backups are disabled
The unconditional"required"
array forces users to provide S3 creds even withenabled: false
, breaking default installs.
64-75
:bootstrap.oldName
should only be mandatory whenbootstrap.enabled
is true
oldName
is always required; this blocks installs where bootstrap is disabled. Wrap the requirement in anif/then
conditional.
134-154
: Over-strictpostgresql.parameters
requirement
Requiringparameters
and inside itmax_connections
forces every user to override defaults. Make these conditional or drop therequired
clauses.packages/apps/virtual-machine/README.md (1)
42-43
: Default forexternalMethod
is still out-of-sync withvalues.yaml
values.yaml
setsexternalMethod: "PortList"but the table shows
{}
. This mismatch was pointed out earlier and will keep confusing users and automated tooling until it is fixed.packages/apps/virtual-machine/values.yaml (1)
24-26
: Trailing whitespace and stray comment breakyamllint
/ CILine 24 contains two spaces at the end and Line 25 is a lone
##
comment. Both trigger thetrailing-spaces
rule already enforced in this repo’s CI.-## @field systemDisk.storageClass {*string} StorageClass used to store the data·· -## +## @field systemDisk.storageClass {*string} StorageClass used to store the data +packages/extra/monitoring/values.schema.json (1)
5-32
: Add missingalerta.alerts
schema propertiesThe
values.schema.json
for Alerta defines a default block withalerts.telegram.*
(and the README documents these fields), but thealerts
object is not declared underproperties
. This causes a mismatch between validation, defaults, and generated docs.Please update
packages/extra/monitoring/values.schema.json
to include thealerts
property underproperties.alerta.properties
(and optionally add it torequired
if you want to enforce its presence):--- a/packages/extra/monitoring/values.schema.json +++ b/packages/extra/monitoring/values.schema.json @@ -31,6 +31,28 @@ "storageClassName": { "description": "StorageClass used to store the data", "type": "string" + }, + "alerts": { + "description": "Configuration for alerts", + "type": "object", + "properties": { + "telegram": { + "description": "Configuration for Telegram alerts", + "type": "object", + "properties": { + "token": { + "description": "Telegram token for your bot", + "type": "string", + "default": "" + }, + "chatID": { + "description": "Comma-separated list of chat IDs", + "type": "string", + "default": "" + }, + "disabledSeverity": { + "description": "Comma-separated severities to suppress", + "type": "string", + "default": "" + } + } + } + } } }, "required": [After applying this change, run
make generate
to realign the README and docs with the schema.
🧹 Nitpick comments (5)
packages/apps/postgres/values.schema.json (2)
42-46
: Add validation pattern forretentionPolicy
Consider enforcing a simple duration pattern such as^[0-9]+[smhdw]$
to prevent typos (e.g.30d
,12h
).
57-61
: Validate cron expression inbackup.schedule
A loose string allows invalid cron syntax. At minimum, add a basic regex (or adoptcronexpr
JSON-Schema) to catch obvious mistakes.packages/apps/virtual-machine/values.yaml (1)
42-42
: Consider clearer type forresources.sockets
The annotation advertises
*quantity
, but downstream parsing treats the value as an unparsed string that later becomes an int. Using*string
(or documenting the indirection) would avoid misleading consumers that expect Kubernetes‐style quantities.packages/extra/monitoring/README.md (2)
14-42
: Array-item field notation doesn’t follow cozyvalues-gen conventionAccording to the repository guidance (see learning about singular names for array items), nested fields of an array item should be documented with the singular item name, e.g.
metricsStorage.name
, notmetricsStorages[i].name
.
Keeping the current[i]
style breaks automatic linking from schema → docs and yields clunky table entries.Consider regenerating with singular notation or post-processing the README to drop the
s[i]
suffixes.
70-75
: Bare URL trips markdown-lint
https://t.me/chatid_echo_bot
is flagged by MD034.
Wrap it to silence the lint rule and improve readability:- Specify multiple ID's separated by comma. Get yours in https://t.me/chatid_echo_bot +Specify multiple IDs separated by comma. Get yours in <https://t.me/chatid_echo_bot>
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (14)
.github/workflows/pre-commit.yml
(1 hunks)hack/e2e-apps/virtualmachine.bats
(1 hunks)packages/apps/postgres/Makefile
(1 hunks)packages/apps/postgres/README.md
(1 hunks)packages/apps/postgres/values.schema.json
(1 hunks)packages/apps/postgres/values.yaml
(3 hunks)packages/apps/virtual-machine/Makefile
(1 hunks)packages/apps/virtual-machine/README.md
(1 hunks)packages/apps/virtual-machine/values.schema.json
(3 hunks)packages/apps/virtual-machine/values.yaml
(2 hunks)packages/extra/monitoring/Makefile
(1 hunks)packages/extra/monitoring/README.md
(1 hunks)packages/extra/monitoring/values.schema.json
(1 hunks)packages/extra/monitoring/values.yaml
(4 hunks)
🚧 Files skipped from review as they are similar to previous changes (9)
- .github/workflows/pre-commit.yml
- packages/apps/virtual-machine/Makefile
- packages/extra/monitoring/Makefile
- packages/apps/postgres/Makefile
- hack/e2e-apps/virtualmachine.bats
- packages/apps/postgres/values.yaml
- packages/apps/postgres/README.md
- packages/extra/monitoring/values.yaml
- packages/apps/virtual-machine/values.schema.json
🧰 Additional context used
🧠 Learnings (9)
📓 Common learnings
Learnt from: NickVolynkin
PR: cozystack/cozystack#1120
File: packages/apps/ferretdb/README.md:35-37
Timestamp: 2025-07-02T09:58:11.406Z
Learning: In the cozystack repository, the maintainer NickVolynkin prefers to keep realistic-looking example credentials in README documentation rather than using generic placeholders like <ACCESS_KEY>, even though they are just examples and not real secrets.
Learnt from: NickVolynkin
PR: cozystack/cozystack#1196
File: packages/apps/http-cache/Makefile:24-27
Timestamp: 2025-07-14T16:23:12.803Z
Learning: In the cozystack repository, the `readme-generator` tool removes enum contents from values.schema.json files during its operation. Therefore, when using readme-generator in Makefiles, any enum values need to be injected back into the schema using yq commands after readme-generator has run, not before.
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/extra/monitoring/README.md:30-31
Timestamp: 2025-07-26T18:26:01.447Z
Learning: The cozyvalues-gen tool has a known issue (https://github.com/cozystack/cozyvalues-gen/issues/10) where it incorrectly places Grafana configuration entries under the wrong documentation sections, specifically placing grafana.resources.requests.* entries in the Metrics storage configuration table instead of the Grafana configuration table.
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/apps/postgres/values.yaml:55-60
Timestamp: 2025-07-26T17:54:57.273Z
Learning: In the cozystack repository, the cozyvalues-gen tool does not support `typedef` syntax for defining custom type aliases in documentation comments.
Learnt from: NickVolynkin
PR: cozystack/cozystack#1120
File: packages/apps/clickhouse/README.md:60-67
Timestamp: 2025-07-03T05:54:51.264Z
Learning: The `cozy-lib.resources.sanitize` function in packages/library/cozy-lib/templates/_resources.tpl supports both standard Kubernetes resource format (with limits:/requests: sections) and flat format (direct resource specifications). The flat format takes priority over nested values. CozyStack apps include cozy-lib as a chart dependency through symlinks in packages/apps/*/charts/cozy-lib directories.
📚 Learning: the cozyvalues-gen tool has a known issue (https://github.com/cozystack/cozyvalues-gen/issues/10) wh...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/extra/monitoring/README.md:30-31
Timestamp: 2025-07-26T18:26:01.447Z
Learning: The cozyvalues-gen tool has a known issue (https://github.com/cozystack/cozyvalues-gen/issues/10) where it incorrectly places Grafana configuration entries under the wrong documentation sections, specifically placing grafana.resources.requests.* entries in the Metrics storage configuration table instead of the Grafana configuration table.
Applied to files:
packages/extra/monitoring/values.schema.json
packages/apps/virtual-machine/README.md
packages/apps/virtual-machine/values.yaml
packages/extra/monitoring/README.md
📚 Learning: in the cozystack repository, the maintainer nickvolynkin prefers to keep realistic-looking example c...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1120
File: packages/apps/ferretdb/README.md:35-37
Timestamp: 2025-07-02T09:58:11.406Z
Learning: In the cozystack repository, the maintainer NickVolynkin prefers to keep realistic-looking example credentials in README documentation rather than using generic placeholders like <ACCESS_KEY>, even though they are just examples and not real secrets.
Applied to files:
packages/extra/monitoring/values.schema.json
packages/apps/virtual-machine/README.md
packages/apps/virtual-machine/values.yaml
packages/extra/monitoring/README.md
📚 Learning: in the cozystack repository, the `readme-generator` tool removes enum contents from values.schema.js...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1196
File: packages/apps/http-cache/Makefile:24-27
Timestamp: 2025-07-14T16:23:12.803Z
Learning: In the cozystack repository, the `readme-generator` tool removes enum contents from values.schema.json files during its operation. Therefore, when using readme-generator in Makefiles, any enum values need to be injected back into the schema using yq commands after readme-generator has run, not before.
Applied to files:
packages/extra/monitoring/values.schema.json
packages/apps/postgres/values.schema.json
packages/apps/virtual-machine/README.md
packages/apps/virtual-machine/values.yaml
📚 Learning: the `cozy-lib.resources.sanitize` function in packages/library/cozy-lib/templates/_resources.tpl sup...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1120
File: packages/apps/clickhouse/README.md:60-67
Timestamp: 2025-07-03T05:54:51.264Z
Learning: The `cozy-lib.resources.sanitize` function in packages/library/cozy-lib/templates/_resources.tpl supports both standard Kubernetes resource format (with limits:/requests: sections) and flat format (direct resource specifications). The flat format takes priority over nested values. CozyStack apps include cozy-lib as a chart dependency through symlinks in packages/apps/*/charts/cozy-lib directories.
Applied to files:
packages/extra/monitoring/values.schema.json
📚 Learning: in the cozystack repository, for the virtual-machine app's resources.sockets parameter, the value is...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/apps/virtual-machine/values.yaml:0-0
Timestamp: 2025-07-26T18:12:05.641Z
Learning: In the cozystack repository, for the virtual-machine app's resources.sockets parameter, the value is intentionally kept as a string in values.yaml despite being documented as {int} type, because the string-to-integer parsing happens elsewhere in the system pipeline rather than at the YAML validation level.
Applied to files:
packages/apps/virtual-machine/README.md
packages/apps/virtual-machine/values.yaml
📚 Learning: in the cozystack repository, the cozyvalues-gen tool does not support `@typedef` syntax for defining...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/apps/postgres/values.yaml:55-60
Timestamp: 2025-07-26T17:54:57.273Z
Learning: In the cozystack repository, the cozyvalues-gen tool does not support `typedef` syntax for defining custom type aliases in documentation comments.
Applied to files:
packages/apps/virtual-machine/README.md
packages/apps/virtual-machine/values.yaml
packages/extra/monitoring/README.md
📚 Learning: in cozystack's schema generator annotation format, when documenting fields of array items, use the s...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/apps/virtual-machine/values.yaml:31-33
Timestamp: 2025-07-26T18:01:52.557Z
Learning: In cozystack's schema generator annotation format, when documenting fields of array items, use the singular form of the item type rather than array notation. For example, for a parameter `gpus {[]gpu}`, use `field gpu.name` rather than `field gpus[].name` to refer to the name field of each GPU object in the array.
Applied to files:
packages/apps/virtual-machine/values.yaml
packages/extra/monitoring/README.md
📚 Learning: in cozystack, the plural form for the kubernetes custom resource is `kuberneteses.apps.cozystack.io`...
Learnt from: lllamnyp
PR: cozystack/cozystack#1130
File: hack/e2e-apps/kubernetes.bats:101-101
Timestamp: 2025-07-11T06:11:25.438Z
Learning: In cozystack, the plural form for the Kubernetes custom resource is `kuberneteses.apps.cozystack.io`, not `kubernetes.apps.cozystack.io`. This is defined in the API schema even though it's not grammatically perfect.
Applied to files:
packages/apps/virtual-machine/values.yaml
🪛 LanguageTool
packages/apps/virtual-machine/README.md
[style] ~57-~57: To form a complete sentence, be sure to include a subject or ‘there’.
Context: ... of SSH public keys for authentication. Can be a single key or a list of keys. ...
(MISSING_IT_THERE)
🪛 YAMLlint (1.37.1)
packages/apps/virtual-machine/values.yaml
[error] 25-25: trailing spaces
(trailing-spaces)
🪛 markdownlint-cli2 (0.17.2)
packages/extra/monitoring/README.md
73-73: Bare URL used
(MD034, no-bare-urls)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: Build
🔇 Additional comments (1)
packages/apps/virtual-machine/README.md (1)
47-50
:systemDisk
default{}
contradicts the populated default objectThe table claims an empty object, yet
values.yaml
ships with:systemDisk: image: ubuntu storage: 5Gi storageClass: replicatedUpdate the “Value” column to reflect the real defaults (or change the defaults in
values.yaml
) so documentation and configuration stay consistent.
519c4b3
to
e2889c0
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
♻️ Duplicate comments (6)
packages/apps/virtual-machine/README.md (1)
42-42
: Default value forexternalMethod
still incorrectThe row advertises type
string
yet the default is{}
(object) and still disagrees withvalues.yaml
, which ships with"PortList"
. The same issue was raised earlier and remains unresolved.packages/apps/postgres/values.schema.json (4)
1-4
: Missing$schema
meta-field continues to hamper tooling
The schema still lacks the$schema
declaration that was requested in a previous review. Without it, many IDEs and CI linters will not auto-validate this document.
17-25
:backup.*
fields are still unconditionally required
The earlier feedback to wrap these requirements in anif/then
(only whenenabled
istrue
) has not been applied. Validation will fail when backups are disabled.
72-75
:bootstrap.oldName
(and optionallyrecoveryTime
) remain always-required
The schema should only demand these fields whenbootstrap.enabled
istrue
. The conditional requirement pattern suggested earlier is still missing.
142-154
:postgresql.parameters
/max_connections
over-strict requirement persists
Users must still supplyparameters.max_connections
even when default values are acceptable. Convert this to a conditional requirement or drop therequired
arrays as previously advised.packages/extra/monitoring/values.schema.json (1)
8-28
:alerta.alerts
object missing fromproperties
The default block defines
alerts
, and the README documents it, but the schema omits thealerts
property.
Without it, any user-suppliedalerta.alerts.*
keys will be treated asadditionalProperties
and bypass validation.Add an explicit definition:
"storageClassName": "" }, + "alerts": { + "description": "Configuration for alerts", + "type": "object", + "properties": { + "telegram": { + "description": "Configuration for Telegram alerts", + "type": "object", + "properties": { + "token": { "type": "string", "description": "Telegram token for your bot" }, + "chatID": { "type": "string", "description": "Comma-separated list of chat IDs" }, + "disabledSeverity": { "type": "string", "description": "Comma-separated severities to suppress" } + } + } + } + },
🧹 Nitpick comments (3)
packages/apps/virtual-machine/README.md (1)
57-57
: Minor grammar nit – add a subject“Can be a single key or a list of keys.” is a sentence fragment. Consider:
-| List of SSH public keys for authentication. Can be a single key or a list of keys. +| List of SSH public keys for authentication. It can be a single key or a list of keys.packages/extra/monitoring/README.md (1)
70-75
: Bare URL violates markdown-lint rule MD034
https://t.me/chatid_echo_bot
should be wrapped in angle brackets or converted to an inline link to satisfy markdown-lint and keep rendering consistent.- Specify multiple ID's separated by comma. Get yours in https://t.me/chatid_echo_bot + Specify multiple IDs separated by comma. Get yours in <https://t.me/chatid_echo_bot>packages/extra/monitoring/values.schema.json (1)
210-213
: Consider adding a default forhost
to match documentationREADME shows an empty default value for
host
, but none is present here.
If an implicit empty string is desired, add"default": ""
so that docs, schema, and actual behaviour stay in sync.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (14)
.github/workflows/pre-commit.yml
(1 hunks)hack/e2e-apps/virtualmachine.bats
(1 hunks)packages/apps/postgres/Makefile
(1 hunks)packages/apps/postgres/README.md
(1 hunks)packages/apps/postgres/values.schema.json
(1 hunks)packages/apps/postgres/values.yaml
(3 hunks)packages/apps/virtual-machine/Makefile
(1 hunks)packages/apps/virtual-machine/README.md
(1 hunks)packages/apps/virtual-machine/values.schema.json
(3 hunks)packages/apps/virtual-machine/values.yaml
(2 hunks)packages/extra/monitoring/Makefile
(1 hunks)packages/extra/monitoring/README.md
(1 hunks)packages/extra/monitoring/values.schema.json
(1 hunks)packages/extra/monitoring/values.yaml
(4 hunks)
🚧 Files skipped from review as they are similar to previous changes (10)
- packages/apps/postgres/Makefile
- .github/workflows/pre-commit.yml
- packages/apps/virtual-machine/Makefile
- hack/e2e-apps/virtualmachine.bats
- packages/extra/monitoring/Makefile
- packages/apps/postgres/values.yaml
- packages/apps/postgres/README.md
- packages/extra/monitoring/values.yaml
- packages/apps/virtual-machine/values.yaml
- packages/apps/virtual-machine/values.schema.json
🧰 Additional context used
🧠 Learnings (8)
📓 Common learnings
Learnt from: NickVolynkin
PR: cozystack/cozystack#1120
File: packages/apps/ferretdb/README.md:35-37
Timestamp: 2025-07-02T09:58:11.406Z
Learning: In the cozystack repository, the maintainer NickVolynkin prefers to keep realistic-looking example credentials in README documentation rather than using generic placeholders like <ACCESS_KEY>, even though they are just examples and not real secrets.
Learnt from: NickVolynkin
PR: cozystack/cozystack#1196
File: packages/apps/http-cache/Makefile:24-27
Timestamp: 2025-07-14T16:23:12.803Z
Learning: In the cozystack repository, the `readme-generator` tool removes enum contents from values.schema.json files during its operation. Therefore, when using readme-generator in Makefiles, any enum values need to be injected back into the schema using yq commands after readme-generator has run, not before.
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/extra/monitoring/README.md:30-31
Timestamp: 2025-07-26T18:26:01.447Z
Learning: The cozyvalues-gen tool has a known issue (https://github.com/cozystack/cozyvalues-gen/issues/10) where it incorrectly places Grafana configuration entries under the wrong documentation sections, specifically placing grafana.resources.requests.* entries in the Metrics storage configuration table instead of the Grafana configuration table.
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/apps/postgres/values.yaml:55-60
Timestamp: 2025-07-26T17:54:57.273Z
Learning: In the cozystack repository, the cozyvalues-gen tool does not support `typedef` syntax for defining custom type aliases in documentation comments.
Learnt from: NickVolynkin
PR: cozystack/cozystack#1120
File: packages/apps/clickhouse/README.md:60-67
Timestamp: 2025-07-03T05:54:51.264Z
Learning: The `cozy-lib.resources.sanitize` function in packages/library/cozy-lib/templates/_resources.tpl supports both standard Kubernetes resource format (with limits:/requests: sections) and flat format (direct resource specifications). The flat format takes priority over nested values. CozyStack apps include cozy-lib as a chart dependency through symlinks in packages/apps/*/charts/cozy-lib directories.
📚 Learning: the cozyvalues-gen tool has a known issue (https://github.com/cozystack/cozyvalues-gen/issues/10) wh...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/extra/monitoring/README.md:30-31
Timestamp: 2025-07-26T18:26:01.447Z
Learning: The cozyvalues-gen tool has a known issue (https://github.com/cozystack/cozyvalues-gen/issues/10) where it incorrectly places Grafana configuration entries under the wrong documentation sections, specifically placing grafana.resources.requests.* entries in the Metrics storage configuration table instead of the Grafana configuration table.
Applied to files:
packages/extra/monitoring/values.schema.json
packages/apps/virtual-machine/README.md
packages/extra/monitoring/README.md
📚 Learning: in the cozystack repository, the maintainer nickvolynkin prefers to keep realistic-looking example c...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1120
File: packages/apps/ferretdb/README.md:35-37
Timestamp: 2025-07-02T09:58:11.406Z
Learning: In the cozystack repository, the maintainer NickVolynkin prefers to keep realistic-looking example credentials in README documentation rather than using generic placeholders like <ACCESS_KEY>, even though they are just examples and not real secrets.
Applied to files:
packages/extra/monitoring/values.schema.json
packages/apps/virtual-machine/README.md
packages/extra/monitoring/README.md
📚 Learning: in the cozystack repository, the `readme-generator` tool removes enum contents from values.schema.js...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1196
File: packages/apps/http-cache/Makefile:24-27
Timestamp: 2025-07-14T16:23:12.803Z
Learning: In the cozystack repository, the `readme-generator` tool removes enum contents from values.schema.json files during its operation. Therefore, when using readme-generator in Makefiles, any enum values need to be injected back into the schema using yq commands after readme-generator has run, not before.
Applied to files:
packages/extra/monitoring/values.schema.json
packages/apps/virtual-machine/README.md
📚 Learning: the `cozy-lib.resources.sanitize` function in packages/library/cozy-lib/templates/_resources.tpl sup...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1120
File: packages/apps/clickhouse/README.md:60-67
Timestamp: 2025-07-03T05:54:51.264Z
Learning: The `cozy-lib.resources.sanitize` function in packages/library/cozy-lib/templates/_resources.tpl supports both standard Kubernetes resource format (with limits:/requests: sections) and flat format (direct resource specifications). The flat format takes priority over nested values. CozyStack apps include cozy-lib as a chart dependency through symlinks in packages/apps/*/charts/cozy-lib directories.
Applied to files:
packages/extra/monitoring/values.schema.json
📚 Learning: in the cozystack repository, for the virtual-machine app's resources.sockets parameter, the value is...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/apps/virtual-machine/values.yaml:0-0
Timestamp: 2025-07-26T18:12:05.641Z
Learning: In the cozystack repository, for the virtual-machine app's resources.sockets parameter, the value is intentionally kept as a string in values.yaml despite being documented as {int} type, because the string-to-integer parsing happens elsewhere in the system pipeline rather than at the YAML validation level.
Applied to files:
packages/apps/virtual-machine/README.md
📚 Learning: in the cozystack repository, the cozyvalues-gen tool does not support `@typedef` syntax for defining...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/apps/postgres/values.yaml:55-60
Timestamp: 2025-07-26T17:54:57.273Z
Learning: In the cozystack repository, the cozyvalues-gen tool does not support `typedef` syntax for defining custom type aliases in documentation comments.
Applied to files:
packages/apps/virtual-machine/README.md
packages/extra/monitoring/README.md
📚 Learning: in cozystack's schema generator annotation format, when documenting fields of array items, use the s...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/apps/virtual-machine/values.yaml:31-33
Timestamp: 2025-07-26T18:01:52.557Z
Learning: In cozystack's schema generator annotation format, when documenting fields of array items, use the singular form of the item type rather than array notation. For example, for a parameter `gpus {[]gpu}`, use `field gpu.name` rather than `field gpus[].name` to refer to the name field of each GPU object in the array.
Applied to files:
packages/extra/monitoring/README.md
🪛 LanguageTool
packages/apps/virtual-machine/README.md
[style] ~57-~57: To form a complete sentence, be sure to include a subject or ‘there’.
Context: ... of SSH public keys for authentication. Can be a single key or a list of keys. ...
(MISSING_IT_THERE)
🪛 markdownlint-cli2 (0.17.2)
packages/extra/monitoring/README.md
73-73: Bare URL used
(MD034, no-bare-urls)
🔇 Additional comments (3)
packages/apps/virtual-machine/README.md (1)
39-41
: Table refactor looks goodAdding the “Type” column improves clarity and aligns with emerging Cozystack doc conventions.
No issues spotted here.packages/apps/postgres/values.schema.json (1)
227-233
: Pattern &x-kubernetes-int-or-string
restored — looks good
Thesize
property now includes the quantity regex and the Kubernetes extension, resolving the pipeline failure noted earlier.packages/extra/monitoring/README.md (1)
7-10
:host
default value documented but not defined in the schemaThe table shows an empty-string default, yet
host
invalues.schema.json
has nodefault
key.
Either add a default in the schema or drop it from the docs so users don’t rely on behaviour that won’t validate.
Signed-off-by: IvanHunters <xorokhotnikov@gmail.com> (cherry picked from commit 299d006)
e2889c0
to
a98975f
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
♻️ Duplicate comments (5)
packages/apps/postgres/values.schema.json (4)
17-25
:backup.*
still required even when backups are disabled
Previous feedback pointed out that making every backup field mandatory blocks installs withbackup.enabled: false
. The schema continues to list all keys in a globalrequired
array.Please wrap the requirement in an
allOf
/if
/then
that only applies whenenabled
istrue
.
(See earlier bot comment for a ready JSON snippet.)
72-75
:bootstrap.oldName
must not be unconditionally required
oldName
(and potentiallyrecoveryTime
) should only be required whenbootstrap.enabled
is true. The unconditionalrequired
array reintroduces the same validation problem flagged on a previous commit.
142-154
: Over-strictpostgresql.parameters
requirement remains
Requiring the wholeparameters
object (and inside itmax_connections
) forces users to override defaults on every install. Either drop therequired
clause or guard it behind anif
that triggers only when the user providesparameters
.
1-4
: Add$schema
meta-field for editor & CI compatibility
Without declaring the JSON-Schema dialect, many IDEs, linters and Helm CI steps cannot validate this document. Add the standard draft reference immediately after the opening brace.{ + "$schema": "http://json-schema.org/draft-07/schema#", "title": "Chart Values", "type": "object",
packages/apps/virtual-machine/README.md (1)
41-42
: Default value forexternalMethod
is invalid and out-of-sync withvalues.yaml
externalMethod
is documented asstring
, yet the default shown is{}
(object).
packages/apps/virtual-machine/values.yaml
still setsexternalMethod: "PortList"so the README should advertise
"PortList"
to avoid misleading users and breaking automated doc consumers.Suggested fix:
-| `externalMethod` | Specify method to pass through the traffic to the virtual machine. Allowed values: `WholeIP` and `PortList` | `string` | `{}` | +| `externalMethod` | Specify method to pass through the traffic to the virtual machine. Allowed values: `WholeIP` and `PortList` | `string` | `"PortList"` |
🧹 Nitpick comments (7)
packages/apps/virtual-machine/README.md (2)
39-40
: Column header “Value” is ambiguous – consider “Default” for clarityThe fourth column currently reads “Value”, but it actually lists default values rather than examples or allowed ranges. Renaming the header to “Default” will make the table self-explanatory.
-| Name | Description | Type | Value | +| Name | Description | Type | Default |
57-57
: Minor grammar tweak in SSH key description“Can be a single key or a list of keys.” lacks a subject. Consider:
-| `sshKeys` | List of SSH public keys for authentication. Can be a single key or a list of keys. | `[]string` | `[]` | +| `sshKeys` | List of SSH public keys for authentication. It can be a single key or a list of keys. | `[]string` | `[]` |packages/extra/monitoring/README.md (3)
64-69
: Missing description text for resources aggregation rowsBoth
alerta.resources.requests
andalerta.resources.limits
have an empty description column, unlike every other “group-row” in the table. This breaks the doc’s consistency and leaves readers guessing what the object does.-| `alerta.resources.requests` | | `*object` | `null` | +| `alerta.resources.requests` | K-8s resource requests (minimum guaranteed) | `*object` | `null` | @@ -| `alerta.resources.limits` | | `*object` | `null` | +| `alerta.resources.limits` | K-8s resource limits (hard cap) | `*object` | `null` |
85-89
: Grafana resources rows also lack a descriptionThe umbrella rows
grafana.resources.requests
/grafana.resources.limits
mirror the problem above. Add a short description so the table remains self-explanatory.
73-73
: Bare URL violates MD034 – wrap it in angle brackets
markdownlint
flags the plain URL inside the table. Enclose it in<…>
(or turn it into a Markdown link) to silence the warning.-| `alerta.alerts.telegram.chatID` | Specify multiple ID's separated by comma. Get yours in https://t.me/chatid_echo_bot | `string` | `""` | +| `alerta.alerts.telegram.chatID` | Specify multiple IDs separated by comma. Get yours in <https://t.me/chatid_echo_bot> | `string` | `""` |packages/extra/monitoring/values.schema.json (2)
255-258
: Schema–docs drift: add default forhost
The README shows
host
defaulting to an empty string, but the schema omits adefault
field. This minor mismatch will trip automated UI generators that rely on schema defaults."host": { "description": "The hostname used to access the grafana externally (defaults to 'grafana' subdomain for the tenant host).", - "type": "string" + "type": "string", + "default": "" },
300-315
: Metrics-storage hard-coded defaults likewise out of syncThe schema bakes in two sample storage instances (
shortterm
,longterm
).
The README presents the field as free-form with empty defaults.Decide whether these examples are intentional presets (document them!) or should live in
values.yaml
but not in the JSON schema.Leaving them here means every Values file will validate against exactly two pre-populated items, which is rarely desired.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (14)
.github/workflows/pre-commit.yml
(1 hunks)hack/e2e-apps/virtualmachine.bats
(1 hunks)packages/apps/postgres/Makefile
(1 hunks)packages/apps/postgres/README.md
(1 hunks)packages/apps/postgres/values.schema.json
(1 hunks)packages/apps/postgres/values.yaml
(3 hunks)packages/apps/virtual-machine/Makefile
(1 hunks)packages/apps/virtual-machine/README.md
(1 hunks)packages/apps/virtual-machine/values.schema.json
(3 hunks)packages/apps/virtual-machine/values.yaml
(2 hunks)packages/extra/monitoring/Makefile
(1 hunks)packages/extra/monitoring/README.md
(1 hunks)packages/extra/monitoring/values.schema.json
(1 hunks)packages/extra/monitoring/values.yaml
(3 hunks)
✅ Files skipped from review due to trivial changes (1)
- .github/workflows/pre-commit.yml
🚧 Files skipped from review as they are similar to previous changes (9)
- packages/extra/monitoring/Makefile
- packages/apps/postgres/Makefile
- packages/apps/virtual-machine/Makefile
- packages/apps/postgres/values.yaml
- packages/apps/postgres/README.md
- hack/e2e-apps/virtualmachine.bats
- packages/extra/monitoring/values.yaml
- packages/apps/virtual-machine/values.yaml
- packages/apps/virtual-machine/values.schema.json
🧰 Additional context used
🧠 Learnings (8)
📓 Common learnings
Learnt from: NickVolynkin
PR: cozystack/cozystack#1120
File: packages/apps/ferretdb/README.md:35-37
Timestamp: 2025-07-02T09:58:11.406Z
Learning: In the cozystack repository, the maintainer NickVolynkin prefers to keep realistic-looking example credentials in README documentation rather than using generic placeholders like <ACCESS_KEY>, even though they are just examples and not real secrets.
Learnt from: NickVolynkin
PR: cozystack/cozystack#1196
File: packages/apps/http-cache/Makefile:24-27
Timestamp: 2025-07-14T16:23:12.803Z
Learning: In the cozystack repository, the `readme-generator` tool removes enum contents from values.schema.json files during its operation. Therefore, when using readme-generator in Makefiles, any enum values need to be injected back into the schema using yq commands after readme-generator has run, not before.
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/extra/monitoring/README.md:30-31
Timestamp: 2025-07-26T18:26:01.447Z
Learning: The cozyvalues-gen tool has a known issue (https://github.com/cozystack/cozyvalues-gen/issues/10) where it incorrectly places Grafana configuration entries under the wrong documentation sections, specifically placing grafana.resources.requests.* entries in the Metrics storage configuration table instead of the Grafana configuration table.
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/apps/postgres/values.yaml:55-60
Timestamp: 2025-07-26T17:54:57.273Z
Learning: In the cozystack repository, the cozyvalues-gen tool does not support `typedef` syntax for defining custom type aliases in documentation comments.
Learnt from: NickVolynkin
PR: cozystack/cozystack#1120
File: packages/apps/clickhouse/README.md:60-67
Timestamp: 2025-07-03T05:54:51.264Z
Learning: The `cozy-lib.resources.sanitize` function in packages/library/cozy-lib/templates/_resources.tpl supports both standard Kubernetes resource format (with limits:/requests: sections) and flat format (direct resource specifications). The flat format takes priority over nested values. CozyStack apps include cozy-lib as a chart dependency through symlinks in packages/apps/*/charts/cozy-lib directories.
📚 Learning: in the cozystack repository, the `readme-generator` tool removes enum contents from values.schema.js...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1196
File: packages/apps/http-cache/Makefile:24-27
Timestamp: 2025-07-14T16:23:12.803Z
Learning: In the cozystack repository, the `readme-generator` tool removes enum contents from values.schema.json files during its operation. Therefore, when using readme-generator in Makefiles, any enum values need to be injected back into the schema using yq commands after readme-generator has run, not before.
Applied to files:
packages/apps/postgres/values.schema.json
packages/extra/monitoring/values.schema.json
packages/apps/virtual-machine/README.md
📚 Learning: the cozyvalues-gen tool has a known issue (https://github.com/cozystack/cozyvalues-gen/issues/10) wh...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/extra/monitoring/README.md:30-31
Timestamp: 2025-07-26T18:26:01.447Z
Learning: The cozyvalues-gen tool has a known issue (https://github.com/cozystack/cozyvalues-gen/issues/10) where it incorrectly places Grafana configuration entries under the wrong documentation sections, specifically placing grafana.resources.requests.* entries in the Metrics storage configuration table instead of the Grafana configuration table.
Applied to files:
packages/extra/monitoring/values.schema.json
packages/apps/virtual-machine/README.md
packages/extra/monitoring/README.md
📚 Learning: in the cozystack repository, the maintainer nickvolynkin prefers to keep realistic-looking example c...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1120
File: packages/apps/ferretdb/README.md:35-37
Timestamp: 2025-07-02T09:58:11.406Z
Learning: In the cozystack repository, the maintainer NickVolynkin prefers to keep realistic-looking example credentials in README documentation rather than using generic placeholders like <ACCESS_KEY>, even though they are just examples and not real secrets.
Applied to files:
packages/extra/monitoring/values.schema.json
packages/apps/virtual-machine/README.md
packages/extra/monitoring/README.md
📚 Learning: the `cozy-lib.resources.sanitize` function in packages/library/cozy-lib/templates/_resources.tpl sup...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1120
File: packages/apps/clickhouse/README.md:60-67
Timestamp: 2025-07-03T05:54:51.264Z
Learning: The `cozy-lib.resources.sanitize` function in packages/library/cozy-lib/templates/_resources.tpl supports both standard Kubernetes resource format (with limits:/requests: sections) and flat format (direct resource specifications). The flat format takes priority over nested values. CozyStack apps include cozy-lib as a chart dependency through symlinks in packages/apps/*/charts/cozy-lib directories.
Applied to files:
packages/extra/monitoring/values.schema.json
📚 Learning: in the cozystack repository, for the virtual-machine app's resources.sockets parameter, the value is...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/apps/virtual-machine/values.yaml:0-0
Timestamp: 2025-07-26T18:12:05.641Z
Learning: In the cozystack repository, for the virtual-machine app's resources.sockets parameter, the value is intentionally kept as a string in values.yaml despite being documented as {int} type, because the string-to-integer parsing happens elsewhere in the system pipeline rather than at the YAML validation level.
Applied to files:
packages/apps/virtual-machine/README.md
📚 Learning: in the cozystack repository, the cozyvalues-gen tool does not support `@typedef` syntax for defining...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/apps/postgres/values.yaml:55-60
Timestamp: 2025-07-26T17:54:57.273Z
Learning: In the cozystack repository, the cozyvalues-gen tool does not support `typedef` syntax for defining custom type aliases in documentation comments.
Applied to files:
packages/apps/virtual-machine/README.md
packages/extra/monitoring/README.md
📚 Learning: in cozystack's schema generator annotation format, when documenting fields of array items, use the s...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/apps/virtual-machine/values.yaml:31-33
Timestamp: 2025-07-26T18:01:52.557Z
Learning: In cozystack's schema generator annotation format, when documenting fields of array items, use the singular form of the item type rather than array notation. For example, for a parameter `gpus {[]gpu}`, use `field gpu.name` rather than `field gpus[].name` to refer to the name field of each GPU object in the array.
Applied to files:
packages/extra/monitoring/README.md
🪛 LanguageTool
packages/apps/virtual-machine/README.md
[style] ~57-~57: To form a complete sentence, be sure to include a subject or ‘there’.
Context: ... of SSH public keys for authentication. Can be a single key or a list of keys. ...
(MISSING_IT_THERE)
🪛 markdownlint-cli2 (0.17.2)
packages/extra/monitoring/README.md
73-73: Bare URL used
(MD034, no-bare-urls)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: Build
🔇 Additional comments (2)
packages/apps/postgres/values.schema.json (1)
227-233
: 👍 Size field pattern & int-or-string restored correctly
The validation pattern andx-kubernetes-int-or-string
extension are now back in place, fixing the earlier pipeline failure.packages/extra/monitoring/values.schema.json (1)
262-269
: Logs-storage defaults conflict with README
retentionPeriod
,storageClassName
, etc. carry concrete defaults in the schema ("1"
,"replicated"
), while the README lists empty /null
. Please pick one source of truth—either:
- keep the defaults here and update the README, or
- drop the defaults from the schema to match the docs.
Inconsistent defaults mislead operators and auto-generated UIs.
Use https://github.com/cozystack/cozyvalues-gen for three apps: - apps/postgres - apps/virtual-machine - extra/monitoring Changes: - Add type and enum definitions to values.yaml. - Update READMEs with new information. - Update values.schema.json with definitions for children objects, allowing precise UI customization. Add regexp for specific types such as resources: CPU like `500m` and RAM like `4GiB`. - Remove direct injections with `yq` from Makefiles where they're not needed anymore. Co-authored-by: Nick Volynkin <nick.volynkin@gmail.com> Signed-off-by: Andrei Kvapil <kvapss@gmail.com> Signed-off-by: Nick Volynkin <nick.volynkin@gmail.com>
a98975f
to
754d5a9
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
♻️ Duplicate comments (5)
packages/apps/postgres/values.schema.json (4)
1-4
: Missing$schema
declaration (repeat)
Root meta-field still absent, so editors can’t auto-validate this document. Please add the standard Draft-07 URL right after the opening brace.
17-25
:backup.*
still unconditionally required (repeat)
The schema forces users to provide S3 credentials even whenbackup.enabled = false
, making default installs fail. Wrap these requirements in anif/then
that triggers only whenenabled
is true.
72-75
:bootstrap.oldName
/recoveryTime
always required (repeat)
Fields should only be mandatory whenbootstrap.enabled
is true. Apply the same conditional-requirement pattern suggested earlier.
142-154
: Over-strictpostgresql.parameters
requirement persists (repeat)
Requiring the entireparameters
object andmax_connections
blocks default deployments. Make them optional or guard withif/then
so they’re only required when the user definesparameters
.packages/apps/virtual-machine/README.md (1)
42-42
:externalMethod
default & type still out-of-sync withvalues.yaml
The row documents type
string
yet the default is{}
(an object) and still does not matchvalues.yaml
, which ships with"PortList"
.
This mismatch was raised earlier and remains unresolved.-| `externalMethod` | Specify method to pass through the traffic to the virtual machine. Allowed values: `WholeIP` and `PortList` | `string` | `{}` | +| `externalMethod` | Specify method to pass through the traffic to the virtual machine. Allowed values: `WholeIP` and `PortList` | `string` | `"PortList"` |
🧹 Nitpick comments (3)
packages/apps/virtual-machine/README.md (2)
39-39
: Column header “Value” is ambiguous – prefer “Default” for consistencyAcross Cozystack docs the last column usually shows the default value. Renaming the header keeps terminology consistent and prevents misunderstandings when the table is parsed by downstream tooling.
57-57
: Minor grammar – add a subject to complete the sentence“Can be a single key or a list of keys.” lacks a subject.
Example fix: “It can be a single key or a list of keys.”packages/extra/monitoring/README.md (1)
72-74
: Fix bare URL & minor grammar
Markdown-lint flags the raw link; also “ID's” → “IDs”.-| `alerta.alerts.telegram.chatID` | Specify multiple ID's separated by comma. Get yours in https://t.me/chatid_echo_bot | `string` | `""` | +| `alerta.alerts.telegram.chatID` | Specify multiple IDs separated by commas. Get yours in [@chatid_echo_bot](https://t.me/chatid_echo_bot) | `string` | `""` |
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (13)
.github/workflows/pre-commit.yml
(1 hunks)packages/apps/postgres/Makefile
(1 hunks)packages/apps/postgres/README.md
(1 hunks)packages/apps/postgres/values.schema.json
(1 hunks)packages/apps/postgres/values.yaml
(3 hunks)packages/apps/virtual-machine/Makefile
(1 hunks)packages/apps/virtual-machine/README.md
(1 hunks)packages/apps/virtual-machine/values.schema.json
(3 hunks)packages/apps/virtual-machine/values.yaml
(2 hunks)packages/extra/monitoring/Makefile
(1 hunks)packages/extra/monitoring/README.md
(1 hunks)packages/extra/monitoring/values.schema.json
(1 hunks)packages/extra/monitoring/values.yaml
(3 hunks)
✅ Files skipped from review due to trivial changes (3)
- .github/workflows/pre-commit.yml
- packages/apps/postgres/Makefile
- packages/extra/monitoring/values.yaml
🚧 Files skipped from review as they are similar to previous changes (6)
- packages/apps/virtual-machine/Makefile
- packages/extra/monitoring/Makefile
- packages/apps/postgres/values.yaml
- packages/apps/postgres/README.md
- packages/apps/virtual-machine/values.yaml
- packages/apps/virtual-machine/values.schema.json
🧰 Additional context used
🧠 Learnings (8)
📓 Common learnings
Learnt from: NickVolynkin
PR: cozystack/cozystack#1120
File: packages/apps/ferretdb/README.md:35-37
Timestamp: 2025-07-02T09:58:11.406Z
Learning: In the cozystack repository, the maintainer NickVolynkin prefers to keep realistic-looking example credentials in README documentation rather than using generic placeholders like <ACCESS_KEY>, even though they are just examples and not real secrets.
Learnt from: NickVolynkin
PR: cozystack/cozystack#1196
File: packages/apps/http-cache/Makefile:24-27
Timestamp: 2025-07-14T16:23:12.803Z
Learning: In the cozystack repository, the `readme-generator` tool removes enum contents from values.schema.json files during its operation. Therefore, when using readme-generator in Makefiles, any enum values need to be injected back into the schema using yq commands after readme-generator has run, not before.
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/extra/monitoring/README.md:30-31
Timestamp: 2025-07-26T18:26:01.447Z
Learning: The cozyvalues-gen tool has a known issue (https://github.com/cozystack/cozyvalues-gen/issues/10) where it incorrectly places Grafana configuration entries under the wrong documentation sections, specifically placing grafana.resources.requests.* entries in the Metrics storage configuration table instead of the Grafana configuration table.
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/apps/postgres/values.yaml:55-60
Timestamp: 2025-07-26T17:54:57.273Z
Learning: In the cozystack repository, the cozyvalues-gen tool does not support `typedef` syntax for defining custom type aliases in documentation comments.
Learnt from: NickVolynkin
PR: cozystack/cozystack#1120
File: packages/apps/clickhouse/README.md:60-67
Timestamp: 2025-07-03T05:54:51.264Z
Learning: The `cozy-lib.resources.sanitize` function in packages/library/cozy-lib/templates/_resources.tpl supports both standard Kubernetes resource format (with limits:/requests: sections) and flat format (direct resource specifications). The flat format takes priority over nested values. CozyStack apps include cozy-lib as a chart dependency through symlinks in packages/apps/*/charts/cozy-lib directories.
📚 Learning: the cozyvalues-gen tool has a known issue (https://github.com/cozystack/cozyvalues-gen/issues/10) wh...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/extra/monitoring/README.md:30-31
Timestamp: 2025-07-26T18:26:01.447Z
Learning: The cozyvalues-gen tool has a known issue (https://github.com/cozystack/cozyvalues-gen/issues/10) where it incorrectly places Grafana configuration entries under the wrong documentation sections, specifically placing grafana.resources.requests.* entries in the Metrics storage configuration table instead of the Grafana configuration table.
Applied to files:
packages/extra/monitoring/values.schema.json
packages/apps/virtual-machine/README.md
packages/extra/monitoring/README.md
📚 Learning: in the cozystack repository, the maintainer nickvolynkin prefers to keep realistic-looking example c...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1120
File: packages/apps/ferretdb/README.md:35-37
Timestamp: 2025-07-02T09:58:11.406Z
Learning: In the cozystack repository, the maintainer NickVolynkin prefers to keep realistic-looking example credentials in README documentation rather than using generic placeholders like <ACCESS_KEY>, even though they are just examples and not real secrets.
Applied to files:
packages/extra/monitoring/values.schema.json
packages/apps/virtual-machine/README.md
packages/extra/monitoring/README.md
📚 Learning: in the cozystack repository, the `readme-generator` tool removes enum contents from values.schema.js...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1196
File: packages/apps/http-cache/Makefile:24-27
Timestamp: 2025-07-14T16:23:12.803Z
Learning: In the cozystack repository, the `readme-generator` tool removes enum contents from values.schema.json files during its operation. Therefore, when using readme-generator in Makefiles, any enum values need to be injected back into the schema using yq commands after readme-generator has run, not before.
Applied to files:
packages/extra/monitoring/values.schema.json
packages/apps/postgres/values.schema.json
packages/apps/virtual-machine/README.md
📚 Learning: the `cozy-lib.resources.sanitize` function in packages/library/cozy-lib/templates/_resources.tpl sup...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1120
File: packages/apps/clickhouse/README.md:60-67
Timestamp: 2025-07-03T05:54:51.264Z
Learning: The `cozy-lib.resources.sanitize` function in packages/library/cozy-lib/templates/_resources.tpl supports both standard Kubernetes resource format (with limits:/requests: sections) and flat format (direct resource specifications). The flat format takes priority over nested values. CozyStack apps include cozy-lib as a chart dependency through symlinks in packages/apps/*/charts/cozy-lib directories.
Applied to files:
packages/extra/monitoring/values.schema.json
📚 Learning: in the cozystack repository, for the virtual-machine app's resources.sockets parameter, the value is...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/apps/virtual-machine/values.yaml:0-0
Timestamp: 2025-07-26T18:12:05.641Z
Learning: In the cozystack repository, for the virtual-machine app's resources.sockets parameter, the value is intentionally kept as a string in values.yaml despite being documented as {int} type, because the string-to-integer parsing happens elsewhere in the system pipeline rather than at the YAML validation level.
Applied to files:
packages/apps/virtual-machine/README.md
📚 Learning: in the cozystack repository, the cozyvalues-gen tool does not support `@typedef` syntax for defining...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/apps/postgres/values.yaml:55-60
Timestamp: 2025-07-26T17:54:57.273Z
Learning: In the cozystack repository, the cozyvalues-gen tool does not support `typedef` syntax for defining custom type aliases in documentation comments.
Applied to files:
packages/apps/virtual-machine/README.md
packages/extra/monitoring/README.md
📚 Learning: in cozystack's schema generator annotation format, when documenting fields of array items, use the s...
Learnt from: NickVolynkin
PR: cozystack/cozystack#1216
File: packages/apps/virtual-machine/values.yaml:31-33
Timestamp: 2025-07-26T18:01:52.557Z
Learning: In cozystack's schema generator annotation format, when documenting fields of array items, use the singular form of the item type rather than array notation. For example, for a parameter `gpus {[]gpu}`, use `field gpu.name` rather than `field gpus[].name` to refer to the name field of each GPU object in the array.
Applied to files:
packages/extra/monitoring/README.md
🪛 LanguageTool
packages/apps/virtual-machine/README.md
[style] ~57-~57: To form a complete sentence, be sure to include a subject or ‘there’.
Context: ... of SSH public keys for authentication. Can be a single key or a list of keys. ...
(MISSING_IT_THERE)
🪛 markdownlint-cli2 (0.17.2)
packages/extra/monitoring/README.md
73-73: Bare URL used
(MD034, no-bare-urls)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: Build
🔇 Additional comments (5)
packages/extra/monitoring/README.md (2)
9-9
:host
default diverges from the schema
README states the default is an empty string, butvalues.schema.json
defines no default at all. Either add
"default": ""
to the schema or drop the Value column entry here so that docs and validation remain aligned.
49-54
:logsStorages
defaults out of sync with the schema
The table showsretentionPeriod = ""
andstorageClassName = null
, yet the schema’s default object sets:retentionPeriod: "1" storageClassName: "replicated"
Please make the two artefacts consistent—pick one set of defaults and update the other file.
packages/extra/monitoring/values.schema.json (3)
255-258
: Add an explicit default forhost
to match the READMEThe docs list an empty string as the default but the schema omits it. Add:
"host": { "description": "The hostname used to access the grafana externally (defaults to 'grafana' subdomain for the tenant host).", "type": "string", + "default": "" },
262-268
: AmbiguouslogsStorages
defaults
"retentionPeriod": "1"
is unqualified—days? hours?
AlsostorageClassName
defaults to"replicated"
while the README marks it optional (null
). Clarify units or use an ISO-style period ("1d"
), and synchronise the default value with the documentation.
298-314
: Documentation mismatch formetricsStorages
defaultsREADME shows blank /
null
defaults, but the schema hard-codes:shortterm.retentionPeriod: "3d" longterm.retentionPeriod: "14d" storageClassName: ""
Confirm whether these seeded examples are intended defaults or merely illustrative. If illustrative, move them into README examples and keep schema neutral; if they are true defaults, update the table.
Signed-off-by: Andrei Kvapil kvapss@gmail.com
What this PR does
Release note
Summary by CodeRabbit
Documentation
Schema Updates
Chores