@oddessentials/repo-standards 2.1.0 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -123,7 +123,7 @@
123
123
  "stage": "release"
124
124
  }
125
125
  },
126
- "description": "Use MAJOR.MINOR.PATCH versioning with clear rules and automated changelog generation based on commit history.",
126
+ "description": "Use MAJOR.MINOR.PATCH versioning with clear rules and automated changelog generation based on commit history. Maintain a single canonical version source (for example, package.json or VERSION) that all release artifacts use.",
127
127
  "id": "semantic-versioning",
128
128
  "label": "Semantic Versioning",
129
129
  "stack": {
@@ -135,20 +135,65 @@
135
135
  "cargo-release",
136
136
  "semantic-release"
137
137
  ],
138
- "notes": "Version is defined in Cargo.toml. Use cargo-release or semantic-release-cargo for automated versioning. Follow Conventional Commits for changelog generation.",
138
+ "notes": "Version is defined in Cargo.toml as the canonical source. Use cargo-release or semantic-release-cargo for automated versioning and GitHub release publishing, and follow Conventional Commits for changelog generation.",
139
+ "optionalFiles": [
140
+ "CHANGELOG.md"
141
+ ],
142
+ "requiredFiles": [
143
+ "Cargo.toml"
144
+ ],
145
+ "requiredScripts": [
146
+ "release"
147
+ ],
139
148
  "verification": "Check that Cargo.toml version follows SemVer and verify changelog generation from commit history."
140
149
  }
141
150
  },
151
+ {
152
+ "ciHints": {
153
+ "azure-devops": {
154
+ "stage": "release"
155
+ }
156
+ },
157
+ "description": "Use a single CI release pipeline that publishes all artifacts (GitHub releases, packages, containers) from the same canonical version source.",
158
+ "id": "unified-release-workflow",
159
+ "label": "Unified Release Workflow",
160
+ "stack": {
161
+ "exampleConfigFiles": [
162
+ ".github/workflows/release.yml",
163
+ "azure-pipelines.yml"
164
+ ],
165
+ "exampleTools": [
166
+ "cargo-release",
167
+ "cargo publish",
168
+ "docker buildx"
169
+ ],
170
+ "notes": "Use a single release pipeline to publish crates.io packages, GitHub releases, and Docker images from the Cargo.toml version.",
171
+ "optionalFiles": [
172
+ "CHANGELOG.md"
173
+ ],
174
+ "requiredScripts": [
175
+ "release"
176
+ ],
177
+ "verification": "Trigger the release pipeline and confirm all artifacts share the same version number and tag."
178
+ }
179
+ },
142
180
  {
143
181
  "ciHints": {
144
182
  "azure-devops": {
145
183
  "stage": "quality"
146
184
  }
147
185
  },
148
- "description": "Enforce structured commit messages such as Conventional Commits.",
186
+ "description": "Enforce structured commit messages such as Conventional Commits via commit-msg hooks and CI. This is required for deterministic versioning and changelog generation.",
149
187
  "id": "commit-linting",
150
188
  "label": "Commit Linting",
151
189
  "stack": {
190
+ "anyOfFiles": [
191
+ "commitlint.config.js",
192
+ "commitlint.config.cjs",
193
+ "commitlint.config.mjs",
194
+ "commitlint.config.json",
195
+ ".cz.toml"
196
+ ],
152
197
  "exampleConfigFiles": [
153
198
  "commitlint.config.js",
154
199
  ".cz.toml"
@@ -157,8 +202,11 @@
157
202
  "commitlint",
158
203
  "commitizen"
159
204
  ],
160
- "notes": "Use commitlint with husky or pre-commit for enforcing Conventional Commits. Works consistently with cargo workspaces.",
161
- "verification": "Test that non-conforming commit messages are rejected by the configured hooks or CI check."
205
+ "notes": "Use commitlint with husky or pre-commit for enforcing Conventional Commits and add a CI check to keep version/changelog automation deterministic.",
206
+ "requiredScripts": [
207
+ "commitlint"
208
+ ],
209
+ "verification": "Test that non-conforming commit messages are rejected by the configured hooks and CI check."
162
210
  }
163
211
  },
164
212
  {
@@ -269,7 +317,7 @@
269
317
  "stage": "quality"
270
318
  }
271
319
  },
