Commit Graph

57 Commits

Author SHA1 Message Date
peptiderepo
382a7ede5d test: stub wp_parse_url() in PHPUnit bootstrap
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
2026-06-23 04:44:37 +00:00
peptiderepo
edb4afe71e style: fix non-auto-fixable PHPCS violations — docblocks + wp_parse_url
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
2026-06-23 04:41:17 +00:00
peptiderepo
f7df9cfc06 style: auto-fix PHPCS violations via phpcbf 2026-06-23 04:25:02 +00:00
peptiderepo
1ce471981b feat: PRAB article JSON-LD emitter + meta reader (v0.8.0)
- PR_Core_Jsonld_Article: meta-triggered emitter for PRAutoBlogger posts
  (trigger: _prab_schema_version=1 on post type). Yoast path retypes page
  node to MedicalWebPage (wpseo_schema_webpage_type priority 10) and enriches
  Article piece with citation[], about[]→Drug @id, lastReviewed, honest
  reviewedBy (wpseo_schema_graph priority 13). No-Yoast fallback emits
  standalone @graph. Posts without trigger meta are byte-unchanged.

- PR_Core_Prab_Meta_Reader: sanitises all _prab_* contract-v1 meta at read
  time. URLs validated (http/https), DOIs normalised to https://doi.org/ URI,
  JSON arrays per-element validated, WP user ID resolved. Malformed values
  degrade gracefully. Honest reviewedBy: Person ONLY when mode=human + valid
  user ID; else Organization. Never a fabricated person.

- Unit tests: JsonldArticleTest.php — 22 assertions covering is_triggered,
  review_mode, reviewed_by Person/Org decision tree, citation sanitization,
  DOI normalisation, about linkage, retype passthrough, enrich, no-new-nodes,
  editorial-system-never-person.

- bootstrap.php: WP_User stub + get_userdata reads pr_test_userdata global.
- ARCHITECTURE.md: updated JSON-LD class tree + PRAB emission section.
- CONVENTIONS.md: PRAB contract v2 extension guide added.
- CHANGELOG.md + version bump to v0.8.0.

Ratified contract: convo/prcore/decisions/2026-06-11-jsonld-contract-v1.md
File sizes: article.php=235L, meta-reader.php=265L (both < 300-line gate).
No duplicate Article/WebPage nodes. uninstall.php unaffected (_prab_* unowned).

