Skip to content

answers QAPage: the Question node had no author and no date (#3318 to main) - #3319

Merged
Flotapponnier merged 2 commits into
mainfrom
release/qapage-question-fields-main
Oct 28, 2026
Merged

Flotapponnier merged 2 commits into
mainfrom
release/qapage-question-fields-main

Conversation

@Flotapponnier

Copy link
Copy Markdown
Collaborator

Cherry-pick of #3318 (dev 9c2cbd0) onto main, so the structured-data fix reaches the pages Search Console is actually reading.

19 insertions, one file, zero deletions. src/app/answers/[slug]/page.tsx was identical between main and dev apart from this change, so the pick applied cleanly and nothing main-only moved.

What it fixes

Search Console flagged four recommended fields on an /answers/<slug> page, all on the same node: author and datePublished on mainEntity, and upvoteCount and datePublished on mainEntity.acceptedAnswer. The QAPage wrapper already carried an author and dates; the Question entity Google actually reads for the Q&A result carried none. One URL is reported because one has been crawled as a QAPage so far, and every page in the cluster is built by this same code.

upvoteCount is 0 and stays 0: nothing on this site votes, and Google asks for 0 rather than an omitted field. Any other number would be invented engagement in structured data.

Checks on this base

  • pnpm validate 254 specs valid
  • pnpm exec tsc --noEmit clean
  • pnpm exec eslint clean on the touched file
  • bun test 785 pass, 1 fail, and that failure is pre-existing on main, not caused by this pick. See below.

main's CI is already red, since 2026-10-27

src/lib/spec-provider-set.test.ts fails on origin/main with nothing applied: it records f355324b6640e7e4 while main's provider set now hashes to b767efc1bf40bf99. The same test passes on dev, which records its own hash for its own spec set.

The guard is doing its job. Two merges moved a provider set on main after the hash was last updated in #3296, and neither touched the hash or the four cache keys:

Both changed only benchmarks/*.yml. main still carries bench-unfiltered-v102, all-benchmarks-v95, bench-filters-v43 and providers-v21.

In practice the caches have since turned over on their own: production serves 106 providers on hyperliquid-frontends including Perpex. So the exposure window has closed and bumping the keys now would buy a cold cache and nothing else. The remaining problem is only that main's CI is red, which greys out every PR opened against it, including this one.

The fix is one line, updating the recorded hash on main to its current set, and it is deliberately not in this PR: this one is a faithful port of someone else's change, and that one is a decision about cache keys that deserves its own commit message. Say the word and it follows immediately.

Search Console flagged four recommended fields on
/answers/which-hyperliquid-frontend-has-the-most-builder-revenue, and all
four sit on the same node: author and datePublished on mainEntity, plus
upvoteCount and datePublished on mainEntity.acceptedAnswer.

The QAPage wrapper around the question already carried an author, a
datePublished and a dateModified. The Question entity inside it, which is
what Google reads for the Q&A result, carried none of them. One item is
reported only because one answers URL has been crawled as a QAPage so far;
every page in the cluster is built by this same code.

upvoteCount is 0 and is meant to stay 0. Nothing on this site votes, and
Google's guidance is to send 0 rather than omit the field. Any other number
would be an invented engagement figure in structured data.

The dates keep their meaning: datePublished is when the question first had
a page, dateModified is when the numbers behind the answer last refreshed.
suggestedAnswer gets the same pair, since it already carried a dateModified
with no datePublished to anchor it.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
(cherry picked from commit 9c2cbd0)
@Flotapponnier
Flotapponnier merged commit 0ebf4f3 into main Oct 28, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant