agent/php/Actions
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
..
Auth revert fcb9c189e5 2026-04-23 12:32:57 +01:00
Brain revert fcb9c189e5 2026-04-23 12:32:57 +01:00
Credits revert fcb9c189e5 2026-04-23 12:32:57 +01:00
Fleet revert fcb9c189e5 2026-04-23 12:32:57 +01:00
Forge refactor(forge): route ScanForWork + ManagePullRequest through MetaReader 2026-04-23 18:21:28 +01:00
Issue revert fcb9c189e5 2026-04-23 12:32:57 +01:00
Phase revert fcb9c189e5 2026-04-23 12:32:57 +01:00
Plan revert fcb9c189e5 2026-04-23 12:32:57 +01:00
Session revert fcb9c189e5 2026-04-23 12:32:57 +01:00
Sprint revert fcb9c189e5 2026-04-23 12:32:57 +01:00
Subscription revert fcb9c189e5 2026-04-23 12:32:57 +01:00
Sync feat(sync): update WorkspaceState workflow progress on dispatch push 2026-04-23 18:10:17 +01:00
Task revert fcb9c189e5 2026-04-23 12:32:57 +01:00
.DS_Store revert fcb9c189e5 2026-04-23 12:32:57 +01:00