Agent-Session: prcore-jsonld-article-20260622
2026-06-23 04:23:21 +00:00
peptiderepo
a7a2bb2f6d fix: resolve PR_Core_Settings_Renderer undefined constant fatal (v0.7.1) (#24)
Squash-merge of PR #24 — QA APPROVED (2026-06-17 SHA ad2b1d9a)

Agent-Session: 2026-06-17-phase1-vps-runner-deploy-500fixes
2026-06-17 13:16:33 +07:00
peptiderepo
6a8c43496e ci: fix peptide-e2e org ref + deploy.yml permissions (#23)
Fix stale peptiderepo/peptide-e2e refs and deploy.yml permissions.

Agent-Session: fix-e2e-ref-20260617
2026-06-17 11:33:24 +07:00
peptiderepo
665d7fa9e1 Adopt reusable CI standard + PHPUnit conversion (#22)
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
2026-06-17 01:12:00 +07:00
peptiderepo
d0b5875fd8 peptide-repo-core v0.6.2: inject Drug/FAQ via wpseo_schema_graph (fix peptide-page fatal) (#21)
v0.6.0 hooked wpseo_schema_graph_pieces with plain arrays; Yoast expects Abstract_Schema_Piece objects (get_class/is_needed) -> fatal on peptide singles. Inject Drug+FAQ as array nodes via wpseo_schema_graph (prio 12) instead. +regression test.

QA: APPROVE — qa-reviews/peptide-repo-core/2026-06-13-0bbb75fd2689f375b9d154fc0ed0b0098a1865b6.md

Agent-Session: jsonld-peptide-piece-fix v0.6.2 merge
2026-06-13 14:25:04 +07:00
peptiderepo
118f301705 peptide-repo-core v0.6.1: fix Yoast webpage-type TypeError on singular pages (#20)
Accept string|array in retype_to_medical_webpage (Yoast wpseo_schema_webpage_type passes array on singular pages); normalize @type comparison; add regression test.

QA: APPROVE — qa-reviews/peptide-repo-core/2026-06-13-077c4b0e518f682721abe6a115eac9bb2bf18186.md

Agent-Session: jsonld-webpage-typefix v0.6.1 merge
2026-06-13 13:52:46 +07:00
peptiderepo
e9d97b51e2 peptide-repo-core v0.6.0: peptide schema backfill + Yoast-integrated Drug/MedicalWebPage/FAQ (#19)
Backfill psa_*->_pr_* meta (migration 0004 + PubChem fallback); enrich Drug node with {permalink}#drug @id + molecularFormula/Weight/alternateName; rewrite emitter into Yoast schema graph (MedicalWebPage retype + FAQPage, no duplicate nodes).

QA: APPROVE (independent) — qa-reviews/peptide-repo-core/2026-06-13-817690c1b6ec2118ddcf3b8cfe8bc5ea7f3933b3.md

Agent-Session: peptide-schema-backfill v0.6.0 merge
2026-06-13 13:09:56 +07:00
peptiderepo
cc5d06b970 ci(review): drop multi-model panel to Haiku-only (#18)
QA A/B decision 2026-06-12 (CEO-ratified): Haiku-only. Evidence: convo/cto/threads/2026-06-qa-ab-review/. QA verdict per repo in qa-reviews/.

Agent-Session: cto-panel-merge-20260612
2026-06-12 21:53:43 +07:00
peptiderepo
a22c067eb0 ci: adopt shared reusable deploy workflow (#17)
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
2026-06-09 19:16:04 +07:00
peptiderepo
6015b3e5c3 ci(audit): retry PR-association check (#16)
* 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
2026-06-09 13:39:18 +07:00
peptiderepo
d5f6a69256 ci: restore deploy pipeline (#14)
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>
2026-06-09 13:23:34 +07:00
peptiderepo
6595afed76 ci: make smoke gate informational (#13)
Smoke runs but does not block prod promotion until triage completes.

Agent-Session: cto batch-merge-smoke-informational
2026-05-14 21:01:01 +07:00
peptiderepo
69abae3473 ci: fix deploy gate — smoke is informational, not a prod blocker
- 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.
2026-04-27 15:41:53 +00:00
peptiderepo
b8849b0f1e ci: add continue-on-error to smoke job; retrigger deploy for v0.5.0
- 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
2026-04-27 15:38:02 +00:00
peptiderepo
708204c3b6 PR Core v0.5.0: Add Repo Daily CPT, taxonomy, and metaboxes
- 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.
2026-04-27 15:33:28 +00:00
peptiderepo
d3392fa6ca ci: re-trigger deploy with fixed smoke.yml path 2026-04-27 12:29:17 +07:00
peptiderepo
c52cf9b3d6 feat: verification scanner + admin UI (PR Core v0.4.0)
Implements recurring verification scanner, dashboard widget, per-post sidebar meta box, reader-facing last-verified display, and unified settings panel. Bumps to v0.4.0.

Co-authored-by: peptiderepo <peptiderepo@users.noreply.github.com>
2026-04-27 12:24:57 +07:00
peptiderepo
554b7aa293 ci: add deploy summary step 2026-04-26 11:56:07 +07:00
peptiderepo
cfd7bd88b5 ci: add main-push-audit tripwire 2026-04-26 11:56:05 +07:00
peptiderepo
d4b343b7e2 ci: add CTO review workflow 2026-04-26 11:56:03 +07:00
peptiderepo
88e6002551 ci: add Playwright smoke gate before prod deploy 2026-04-26 11:41:16 +07:00
peptiderepo
3050292fcf fix(cpt): remove rest_namespace so Gutenberg block editor can load peptide posts (v0.3.2)
Removes rest_namespace => pr-core/v1 from CPT registration. Gutenberg fetches wp/v2 hardcoded — custom namespace caused 404 and editor crash on all 89 peptide entries. WordPress defaults to wp/v2.

QA: PASS (2026-04-25-9d4ce64c.md)
CI: green
PR: #5
2026-04-25 01:57:30 +07:00
peptiderepo
deadccc27b ci: split deploy.yml into staging→production pipeline with approval gate 2026-04-24 13:11:24 +07:00
peptiderepo
05cb3caf0d hotfix: CHANGELOG v0.3.1 2026-04-24 12:07:42 +07:00
peptiderepo
21d05427d8 hotfix: bump to v0.3.1 2026-04-24 12:07:40 +07:00
peptiderepo
9c59fe6706 hotfix: add missing PR_Core_Related_Posts_Provider interface (site down — v0.3.1) 2026-04-24 12:07:23 +07:00
peptiderepo
e0fcace223 feat: add Related Articles Section feature (v0.3.0)
Merges feature/related-articles-section.

Adds peptide_topic taxonomy, provider interface, internal posts provider, card grid renderer, admin settings, CSS, and unit tests.

Reviewed: qa-reviews/peptide-repo-core/2026-04-24-a10610ded7df.md
CI: PHP 8.1/8.2/8.3 lint, PHPCS, 300-line check — all green.
2026-04-24 10:25:17 +07:00
peptiderepo
a10610ded7 fix: trim CPT docblock to stay under 300-line limit 2026-04-24 10:22:50 +07:00
peptiderepo
2195b449b2 fix: restore missing return + closing braces in sanitize_review_status 2026-04-24 10:21:20 +07:00
peptiderepo
ba4e11192f fix: bring CPT class under 300 lines 2026-04-24 10:15:45 +07:00
peptiderepo
0f62abd6e9 fix: instantiate PR_Core_Topic_Taxonomy in init flow 2026-04-24 10:14:31 +07:00
peptiderepo
b885673a1f feat: instantiate PR_Core_Topic_Taxonomy in init flow 2026-04-24 10:11:53 +07:00
peptiderepo
35e62e8cf1 fix: remove peptide_topic from CPT class, bring under 300 lines 2026-04-24 10:11:33 +07:00
peptiderepo
bd1b2dba48 feat: extract peptide_topic taxonomy to own class 2026-04-24 10:11:03 +07:00
peptiderepo
0dcad0de0b docs: add v0.3.0 changelog entry for Related Articles feature 2026-04-24 10:03:52 +07:00
peptiderepo
d5376d1612 chore: bump version to 0.3.0 2026-04-24 10:03:03 +07:00
peptiderepo
28e110f780 feat: integrate Related Articles section into main orchestrator 2026-04-24 10:02:50 +07:00
peptiderepo
bb34998d2c feat: integrate settings into admin initialization 2026-04-24 10:02:26 +07:00
peptiderepo
2e7efab97a feat: add PR Core settings page 2026-04-24 10:02:10 +07:00
peptiderepo
0210d73cf7 feat: add peptide_topic taxonomy registration 2026-04-24 10:01:47 +07:00
peptiderepo
14f8e6159a test: add unit tests for PR_Core_Internal_Posts_Provider 2026-04-24 10:01:00 +07:00
peptiderepo
6359a18fed feat: add related-posts CSS styles 2026-04-24 10:00:55 +07:00
peptiderepo
33dc8a183a feat: add related-posts card template part 2026-04-24 10:00:51 +07:00
peptiderepo
a21d35ee27 feat: add PR_Core_Related_Posts_Section renderer 2026-04-24 10:00:47 +07:00
peptiderepo
a906e1b701 feat: add PR_Core_Internal_Posts_Provider implementation 2026-04-24 10:00:43 +07:00
peptiderepo
4d8e98f34b feat: add PR_Core_Related_Posts_Provider interface 2026-04-24 10:00:38 +07:00
peptiderepo
bb3967a071 fix(repo): drop stale TAX_FAMILY references (v0.2.1 P1 hotfix) (#2)
v0.2.0 removed TAX_FAMILY from PR_Core_Peptide_CPT but left two stale
references in PR_Core_Peptide_Repository:
  - find_all() family filter branch (class-pr-core-peptide-repository.php:95-102)
  - post_to_dto() families taxonomy lookup (class-pr-core-peptide-repository.php:138)

JSON-LD emission on single-peptide templates called find_by_id() ->
post_to_dto() which hit the undefined constant and killed every peptide
detail page render mid-wp_head().

Fix:
  - family filter is silently ignored until a future minor bump
    removes it from the REST schema.
  - post_to_dto() hardcodes $families = [] so the DTO still carries
    the field (REST response shape unchanged for existing clients).

Out-of-scope follow-ups:
  - Post-mortem on why the v0.2.0 QA gate missed this (unit tests
    exercised the CPT class in isolation, not the repository's
    consumption of its constants).
  - Add an integration-style test for JSON-LD emission on a single
    peptide so any future CPT-class refactor catches repository drift.

Co-authored-by: peptiderepo <peptiderepo@users.noreply.github.com>
2026-04-22 16:56:42 +07:00