EscapeOutput sniff fires on the argument line of multi-line printf, not
the call site. Collapse to single-line echo so the phpcs:ignore inline
comment covers the offending expression. No functional change.
Agent-Session: prcore-jsonld-remediation-20260623
- class-pr-core-prab-meta-reader.php: restore proper multi-line docblocks
for all 7 class constants (WPCS requires separate summary line before @var
tag; inline @var description fails the short-description sniff). Also fix
return-with-assignment at is_triggered() lines (separate assign + return).
- class-pr-core-jsonld-article.php: add phpcs:ignore for
WordPress.Security.EscapeOutput on printf($json) — wp_json_encode() is the
canonical JSON escape; WPCS cannot trace through the intermediate variable.
No functional changes. File line counts: meta-reader 299, article 247.
Agent-Session: prcore-jsonld-remediation-20260623
P1-A: CONTEXT.md — add glossary entries for _prab_* namespace,
meta-reader pattern, ScholarlyArticle type, and honest-reviewedBy
integrity constraint (Person-vs-Organization branching rule).
P1-B: Master IA + app-map updated (workspace docs, not in this diff):
INFORMATION-ARCHITECTURE.md v1.3.2 — §5 cross-plugin data flow added
(PRAutoBlogger _prab_* meta → prcore JSON-LD Article emission); §4
version bumped to 0.8.0.
peptide-repo-core.md — two new classes in §2 file tree; §3 data flow
Mermaid extended with PRAB→MetaReader→Emitter chain; §5 cross-plugin
dependency noted; §6 hooks table updated; last-verified bumped to v0.8.0.
P1-C: JsonldArticleTest.php — add 5 new test methods:
- test_standalone_fallback_emits_nothing_for_untriggered_post()
- test_standalone_fallback_emits_valid_graph_for_triggered_post()
- test_standalone_fallback_suppressed_when_yoast_active()
- test_get_about_peptides_nonexistent_id_skipped()
- test_get_about_peptides_wrong_post_type_skipped()
Also add test_is_triggered_cache_returns_same_value() for P2-5 cache.
P2-1: get_about_peptides() — skip entries where get_permalink() returns ''.
P2-2: get_reviewed_by() — empty display_name falls through to Organization.
P2-3: register_hooks() — explicit priority 10 on wpseo_schema_webpage_type.
P2-4: emit_standalone_fallback() — guard wp_json_encode() false return;
also guard empty permalink before building the graph.
P2-5: is_triggered() — per-post avoids triple
get_post_meta reads when all three hooks fire for the same post.
P3s accepted (noted in QA verdict): P3-1 test-comment misleading;
P3-2 docblock @see gap on emit_standalone_fallback; P3-3 DOI regex.
Agent-Session: prcore-jsonld-remediation-20260623
The stubs test suite runs without WordPress, so wp_parse_url() is
undefined when sanitize_url() calls it (introduced in the previous
PHPCS style commit). Add a thin stub that delegates to native
parse_url() — identical behaviour to the real WP function.
Agent-Session: prcore-jsonld-phpcs-20260623
All inline `/** @var ... */` single-line docblocks on class constants
and the $reader property are expanded to multi-line form with a proper
short description as the first tag (resolves
Generic.Commenting.DocComment.MissingShort on 8 locations across 2 files).
parse_url() → wp_parse_url() in sanitize_url() per WPCS
WordPress.WP.AlternativeFunctions.parse_url_parse_url (1 location).
No behaviour change: pure style/documentation fixes.
Agent-Session: prcore-jsonld-phpcs-20260623
Squash-merge of PR #22: adopt shared reusable CI workflow, convert PHPUnit to stubs, update branch-protection contexts.
QA-approved at 05d8094a1d. All required CI checks green.
Agent-Session: 2026-06-17-prcore-ci-deploy
Replaces the per-repo staging/smoke/production jobs with one call to
peptiderepo/peptide-e2e/.github/workflows/deploy-app.yml (target_path=wp-content/plugins/peptide-repo-core).
Validated end-to-end on the calculator pilot.
Agent-Session: cto rollout-reusable-deploy
* ci(audit): retry PR-association check to stop false positives on squash-merges
listPullRequestsAssociatedWithCommit is eventually-consistent after a squash
merge; the single immediate call intermittently flagged legit merges as
'direct push to main'. Now polls up to 5x/10s before opening an issue.
Agent-Session: cto audit-race-fix
* chore: bump plugin header to 0.5.0 to match PR_CORE_VERSION constant
The smoke job is a reusable-workflow 'uses:' call; Actions does not support
continue-on-error there, producing a 0-job workflow failure that has failed
every deploy (so v0.5.0 never reached production). Matches the prautoblogger
fix in #147. Smoke is not in deploy-production needs, so it stays non-blocking.
Agent-Session: cto restore-prcore-deploy
Co-authored-by: peptiderepo <peptiderepo@users.noreply.github.com>
- Remove invalid continue-on-error from reusable workflow call
(GitHub Actions doesn't support this property on 'uses:' jobs;
it caused 0-job workflow failures)
- Remove 'smoke' from deploy-production needs — smoke failures (e.g.
Playwright infra issues) must not block valid production deploys.
This matches the pattern already used by the theme repo.
- Smoke still runs and uploads artifacts; it's just not a gate.
- smoke job now has continue-on-error: true so a Playwright infra failure
never silently blocks a valid production deploy
- smoke.yml root cause was fixed in peptide-e2e (da79ee2) — explicit
checkout of peptide-e2e in workflow_call context
- This commit retriggers the CI/deploy pipeline for PR Core v0.5.0
- Register repo_daily CPT at /daily/[slug]/ for editorial publications
- Register repo_daily_category taxonomy with 4 seeded terms
- Add Repo Daily metabox for author byline and clinical review flag
- Bulk-migrate _repo_daily_author on autoblogged posts (psa_source)
- Update ARCHITECTURE.md with content-type table and scanner scope
- Update CONVENTIONS.md with repo_daily meta field extension pattern
- Bump version to 0.5.0, add CHANGELOG entry
Closes v0.5.0 scope.