diff --git a/atvm/docs/automation/guide.md b/atvm/docs/automation/guide.md index 44a9ca0..dfc5741 100644 --- a/atvm/docs/automation/guide.md +++ b/atvm/docs/automation/guide.md @@ -239,6 +239,7 @@ Status-report expectations: - Order the status sections as `SUMMARY:`, `HOSTS:`, `TIMING:`, `COVERAGE:`, `TEST FLOW:`, then `NOTES:`. - Keep `NOTES:` focused on operator-facing value such as the Currents run URL, real anomalies, failure context, or material fallback behavior. - Do not include generic watcher bookkeeping messages in `NOTES:` such as artifact-detection confirmations. +- Do not include internal watcher fallback notes in `NOTES:` such as `check-xml-files.ts` validation confirmations or reporter-artifact recovery details. - The `HOSTS:` table includes `Host`, `Kernel`, `Status`, and `Detail` columns in that order. - In `COVERAGE:`, describe the template, datastore/config family, migration style, and plugin/integration path, but do not list target hosts there. - In `TEST FLOW:`, show the template-specific numbered run flow once for the whole test, not per host. diff --git a/atvm/docs/automation/run-learnings.md b/atvm/docs/automation/run-learnings.md index a6d6e1f..a9d55ce 100644 --- a/atvm/docs/automation/run-learnings.md +++ b/atvm/docs/automation/run-learnings.md @@ -274,6 +274,7 @@ This file stores run-specific examples only when a run produced a new learning r - Action for future runs: - Reserve `NOTES:` for meaningful operator-facing content such as the Currents run URL, real anomalies, failure context, and important fallback behavior. - Do not include generic artifact-detection confirmations in the posted `NOTES:` section. + - Do not include internal fallback notes such as "`check-xml-files.ts` validation passed" or "host details were derived from reporter artifacts" in the posted `NOTES:` section. ## Run Learning: 2026-03-27 (Categorized grouped XML may need host recovery from the subrun's per-host artifact) - Observed failure mode: diff --git a/atvm/docs/automation/status-template.md b/atvm/docs/automation/status-template.md index 9f7e939..080f02a 100644 --- a/atvm/docs/automation/status-template.md +++ b/atvm/docs/automation/status-template.md @@ -74,6 +74,7 @@ Use this as the default ATVM automation run-status template for: - When available, put the persistent Currents run URL in `NOTES:` so operators can open the exact recorded run directly. - Keep `NOTES:` limited to meaningful operator-facing items such as the Currents link, real anomalies, failure context, or important fallback behavior. - Do not include generic watcher bookkeeping lines in `NOTES:` such as "run artifacts were detected" or "final reporting artifacts were detected." +- Do not include internal fallback notes in `NOTES:` such as "`check-xml-files.ts` validation passed" or "host details were derived from reporter artifacts." - `COVERAGE:` should describe what the run was intended to cover without listing target hosts. - `TEST FLOW:` should describe the template-specific numbered run flow once for the whole test, not per host. - The watcher resolves `TEST FLOW:` from the run template name. diff --git a/atvm/watcher-service/atvm_run_watcher.py b/atvm/watcher-service/atvm_run_watcher.py index 31010cd..f9cc92a 100644 --- a/atvm/watcher-service/atvm_run_watcher.py +++ b/atvm/watcher-service/atvm_run_watcher.py @@ -1031,8 +1031,6 @@ def evaluate_subrun( notes.append("This categorized sub-run ended but no host results were detected.") return "UNKNOWN", host_results, start_ts, end_ts, currents_url, notes notes.append("Categorized sub-run completed and the next grouped run was launched.") - if check_end: - notes.append("Final `check-xml-files.ts` validation passed.") state = "FAILED" if any(result.failures for result in host_results.values()) else "COMPLETED" return state, host_results, start_ts, end_ts, currents_url, notes @@ -1061,11 +1059,6 @@ def evaluate_subrun( if host_results: notes.append("Run completed after the parent runner exited.") - if check_end: - notes.append("Final `check-xml-files.ts` validation passed.") - latest_artifact_note = "Host result details were derived from the latest matching host reporter artifact written before final validation." - if latest_artifact_note not in notes and all(result.tests == 0 for result in host_results.values()): - notes.append(latest_artifact_note) state = "FAILED" if any(result.failures for result in host_results.values()) else "COMPLETED" return state, host_results, start_ts, end_ts, currents_url, notes @@ -1168,14 +1161,8 @@ def discover_categorized_subruns( elif check_ts or raw_display_name != current_subrun_build or not parent_active: state = "FAILED" if any(result.failures for result in host_results.values()) else "COMPLETED" notes = [f"Categorized sub-run discovered from reporter file `{xml_path.name}`."] - if check_ts: - notes.append("Final `check-xml-files.ts` validation passed.") if summary and host_results: notes.append("Host result details were derived from the parent categorized run log summary.") - elif host_results and check_ts: - notes.append("Host result details were derived from matching per-host reporter artifacts written before grouped finalization.") - if inferred_host: - notes.append(f"Grouped sub-run host scope was inferred as `{inferred_host}` from the categorized build id.") elif check_ts and not host_results and parent_active: notes.append("Grouped reporter XML arrived before the parent run log exposed the final host summary; waiting to post until host details are available.") if display_name != raw_display_name: