From 86d44409ddfedc9fd77c9c41e109885e4e46aec0 Mon Sep 17 00:00:00 2001 From: Egor Merkushev Date: Fri, 13 Feb 2026 23:31:15 +0300 Subject: [PATCH 1/7] Branch for FU-P9-T4-1: protected-main publish helper guidance From 7d9ad376f32dd15922d953d054739a528507eecc Mon Sep 17 00:00:00 2001 From: Egor Merkushev Date: Fri, 13 Feb 2026 23:31:49 +0300 Subject: [PATCH 2/7] Select task FU-P9-T4-1: Align publish_helper output with protected main branch workflow --- SPECS/INPROGRESS/next.md | 21 +++++++++++---------- SPECS/Workplan.md | 18 ++++++++++++++++++ 2 files changed, 29 insertions(+), 10 deletions(-) diff --git a/SPECS/INPROGRESS/next.md b/SPECS/INPROGRESS/next.md index f675381e..83106b8d 100644 --- a/SPECS/INPROGRESS/next.md +++ b/SPECS/INPROGRESS/next.md @@ -1,15 +1,16 @@ -# No Active Task +# Next Task: FU-P9-T4-1 — Align publish_helper output with protected main branch workflow -The previously selected task has been archived. +**Priority:** P1 +**Phase:** Phase 9 Follow-up Backlog +**Effort:** 1 hour +**Dependencies:** P9-T4 +**Status:** Selected -## Recently Archived +## Description -- 2026-02-13 — P9-T4: Create the publishing helper (PASS) -- 2026-02-13 — BUG-T0: Uptime widget on Web UI always shows 1h 0m 0s (PASS) -- 2026-02-13 — FU-P9-T2-1: Fix uvx Web UI examples to include `webui` extras (PASS) -- 2026-02-13 — FU-REBUILD-P10-T1-7: Include Web UI static assets in published package artifacts (PASS) -- 2026-02-13 — P9-T3: Release version 0.3.0 (Web UI Feature Release) (PASS) +Update `scripts/publish_helper.py` guidance so release steps follow protected-branch workflow: +create/push release branch, open PR into `main`, and tag only after merge. -## Suggested Next Tasks +## Next Step -- BUG-T1: Kimi CLI MCP Connection Failure (if applicable) +Run the PLAN command to generate the implementation-ready PRD. diff --git a/SPECS/Workplan.md b/SPECS/Workplan.md index 0e6ab714..c1e2324c 100644 --- a/SPECS/Workplan.md +++ b/SPECS/Workplan.md @@ -1214,6 +1214,7 @@ Main branch is currently unstable after an accidental merge of the Phase 10 Web Phase 9 Follow-up Backlog - [x] FU-P9-T2-1: Fix uvx Web UI examples to include `webui` extras (P1) +- [ ] FU-P9-T4-1: Align publish_helper output with protected main branch workflow (P1) **INPROGRESS** #### ✅ FU-P9-T2-1: Fix uvx Web UI examples to include `webui` extras - **Description:** Resolve documentation/config mismatch where examples use `uvx --from mcpbridge-wrapper ... --web-ui` without optional dependencies. Update all uvx Web UI examples to install extras via `--from mcpbridge-wrapper[webui]`, and align troubleshooting/runtime guidance with the correct uvx command. @@ -1236,6 +1237,23 @@ Phase 9 Follow-up Backlog --- +#### FU-P9-T4-1: Align publish_helper output with protected main branch workflow +- **Description:** Update `scripts/publish_helper.py` release guidance so it does not instruct direct commits/tags from `main` in repositories where `main` is protected. Guidance should explicitly recommend creating a release branch, pushing branch commits, opening a PR into `main`, and only tagging after merge. +- **Priority:** P1 +- **Dependencies:** P9-T4 +- **Parallelizable:** yes +- **Outputs/Artifacts:** + - Updated `scripts/publish_helper.py` summary text and command block + - Updated tests in `tests/unit/test_publish_helper.py` validating protected-branch-safe guidance + - Optional alignment update in `PUBLISHING.md` if command sequence is duplicated there +- **Acceptance Criteria:** + - [ ] Running `python scripts/publish_helper.py ` no longer suggests direct push-to-main flow + - [ ] Printed commands include branch creation + push + PR-to-main step before tagging + - [ ] Guidance still includes tag creation/push after merge so GitHub publish workflow is triggered + - [ ] `pytest tests/unit/test_publish_helper.py` passes + +--- + ### Phase 11: Web UI UX Improvements **Intent:** Enhance the dashboard with better debugging tools, session awareness, theming, and keyboard-driven workflows. From bdc91d81846e152cef0a23c6c457ec84e43b56fe Mon Sep 17 00:00:00 2001 From: Egor Merkushev Date: Fri, 13 Feb 2026 23:32:00 +0300 Subject: [PATCH 3/7] Plan task FU-P9-T4-1: Align publish_helper output with protected main branch workflow --- ...put_with_protected_main_branch_workflow.md | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 SPECS/INPROGRESS/FU-P9-T4-1_Align_publish_helper_output_with_protected_main_branch_workflow.md diff --git a/SPECS/INPROGRESS/FU-P9-T4-1_Align_publish_helper_output_with_protected_main_branch_workflow.md b/SPECS/INPROGRESS/FU-P9-T4-1_Align_publish_helper_output_with_protected_main_branch_workflow.md new file mode 100644 index 00000000..63ce8640 --- /dev/null +++ b/SPECS/INPROGRESS/FU-P9-T4-1_Align_publish_helper_output_with_protected_main_branch_workflow.md @@ -0,0 +1,34 @@ +# FU-P9-T4-1 — Align publish_helper output with protected main branch workflow + +**Priority:** P1 +**Dependencies:** P9-T4 +**Phase:** Phase 9 Follow-up Backlog + +## Objective +Ensure release guidance emitted by `scripts/publish_helper.py` is safe for repositories where `main` is protected and direct push is disallowed. + +## Deliverables +1. Update the helper summary command block to a PR-first flow: + - create release branch + - commit and push release branch + - open/merge PR into `main` + - pull `main`, then create and push tag +2. Update unit tests in `tests/unit/test_publish_helper.py` to assert protected-branch-safe guidance is printed. +3. Keep current helper behavior unchanged for version updates themselves (only guidance text/commands should change). +4. Produce validation evidence in `SPECS/INPROGRESS/FU-P9-T4-1_Validation_Report.md`. + +## Acceptance Criteria +1. Running `python scripts/publish_helper.py ` does not suggest direct push-to-main flow. +2. Printed commands include branch creation/push and explicit PR-merge step before tagging. +3. Guidance still includes tag creation/push after merge to trigger publish workflow. +4. `pytest tests/unit/test_publish_helper.py` passes. + +## Execution Plan +1. Modify `print_summary()` command output in `scripts/publish_helper.py`. +2. Update test assertions to match new guidance text. +3. Run required quality gates per FLOW: + - `pytest` + - `ruff check src/` + - `mypy src/` + - `pytest --cov` (>= 90%) +4. Write validation report with acceptance criteria and gate outputs. From f0400a1836b0fc9ce433e679c0c98eeba2a08686 Mon Sep 17 00:00:00 2001 From: Egor Merkushev Date: Fri, 13 Feb 2026 23:32:29 +0300 Subject: [PATCH 4/7] Implement FU-P9-T4-1: make publish helper guidance protected-main safe --- .../FU-P9-T4-1_Validation_Report.md | 39 +++++++++++++++++++ scripts/publish_helper.py | 10 ++++- tests/unit/test_publish_helper.py | 5 ++- 3 files changed, 51 insertions(+), 3 deletions(-) create mode 100644 SPECS/INPROGRESS/FU-P9-T4-1_Validation_Report.md diff --git a/SPECS/INPROGRESS/FU-P9-T4-1_Validation_Report.md b/SPECS/INPROGRESS/FU-P9-T4-1_Validation_Report.md new file mode 100644 index 00000000..9531425c --- /dev/null +++ b/SPECS/INPROGRESS/FU-P9-T4-1_Validation_Report.md @@ -0,0 +1,39 @@ +# FU-P9-T4-1 Validation Report + +**Task:** Align publish_helper output with protected main branch workflow +**Date:** 2026-02-13 +**Verdict:** PASS + +## Changes Implemented + +1. Updated `scripts/publish_helper.py` release guidance output to protected-branch-safe flow: + - create release branch + - commit and push release branch + - open PR and merge into `main` + - pull `main`, then create/push tag +2. Updated `tests/unit/test_publish_helper.py` assertions to validate: + - protected-branch guidance label + - release branch creation command + - explicit PR merge step before tagging +3. Added `FU-P9-T4-1` follow-up task entry in `SPECS/Workplan.md` under Phase 9 follow-up backlog. + +## Acceptance Criteria Check + +| Criteria | Status | Evidence | +|---|---|---| +| `publish_helper.py` no longer suggests direct push-to-main flow | PASS | Output now prints `Next release commands (protected main branch flow)` and branch/PR steps | +| Printed commands include branch creation/push and PR-to-main before tagging | PASS | Output includes `git checkout -b release/v`, `git push -u origin release/v`, and `Open a PR ...` | +| Tag creation/push remains in guidance after merge | PASS | Output still includes `git tag v` and `git push origin v` after main sync steps | +| `pytest tests/unit/test_publish_helper.py` passes | PASS | 17 passed | + +## Quality Gates (FLOW) + +- `pytest` -> **345 passed, 5 skipped** +- `ruff check src/` -> **All checks passed** +- `mypy src/` -> **Success: no issues found in 12 source files** +- `pytest --cov` -> **96.62% total coverage** (>= 90%) + +## Notes + +- Test suite emitted existing non-blocking warnings related to deprecated WebSocket APIs and occasional port `8080` bind contention in a background test thread. +- These warnings did not affect pass/fail status. diff --git a/scripts/publish_helper.py b/scripts/publish_helper.py index 9941e862..60f394fb 100755 --- a/scripts/publish_helper.py +++ b/scripts/publish_helper.py @@ -142,17 +142,23 @@ def update_files(pyproject_path: Path, server_json_path: Path, target_version: s def print_summary(changes: list[FileChange], dry_run: bool, target_version: str) -> None: - """Print deterministic operation summary and next release commands.""" + """Print deterministic operation summary and protected-branch-safe commands.""" action = "Dry-run planned" if dry_run else "Applied" print(f"{action} version changes:") for change in changes: print(f"- {change.path}: {change.field} {change.old} -> {change.new}") print() - print("Next release commands:") + release_branch = f"release/v{target_version}" + print("Next release commands (protected main branch flow):") print("```bash") + print(f"git checkout -b {release_branch}") print("git add pyproject.toml server.json") print(f'git commit -m "Bump version to {target_version}"') + print(f"git push -u origin {release_branch}") + print("# Open a PR from release branch into main and merge it") + print("git checkout main") + print("git pull origin main") print(f"git tag v{target_version}") print(f"git push origin v{target_version}") print("```") diff --git a/tests/unit/test_publish_helper.py b/tests/unit/test_publish_helper.py index edb5d71b..b6c4a77e 100644 --- a/tests/unit/test_publish_helper.py +++ b/tests/unit/test_publish_helper.py @@ -132,7 +132,7 @@ def test_main_dry_run_prints_next_commands( sample_files: tuple[Path, Path], capsys: pytest.CaptureFixture[str], ) -> None: - """CLI prints publish guidance commands after successful dry-run.""" + """CLI prints protected-branch-safe publish guidance after dry-run.""" pyproject, server_json = sample_files code = main( [ @@ -148,5 +148,8 @@ def test_main_dry_run_prints_next_commands( captured = capsys.readouterr() assert code == 0 assert "Dry-run planned version changes" in captured.out + assert "protected main branch flow" in captured.out + assert "git checkout -b release/v0.4.0" in captured.out + assert "Open a PR from release branch into main and merge it" in captured.out assert "git tag v0.4.0" in captured.out assert pyproject.read_text(encoding="utf-8").find('version = "0.3.2"') != -1 From fe95fed9bc1cfa6353377863e53cd4236c3cb688 Mon Sep 17 00:00:00 2001 From: Egor Merkushev Date: Fri, 13 Feb 2026 23:33:40 +0300 Subject: [PATCH 5/7] Archive task FU-P9-T4-1: Align publish_helper output with protected main branch workflow (PASS) --- ...put_with_protected_main_branch_workflow.md | 4 ++++ .../FU-P9-T4-1_Validation_Report.md | 0 SPECS/ARCHIVE/INDEX.md | 2 ++ SPECS/INPROGRESS/next.md | 21 +++++++++---------- SPECS/Workplan.md | 12 +++++------ 5 files changed, 22 insertions(+), 17 deletions(-) rename SPECS/{INPROGRESS => ARCHIVE/FU-P9-T4-1_Align_publish_helper_output_with_protected_main_branch_workflow}/FU-P9-T4-1_Align_publish_helper_output_with_protected_main_branch_workflow.md (97%) rename SPECS/{INPROGRESS => ARCHIVE/FU-P9-T4-1_Align_publish_helper_output_with_protected_main_branch_workflow}/FU-P9-T4-1_Validation_Report.md (100%) diff --git a/SPECS/INPROGRESS/FU-P9-T4-1_Align_publish_helper_output_with_protected_main_branch_workflow.md b/SPECS/ARCHIVE/FU-P9-T4-1_Align_publish_helper_output_with_protected_main_branch_workflow/FU-P9-T4-1_Align_publish_helper_output_with_protected_main_branch_workflow.md similarity index 97% rename from SPECS/INPROGRESS/FU-P9-T4-1_Align_publish_helper_output_with_protected_main_branch_workflow.md rename to SPECS/ARCHIVE/FU-P9-T4-1_Align_publish_helper_output_with_protected_main_branch_workflow/FU-P9-T4-1_Align_publish_helper_output_with_protected_main_branch_workflow.md index 63ce8640..e4f9477f 100644 --- a/SPECS/INPROGRESS/FU-P9-T4-1_Align_publish_helper_output_with_protected_main_branch_workflow.md +++ b/SPECS/ARCHIVE/FU-P9-T4-1_Align_publish_helper_output_with_protected_main_branch_workflow/FU-P9-T4-1_Align_publish_helper_output_with_protected_main_branch_workflow.md @@ -32,3 +32,7 @@ Ensure release guidance emitted by `scripts/publish_helper.py` is safe for repos - `mypy src/` - `pytest --cov` (>= 90%) 4. Write validation report with acceptance criteria and gate outputs. + +--- +**Archived:** 2026-02-13 +**Verdict:** PASS diff --git a/SPECS/INPROGRESS/FU-P9-T4-1_Validation_Report.md b/SPECS/ARCHIVE/FU-P9-T4-1_Align_publish_helper_output_with_protected_main_branch_workflow/FU-P9-T4-1_Validation_Report.md similarity index 100% rename from SPECS/INPROGRESS/FU-P9-T4-1_Validation_Report.md rename to SPECS/ARCHIVE/FU-P9-T4-1_Align_publish_helper_output_with_protected_main_branch_workflow/FU-P9-T4-1_Validation_Report.md diff --git a/SPECS/ARCHIVE/INDEX.md b/SPECS/ARCHIVE/INDEX.md index d7e3204f..04fa7b59 100644 --- a/SPECS/ARCHIVE/INDEX.md +++ b/SPECS/ARCHIVE/INDEX.md @@ -81,6 +81,7 @@ | FU-P9-T2-1 | [FU-P9-T2-1_Fix_uvx_Web_UI_examples_to_include_webui_extras/](FU-P9-T2-1_Fix_uvx_Web_UI_examples_to_include_webui_extras/) | 2026-02-13 | PASS | | BUG-T0 | [BUG-T0_Uptime_Widget_Fix/](BUG-T0_Uptime_Widget_Fix/) | 2026-02-13 | PASS | | P9-T4 | [P9-T4_Create_the_publishing_helper/](P9-T4_Create_the_publishing_helper/) | 2026-02-13 | PASS | +| FU-P9-T4-1 | [FU-P9-T4-1_Align_publish_helper_output_with_protected_main_branch_workflow/](FU-P9-T4-1_Align_publish_helper_output_with_protected_main_branch_workflow/) | 2026-02-13 | PASS | ## Historical Artifacts @@ -208,3 +209,4 @@ | 2026-02-13 | BUG-T0 | Archived REVIEW_BUG-T0_Uptime_Widget report | | 2026-02-13 | P9-T4 | Archived Create_the_publishing_helper (PASS) | | 2026-02-13 | P9-T4 | Archived REVIEW_p9_t4_publishing_helper report | +| 2026-02-13 | FU-P9-T4-1 | Archived Align_publish_helper_output_with_protected_main_branch_workflow (PASS) | diff --git a/SPECS/INPROGRESS/next.md b/SPECS/INPROGRESS/next.md index 83106b8d..be49ca0a 100644 --- a/SPECS/INPROGRESS/next.md +++ b/SPECS/INPROGRESS/next.md @@ -1,16 +1,15 @@ -# Next Task: FU-P9-T4-1 — Align publish_helper output with protected main branch workflow +# No Active Task -**Priority:** P1 -**Phase:** Phase 9 Follow-up Backlog -**Effort:** 1 hour -**Dependencies:** P9-T4 -**Status:** Selected +The previously selected task has been archived. -## Description +## Recently Archived -Update `scripts/publish_helper.py` guidance so release steps follow protected-branch workflow: -create/push release branch, open PR into `main`, and tag only after merge. +- 2026-02-13 — FU-P9-T4-1: Align publish_helper output with protected main branch workflow (PASS) +- 2026-02-13 — P9-T4: Create the publishing helper (PASS) +- 2026-02-13 — BUG-T0: Uptime widget on Web UI always shows 1h 0m 0s (PASS) +- 2026-02-13 — FU-P9-T2-1: Fix uvx Web UI examples to include `webui` extras (PASS) +- 2026-02-13 — FU-REBUILD-P10-T1-7: Include Web UI static assets in published package artifacts (PASS) -## Next Step +## Suggested Next Tasks -Run the PLAN command to generate the implementation-ready PRD. +- BUG-T1: Kimi CLI MCP Connection Failure (if applicable) diff --git a/SPECS/Workplan.md b/SPECS/Workplan.md index c1e2324c..cb1ed9bd 100644 --- a/SPECS/Workplan.md +++ b/SPECS/Workplan.md @@ -1214,7 +1214,7 @@ Main branch is currently unstable after an accidental merge of the Phase 10 Web Phase 9 Follow-up Backlog - [x] FU-P9-T2-1: Fix uvx Web UI examples to include `webui` extras (P1) -- [ ] FU-P9-T4-1: Align publish_helper output with protected main branch workflow (P1) **INPROGRESS** +- [x] FU-P9-T4-1: Align publish_helper output with protected main branch workflow (P1) #### ✅ FU-P9-T2-1: Fix uvx Web UI examples to include `webui` extras - **Description:** Resolve documentation/config mismatch where examples use `uvx --from mcpbridge-wrapper ... --web-ui` without optional dependencies. Update all uvx Web UI examples to install extras via `--from mcpbridge-wrapper[webui]`, and align troubleshooting/runtime guidance with the correct uvx command. @@ -1237,7 +1237,7 @@ Phase 9 Follow-up Backlog --- -#### FU-P9-T4-1: Align publish_helper output with protected main branch workflow +#### ✅ FU-P9-T4-1: Align publish_helper output with protected main branch workflow - **Description:** Update `scripts/publish_helper.py` release guidance so it does not instruct direct commits/tags from `main` in repositories where `main` is protected. Guidance should explicitly recommend creating a release branch, pushing branch commits, opening a PR into `main`, and only tagging after merge. - **Priority:** P1 - **Dependencies:** P9-T4 @@ -1247,10 +1247,10 @@ Phase 9 Follow-up Backlog - Updated tests in `tests/unit/test_publish_helper.py` validating protected-branch-safe guidance - Optional alignment update in `PUBLISHING.md` if command sequence is duplicated there - **Acceptance Criteria:** - - [ ] Running `python scripts/publish_helper.py ` no longer suggests direct push-to-main flow - - [ ] Printed commands include branch creation + push + PR-to-main step before tagging - - [ ] Guidance still includes tag creation/push after merge so GitHub publish workflow is triggered - - [ ] `pytest tests/unit/test_publish_helper.py` passes + - [x] Running `python scripts/publish_helper.py ` no longer suggests direct push-to-main flow + - [x] Printed commands include branch creation + push + PR-to-main step before tagging + - [x] Guidance still includes tag creation/push after merge so GitHub publish workflow is triggered + - [x] `pytest tests/unit/test_publish_helper.py` passes --- From f0eaf2798d1c3d5a7926b9b93ebf0f9a5d1c882b Mon Sep 17 00:00:00 2001 From: Egor Merkushev Date: Fri, 13 Feb 2026 23:33:52 +0300 Subject: [PATCH 6/7] Review FU-P9-T4-1: publish helper protected-main guidance --- ...u_p9_t4_1_publish_helper_protected_main.md | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 SPECS/INPROGRESS/REVIEW_fu_p9_t4_1_publish_helper_protected_main.md diff --git a/SPECS/INPROGRESS/REVIEW_fu_p9_t4_1_publish_helper_protected_main.md b/SPECS/INPROGRESS/REVIEW_fu_p9_t4_1_publish_helper_protected_main.md new file mode 100644 index 00000000..12e5dc98 --- /dev/null +++ b/SPECS/INPROGRESS/REVIEW_fu_p9_t4_1_publish_helper_protected_main.md @@ -0,0 +1,30 @@ +## REVIEW REPORT — FU-P9-T4-1 publish_helper protected-main guidance + +**Scope:** `origin/main..HEAD` +**Files:** 7 + +### Summary Verdict +- [x] Approve +- [ ] Approve with comments +- [ ] Request changes +- [ ] Block + +### Critical Issues +- None. + +### Secondary Issues +- None. + +### Architectural Notes +- The release-helper guidance now matches protected-branch workflows and no longer implies direct commits/tags from `main`. +- Changes are appropriately scoped to command guidance text, unit coverage, and workflow artifacts. + +### Tests +- `pytest` passed (`345 passed, 5 skipped`). +- `ruff check src/` passed. +- `mypy src/` passed. +- `pytest --cov` passed with **96.62%** total coverage (>= 90%). + +### Next Steps +- No actionable findings. +- FOLLOW-UP step is skipped. From eda47dc48711c0454e5a3c8b91d8fb908cafe9c4 Mon Sep 17 00:00:00 2001 From: Egor Merkushev Date: Fri, 13 Feb 2026 23:34:11 +0300 Subject: [PATCH 7/7] Archive REVIEW_fu_p9_t4_1_publish_helper_protected_main report --- .../REVIEW_fu_p9_t4_1_publish_helper_protected_main.md | 0 SPECS/ARCHIVE/INDEX.md | 2 ++ 2 files changed, 2 insertions(+) rename SPECS/{INPROGRESS => ARCHIVE/FU-P9-T4-1_Align_publish_helper_output_with_protected_main_branch_workflow}/REVIEW_fu_p9_t4_1_publish_helper_protected_main.md (100%) diff --git a/SPECS/INPROGRESS/REVIEW_fu_p9_t4_1_publish_helper_protected_main.md b/SPECS/ARCHIVE/FU-P9-T4-1_Align_publish_helper_output_with_protected_main_branch_workflow/REVIEW_fu_p9_t4_1_publish_helper_protected_main.md similarity index 100% rename from SPECS/INPROGRESS/REVIEW_fu_p9_t4_1_publish_helper_protected_main.md rename to SPECS/ARCHIVE/FU-P9-T4-1_Align_publish_helper_output_with_protected_main_branch_workflow/REVIEW_fu_p9_t4_1_publish_helper_protected_main.md diff --git a/SPECS/ARCHIVE/INDEX.md b/SPECS/ARCHIVE/INDEX.md index 04fa7b59..9f99acc3 100644 --- a/SPECS/ARCHIVE/INDEX.md +++ b/SPECS/ARCHIVE/INDEX.md @@ -128,6 +128,7 @@ | [REVIEW_fu_p9_t2_1_uvx_webui_extras.md](FU-P9-T2-1_Fix_uvx_Web_UI_examples_to_include_webui_extras/REVIEW_fu_p9_t2_1_uvx_webui_extras.md) | Review report for FU-P9-T2-1 | | [REVIEW_BUG-T0_Uptime_Widget.md](BUG-T0_Uptime_Widget_Fix/REVIEW_BUG-T0_Uptime_Widget.md) | Review report for BUG-T0 | | [REVIEW_p9_t4_publishing_helper.md](P9-T4_Create_the_publishing_helper/REVIEW_p9_t4_publishing_helper.md) | Review report for P9-T4 | +| [REVIEW_fu_p9_t4_1_publish_helper_protected_main.md](FU-P9-T4-1_Align_publish_helper_output_with_protected_main_branch_workflow/REVIEW_fu_p9_t4_1_publish_helper_protected_main.md) | Review report for FU-P9-T4-1 | ## Archive Log @@ -210,3 +211,4 @@ | 2026-02-13 | P9-T4 | Archived Create_the_publishing_helper (PASS) | | 2026-02-13 | P9-T4 | Archived REVIEW_p9_t4_publishing_helper report | | 2026-02-13 | FU-P9-T4-1 | Archived Align_publish_helper_output_with_protected_main_branch_workflow (PASS) | +| 2026-02-13 | FU-P9-T4-1 | Archived REVIEW_fu_p9_t4_1_publish_helper_protected_main report |