RCA-2026-02-26 - Missing Antora Attributes in Change Request
Build warnings caused by referencing AsciiDoc attributes that don’t exist in antora.yml, violating the mandatory attribute verification rule.
Executive Summary
Documentation build for CR-2026-02-26-wazuh-syslog-integration.adoc produced 6 "skipping reference to missing attribute" warnings. Root cause: Claude wrote the document using assumed attribute names (kvm-01-ip, wazuh-manager-vip) without first verifying they exist in antora.yml. Contributing factor: inconsistent naming conventions in existing attributes (some use -01- suffix, others don’t). Fixed by adding attribute aliases and documenting a mandatory pre-write verification checklist.
Timeline
| Time | Event |
|---|---|
2026-02-26 18:58 |
User runs |
2026-02-26 18:59 |
User reports issue: "we keep on overlooking this and it’s not good" |
2026-02-26 19:00 |
Root cause identified: attributes used without verification |
2026-02-26 19:05 |
Fix applied: 5 attribute aliases added to antora.yml |
2026-02-26 19:08 |
RCA documented in project CLAUDE.md |
2026-02-26 19:10 |
Mandatory checklist added to global CLAUDE.md |
2026-02-26 19:12 |
Build verified clean, changes pushed |
Problem Statement
Symptoms
[18:58:18.820] WARN (asciidoctor): skipping reference to missing attribute: wazuh-manager-vip
[18:58:18.821] WARN (asciidoctor): skipping reference to missing attribute: wazuh-manager-vip
[18:58:18.821] WARN (asciidoctor): skipping reference to missing attribute: wazuh-manager-vip
[18:58:18.822] WARN (asciidoctor): skipping reference to missing attribute: kvm-01-ip
[18:58:18.823] WARN (asciidoctor): skipping reference to missing attribute: ipa-01-ip
[18:58:18.823] WARN (asciidoctor): skipping reference to missing attribute: keycloak-01-ip
[18:58:18.823] WARN (asciidoctor): skipping reference to missing attribute: ad-dc-ip
Additionally:
[18:58:18.790] WARN (asciidoctor): unterminated example block
file: CR-2026-02-25-wazuh-credential-rotation.adoc:718
Root Cause
5 Whys Analysis
| Why # | Question and Answer |
|---|---|
1 |
Why did attribute warnings occur? |
2 |
Why was the wrong attribute name used? |
3 |
Why was the assumption wrong? |
4 |
Why wasn’t antora.yml checked first? |
5 |
Why wasn’t build run before committing? |
Contributing Factors
| Factor | Description | Preventable? |
|---|---|---|
Time pressure |
User requested quick enhancement and push |
Partially (discipline over speed) |
Pattern assumption |
Assumed |
Yes (always verify, never assume) |
No build verification |
Committed without running |
Yes (mandatory pre-commit build) |
Attribute inconsistency |
Some hosts use |
Mitigated (added aliases for both patterns) |
No LSP for AsciiDoc |
IDE doesn’t autocomplete/validate attributes |
Partially (VS Code extension exists) |
Impact
Resolution
Immediate Actions
1. Added Attribute Aliases to antora.yml
# Monitoring Stack - added alias
wazuh-manager-vip: 10.50.1.134 # Alias for wazuh-api-vip
# Identity & Access - added aliases
ad-dc-ip: 10.50.1.50 # Alias for homedc-ip
keycloak-01-ip: 10.50.1.80 # Alias for keycloak-ip
ipa-01-ip: 10.50.1.100 # Alias for ipa-ip
# Storage & Compute - added alias
kvm-01-ip: 10.50.1.99 # Alias for kvm-ip
2. Fixed Unterminated Block in CR-2026-02-25
[%collapsible]
----- <-- Changed to ====
+====
[source,text]
----
content
----
----- <-- Already ====
+====
Preventive Measures
Short-term (Immediate)
| Action | Owner | Status |
|---|---|---|
Add pre-write attribute verification to CLAUDE.md |
Claude |
[x] Done |
Document RCA in project CLAUDE.md |
Claude |
[x] Done |
Add attribute aliases to handle both naming patterns |
Claude |
[x] Done |
Long-term (This quarter)
| Action | Owner | Status |
|---|---|---|
Standardize attribute naming: always use |
evanusmodestus |
[ ] Pending |
Add |
evanusmodestus |
[ ] Pending |
Consider pre-commit hook: |
evanusmodestus |
[ ] Pending |
Lessons Learned
What went well
-
Quick identification from clear error messages
-
Fix was additive (aliases) rather than destructive (renames)
-
RCA documented immediately, not deferred
What could be improved
-
Should have checked antora.yml BEFORE writing document
-
Should have run
makeBEFORE committing -
Should not make assumptions about naming patterns
Key Takeaways
|
Detection Commands
Before Writing: Verify Attribute Exists
# Search for attribute pattern
grep -i "kvm" docs/asciidoc/antora.yml
# List all IP attributes
grep -E "^\s+\w+-ip:" docs/asciidoc/antora.yml | awk -F: '{print $1}' | sort
After Writing: Find Undefined Attributes
# Build and extract missing attribute names
make 2>&1 | grep "missing attribute" | \
awk -F': ' '{print $NF}' | sort -u
wazuh-manager-vip
kvm-01-ip
ipa-01-ip
keycloak-01-ip
ad-dc-ip
Bulk Attribute Audit
# Find all {attribute} references in a document
grep -oE '\{[a-z0-9-]+\}' /path/to/document.adoc | \
tr -d '{}' | sort -u | while read attr; do
grep -q "^\s*${attr}:" docs/asciidoc/antora.yml && \
echo "✓ $attr" || echo "✗ $attr MISSING"
done
✓ wazuh-indexer-vip
✓ pfsense-ip
✗ wazuh-manager-vip MISSING
✗ kvm-01-ip MISSING
Related
-
2026-02-24 Include/Tag Mismatch - Similar antora build failures
-
CR-2026-02-26 Wazuh SIEM Integration - Affected document