272
- "description": "Use static type checking to catch errors before runtime and enforce strictness on new code.",
320
+ "description": "Use static type checking to catch errors before runtime and enforce strictness on new code. For JS/TS stacks, require a TypeScript-first policy with strict mode and a CI typecheck step; allow JSDoc/checkJs migration for legacy JS.",
273
321
  "id": "type-checking",
274
322
  "label": "Type Checking",
275
323
  "stack": {
@@ -321,6 +369,91 @@
321
369
  "verification": "Cargo.lock is present; run 'cargo audit' or 'cargo deny check' to verify security scanning."
322
370
  }
323
371
  },
372
+ {
373
+ "ciHints": {
374
+ "azure-devops": {
375
+ "stage": "build"
376
+ }
377
+ },
378
+ "description": "Ensure builds are reproducible by pinning dependencies, base images, and tool/runtime versions. Avoid network/time variance and fail when lockfiles drift.",
379
+ "id": "deterministic-builds",
380
+ "label": "Deterministic & Hermetic Builds",
381
+ "stack": {
382
+ "exampleConfigFiles": [
383
+ "Cargo.lock",
384
+ "rust-toolchain.toml"
385
+ ],
386
+ "exampleTools": [
387
+ "cargo build --locked"
388
+ ],
389
+ "notes": "Commit Cargo.lock for binaries/services and pin Rust versions with rust-toolchain.toml. Use --locked in CI.",
390
+ "optionalFiles": [
391
+ "rust-toolchain.toml"
392
+ ],
393
+ "requiredFiles": [
394
+ "Cargo.lock"
395
+ ],
396
+ "verification": "Cargo.lock is present and CI uses --locked. Rust toolchain is pinned."
397
+ }
398
+ },
399
+ {
400
+ "ciHints": {
401
+ "azure-devops": {
402
+ "stage": "security"
403
+ }
404
+ },
405
+ "description": "Produce SBOMs or provenance metadata, enable secret/code scanning, and sign tags or commits for critical repos.",
406
+ "id": "provenance-security",
407
+ "label": "Provenance & Security Metadata",
408
+ "stack": {
409
+ "exampleConfigFiles": [
410
+ ".github/workflows/codeql.yml",
411
+ ".github/workflows/provenance.yml"
412
+ ],
413
+ "exampleTools": [
414
+ "cargo-cyclonedx",
415
+ "syft",
416
+ "codeql",
417
+ "gitleaks",
418
+ "cosign"
419
+ ],
420
+ "notes": "Generate SBOM/provenance for crates and container artifacts, enable secret scanning, and sign tags/commits for critical repos.",
421
+ "optionalFiles": [
422
+ "SECURITY.md",
423
+ ".github/workflows/codeql.yml"
424
+ ],
425
+ "verification": "SBOM/provenance artifacts are published alongside releases, and CI runs secret/code scanning."
426
+ }
427
+ },
428
+ {
429
+ "ciHints": {
430
+ "azure-devops": {
431
+ "stage": "ci"
432
+ }
433
+ },
434
+ "description": "Adopt standard CI templates and config samples to scale across repositories, minimizing bespoke pipeline logic.",
435
+ "id": "ci-templates-automation",
436
+ "label": "CI Templates & Automation",
437
+ "stack": {
438
+ "anyOfFiles": [
439
+ ".github/workflows/ci.yml",
440
+ "azure-pipelines.yml"
441
+ ],
442
+ "exampleConfigFiles": [
443
+ ".github/workflows/ci.yml",
444
+ "azure-pipelines.yml"
445
+ ],
446
+ "exampleTools": [
447
+ "GitHub Actions reusable workflows",
448
+ "Azure DevOps templates"
449
+ ],
450
+ "notes": "Use shared CI templates for build/test/release stages to standardize across Rust repos.",
451
+ "requiredScripts": [
452
+ "ci"
453
+ ],
454
+ "verification": "CI pipeline references a shared template or reusable workflow and follows the standard job naming."
455
+ }
456
+ },
324
457
  {
325
458
  "ciHints": {
326
459
  "azure-devops": {
@@ -123,7 +123,7 @@
123
123
  "job": "release"
124
124
  }
125
125
  },
126
- "description": "Use MAJOR.MINOR.PATCH versioning with clear rules and automated changelog generation based on commit history.",
126
+ "description": "Use MAJOR.MINOR.PATCH versioning with clear rules and automated changelog generation based on commit history. Maintain a single canonical version source (for example, package.json or VERSION) that all release artifacts use.",
127
127
  "id": "semantic-versioning",
128
128
  "label": "Semantic Versioning",
129
129
  "stack": {
@@ -135,20 +135,65 @@
135
135
  "cargo-release",
136
136
  "semantic-release"
137
137
  ],
138
- "notes": "Version is defined in Cargo.toml. Use cargo-release or semantic-release-cargo for automated versioning. Follow Conventional Commits for changelog generation.",
138
+ "notes": "Version is defined in Cargo.toml as the canonical source. Use cargo-release or semantic-release-cargo for automated versioning and GitHub release publishing, and follow Conventional Commits for changelog generation.",
139
+ "optionalFiles": [
140
+ "CHANGELOG.md"
141
+ ],
142
+ "requiredFiles": [
143
+ "Cargo.toml"
144
+ ],
145
+ "requiredScripts": [
146
+ "release"
147
+ ],
139
148
  "verification": "Check that Cargo.toml version follows SemVer and verify changelog generation from commit history."
140
149
  }
