@alteriom/painlessmesh 1.8.14 → 1.9.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.
Files changed (208) hide show
  1. package/BRIDGE_TO_INTERNET.md +229 -0
  2. package/CHANGELOG.md +89 -1
  3. package/CONTRIBUTING.md +79 -0
  4. package/README.md +70 -143
  5. package/docs/README.md +1 -0
  6. package/docs/api/shared-gateway.md +1207 -0
  7. package/docs/troubleshooting/common-issues.md +28 -0
  8. package/docs/troubleshooting/faq.md +113 -12
  9. package/examples/basic/test/simulator/CMakeLists.txt +40 -0
  10. package/examples/basic/test/simulator/README.md +149 -0
  11. package/examples/basic/test/simulator/firmware/basic_firmware.hpp +117 -0
  12. package/examples/basic/test/simulator/scenarios/basic_mesh_test.yaml +81 -0
  13. package/examples/bridge/bridge.ino +17 -4
  14. package/examples/bridge_failover/README.md +81 -0
  15. package/examples/bridge_failover/bridge_failover.ino +51 -6
  16. package/examples/sharedGateway/README.md +235 -0
  17. package/examples/{meshCommandNode → sharedGateway}/platformio.ini +3 -2
  18. package/examples/sharedGateway/sharedGateway.ino +303 -0
  19. package/library.json +3 -22
  20. package/library.properties +1 -1
  21. package/package.json +3 -3
  22. package/src/arduino/wifi.hpp +380 -13
  23. package/src/painlessmesh/gateway.hpp +2120 -0
  24. package/src/painlessmesh/mesh.hpp +1034 -6
  25. package/src/painlessmesh/message_tracker.hpp +311 -0
  26. package/src/painlessmesh/protocol.hpp +6 -0
  27. package/DOCUMENTATION_INDEX.md +0 -146
  28. package/docs/API_DESIGN_GUIDELINES.md +0 -414
  29. package/docs/ARDUINO_LIBRARY_MANAGER_SUBMISSION.md +0 -331
  30. package/docs/BOOLEAN_NAMING_CONVENTION.md +0 -235
  31. package/docs/BRIDGE_FAILOVER.md +0 -512
  32. package/docs/BRIDGE_HEALTH_MONITORING.md +0 -293
  33. package/docs/CHANNEL_SYNCHRONIZATION.md +0 -209
  34. package/docs/CREATE_MISSING_RELEASES.md +0 -321
  35. package/docs/DOCUMENTATION_MIGRATION_PLAN.md +0 -176
  36. package/docs/FAQ_VERSION_NUMBERS.md +0 -152
  37. package/docs/IMPLEMENTATION_PLAN_MESH_TOPOLOGY.md +0 -1062
  38. package/docs/MESH_TOPOLOGY_GUIDE.md +0 -992
  39. package/docs/MESH_TOPOLOGY_PROGRESS.md +0 -422
  40. package/docs/MQTT_BRIDGE_COMMANDS.md +0 -894
  41. package/docs/MQTT_BRIDGE_IMPLEMENTATION_SUMMARY.md +0 -324
  42. package/docs/MQTT_COMMAND_SCHEMA_PROPOSAL.md +0 -576
  43. package/docs/MQTT_SCHEMA_COMPLIANCE.md +0 -340
  44. package/docs/MQTT_SCHEMA_PROPOSALS.md +0 -446
  45. package/docs/MQTT_SCHEMA_REVIEW.md +0 -690
  46. package/docs/OTA_COMMANDS_REFERENCE.md +0 -554
  47. package/docs/PHASE1_GUIDE.md +0 -349
  48. package/docs/PHASE2_GUIDE.md +0 -543
  49. package/docs/QUICK_REFERENCE_VERSIONING.md +0 -127
  50. package/docs/RELEASE_AGENT_SUMMARY.md +0 -386
  51. package/docs/SCHEMA_VALIDATION_CHECKLIST.md +0 -222
  52. package/docs/VERSION_MANAGEMENT.md +0 -213
  53. package/docs/archive/DOCUSAURUS_DEPLOYMENT.md +0 -166
  54. package/docs/archive/FEATURE_PROPOSALS.md +0 -337
  55. package/docs/archive/LIBRARY_JSON_FIX.md +0 -98
  56. package/docs/archive/LIBRARY_STRUCTURE_FIX.md +0 -215
  57. package/docs/archive/PHASE1_IMPLEMENTATION.md +0 -325
  58. package/docs/archive/PHASE2_IMPLEMENTATION.md +0 -567
  59. package/docs/archive/RELEASE_SUMMARY.md +0 -173
  60. package/docs/archive/SCONS_BUILD_FIX.md +0 -313
  61. package/docs/archive/TRIGGER_RELEASE.md +0 -280
  62. package/docs/archive/VECTOR_INCLUDE_FIX.md +0 -129
  63. package/docs/archive/ota-and-status-enhancements.md +0 -911
  64. package/docs/archive/ota-status-architecture-diagrams.md +0 -658
  65. package/docs/archive/ota-status-quick-reference.md +0 -284
  66. package/docs/design/.gitkeep +0 -1
  67. package/docs/design/STATION_CREDENTIALS_DESIGN.md +0 -182
  68. package/docs/development/ARDUINO_COMPLIANCE_SUMMARY.md +0 -71
  69. package/docs/development/CODE_REFACTORING_RECOMMENDATIONS.md +0 -1011
  70. package/docs/development/DOCKER_TESTING.md +0 -196
  71. package/docs/development/PLATFORMIO_USAGE.md +0 -180
  72. package/docs/development/TESTING_SUMMARY.md +0 -126
  73. package/docs/development/contributing.md +0 -301
  74. package/docs/development/documentation.md +0 -583
  75. package/docs/features/DIAGNOSTICS_API.md +0 -534
  76. package/docs/implementation/BRIDGE_ARCHITECTURE_IMPLEMENTATION.md +0 -340
  77. package/docs/implementation/BRIDGE_HEALTH_MONITORING_IMPLEMENTATION.md +0 -213
  78. package/docs/implementation/BRIDGE_STATUS_FEATURE.md +0 -635
  79. package/docs/implementation/DIAGNOSTICS_API_IMPLEMENTATION.md +0 -232
  80. package/docs/implementation/IMPLEMENTATION_COMPLETE.md +0 -228
  81. package/docs/implementation/IMPLEMENTATION_NTP_TIME_SYNC.md +0 -325
  82. package/docs/implementation/IMPLEMENTATION_SUMMARY.md +0 -316
  83. package/docs/implementation/MESSAGE_QUEUE_IMPLEMENTATION.md +0 -405
  84. package/docs/implementation/MULTI_BRIDGE_IMPLEMENTATION.md +0 -520
  85. package/docs/implementation/NTP_TIME_SYNC_FEATURE.md +0 -392
  86. package/docs/improvements/FUTURE_PROPOSALS.md +0 -1016
  87. package/docs/improvements/IMPLEMENTATION_HISTORY.md +0 -1091
  88. package/docs/improvements/OTA_STATUS_ENHANCEMENTS.md +0 -709
  89. package/docs/improvements/README.md +0 -212
  90. package/docs/internal/CUSTOM_AGENT_ANALYSIS.md +0 -391
  91. package/docs/internal/ISSUE_65_VERIFICATION.md +0 -947
  92. package/docs/internal/ISSUE_66_CLOSURE.md +0 -249
  93. package/docs/internal/ISSUE_66_STATUS.md +0 -316
  94. package/docs/internal/PR_SUMMARY.md +0 -315
  95. package/docs/internal/REVIEW_SUMMARY.md +0 -332
  96. package/docs/multi-bridge-setup.md +0 -1025
  97. package/docs/platformio-publishing.md +0 -255
  98. package/docs/platformio-setup-summary.md +0 -121
  99. package/docs/releases/ANNOUNCEMENT_v1.8.6.md +0 -63
  100. package/docs/releases/ANNOUNCEMENT_v1.8.7.md +0 -113
  101. package/docs/releases/BRIDGE_STATUS_SELF_REGISTRATION_FIX.md +0 -221
  102. package/docs/releases/FEATURE_HISTORY.md +0 -543
  103. package/docs/releases/GITHUB_RELEASE_v1.8.6.md +0 -71
  104. package/docs/releases/GITHUB_RELEASE_v1.8.7.md +0 -90
  105. package/docs/releases/PATCH_v1.7.2.md +0 -262
  106. package/docs/releases/PATCH_v1.7.3.md +0 -262
  107. package/docs/releases/PATCH_v1.7.4.md +0 -219
  108. package/docs/releases/PHASE1_SUMMARY.md +0 -246
  109. package/docs/releases/PHASE2_SUMMARY.md +0 -499
  110. package/docs/releases/PUBLISH_v1.8.0_INSTRUCTIONS.md +0 -163
  111. package/docs/releases/QUICK_START_RELEASES.md +0 -113
  112. package/docs/releases/RELEASE_CHECKLIST_1.8.10.md +0 -331
  113. package/docs/releases/RELEASE_CHECKLIST_1.8.9.md +0 -207
  114. package/docs/releases/RELEASE_CHECKLIST_v1.7.4.md +0 -253
  115. package/docs/releases/RELEASE_CHECKLIST_v1.7.5.md +0 -315
  116. package/docs/releases/RELEASE_CHECKLIST_v1.7.6.md +0 -389
  117. package/docs/releases/RELEASE_CHECKLIST_v1.8.0.md +0 -331
  118. package/docs/releases/RELEASE_CHECKLIST_v1.8.2.md +0 -309
  119. package/docs/releases/RELEASE_NOTES_1.7.0.md +0 -539
  120. package/docs/releases/RELEASE_NOTES_1.8.10.md +0 -239
  121. package/docs/releases/RELEASE_NOTES_1.8.9.md +0 -213
  122. package/docs/releases/RELEASE_NOTES_v1.8.0.md +0 -685
  123. package/docs/releases/RELEASE_NOTES_v1.8.1.md +0 -221
  124. package/docs/releases/RELEASE_NOTES_v1.8.2.md +0 -421
  125. package/docs/releases/RELEASE_NOTES_v1.8.3.md +0 -292
  126. package/docs/releases/RELEASE_NOTES_v1.8.4.md +0 -277
  127. package/docs/releases/RELEASE_NOTES_v1.8.6.md +0 -205
  128. package/docs/releases/RELEASE_NOTES_v1.8.7.md +0 -184
  129. package/docs/releases/RELEASE_PLAN_v1.7.6.md +0 -816
  130. package/docs/releases/RELEASE_SUMMARY_1.8.10.md +0 -193
  131. package/docs/releases/RELEASE_SUMMARY_v1.7.4.md +0 -276
  132. package/docs/releases/RELEASE_SUMMARY_v1.7.5.md +0 -322
  133. package/docs/releases/RELEASE_SUMMARY_v1.7.6.md +0 -436
  134. package/docs/releases/RELEASE_SUMMARY_v1.7.7.md +0 -391
  135. package/docs/releases/RELEASE_SUMMARY_v1.7.8.md +0 -523
  136. package/docs/releases/RELEASE_SUMMARY_v1.7.9.md +0 -542
  137. package/docs/troubleshooting/ARDUINO_IDE_VERSION_FIX_SUMMARY.md +0 -229
  138. package/docs/troubleshooting/ARDUINO_LIBRARY_NAME_FIX.md +0 -197
  139. package/docs/troubleshooting/CRASH_QUICK_REF.md +0 -93
  140. package/docs/troubleshooting/ESP32_C6_COMPATIBILITY.md +0 -157
  141. package/docs/troubleshooting/FREERTOS_ASSERTION_FAILURE.md +0 -288
  142. package/docs/troubleshooting/FREERTOS_FIX_IMPLEMENTATION.md +0 -267
  143. package/docs/troubleshooting/NPM_PUBLISHING_ISSUE_SUMMARY.md +0 -110
  144. package/docs/troubleshooting/PAINLESSMESH_V1.7.4_COMPILATION_ISSUES.md +0 -547
  145. package/docs/troubleshooting/QUICK_FIX_FREERTOS.md +0 -164
  146. package/docs/troubleshooting/SENSOR_NODE_CONNECTION_CRASH.md +0 -264
  147. package/docs/troubleshooting/station-reconnection-issues.md +0 -172
  148. package/docs/v1.7.7_MQTT_IMPROVEMENTS.md +0 -794
  149. package/docs/wiki/API-Reference.md +0 -246
  150. package/docs/wiki/Complete-Documentation.md +0 -123
  151. package/examples/alteriomImproved/alteriom_sensor_package.hpp +0 -224
  152. package/examples/alteriomImproved/improved_sensor_node.ino +0 -248
  153. package/examples/alteriomImproved/platformio.ini +0 -32
  154. package/examples/alteriomMetricsHealth/alteriom_sensor_package.hpp +0 -796
  155. package/examples/alteriomMetricsHealth/metrics_health_node.ino +0 -429
  156. package/examples/alteriomMetricsHealth/platformio.ini +0 -26
  157. package/examples/alteriomPhase1/alteriom_sensor_package.hpp +0 -224
  158. package/examples/alteriomPhase1/phase1_features.ino +0 -242
  159. package/examples/alteriomPhase1/platformio.ini +0 -26
  160. package/examples/alteriomPhase2/alteriom_sensor_package.hpp +0 -224
  161. package/examples/alteriomPhase2/phase2_features.ino +0 -186
  162. package/examples/alteriomPhase2/platformio.ini +0 -26
  163. package/examples/alteriomSensorNode/alteriom_sensor_node.ino +0 -186
  164. package/examples/alteriomSensorNode/alteriom_sensor_package.hpp +0 -1227
  165. package/examples/alteriomSensorNode/platformio.ini +0 -26
  166. package/examples/bridge/alteriom_sensor_package.hpp +0 -1170
  167. package/examples/bridge/bridge_health_monitoring_example.ino +0 -188
  168. package/examples/bridge/enhanced_mqtt_bridge.hpp +0 -610
  169. package/examples/bridge/enhanced_mqtt_bridge_example.ino +0 -226
  170. package/examples/bridge/mesh_event_publisher.hpp +0 -253
  171. package/examples/bridge/mesh_topology_reporter.hpp +0 -303
  172. package/examples/bridge/mqtt_command_bridge.hpp +0 -459
  173. package/examples/bridge/mqtt_status_bridge.hpp +0 -519
  174. package/examples/bridgeAwareSensorNode/alteriom_sensor_package.hpp +0 -1227
  175. package/examples/bridgeAwareSensorNode/bridgeAwareSensorNode.ino +0 -342
  176. package/examples/bridgeAwareSensorNode/platformio.ini +0 -26
  177. package/examples/diagnosticsExample/diagnosticsExample.ino +0 -171
  178. package/examples/diagnosticsExample/platformio.ini +0 -26
  179. package/examples/echoNode/echoNode.ino +0 -33
  180. package/examples/echoNode/platformio.ini +0 -26
  181. package/examples/meshCommandNode/alteriom_sensor_package.hpp +0 -235
  182. package/examples/meshCommandNode/meshCommandNode.ino +0 -265
  183. package/examples/mqttCommandBridge/alteriom_sensor_package.hpp +0 -235
  184. package/examples/mqttCommandBridge/mesh_event_publisher.hpp +0 -253
  185. package/examples/mqttCommandBridge/mesh_topology_reporter.hpp +0 -303
  186. package/examples/mqttCommandBridge/mqttCommandBridge.ino +0 -254
  187. package/examples/mqttCommandBridge/mqtt_command_bridge.hpp +0 -462
  188. package/examples/mqttCommandBridge/platformio.ini +0 -27
  189. package/examples/mqttStatusBridge/mqttStatusBridge.ino +0 -218
  190. package/examples/mqttStatusBridge/mqtt_status_bridge.hpp +0 -522
  191. package/examples/mqttStatusBridge/platformio.ini +0 -27
  192. package/examples/mqttTopologyTest/README.md +0 -467
  193. package/examples/mqttTopologyTest/mqttTopologyTest.ino +0 -754
  194. package/examples/mqttTopologyTest/platformio.ini +0 -27
  195. package/examples/multi_bridge/README.md +0 -346
  196. package/examples/multi_bridge/primary_bridge.ino +0 -96
  197. package/examples/multi_bridge/regular_node.ino +0 -141
  198. package/examples/multi_bridge/secondary_bridge.ino +0 -111
  199. package/examples/ntpTimeSyncBridge/alteriom_sensor_package.hpp +0 -1383
  200. package/examples/ntpTimeSyncBridge/ntpTimeSyncBridge.ino +0 -86
  201. package/examples/ntpTimeSyncNode/alteriom_sensor_package.hpp +0 -1383
  202. package/examples/ntpTimeSyncNode/ntpTimeSyncNode.ino +0 -109
  203. package/examples/queued_alarms/README.md +0 -390
  204. package/examples/queued_alarms/queued_alarms.ino +0 -265
  205. package/examples/routing_demo/README.md +0 -172
  206. package/examples/routing_demo/routing_demo.ino +0 -102
  207. package/examples/rtcIntegration/README.md +0 -294
  208. package/examples/rtcIntegration/rtcIntegration.ino +0 -210
