Fix canonical URLs for the landing page and repository index #128

Merged
ClaudiuSchuster merged 5 commits from oss-oo/laboratory-pr119-canonical-20261014-impl1 into main 2026-10-14 01:21:51 +00:00
Owner

Implement the canonical URL corrections prepared in #119. The /about/ landing page now declares its own canonical URL and matching og:url; Caddy adds one canonical Link header only to successful HTML GET/HEAD responses for the exact unfiltered /explore/repos URL. Query variants, other routes, redirects, errors and non-HTML responses are excluded.

The original handoff files are retained unchanged, with a dated implementation entry in the runbook. Deployment and search-engine indexing remain separate from this source change. The review also records an existing security-header ordering issue; this change does not alter that block.

Validation: native Caddy 2.11.4 adaptation and validation; the full isolated repository E2E gate (27 steps); 21 positive/negative response cases on the isolated release VM; independent source and evidence review. Native PR CI is required before merge.

Implement the canonical URL corrections prepared in #119. The `/about/` landing page now declares its own canonical URL and matching `og:url`; Caddy adds one canonical `Link` header only to successful HTML GET/HEAD responses for the exact unfiltered `/explore/repos` URL. Query variants, other routes, redirects, errors and non-HTML responses are excluded. The original handoff files are retained unchanged, with a dated implementation entry in the runbook. Deployment and search-engine indexing remain separate from this source change. The review also records an existing security-header ordering issue; this change does not alter that block. Validation: native Caddy 2.11.4 adaptation and validation; the full isolated repository E2E gate (27 steps); 21 positive/negative response cases on the isolated release VM; independent source and evidence review. Native PR CI is required before merge.
docs: hand off Search Console fixes for the infrastructure migration
All checks were successful
ci / ci (pull_request) Successful in 54s
f381a3d2fd
Documentation-only handoff for MAMA Astra. Preserve both original candidate patches as inert files with evidence, hashes, migration constraints and return handoff. No runtime files changed or deployment performed.
docs: preserve exact original patch bytes in migration handoff
All checks were successful
ci / ci (pull_request) Successful in 53s
421be68339
Restore the exact original patch files after the Apply patch form normalized nested diff whitespace. Keep the recorded SHA-256 identities and all source/context bytes. Documentation assets only; no runtime source change.
Graph-preserving merge of the exact PR head so the original handoff
commits (f381a3d, 421be68) stay unchanged in this branch's ancestry.
The handoff files land as inert documentation; runtime corrections
follow in a separate commit.
Applies the two Search Console corrections from the 2026-10-10 handoff
(PR #119 exact head merged unchanged at 421be68 beforehand) onto the
current main base 8e7b995, per the accepted exact-head readiness plan:

- site/landing/index.html: declare https://oss-oo.io/about/ as the
  landing canonical and align og:url (original patch 1, byte-exact).
- caddy/Caddyfile: scoped canonical Link header for /explore/repos via
  the original matcher pair (method GET HEAD, original request URI
  exactly /explore/repos) plus the response match (status 200,
  Content-Type text/html*), placed at the top of the oss-oo.io route
  ahead of every handler (original patch 2 Caddyfile hunk, byte-exact).
- docs/RUNBOOK.md: the original documentation hunks plus a dated
  2026-10-14 implementation and gate record.

Gates green before this commit: native caddy adapt + validate under the
pinned runtime (Caddy v2.11.4, caddy:2-alpine digest de23def3...), the
full scripts/e2e-local.sh in an isolated stack (unique project name,
substituted free port, teardown verified), and the complete positive/
negative response matrix on an isolated disposable rig on the
release-1005 test VM against this exact Caddyfile: exact GET and HEAD
receive exactly one canonical Link (also with gzip); query variants
including a raw empty ? delimiter, /explore, /explore/repos/,
repository detail pages, OPTIONS/POST, 404/500 and non-HTML 200
responses receive none; /about -> 301 -> /about/ and the anonymous
root 303 stay intact; served /about/ HTML carries exactly one canonical
and matching og:url. Routing, redirects and auth surfaces unchanged.
docs: record review findings in the canonical implementation entry
All checks were successful
access-validation-contract / contract (pull_request) Successful in 1m31s
ci / ci (pull_request) Successful in 23s
920871cc47
Independent review verdict ACCEPT-WITH-FINDINGS; the one committed-artifact
correction: note the pre-existing unreachable security-headers block
(observed on the rig, out of scope, flagged for a follow-up round).
Also settled: forge refs/pull/119/head verified via ls-remote as
421be683... (tree caffcdf0...), main still 8e7b995 at push time.
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
OSS-OO/laboratory!128
No description provided.