141
150
  },
151
+ {
152
+ "ciHints": {
153
+ "github-actions": {
154
+ "job": "release"
155
+ }
156
+ },
157
+ "description": "Use a single CI release pipeline that publishes all artifacts (GitHub releases, packages, containers) from the same canonical version source.",
158
+ "id": "unified-release-workflow",
159
+ "label": "Unified Release Workflow",
160
+ "stack": {
161
+ "exampleConfigFiles": [
162
+ ".github/workflows/release.yml",
163
+ "azure-pipelines.yml"
164
+ ],
165
+ "exampleTools": [
166
+ "cargo-release",
167
+ "cargo publish",
168
+ "docker buildx"
169
+ ],
170
+ "notes": "Use a single release pipeline to publish crates.io packages, GitHub releases, and Docker images from the Cargo.toml version.",
171
+ "optionalFiles": [
172
+ "CHANGELOG.md"
173
+ ],
174
+ "requiredScripts": [
175
+ "release"
176
+ ],
177
+ "verification": "Trigger the release pipeline and confirm all artifacts share the same version number and tag."
178
+ }
179
+ },
142
180
  {
143
181
  "ciHints": {
144
182
  "github-actions": {
145
183
  "job": "ci"
146
184
  }
147
185
  },
148
- "description": "Enforce structured commit messages such as Conventional Commits.",
186
+ "description": "Enforce structured commit messages such as Conventional Commits via commit-msg hooks and CI. This is required for deterministic versioning and changelog generation.",
149
187
  "id": "commit-linting",
150
188
  "label": "Commit Linting",
151
189
  "stack": {
190
+ "anyOfFiles": [
191
+ "commitlint.config.js",
192
+ "commitlint.config.cjs",
193
+ "commitlint.config.mjs",
194
+ "commitlint.config.json",
195
+ ".cz.toml"
196
+ ],
152
197
  "exampleConfigFiles": [
153
198
  "commitlint.config.js",
154
199
  ".cz.toml"
@@ -157,8 +202,11 @@
157
202
  "commitlint",
158
203
  "commitizen"
159
204
  ],
160
- "notes": "Use commitlint with husky or pre-commit for enforcing Conventional Commits. Works consistently with cargo workspaces.",
161
- "verification": "Test that non-conforming commit messages are rejected by the configured hooks or CI check."
205
+ "notes": "Use commitlint with husky or pre-commit for enforcing Conventional Commits and add a CI check to keep version/changelog automation deterministic.",
206
+ "requiredScripts": [
207
+ "commitlint"
208
+ ],
209
+ "verification": "Test that non-conforming commit messages are rejected by the configured hooks and CI check."
162
210
  }
163
211
  },
164
212
  {
@@ -269,7 +317,7 @@
269
317
  "job": "ci"
270
318
  }
271
319
  },
272
- "description": "Use static type checking to catch errors before runtime and enforce strictness on new code.",
320
+ "description": "Use static type checking to catch errors before runtime and enforce strictness on new code. For JS/TS stacks, require a TypeScript-first policy with strict mode and a CI typecheck step; allow JSDoc/checkJs migration for legacy JS.",
273
321
  "id": "type-checking",
274
322
  "label": "Type Checking",
275
323
  "stack": {
@@ -321,6 +369,91 @@
321
369
  "verification": "Cargo.lock is present; run 'cargo audit' or 'cargo deny check' to verify security scanning."
322
370
  }
323
371
  },