@@ -1,386 +0,0 @@
1
- # Release Agent Implementation Summary
2
-
3
- ## Overview
4
-
5
- This document summarizes the implementation of the Release Agent system for AlteriomPainlessMesh, completed as part of preparing for release 1.7.9.
6
-
7
- **Date:** November 8, 2025
8
- **Release:** v1.7.9
9
- **Agent Version:** v1.0
10
-
11
- ## Problem Statement
12
-
13
- The project needed to:
14
- 1. Verify that all documentation is up to date for release 1.7.9
15
- 2. Verify that all requirements for auto-release are done
16
- 3. Create a release agent that would ensure consistency in all future releases
17
-
18
- ## Solution
19
-
20
- A comprehensive Release Agent system was created to automate release validation and ensure consistency across all future releases.
21
-
22
- ## Implementation Details
23
-
24
- ### 1. Release Agent Specification (`.github/agents/release-agent.md`)
25
-
26
- A detailed specification document that defines:
27
-
28
- - **Pre-Release Validation**: 10 categories of checks
29
- - Version Consistency
30
- - Documentation Validation
31
- - Code Quality Checks
32
- - Dependency Validation
33
- - Example Code Validation
34
- - Release Workflow Validation
35
-
36
- - **Release Process**: 4 phases
37
- - Preparation Phase
38
- - Commit Phase
39
- - Automation Phase
40
- - Verification Phase
41
-
42
- - **Post-Release Tasks**: 4 categories
43
- - Update Documentation
44
- - Prepare for Next Development Cycle
45
- - Communication
46
- - Monitoring
47
-
48
- - **Agent Decision Tree**: Clear flowchart for validation
49
- - **Configuration**: Required secrets and permissions
50
- - **Release Checklist**: Comprehensive checklist for every release
51
- - **Error Recovery**: Solutions for common issues
52
-
53
- **Size:** 327 lines
54
- **Coverage:** Complete release lifecycle
55
-
56
- ### 2. Release Agent Script (`scripts/release-agent.sh`)
57
-
58
- An executable bash script that implements the specification:
59
-
60
- **Features:**
61
- - 21+ automated validation checks
62
- - Color-coded visual output (Green/Red/Yellow/Blue)
63
- - Clear pass/fail/warning indicators
64
- - Specific error recovery guidance
65
- - CI/CD environment detection
66
- - Professional release summary
67
-
68
- **Validation Checks:**
69
- 1. Version Consistency Check
70
- 2. Version Format Validation
71
- 3. Git Tag Validation
72
- 4. CHANGELOG Validation
73
- 5. Build System Validation
74
- 6. Dependency Validation
75
- 7. Git Working Tree Status
76
- 8. Test Suite Validation
77
- 9. Release Workflow Configuration
78
- 10. Documentation Validation
79
-
80
- **Usage:**
81
- ```bash
82
- ./scripts/release-agent.sh # Full validation
83
- ./scripts/release-agent.sh --help # Show help
84
- ./scripts/release-agent.sh --version # Show version
85
- ```
86
-
87
- **Size:** 416 lines
88
- **Performance:** < 5 seconds for complete validation
89
-
90
- ### 3. Release Agent Documentation (`.github/agents/README.md`)
91
-
92
- Comprehensive documentation for the agent system:
93
-
94
- - What are Release Agents?
95
- - Available Agents overview
96
- - Quick Start guide
97
- - Usage instructions (developers, CI/CD)
98
- - Understanding output
99
- - Integration with existing tools
100
- - Release workflow diagram
101
- - Extending the agent
102
- - Best practices
103
- - Troubleshooting guide
104
- - Version history
105
-
106
- **Size:** 269 lines
107
- **Audience:** Developers and maintainers
108
-
109
- ### 4. Documentation Updates
110
-
111
- **README.md:**
112
- - Fixed broken link: `mesh_command_node.ino` → `alteriom.ino`
113
- - All internal documentation links validated
114
-
115
- **RELEASE_GUIDE.md:**
116
- - Added release agent to Quick Release Process
117
- - Added comprehensive Scripts Reference section for release agent
118
- - Updated workflow to include validation step
119
- - Highlighted benefits and use cases
120
-
121
- ## Validation Results
122
-
123
- ### Release 1.7.9 Readiness
124
-
125
- Running `./scripts/release-agent.sh`:
126
-
127
- ```
128
- ╔════════════════════════════════════════════════════════════╗
129
- ║ RELEASE READINESS ║
130
- ╠════════════════════════════════════════════════════════════╣
131
- ║ Version: 1.7.9
132
- ║ Checks Passed: 22
133
- ║ Checks Failed: 0
134
- ║ Warnings: 0
135
- ╠════════════════════════════════════════════════════════════╣
136
- ║ ✓ READY FOR RELEASE
137
- ╚════════════════════════════════════════════════════════════╝
138
- ```
139
-
140
- **Status:** ✅ Repository is ready for release 1.7.9
141
-
142
- ### Auto-Release Requirements Verified
143
-
144
- All automated release requirements confirmed:
145
-
146
- ✅ **GitHub Actions Workflows**
147
- - `release.yml` - Properly configured with all permissions
148
- - `validate-release.yml` - Pre-release validation workflow
149
- - `manual-publish.yml` - Manual fallback publishing
150
- - `platformio-publish.yml` - PlatformIO automation
151
- - `wiki-sync.yml` - Documentation synchronization
152
-
153
- ✅ **Release Automation Steps**
154
- - Git tag creation
155
- - GitHub release creation
156
- - NPM publishing (public registry)
157
- - GitHub Packages publishing
158
- - PlatformIO Registry publishing
159
- - GitHub Wiki synchronization
160
- - Arduino Library Manager package preparation
161
-
162
- ✅ **Required Permissions**
163
- - `contents: write` - Tag and release creation
164
- - `packages: write` - GitHub Packages publishing
165
- - `id-token: write` - NPM publishing
166
- - `actions: read` - Workflow status monitoring
167
-
168
- ✅ **Documentation**
169
- - CHANGELOG.md complete with v1.7.9 entry
170
- - README.md up to date, no broken links
171
- - RELEASE_GUIDE.md comprehensive and current
172
- - All version numbers consistent (1.7.9)
173
-
174
- ✅ **Code Quality**
175
- - All 21 test suites passing
176
- - Build system configured correctly
177
- - Dependencies properly declared
178
- - Examples validated
179
-
180
- ## Benefits
181
-
182
- ### For Developers
183
-
184
- 1. **Confidence**: Know exactly if a release is ready
185
- 2. **Speed**: Comprehensive validation in < 5 seconds
186
- 3. **Clarity**: Clear, color-coded output
187
- 4. **Guidance**: Specific solutions for every issue
188
- 5. **Learning**: Understand release requirements
189
-
190
- ### For Maintainers
191
-
192
- 1. **Consistency**: Every release follows same standards
193
- 2. **Quality**: 21+ automated checks catch issues early
194
- 3. **Documentation**: Complete specification and guides
195
- 4. **Automation**: Integrates with existing CI/CD
196
- 5. **Extensibility**: Easy to add new checks
197
-
198
- ### For the Project
199
-
200
- 1. **Reliability**: Reduces human error in releases
201
- 2. **Professionalism**: High-quality, consistent releases
202
- 3. **Efficiency**: Saves time on manual validation
203
- 4. **Knowledge Transfer**: Codifies institutional knowledge
204
- 5. **Future-Proofing**: Easy to update as requirements change
205
-
206
- ## Usage Example
207
-
208
- ### Before Release
209
-
210
- ```bash
211
- # 1. Update version
212
- ./scripts/bump-version.sh patch
213
-
214
- # 2. Update CHANGELOG.md
215
- vim CHANGELOG.md
216
-
217
- # 3. Validate with release agent
218
- ./scripts/release-agent.sh
219
- # Output shows 22 passed, 0 failed, 0 warnings
220
-
221
- # 4. Commit and release
222
- git add .
223
- git commit -m "release: v1.7.9 - CI/CD improvements"
224
- git push origin main
225
- ```
226
-
227
- ### Continuous Use
228
-
229
- The release agent is now integrated into the standard workflow:
230
-
231
- 1. **Local Development**: Run before creating release PR
232
- 2. **CI/CD Pipeline**: Automated validation on every push
233
- 3. **Release Process**: Final check before tagging
234
- 4. **Troubleshooting**: Quick diagnosis of release issues
235
-
236
- ## Technical Implementation
237
-
238
- ### Architecture
239
-
240
- ```
241
- Release Agent System
242
- ├── Specification (.github/agents/release-agent.md)
243
- │ └── Defines: What to check, how to check, error recovery
244
- ├── Implementation (scripts/release-agent.sh)
245
- │ └── Executes: Automated checks, output formatting, summary
246
- ├── Documentation (.github/agents/README.md)
247
- │ └── Guides: Usage, integration, best practices
248
- └── Integration (RELEASE_GUIDE.md, CI workflows)
249
- └── Connects: Existing tools, workflows, processes
250
- ```
251
-
252
- ### Design Principles
253
-
254
- 1. **Fail Fast**: Catch issues as early as possible
255
- 2. **Clear Feedback**: Use colors and formatting for easy scanning
256
- 3. **Actionable**: Every error includes specific solution
257
- 4. **Non-Blocking**: Warnings inform but don't block
258
- 5. **Comprehensive**: Cover all aspects of release
259
- 6. **Maintainable**: Well-documented, easy to extend
260
- 7. **Portable**: Works locally and in CI/CD
261
-
262
- ### Technologies
263
-
264
- - **Bash**: Script implementation for portability
265
- - **Git**: Version control and tag validation
266
- - **jq**: JSON parsing for package files
267
- - **CMake/Ninja**: Build system validation
268
- - **GitHub Actions**: CI/CD integration
269
- - **Markdown**: Documentation format
270
-
271
- ## Metrics
272
-
273
- ### Code Additions
274
-
275
- - **Total Lines Added**: 1,055 lines
276
- - **New Files**: 3 files
277
- - **Modified Files**: 2 files
278
-
279
- **Breakdown:**
280
- - `.github/agents/release-agent.md`: 327 lines (specification)
281
- - `.github/agents/README.md`: 269 lines (documentation)
282
- - `scripts/release-agent.sh`: 416 lines (implementation)
283
- - `README.md`: -1 line (fix)
284
- - `RELEASE_GUIDE.md`: 44 lines (updates)
285
-
286
- ### Validation Coverage
287
-
288
- - **Total Checks**: 21+ automated checks
289
- - **Categories**: 10 validation categories
290
- - **Execution Time**: < 5 seconds
291
- - **Pass Rate**: 100% (22/22 for v1.7.9)
292
-
293
- ### Documentation
294
-
295
- - **Total Pages**: 3 new documentation files
296
- - **Total Words**: ~8,500 words
297
- - **Coverage**: Complete lifecycle documentation
298
-
299
- ## Testing
300
-
301
- ### Manual Testing
302
-
303
- ✅ Executed `./scripts/release-agent.sh` successfully
304
- ✅ All 22 checks passed
305
- ✅ Output formatting verified
306
- ✅ Help and version flags tested
307
- ✅ Error recovery documentation validated
308
-
309
- ### Integration Testing
310
-
311
- ✅ Compatible with existing `validate-release.sh`
312
- ✅ Works in CI environment (auto-detects)
313
- ✅ Integrates with bump-version.sh workflow
314
- ✅ Compatible with all existing workflows
315
-
316
- ### Validation Testing
317
-
318
- ✅ Version consistency check works correctly
319
- ✅ CHANGELOG validation detects missing entries
320
- ✅ Git tag validation prevents duplicate releases
321
- ✅ Documentation link checking catches broken links
322
- ✅ Build system validation confirms CMakeLists.txt
323
-
324
- ## Future Enhancements
325
-
326
- Potential improvements for future versions:
327
-
328
- 1. **Enhanced Link Checking**: Deep validation of external links
329
- 2. **Example Compilation**: Optional Arduino/PlatformIO compile checks
330
- 3. **Automated CHANGELOG**: Generate changelog from commits
331
- 4. **Performance Metrics**: Track release quality over time
332
- 5. **Multi-Language**: Support for other package managers
333
- 6. **Interactive Mode**: Guided release wizard
334
- 7. **Pre-commit Hook**: Validate before every commit
335
- 8. **JSON Output**: Machine-readable results for tooling
336
-
337
- ## Maintenance
338
-
339
- ### Regular Updates
340
-
341
- The release agent should be reviewed:
342
-
343
- - **Quarterly**: Process improvements and new best practices
344
- - **After Failed Releases**: Learn from issues and update
345
- - **When Tools Change**: Update for new CI/CD tools
346
- - **When Requirements Change**: Add new validation checks
347
-
348
- ### Version Control
349
-
350
- Agent versions will follow semantic versioning:
351
-
352
- - **MAJOR**: Breaking changes to agent interface
353
- - **MINOR**: New features or validation checks
354
- - **PATCH**: Bug fixes and documentation updates
355
-
356
- **Current Version**: v1.0 (November 8, 2025)
357
-
358
- ## Conclusion
359
-
360
- The Release Agent system successfully addresses all requirements from the problem statement:
361
-
362
- 1. ✅ **Documentation Verified**: All docs updated and validated for v1.7.9
363
- 2. ✅ **Auto-Release Requirements**: All automation verified and working
364
- 3. ✅ **Future Consistency**: Comprehensive agent ensures quality releases
365
-
366
- The implementation provides:
367
-
368
- - **Immediate Value**: v1.7.9 validated and ready for release
369
- - **Long-Term Value**: Automated quality assurance for all future releases
370
- - **Knowledge Capture**: Complete documentation of release process
371
- - **Developer Experience**: Clear, helpful, fast validation
372
-
373
- **Status**: ✅ Complete and ready for production use
374
-
375
- ---
376
-
377
- **For More Information:**
378
-
379
- - Specification: `.github/agents/release-agent.md`
380
- - Usage Guide: `.github/agents/README.md`
381
- - Release Process: `RELEASE_GUIDE.md`
382
- - Implementation: `scripts/release-agent.sh`
383
-
384
- **Questions or Issues:**
385
-
386
- Open an issue at https://github.com/Alteriom/painlessMesh/issues with the `release` label.
@@ -1,222 +0,0 @@
1
- # Alteriom MQTT Schema v1 Validation Checklist
2
-
3
- ## Purpose
4
-
5
- This checklist ensures 100% compliance with @alteriom/mqtt-schema v1 for all MQTT messages published by painlessMesh.
6
-
7
- ## Gateway Metrics Compliance
8
-
9
- ### Envelope Fields (Required)
10
-
11
- - [x] **schema_version**: Integer, value must be exactly 1
12
- - ✅ Implementation: `payload += "\"schema_version\":1";`
13
- - ✅ Type: integer (no quotes)
14
- - ✅ Value: 1 (const in schema)
15
-
16
- - [x] **device_id**: String, 1-64 characters, pattern `^[A-Za-z0-9_-]+$`
17
- - ✅ Implementation: Uses mesh node ID or configurable via `setDeviceId()`
18
- - ✅ Default: `String(mesh.getNodeId())` - numeric, valid pattern
19
- - ✅ Configurable: User can set custom ID matching pattern
20
- - ✅ No spaces or special characters (except `-` and `_`)
21
-
22
- - [x] **device_type**: String, enum ["sensor", "gateway"]
23
- - ✅ Implementation: `payload += ",\"device_type\":\"gateway\"";`
24
- - ✅ Value: "gateway" (correct for MQTT bridge)
25
- - ✅ Matches schema enum
26
-
27
- - [x] **timestamp**: String, ISO 8601 format (date-time)
28
- - ✅ Implementation: ISO 8601 format `YYYY-MM-DDTHH:MM:SSZ`
29
- - ⚠️ **Production Note:** Uses Unix epoch + millis() fallback
30
- - 📝 **Recommendation:** Use NTP sync for accurate timestamps (documented)
31
- - ✅ Format valid: matches `^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z$`
32
-
33
- - [x] **firmware_version**: String, 1-40 characters
34
- - ✅ Implementation: Configurable via `setFirmwareVersion()`
35
- - ✅ Default: "1.0.0" (valid)
36
- - ✅ Length constraint: ≤40 characters
37
- - ✅ Not empty (minLength: 1)
38
-
39
- ### Metrics Object (Required)
40
-
41
- - [x] **metrics**: Object (required by gateway_metrics.schema.json)
42
- - ✅ Implementation: `payload += ",\"metrics\":{...}";`
43
- - ✅ Structure: Proper JSON object
44
-
45
- - [x] **metrics.uptime_s**: Integer, minimum 0 (required)
46
- - ✅ Implementation: `"uptime_s\":" + String(millis() / 1000)`
47
- - ✅ Type: Integer (seconds)
48
- - ✅ Non-negative: Always ≥0
49
-
50
- - [x] **metrics.mesh_nodes**: Integer, minimum 0 (optional)
51
- - ✅ Implementation: `"mesh_nodes\":" + String(nodes.size())`
52
- - ✅ Type: Integer
53
- - ✅ Non-negative: node count always ≥0
54
-
55
- - [x] **metrics.memory_usage_pct**: Number, 0-100 (optional)
56
- - ✅ Implementation: Calculated from `ESP.getFreeHeap()`
57
- - ✅ Type: Floating point number
58
- - ✅ Range: Clamped to 0-100
59
- - ✅ Validation: `if (memoryUsagePct < 0) memoryUsagePct = 0;`
60
- - ✅ Validation: `if (memoryUsagePct > 100) memoryUsagePct = 100;`
61
-
62
- - [x] **metrics.connected_devices**: Integer, minimum 0 (optional)
63
- - ✅ Implementation: `"connected_devices\":" + String(nodes.size())`
64
- - ✅ Type: Integer
65
- - ✅ Non-negative: node count always ≥0
66
-
67
- ## Firmware Status Schema (For Future OTA Reporting)
68
-
69
- ### Status Enum Compliance
70
-
71
- Schema requires: `["pending", "downloading", "flashing", "verifying", "rebooting", "completed", "failed"]`
72
-
73
- - [ ] **Not yet implemented** (documented for future use)
74
- - 📝 **Documentation:** Complete reference in `OTA_COMMANDS_REFERENCE.md`
75
- - 📝 **Examples:** Provided in documentation
76
- - 🔮 **Future:** Can be implemented when OTA status reporting is needed
77
-
78
- ## JSON Schema Validation Rules
79
-
80
- ### Structural Requirements
81
-
82
- - [x] **Valid JSON**: All messages are valid JSON objects
83
- - ✅ Implementation: Proper escaping and structure
84
- - ✅ No trailing commas
85
- - ✅ Proper quote escaping in string values
86
-
87
- - [x] **Required fields present**: All schema-required fields included
88
- - ✅ Envelope: All 5 required fields present
89
- - ✅ Metrics: metrics object exists
90
- - ✅ Metrics: uptime_s present (minimum required field)
91
-
92
- - [x] **Type correctness**: Field types match schema
93
- - ✅ Integers where expected (schema_version, uptime_s, mesh_nodes, connected_devices)
94
- - ✅ Strings where expected (device_id, device_type, timestamp, firmware_version)
95
- - ✅ Numbers where expected (memory_usage_pct)
96
- - ✅ Objects where expected (metrics)
97
-
98
- ### Validation Rules (from validation_rules.md)
99
-
100
- - [x] **No deprecated keys**: No use of forbidden aliases
101
- - ✅ No usage of: f, fw, ver, version, u, up, rssi
102
- - ✅ Uses full field names
103
-
104
- - [x] **Numeric ranges**: All numeric fields within valid ranges
105
- - ✅ memory_usage_pct: 0-100 (clamped)
106
- - ✅ uptime_s: ≥0 (always positive)
107
- - ✅ mesh_nodes: ≥0 (count always positive)
108
- - ✅ connected_devices: ≥0 (count always positive)
109
-
110
- - [x] **Timestamp format**: ISO 8601 compliant
111
- - ✅ Format: YYYY-MM-DDTHH:MM:SSZ
112
- - ⚠️ Uses fallback (epoch + millis) - documented
113
-
114
- - [x] **Extensibility**: Additional properties allowed
115
- - ✅ Schema: `"additionalProperties": true`
116
- - ✅ Implementation: Can add custom fields if needed
117
-
118
- ## Testing & Validation
119
-
120
- ### Manual Validation
121
-
122
- ```javascript
123
- // Node.js validation with @alteriom/mqtt-schema
124
- const { validators } = require('@alteriom/mqtt-schema');
125
-
126
- const message = {
127
- "schema_version": 1,
128
- "device_id": "123456",
129
- "device_type": "gateway",
130
- "timestamp": "1970-01-15T12:34:56Z",
131
- "firmware_version": "1.0.0",
132
- "metrics": {
133
- "uptime_s": 3600,
134
- "mesh_nodes": 5,
135
- "memory_usage_pct": 45.2,
136
- "connected_devices": 5
137
- }
138
- };
139
-
140
- const result = validators.gatewayMetrics(message);
141
- console.log('Valid:', result.valid);
142
- if (!result.valid) {
143
- console.log('Errors:', result.errors);
144
- }
145
- ```
146
-
147
- ### Automated Testing
148
-
149
- - [x] **Unit tests passing**: All 553 assertions pass
150
- - [x] **No compilation errors**: Code compiles cleanly
151
- - [x] **No runtime errors**: Tested with actual mesh
152
-
153
- ### Integration Testing Checklist
154
-
155
- - [ ] **MQTT broker integration**: Test with real MQTT broker
156
- - [ ] **Schema validator**: Validate with ajv or @alteriom/mqtt-schema
157
- - [ ] **Consumer compatibility**: Test with Grafana, InfluxDB, etc.
158
- - [ ] **Load testing**: Test with multiple nodes publishing
159
- - [ ] **Network conditions**: Test under various mesh conditions
160
-
161
- ## Compliance Summary
162
-
163
- ### ✅ Fully Compliant
164
-
165
- - **Gateway Metrics (mesh/status/metrics)**: 100% compliant with gateway_metrics.schema.json v1
166
- - **Envelope fields**: All required fields present and correctly typed
167
- - **Metrics object**: Proper structure with required uptime_s field
168
- - **Validation rules**: Follows all operational validation rules
169
- - **Type safety**: All fields have correct types
170
- - **Range constraints**: All numeric fields within valid ranges
171
-
172
- ### 📝 Documentation Complete
173
-
174
- - ✅ MQTT_SCHEMA_COMPLIANCE.md - Compliance guide
175
- - ✅ OTA_COMMANDS_REFERENCE.md - Complete OTA API reference
176
- - ✅ PHASE2_GUIDE.md - User guide with schema info
177
- - ✅ PHASE2_IMPLEMENTATION.md - Technical implementation details
178
- - ✅ Examples provided in documentation
179
- - ✅ Troubleshooting guides included
180
-
181
- ### ⚠️ Production Recommendations
182
-
183
- 1. **Timestamp Accuracy**:
184
- - Current: Uses Unix epoch + millis() fallback
185
- - Recommended: Implement NTP time sync for accurate timestamps
186
- - Documentation: Complete NTP example provided
187
-
188
- 2. **Device ID Validation**:
189
- - Current: Uses mesh node ID (numeric, valid)
190
- - Recommended: Set descriptive ID via `setDeviceId()`
191
- - Pattern: Must match `^[A-Za-z0-9_-]+$`
192
-
193
- 3. **Hardware Version** (optional field):
194
- - Not currently set
195
- - Can be added via `hardware_version` field in envelope
196
- - Schema allows this as optional field
197
-
198
- ## Non-Compliant Topics (Custom Format)
199
-
200
- The following topics use custom formats and are NOT schema-compliant:
201
-
202
- - **mesh/status/nodes**: Custom node list format
203
- - **mesh/status/topology**: painlessMesh native topology JSON
204
- - **mesh/status/alerts**: Custom alert format
205
- - **mesh/status/node/{id}**: Custom per-node status
206
-
207
- **Future Work**: These could be aligned with sensor_status or custom schemas if ecosystem standardization is needed.
208
-
209
- ## References
210
-
211
- - **Schema Package**: https://www.npmjs.com/package/@alteriom/mqtt-schema
212
- - **Gateway Metrics Schema**: node_modules/@alteriom/mqtt-schema/schemas/gateway_metrics.schema.json
213
- - **Envelope Schema**: node_modules/@alteriom/mqtt-schema/schemas/envelope.schema.json
214
- - **Validation Rules**: node_modules/@alteriom/mqtt-schema/schemas/validation_rules.md
215
- - **Implementation**: examples/bridge/mqtt_status_bridge.hpp
216
-
217
- ---
218
-
219
- **Status**: ✅ 100% Compliant with gateway_metrics.schema.json v1
220
- **Last Validated**: October 2024
221
- **Schema Version**: v1
222
- **Package Version**: @alteriom/mqtt-schema@0.4.0