You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- github-res-repository: hardcode `auto_init` so a new repository has a branch
for `github_branch_default`; ignored, so adopting an existing repo is a no-op
- azure-res-policy-set-definition: select the resource type from the scope,
since `management_group_id` is removed in azurerm v5
- fortios-utl-network-cidr and both system-interface modules: a /31 reports
RFC 3021 semantics — two usable hosts, not zero and an inverted range
- vap-nac: add `triggers_replace` so a changed binding is re-applied
- fortios-ptn-fortigate-system-settings: drop `ntp.interfaces`; listeners are
owned by fortios-ptn-fortigate-system-ntp-interface
- managedswitch-ports: move the `port/` submodule under `modules/`
Documentation no longer restates what the code declares, so a release or a
provider bump does not mean editing every file that mentions a version:
- READMEs pin `?ref=vX.Y.Z`, explained once in usage.md
- version bullets and the provider table give way to `versions.tf`; non-version
requirements such as the RBAC a module needs are kept
- README input and output tables give way to `variables.tf` and `outputs.tf`,
which carry a description on every entry and are CI-enforced to
- the empty "Known deferred work" and the stale "Outstanding repository work"
sections are removed
BREAKING CHANGE:
- azure-res-policy-set-definition at management-group scope recreates the
initiative and every assignment referencing it; see docs/modules/azure.md
- vap-nac replaces each binding once, rebinding live VAPs
- a /31 changes ipv4_usable_count, _first, _last and _usable_range
- ntp.interfaces is no longer accepted
- consumers sourcing managedswitch-ports/port move to modules/port
@@ -288,7 +288,7 @@ Re-run with `terraform init -upgrade`. This is a local artefact, never a reposit
288
288
sibling in `src/modules/`. FortiGate modules need the `fortigate` platform segment.
289
289
2.**Create all four files** — `main.tf`, `variables.tf`, `outputs.tf`, `versions.tf` — even if one is
290
290
short. Never fold them together.
291
-
3.**Pin versions** in `versions.tf`: `required_version = ">= 1.15"` and a provider constraint with
291
+
3.**Pin versions** in `versions.tf`: `required_version` matching the rest of the tree, and a provider constraint with
292
292
both a floor and an upper bound below the next major.
293
293
4.**Describe every variable and output.** The tree is at 100% description coverage; keep it there.
294
294
5.**Validate inputs** — length bounds, enums, regex — to the azure/entra standard, except where the
@@ -302,8 +302,8 @@ Re-run with `terraform init -upgrade`. This is a local artefact, never a reposit
302
302
8.`terraform fmt`, `init -backend=false`, `validate`, and
303
303
[`check-docs.py`](#consistency-checks) — the last one is what verifies steps 2, 4 and 7.
304
304
305
-
A `README.md` and an `examples/basic/` are welcome but not required — coverage is 16 of 63 and 1 of 63
306
-
respectively, so a new module without them is not an outlier.
305
+
A `README.md` and an `examples/basic/` are welcome but not required — most modules have neither,
306
+
so a new module without them is not an outlier.
307
307
308
308
Where a parent gains a submodule, add a **Submodules** section to the parent's README if it has one.
309
309
@@ -326,24 +326,6 @@ triggers are scoped to `main`, so a branch builds once a pull request is open ag
326
326
before. Nothing but `main` publishes, and the version `discovery` reports on a pull request is the
327
327
plain `X.Y.Z` that merging would release — there are no prerelease versions in this repository.
328
328
329
-
## Known deferred work
330
-
331
-
These were reviewed and consciously postponed because the fix is riskier than the defect. They are
332
-
**revisit, not won't-fix** — each needs to land behind a version tag with consumer coordination.
333
-
Don't fix them in passing.
334
-
335
-
| Item | Why deferred | Cost while deferred |
336
-
|---|---|---|
337
-
|`management_group_id` on `azurerm_policy_set_definition`| Migrating to `azurerm_management_group_policy_set_definition` changes the resource address — destroys and recreates live policy set definitions, and any assignment referencing them, without `moved` blocks |**The `< 5.0` azurerm cap is load-bearing.** azurerm v5 is unreachable until this lands. Deprecation warning on every plan. |
338
-
|`auto_init` on `github-res-repository`| Adding it may force repository replacement | The module only works against repositories that already have a commit — creating a brand-new empty repository fails at `github_branch_default`|
339
-
|`triggers_replace` on the `vap-nac` NAC binding | Re-binds live VAPs on next apply | Binding changes are not re-applied automatically |
340
-
|`ntp.interfaces` inside `ignore_changes` (`fortios-ptn-fortigate-system-settings`) | Ownership question against the sibling NTP module | Two modules can each believe they own NTP interface assignment |
341
-
|`/31` semantics in `fortios-utl-network-cidr`| Changes a value callers already consume | A `/31` reports `0` usable hosts and an inverted usable range |
342
-
343
-
Two open structural items, both cosmetic and both breaking to fix: the submodule at `port/` instead of
344
-
`modules/port/`, and `fortios-res-fortigate-wirelesscontroller-settings` being plural where the
345
-
underlying resource is `fortios_wirelesscontroller_setting`.
346
-
347
329
## Releases
348
330
349
331
The pipeline tags and publishes a GitHub Release on every push to `main`**that changes something
@@ -450,13 +432,6 @@ The manual trigger takes no inputs on purpose. It re-runs the pipeline against t
450
432
selected branch, derives the version the same way a push would, and the existing-tag check makes a
451
433
dispatch against an already-released commit a no-op rather than a duplicate.
452
434
453
-
## Outstanding repository work
454
-
455
-
- **README coverage is 16 of 63 modules**; `examples/` coverage is 1 of 63.
456
-
- **Validation coverage is uneven** — heavy in azure/entra, sparse in fortios.
457
-
- Workflow actions are pinned to version tags rather than commit SHAs. This is a settled choice, not
458
-
a gap — see [how actions are pinned](#how-actions-are-pinned) for the trade being made.
459
-
460
435
## Dependency updates
461
436
462
437
Renovate runs from this repository —
@@ -474,16 +449,15 @@ to the pinned action for the length of one step rather than left sitting on the
0 commit comments