agent/php/Actions/Forge
Snider d4f2fa9204 refactor(forge): route ScanForWork + ManagePullRequest through MetaReader
ScanForWork and ManagePullRequest now depend on the MetaReader
interface (added in #89) instead of reading raw Forgejo body /
description / PR text. Epic child-linkage comes from
EpicMeta.children, PR merge decisions come from PRMeta.state /
mergeability / checkStatuses. The returned shape drops issue_body
and replaces it with structural issue_state / issue_labels.

Adds a feature test that injects a mocked MetaReader carrying
intentionally-tainted body/description/review_text fields and
recursively asserts none of those keys appear in the output of
either action — the regression fence for the RFC rule that body
content must never reach pipeline decisions.

Closes tasks.lthn.sh/view.php?id=90

Co-authored-by: Codex <noreply@openai.com>
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-23 18:21:28 +01:00
..
AssignAgent.php revert fcb9c189e5 2026-04-23 12:32:57 +01:00
CreatePlanFromIssue.php revert fcb9c189e5 2026-04-23 12:32:57 +01:00
ManagePullRequest.php refactor(forge): route ScanForWork + ManagePullRequest through MetaReader 2026-04-23 18:21:28 +01:00
ReportToIssue.php revert fcb9c189e5 2026-04-23 12:32:57 +01:00
ScanForWork.php refactor(forge): route ScanForWork + ManagePullRequest through MetaReader 2026-04-23 18:21:28 +01:00