372
+ {
373
+ "ciHints": {
374
+ "github-actions": {
375
+ "job": "ci"
376
+ }
377
+ },
378
+ "description": "Ensure builds are reproducible by pinning dependencies, base images, and tool/runtime versions. Avoid network/time variance and fail when lockfiles drift.",
379
+ "id": "deterministic-builds",
380
+ "label": "Deterministic & Hermetic Builds",
381
+ "stack": {
382
+ "exampleConfigFiles": [
383
+ "Cargo.lock",
384
+ "rust-toolchain.toml"
385
+ ],
386
+ "exampleTools": [
387
+ "cargo build --locked"
388
+ ],
389
+ "notes": "Commit Cargo.lock for binaries/services and pin Rust versions with rust-toolchain.toml. Use --locked in CI.",
390
+ "optionalFiles": [
391
+ "rust-toolchain.toml"
392
+ ],
393
+ "requiredFiles": [
394
+ "Cargo.lock"
395
+ ],
396
+ "verification": "Cargo.lock is present and CI uses --locked. Rust toolchain is pinned."
397
+ }
398
+ },
399
+ {
400
+ "ciHints": {
401
+ "github-actions": {
402
+ "job": "security"
403
+ }
404
+ },
405
+ "description": "Produce SBOMs or provenance metadata, enable secret/code scanning, and sign tags or commits for critical repos.",
406
+ "id": "provenance-security",
407
+ "label": "Provenance & Security Metadata",
408
+ "stack": {
409
+ "exampleConfigFiles": [
410
+ ".github/workflows/codeql.yml",
411
+ ".github/workflows/provenance.yml"
412
+ ],
413
+ "exampleTools": [
414
+ "cargo-cyclonedx",
415
+ "syft",
416
+ "codeql",
417
+ "gitleaks",
418
+ "cosign"
419
+ ],
420
+ "notes": "Generate SBOM/provenance for crates and container artifacts, enable secret scanning, and sign tags/commits for critical repos.",
421
+ "optionalFiles": [
422
+ "SECURITY.md",
423
+ ".github/workflows/codeql.yml"
424
+ ],
425
+ "verification": "SBOM/provenance artifacts are published alongside releases, and CI runs secret/code scanning."
426
+ }
427
+ },
428
+ {
429
+ "ciHints": {
430
+ "github-actions": {
431
+ "job": "ci"
432
+ }
433
+ },
434
+ "description": "Adopt standard CI templates and config samples to scale across repositories, minimizing bespoke pipeline logic.",
435
+ "id": "ci-templates-automation",
436
+ "label": "CI Templates & Automation",
437
+ "stack": {
438
+ "anyOfFiles": [
439
+ ".github/workflows/ci.yml",
440
+ "azure-pipelines.yml"
441
+ ],
442
+ "exampleConfigFiles": [
443
+ ".github/workflows/ci.yml",
444
+ "azure-pipelines.yml"
445
+ ],
446
+ "exampleTools": [
447
+ "GitHub Actions reusable workflows",
448
+ "Azure DevOps templates"
449
+ ],
450
+ "notes": "Use shared CI templates for build/test/release stages to standardize across Rust repos.",
451
+ "requiredScripts": [
452
+ "ci"
453
+ ],
454
+ "verification": "CI pipeline references a shared template or reusable workflow and follows the standard job naming."
455
+ }
456
+ },
324
457
  {
325
458
  "ciHints": {
326
459
  "github-actions": {
@@ -138,7 +138,7 @@
138
138
  "job": "release"
139
139
  }
140
140
  },
141
- "description": "Use MAJOR.MINOR.PATCH versioning with clear rules and automated changelog generation based on commit history.",
141
+ "description": "Use MAJOR.MINOR.PATCH versioning with clear rules and automated changelog generation based on commit history. Maintain a single canonical version source (for example, package.json or VERSION) that all release artifacts use.",
142
142
  "id": "semantic-versioning",
143
143
  "label": "Semantic Versioning",
144
144
  "stack": {
@@ -150,10 +150,51 @@
150
150
  "cargo-release",
151
151
  "semantic-release"
152
152
  ],
153
- "notes": "Version is defined in Cargo.toml. Use cargo-release or semantic-release-cargo for automated versioning. Follow Conventional Commits for changelog generation.",
153
+ "notes": "Version is defined in Cargo.toml as the canonical source. Use cargo-release or semantic-release-cargo for automated versioning and GitHub release publishing, and follow Conventional Commits for changelog generation.",
154
+ "optionalFiles": [
155
+ "CHANGELOG.md"
156
+ ],
157
+ "requiredFiles": [
158
+ "Cargo.toml"
159
+ ],
160
+ "requiredScripts": [
161
+ "release"
162
+ ],
154
163
  "verification": "Check that Cargo.toml version follows SemVer and verify changelog generation from commit history."
155
164
  }
