diff --git a/README.md b/README.md index 4444dab784..b28c1f7860 100644 --- a/README.md +++ b/README.md @@ -202,12 +202,11 @@ unsolicited pull requests. ## Community and support - Ask questions in [GitHub Discussions](https://github.com/rcourtman/Pulse/discussions). -- Report reproducible bugs through [GitHub Issues](https://github.com/rcourtman/Pulse/issues). -- Home Assistant users can use the community-maintained - [Pulse add-ons](https://github.com/Kosztyk/homeassistant-addons). -- If Pulse is useful to you, support its development through - [GitHub Sponsors](https://github.com/sponsors/rcourtman) or - [Ko-fi](https://ko-fi.com/rcourtman). +- Report bugs and unexpected outcomes through [GitHub Issues](https://github.com/rcourtman/Pulse/issues). +- Home Assistant users can use the community-maintained [Pulse add-ons](https://github.com/Kosztyk/homeassistant-addons). +- If Pulse is useful to you, support its development through [GitHub Sponsors](https://github.com/sponsors/rcourtman) or [Ko-fi](https://ko-fi.com/rcourtman). + +Read the [safe reporting guidance](docs/TROUBLESHOOTING.md#-getting-help) before sharing original evidence. A second reproduction or diagnostics export is not required; do not repeat an attempt that could interrupt workloads or send duplicate notifications. GitHub reports and attachments are public: review them locally and keep credentials and private details out. ## License diff --git a/docs/README.md b/docs/README.md index 10c355c497..db7c0a92bc 100644 --- a/docs/README.md +++ b/docs/README.md @@ -4,6 +4,13 @@ Start here for installation, platform setup, security, operations, and Pulse Intelligence. Commands, configuration keys, image names, API fields, and product identifiers remain untranslated in localized guides. +**Need help with a failure?** Read the +[safe reporting guidance](TROUBLESHOOTING.md#-getting-help) before sharing +evidence. A second reproduction or diagnostics export is not required; keep +the original evidence if another attempt could interrupt workloads or send +duplicate notifications. GitHub reports and attachments are public: review +them locally and keep credentials and private details out. + ## Start here - [Install Pulse](INSTALL.md) — signed Proxmox/Linux installation, Docker, diff --git a/frontend-modern/public/docs/README.md b/frontend-modern/public/docs/README.md index 10c355c497..db7c0a92bc 100644 --- a/frontend-modern/public/docs/README.md +++ b/frontend-modern/public/docs/README.md @@ -4,6 +4,13 @@ Start here for installation, platform setup, security, operations, and Pulse Intelligence. Commands, configuration keys, image names, API fields, and product identifiers remain untranslated in localized guides. +**Need help with a failure?** Read the +[safe reporting guidance](TROUBLESHOOTING.md#-getting-help) before sharing +evidence. A second reproduction or diagnostics export is not required; keep +the original evidence if another attempt could interrupt workloads or send +duplicate notifications. GitHub reports and attachments are public: review +them locally and keep credentials and private details out. + ## Start here - [Install Pulse](INSTALL.md) — signed Proxmox/Linux installation, Docker, diff --git a/scripts/tests/test_contribution_report_safety.py b/scripts/tests/test_contribution_report_safety.py index 741803fb31..d187130cbe 100644 --- a/scripts/tests/test_contribution_report_safety.py +++ b/scripts/tests/test_contribution_report_safety.py @@ -17,6 +17,28 @@ def report_guidance() -> str: class ContributionReportSafetyTest(unittest.TestCase): + def test_help_entrypoints_accept_original_evidence_before_public_sharing(self): + surfaces = ( + ("README.md", "## Community and support\n", "\n## ", "docs/"), + ("docs/README.md", "# Pulse documentation\n", "\n## Start here", ""), + ) + for name, start, end, prefix in surfaces: + with self.subTest(surface=name): + text = (ROOT / name).read_text(encoding="utf-8") + entry = " ".join(text.split(start, 1)[1].split(end, 1)[0].split()) + self.assertIn(f"({prefix}TROUBLESHOOTING.md#-getting-help)", entry) + self.assertIn("A second reproduction or diagnostics export is not required", entry) + self.assertIn("original evidence", entry) + self.assertIn("interrupt workloads or send duplicate notifications", entry) + self.assertIn("reports and attachments are public", entry) + self.assertIn("review them locally", entry) + self.assertIn("credentials and private details", entry) + self.assertNotIn("Report reproducible bugs", entry) + self.assertEqual( + (ROOT / "docs/README.md").read_bytes(), + (ROOT / "frontend-modern/public/docs/README.md").read_bytes(), + ) + def contribution_surfaces(self): return ( " ".join((ROOT / "CONTRIBUTING.md").read_text(encoding="utf-8").split()),