Skip to content

fix(email): enforce canonical token provenance boundaries (Issue #71 Slice 1) - #93

Merged
TheAggressive merged 1 commit into
masterfrom
fix/issue-71-slice-1-token-provenance
Sep 20, 2026
Merged

TheAggressive merged 1 commit into
masterfrom
fix/issue-71-slice-1-token-provenance

Conversation

@TheAggressive

Copy link
Copy Markdown
Owner

Summary

Enforces canonical email token provenance and removes static resolver/denylist bypass patterns.

Changes

  • Token_Resolver::tag() — removed the early-return bypass that skipped anchor validation for segments without raw ({{)) syntax. Entity-encoded tokens in hrefs are now correctly validated.
  • Renderer_Support::link_url() — removed the static (Token_Resolver::default()) fallback. Token-bearing URLs now pass through to the compiler-injected resolver for validation.
  • Tests — added regression tests for entity-encoded token syntax, non-recursive local value resolution, and HTML encoding of local values. Updated renderer pass-through tests to reflect the new boundary.

Verification

  • (pnpm qa:fast) — all checks pass (composer, lint, typecheck, format, phpstan, 130 JS tests)
  • Full PHP suite: 1068 tests, 4820 assertions — OK
  • Focused tests: 80 tests, 258 assertions — OK

Closes #71 (Slice 1)

@github-actions github-actions Bot added area:email Email compiler or campaign workflow area:php PHP or Composer code area:tests Automated tests or test configuration risk:medium Normal product code type:fix Corrects a defect labels Sep 20, 2026
@TheAggressive
TheAggressive merged commit 753a0e1 into master Sep 20, 2026
21 checks passed
@TheAggressive
TheAggressive deleted the fix/issue-71-slice-1-token-provenance branch September 20, 2026 01:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:email Email compiler or campaign workflow area:php PHP or Composer code area:tests Automated tests or test configuration risk:medium Normal product code type:fix Corrects a defect

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(M1): close remaining preflight, compliance, and artifact-inspection gaps

1 participant