156
165
  },
166
+ {
167
+ "ciHints": {
168
+ "azure-devops": {
169
+ "stage": "release"
170
+ },
171
+ "github-actions": {
172
+ "job": "release"
173
+ }
174
+ },
175
+ "description": "Use a single CI release pipeline that publishes all artifacts (GitHub releases, packages, containers) from the same canonical version source.",
176
+ "id": "unified-release-workflow",
177
+ "label": "Unified Release Workflow",
178
+ "stack": {
179
+ "exampleConfigFiles": [
180
+ ".github/workflows/release.yml",
181
+ "azure-pipelines.yml"
182
+ ],
183
+ "exampleTools": [
184
+ "cargo-release",
185
+ "cargo publish",
186
+ "docker buildx"
187
+ ],
188
+ "notes": "Use a single release pipeline to publish crates.io packages, GitHub releases, and Docker images from the Cargo.toml version.",
189
+ "optionalFiles": [
190
+ "CHANGELOG.md"
191
+ ],
192
+ "requiredScripts": [
193
+ "release"
194
+ ],
195
+ "verification": "Trigger the release pipeline and confirm all artifacts share the same version number and tag."
196
+ }
197
+ },
157
198
  {
158
199
  "ciHints": {
159
200
  "azure-devops": {
@@ -163,10 +204,17 @@
163
204
  "job": "ci"
164
205
  }
165
206
  },
166
- "description": "Enforce structured commit messages such as Conventional Commits.",
207
+ "description": "Enforce structured commit messages such as Conventional Commits via commit-msg hooks and CI. This is required for deterministic versioning and changelog generation.",
167
208
  "id": "commit-linting",
168
209
  "label": "Commit Linting",
169
210
  "stack": {
211
+ "anyOfFiles": [
212
+ "commitlint.config.js",
213
+ "commitlint.config.cjs",
214
+ "commitlint.config.mjs",
215
+ "commitlint.config.json",
216
+ ".cz.toml"
217
+ ],
170
218
  "exampleConfigFiles": [
171
219
  "commitlint.config.js",
172
220
  ".cz.toml"
@@ -175,8 +223,11 @@
175
223
  "commitlint",
176
224
  "commitizen"
177
225
  ],
178
- "notes": "Use commitlint with husky or pre-commit for enforcing Conventional Commits. Works consistently with cargo workspaces.",
179
- "verification": "Test that non-conforming commit messages are rejected by the configured hooks or CI check."
226
+ "notes": "Use commitlint with husky or pre-commit for enforcing Conventional Commits and add a CI check to keep version/changelog automation deterministic.",
227
+ "requiredScripts": [
228
+ "commitlint"
229
+ ],
230
+ "verification": "Test that non-conforming commit messages are rejected by the configured hooks and CI check."
180
231
  }
181
232
  },
182
233
  {
@@ -302,7 +353,7 @@
302
353
  "job": "ci"
303
354
  }
304
355
  },
305
- "description": "Use static type checking to catch errors before runtime and enforce strictness on new code.",
356
+ "description": "Use static type checking to catch errors before runtime and enforce strictness on new code. For JS/TS stacks, require a TypeScript-first policy with strict mode and a CI typecheck step; allow JSDoc/checkJs migration for legacy JS.",
306
357
  "id": "type-checking",
307
358
  "label": "Type Checking",
308
359
  "stack": {
@@ -357,6 +408,100 @@
357
408
  "verification": "Cargo.lock is present; run 'cargo audit' or 'cargo deny check' to verify security scanning."
358
409
  }
359
410
  },
