منبع حقیقت، محتوا، انتشار و رسانه · فصل ۲ — Page/Version/Block، Forms، SEO و Rollback · 161

Immutable Public Rollback and Route Monitoring

Design an immutable public rollback procedure that switches an explicit release pointer to a previously verified release without rewriting either release, then confirms route/status/canonical health with versioned monitoring evidence before declaring recovery. می‌تواند «Immutable Public Rollback و Route Monitoring» را در یک pipeline محدود با provenance، rights/version و publication gate تعریف کند.

Immutable Public Rollback و Route Monitoring — fa-IR

Lesson summary

Design an immutable public rollback procedure that switches an explicit release pointer to a previously verified release without rewriting either release, then confirms route/status/canonical health with versioned monitoring evidence before declaring recovery.

می‌تواند «Immutable Public Rollback و Route Monitoring» را در یک pipeline محدود با provenance، rights/version و publication gate تعریف کند.

This lesson produces

می‌تواند «Immutable Public Rollback و Route Monitoring» را در یک pipeline محدود با provenance، rights/version و publication gate تعریف کند.

Who it is for

Foundation

Use a guided lesson-specific evidence matrix and one worked negative case.

Repair

Re-run only the failed owned dimension with a smaller deterministic synthetic fixture.

Experienced

Start from mixed authority/policy/evidence records; require explicit trade-offs and provenance.

Prerequisites

1. Rollback switches a pointer; it does not rewrite a release

Editing the failed release until it resembles an older version destroys exact identity. In this lesson each release is immutable and rollback is a new event that changes the explicit active_release_pointer.

2. CON-010 ownership boundary

CON-010 owns the public rollback event and post-switch evidence. CON-006 owns locale routing, CON-007 workspace versioning, CON-008 forms, and CON-009 canonical/redirect policy. This lesson consumes their evidence without redefining them.

3. Separate release identity from deployment labels

Use an exact release_id plus release_manifest_digest. Labels such as “yesterday,” “last stable,” or a mutable directory name are not sufficient rollback authority.

4. Git is a mental model, not the MAKNOW implementation

Git names objects by object identity and uses named refs as pointers. That separation is a useful analogy for immutable snapshots and movable pointers, but a MAKNOW public release is not literally a Git commit or ref.

5. The rollback target must already be verified

Do not switch to a target whose digest, prior verification, or immutability is unknown. An old-looking release is not automatically safe; unsupported targets produce BLOCK_ROLLBACK.

6. Record authorization and an append-only pointer event

The rollback record must bind the incident, target release/digest, authorization, pointer before/after, pointer_event_id, and decision provenance. Do not overwrite pointer history; append a new event.

7. A successful switch only starts verification

“Deployment succeeded” or a changed pointer proves a control-plane action. Public recovery requires data-plane probes against the actual routes users and crawlers receive.

8. HTTP status is one dimension, not complete health

RFC 9110 defines HTTP status classes and redirect semantics. A route returning 200 can still serve bytes from the wrong release, so status must be evaluated with content identity.

9. Content digest verifies the active release

For critical routes, compare a release-bound digest or fingerprint with the live response. A 200 response whose content matches the failed release remains PARTIAL_RECOVERY.

10. Re-probe canonical and redirect behavior

Google Search Central recommends checking redirects, canonical annotations, and crawl/indexing behavior during site changes. A recovered page with a stale canonical or redirect is not full recovery.

11. Keep locale and form probes in scope

The main page may recover while a locale route or form endpoint remains unhealthy. Declare the required route set explicitly; anything not probed stays outside the confirmed claim.

12. Use typed recovery states

RECOVERY_CONFIRMED requires a verified immutable target, authorized append-only pointer event, correct active pointer, and every required probe passing inside the monitor window. Otherwise preserve PARTIAL_RECOVERY, ROLLBACK_FAILED, or BLOCK_ROLLBACK.

13. Negative case: correct pointer, wrong redirect

Suppose the pointer returns to R41, page status is 200 and the page digest is correct, but /old-pricing still redirects toward the failed release. Do not declare success; retain the exact REDIRECT_MISMATCH reason.

14. Transfer: pages recover, form and one redirect do not

In the second incident, page routes and canonicals recover but the form endpoint is unhealthy and one redirect still targets the failed release. Rebuild the evidence pack and keep PARTIAL_RECOVERY until both failures are cleared.

15. Auditable output

The Evidence Pack records Incident, Failed Release/Digest, Rollback Target/Digest, Pointer Before/After, Authorization/Event, Expected Route Set, status/content/canonical/redirect/locale/form probes, monitor window, recovery state, reason, and provenance. The strongest claim is bounded to that exact scope and evidence.

Assessment

There is no answer key in this lesson pack; answer it yourself and mark honestly. "Needs review" sends the lesson to your review queue.

AF1 formative

Name the CON-010 owned boundary and one adjacent non-goal.

lesson ✗AI ✗notes ✗

AF2 formative

Why is a successful pointer switch insufficient to close the incident?

lesson ✗AI ✗notes ✗

AS1 application

Build the evidence pack from the supplied incident and exact route probes.

lesson ✗AI ✗notes ✗

AS2 diagnosis

Diagnose a rollback where status passes but the content digest does not.

lesson ✗AI ✗notes ✗

AS3 decision

Issue a bounded recovery state and list what downstream systems may rely on.

lesson ✗AI ✗notes ✗

AS4 transfer

Re-evaluate after page routes recover but a form and redirect still fail.

lesson ✗AI ✗notes ✗

AS5 reflection

State the strongest supported recovery claim and one unsupported global claim.

lesson ✗AI ✗notes ✗
Assessment rubric

Critical dimensions: exact release identity and pointer event; exact probe evidence; preservation of negative/unknown state; bounded recovery decision; changed-context transfer. A submission fails if it declares recovery from the deploy/pointer action alone or silently ignores a required failing probe.

References & freshness

Git Documentation — Objects and refs
·
Google Search Central — Site Moves and Migrations / Redirects
·
RFC 9110 — HTTP Semantics
·

Case studies

Lab files

Inspect the eight synthetic incidents. Implement evaluate() in starter.py so the output is derived from exact release identity, authorization, append-only pointer evidence and required route probes. Do not infer recovery from the deployment command alone.