docs: Clarify implemented vs planned features for BIND9 9.20 support #15
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Description
The docs/BIND9_9.20_SUPPORT.md documentation includes sections describing runtime version detection and template conditionals that are planned features rather than currently implemented functionality.
Current Issue
Users reading the documentation may expect:
bind9_versionvariable to be automatically set at runtimeHowever, the actual implementation strategy uses versioned branches instead:
mainbranch: BIND9 9.18.x (LTS) - hardcoded for 9.18.x9.20branch: BIND9 9.20+ - hardcoded for 9.20+Solution
Update documentation to:
Related Issues
Tasks
Design Spec: Clarify BIND9 9.20 Implemented vs Planned Features
Objective
Resolve the documentation and metadata mismatch where the role currently describes runtime BIND9 version detection and template conditionals as implemented behavior, while the actual project strategy is versioned branches.
Current Problem
docs/BIND9_9.20_SUPPORT.md,docs/VERSION_SUPPORT.md, andmeta/argument_specs.ymlcontain user-facing claims that imply:bind9_versionis automatically detected at runtime.tasks/main.ymlcontains or should contain version detection logic.The actual implementation does not set
bind9_version, does not use version-aware template conditionals, and keeps BIND9 compatibility boundaries at the branch level:main: BIND9 9.18.x LTS behavior.9.20: BIND9 9.20+ behavior.Selected Approach
Make a documentation and argument-spec correction only. Do not implement runtime version detection as part of this issue.
This is preferred because issue #15 is about making documentation truthful, and the branch-per-version strategy is the documented design decision from prior PR discussion. Adding runtime detection would be a behavior change with broader test and compatibility implications.
Files In Scope
docs/BIND9_9.20_SUPPORT.mddocs/VERSION_SUPPORT.mdmeta/argument_specs.ymlRequired Changes
docs/BIND9_9.20_SUPPORT.mdso the current implementation strategy is branch-per-version, not runtime detection plus conditionals.named.conf.generator.j2,named-checkconf,namedservice.docs/VERSION_SUPPORT.mdso its version-specific features section no longer presents runtime detection as the planned/current strategy. It should instead describe branch-level version targeting and mention runtime detection only as a possible future alternative.meta/argument_specs.ymlto remove the false public interface aroundbind9_version. Since the role does not set this variable or use it in templates, it should not be documented as an auto-detected, read-only option.Out of Scope
Validation
Validation should be lightweight and focused on this documentation/metadata fix:
Version detection is automatic at runtime,bind9_version,Runtime Version Detection, andTemplate Conditionals.meta/argument_specs.yml.Acceptance Criteria
tasks/main.ymlperforms runtime version detection.meta/argument_specs.ymlno longer advertisesbind9_versionas auto-detected behavior.Issue #15 Implementation Plan
Goal: Make the BIND9 9.20 documentation and role argument metadata accurately describe the current branch-per-version strategy, without changing role behavior.
Architecture: This is a documentation/metadata-only change.
docs/BIND9_9.20_SUPPORT.mdbecomes the specific implementation guide for branch-based 9.20 support,docs/VERSION_SUPPORT.mdkeeps the broader version policy aligned with that strategy, andmeta/argument_specs.ymlstops advertising abind9_versionvariable that the role does not set or consume.Tech Stack: Markdown, YAML, Ansible role metadata, local shell validation with
rg, Python YAML parsing oryamllintif available.File Structure
docs/BIND9_9.20_SUPPORT.mddocs/VERSION_SUPPORT.mdmeta/argument_specs.ymlbind9_versionas auto-detected behavior because no task sets it and no template uses it.No new files are required.
Task 1: Prepare Branch And Capture Baseline
Files:
Read:
docs/BIND9_9.20_SUPPORT.mdRead:
docs/VERSION_SUPPORT.mdRead:
meta/argument_specs.ymlRead:
tasks/main.ymlStep 1: Create a ticket branch
Run:
Expected: branch changes to
fix/issue-15-bind920-docs-strategy.Run:
Expected: only pre-existing untracked local workspace files such as
.ansible/and.vscode/, or a clean tree. Do not add those untracked local directories.Run:
Expected before editing: matches in all three files, including
docs/BIND9_9.20_SUPPORT.md,docs/VERSION_SUPPORT.md, andmeta/argument_specs.yml.Task 2: Correct
docs/BIND9_9.20_SUPPORT.mdFiles:
Modify:
docs/BIND9_9.20_SUPPORT.mdStep 1: Replace the overview, architecture, branch, and implementation sections
Apply this patch:
Implementation Details
-### 1. Version Detection (tasks/main.yml)
-```yaml
-- name: Detect BIND9 version at runtime
-- name: Set bind9_version fact
-```
-### 2. Meta/Argument Specs Updates
-The
meta/argument_specs.ymlhas been updated to:-- Document BIND9 9.20+ support alongside 9.18.x
-- Add
bind9_versionvariable documentation (read-only, auto-detected)-- Clarify version-specific behavior
-### 3. Molecule Testing
+### 1. Current Role Task Flow
+
+The role currently follows the same task structure on each version branch:
+
+1. Install the configured BIND9 packages from
bind9_packages.+2. Ensure backup and logging directories exist when enabled or configured.
+3. Render configured BIND9 files through
named.conf.generator.j2.+4. Validate the generated configuration with
named-checkconf -z.+5. Restore backed-up configuration files if validation fails.
+6. Start and enable the
namedservice.+
+There is no runtime
bind9_versionfact in this flow.+
+### 2. Meta/Argument Specs
+
+The
meta/argument_specs.ymlfile documents the public role inputs for the current branch. It must not document runtime-only variables that the role does not set or consume.+
+### 3. Molecule Testing
@@
-### 4. Template Version Compatibility
+### 4. Template Version Compatibility
@@
-Templates have been audited for BIND9 9.20 compatibility. The primary template files include:
+Templates in each version branch should be audited for the BIND9 series targeted by that branch. The primary template files include:
@@
-### 5. Deprecated Options Handling
+### 5. Deprecated Options Handling
@@
-BIND9 9.20 removes 44 options from 9.18. The role handles this through:
+BIND9 9.20 removes 44 options from 9.18. The 9.20 branch should handle this through:
-2. Conditional Removal: Templates check version and exclude removed options
+2. Branch-specific templates: Templates on the 9.20 branch omit removed options
Run:
Expected after editing: no matches except acceptable future-only wording for runtime detection/template conditionals. If a match implies current behavior, revise it before continuing.
Task 3: Correct
docs/VERSION_SUPPORT.mdFiles:
Modify:
docs/VERSION_SUPPORT.mdStep 1: Replace the version-specific features section
Replace the section from
## Version-Specific Featuresthrough the end of the### Conditional Configurationsubsection with this content:Run:
Expected after editing: no output.
Task 4: Correct
meta/argument_specs.ymlFiles:
Modify:
meta/argument_specs.ymlStep 1: Remove false runtime-detection wording from the role description
Change the
argument_specs.main.descriptionblock from:to:
bind9_versionoptionDelete this option block entirely:
Run:
Expected:
If
PyYAMLis not installed, run this fallback:Expected:
Task 5: Run Focused Validation
Files:
Read:
docs/BIND9_9.20_SUPPORT.mdRead:
docs/VERSION_SUPPORT.mdRead:
meta/argument_specs.ymlStep 1: Search for stale current-behavior claims
Run:
Expected: no output.
Run:
Expected: matches are acceptable only when they say runtime detection is not current behavior or is a possible future enhancement. There must be no match in
meta/argument_specs.ymlforbind9_version.Run:
Expected: either no lint errors, or the exact message:
Run:
Expected: diff only changes wording/metadata for the branch-per-version strategy. No task files, templates, Molecule files, or runtime behavior files should be modified.
Task 6: Commit And Update Issue
Files:
Commit:
docs/BIND9_9.20_SUPPORT.mdCommit:
docs/VERSION_SUPPORT.mdCommit:
meta/argument_specs.ymlUpdate: Gitea issue
#15Step 1: Commit the documentation and metadata fix
Run:
Expected: one commit is created with only the three scoped files.
Run:
Expected: branch is pushed to
origin.Use the Gitea MCP issue comment tool to add this summary after implementation:
Replace
<record actual result>with eitherpassedornot installed; syntax fallback passed.Plan Self-Review
Plan is ready for execution.
Implemented the documentation and metadata correction for #15.
Changed:
docs/BIND9_9.20_SUPPORT.md: current strategy is branch-per-version; runtime detection/template conditionals are future-only or negative-current.docs/VERSION_SUPPORT.md: version-specific features now describe branch-level targeting and explicitly state runtime detection is not current behavior.meta/argument_specs.yml: removed the unsupported auto-detectedbind9_versionpublic option.docs/BIND9_MIGRATION_GUIDE.md: removed a test-playbook example variable that impliedbind9_versionwas a supported role input.Validation:
PR: #20