411
+ {
412
+ "ciHints": {
413
+ "azure-devops": {
414
+ "stage": "build"
415
+ },
416
+ "github-actions": {
417
+ "job": "ci"
418
+ }
419
+ },
420
+ "description": "Ensure builds are reproducible by pinning dependencies, base images, and tool/runtime versions. Avoid network/time variance and fail when lockfiles drift.",
421
+ "id": "deterministic-builds",
422
+ "label": "Deterministic & Hermetic Builds",
423
+ "stack": {
424
+ "exampleConfigFiles": [
425
+ "Cargo.lock",
426
+ "rust-toolchain.toml"
427
+ ],
428
+ "exampleTools": [
429
+ "cargo build --locked"
430
+ ],
431
+ "notes": "Commit Cargo.lock for binaries/services and pin Rust versions with rust-toolchain.toml. Use --locked in CI.",
432
+ "optionalFiles": [
433
+ "rust-toolchain.toml"
434
+ ],
435
+ "requiredFiles": [
436
+ "Cargo.lock"
437
+ ],
438
+ "verification": "Cargo.lock is present and CI uses --locked. Rust toolchain is pinned."
439
+ }
440
+ },
441
+ {
442
+ "ciHints": {
443
+ "azure-devops": {
444
+ "stage": "security"
445
+ },
446
+ "github-actions": {
447
+ "job": "security"
448
+ }
449
+ },
450
+ "description": "Produce SBOMs or provenance metadata, enable secret/code scanning, and sign tags or commits for critical repos.",
451
+ "id": "provenance-security",
452
+ "label": "Provenance & Security Metadata",
453
+ "stack": {
454
+ "exampleConfigFiles": [
455
+ ".github/workflows/codeql.yml",
456
+ ".github/workflows/provenance.yml"
457
+ ],
458
+ "exampleTools": [
459
+ "cargo-cyclonedx",
460
+ "syft",
461
+ "codeql",
462
+ "gitleaks",
463
+ "cosign"
464
+ ],
465
+ "notes": "Generate SBOM/provenance for crates and container artifacts, enable secret scanning, and sign tags/commits for critical repos.",
466
+ "optionalFiles": [
467
+ "SECURITY.md",
468
+ ".github/workflows/codeql.yml"
469
+ ],
470
+ "verification": "SBOM/provenance artifacts are published alongside releases, and CI runs secret/code scanning."
471
+ }
472
+ },
473
+ {
474
+ "ciHints": {
475
+ "azure-devops": {
476
+ "stage": "ci"
477
+ },
478
+ "github-actions": {
479
+ "job": "ci"
480
+ }
481
+ },
482
+ "description": "Adopt standard CI templates and config samples to scale across repositories, minimizing bespoke pipeline logic.",
483
+ "id": "ci-templates-automation",
484
+ "label": "CI Templates & Automation",
485
+ "stack": {
486
+ "anyOfFiles": [
487
+ ".github/workflows/ci.yml",
488
+ "azure-pipelines.yml"
489
+ ],
490
+ "exampleConfigFiles": [
491
+ ".github/workflows/ci.yml",
492
+ "azure-pipelines.yml"
493
+ ],
494
+ "exampleTools": [
495
+ "GitHub Actions reusable workflows",
496
+ "Azure DevOps templates"
497
+ ],
498
+ "notes": "Use shared CI templates for build/test/release stages to standardize across Rust repos.",
499
+ "requiredScripts": [
500
+ "ci"
501
+ ],
502
+ "verification": "CI pipeline references a shared template or reusable workflow and follows the standard job naming."
503
+ }
504
+ },
360
505
  {
361
506
  "ciHints": {
362
507
  "azure-devops": {
@@ -447,10 +447,10 @@
447
447
  "type": "object"
448
448
  }
449
449
  },
450
- "$id": "https://oddessentials.com/schemas/repo-standards/v3/standards.schema.json",
450
+ "$id": "https://oddessentials.com/schemas/repo-standards/v2/standards.schema.json",
451
451
  "$schema": "http://json-schema.org/draft-07/schema#",
452
452
  "additionalProperties": false,
453
- "description": "Schema for repo-standards master configuration (v3+). Enforces strict validation with additionalProperties: false.",
453
+ "description": "Schema for repo-standards master configuration (v2+). Enforces strict validation with additionalProperties: false.",
454
454
  "properties": {
455
455
  "checklist": {
456
456
  "$ref": "#/$defs/Checklist"
@@ -481,8 +481,8 @@
481
481
  "type": "object"
482
482
  },
483
483
  "version": {
484
- "description": "Schema version. Must be 3+ for strict validation with additionalProperties: false.",
485
- "minimum": 3,
484
+ "description": "Schema version. Must be 2+ for strict validation with additionalProperties: false.",
485
+ "minimum": 2,
486
486
  "type": "integer"
487
487
  }
488
488
  },