Authority: the graduation refresh below is implementation authority. Reservation-era sections are retained only as falsifiable provenance.
Lane state: unassigned and unclaimed.
Graduation Refresh — authoritative
Selected disposition
The reservation's universal-default premise did not survive convergence. /blog-post owns named publishing profiles: hero/campaign work may require a distinct cover; standard posts remain thesis-driven opt-in. /imagegen owns raster-generation/editing mechanics. A missing cover is an error only when the selected profile requires one.
This remains a one-PR leaf under #13383 and is independent of #15795's implementation order.
Final Contract Ledger
Target Surface
Source of Authority
Proposed Behavior
Fallback
Docs
Evidence
Cover eligibility
D#15673 OQ21 + /blog-post
Profile explicitly says required, optional, or refused
Standard posts remain opt-in; unresolved profile blocks publication promotion, not drafting
/blog-post workflow/reference
Representative profile fixtures
Cover brief and accepted artifact
/blog-post + /imagegen boundary
Record thesis/claim refs, aspect/safe-area variants, alt text, provenance, immutable source/final hashes, and visual acceptance
A manually produced asset is valid when it satisfies the same receipt
Conditional /blog-post payload
Bundle fixture + human visual receipt
Raster mechanics
/imagegen
/blog-post supplies the brief and consumes the accepted bundle without copying generation mechanics
No generated asset when the profile permits refusal
Cross-skill pointer
Two production routes yielding the same receipt
Portal/media registration
Live portal consumer
Add only metadata a named renderer/embed consumer requires
Keep metadata in article content/front matter when registry expansion is unearned
Portal registration docs
Rendered consumer + broken-link check
Decision Record impact
Aligned with #15795 and D#15673; no ADR is amended.
Decision Record
Not needed for a profile/receipt workflow. A canonical media schema or new portal-wide contract flips this to Required.
Discussion Criteria Mapping
D#15673 Option H / OQ21 → profile-owned cover eligibility, medium-owned SSOT, and shared claim/evidence references.
D#15673 OQ9/OQ16/OQ18 → immutable accepted-artifact identity, lineage, and publication binding.
STEP_BACK promotion acknowledgment → this marker/body refresh and preserved #13383 parent.
Final Acceptance Criteria
Define objective /blog-post profile inputs for required, optional, and refused covers; standard posts remain opt-in.
Add a reusable cover brief/receipt with thesis and claim refs, safe-area variants, alt text, provenance/disclosure, immutable source/final hashes, and human visual acceptance.
Route raster mechanics to /imagegen; duplicate no provider/model/tool parameters.
Preserve an explicit no-cover/refusal path when the selected profile permits it.
Add portal/registry fields only for a verified live consumer, with a rendered proof and broken-link fallback.
Verify representative hero, campaign, and standard profile fixtures plus the bounded review path.
Invoke /create-skill and /turn-memory-pre-flight in the PR if .agents/skills/** changes; carry this Contract Ledger into the PR.
Re-audit after the first three profiled packages; narrow or retire the default path if cover effort/correction cycles materially harm cadence or produce generic filler.
None. The exact-anchor STEP_BACK reported zero blockers.
Unresolved Liveness
The returning Kimi seats retain a non-gating ratification courtesy because Iris and Phoebe materially shaped the source Discussion. Revalidate this ticket if #15795 expands into executable code/schema, the selected blog ownership seam changes, or new evidence invalidates an accepted invariant.
Context
The operator asked that the blog + video + cover recommendations become durable substrate now rather than remain chat memory. Fold 4 introduced the publishing-package option; Phoebe's non-author challenge retained a default cover only if a reusable brief/template and fast review path keep its cost bounded.
Live repository evidence on 2026-07-22:
learn/blog contains 15 posts; only 5 contain raster-image markup.
The current blog-post router promises narrative, sourcing, over-claim, registration, and review gates, but no cover contract.
The authoring guide registers the post in blog.json and does not define cover production or acceptance.
Closed issues #5987 and #6012 are historical cover/visual precedents, not live ownership.
The Problem
“Every post gets a cover” is easy to state and costly to sustain. Without an explicit production and review boundary, it decays into one of two failures: bespoke artwork throttles the publishing cadence, or low-effort filler weakens the hero-piece quality bar. The current blog workflow cannot distinguish a missing required cover from a deliberate no-cover post, and it has no receipt proving safe-area, alt-text, source/provenance, or visual acceptance.
The Architectural Reality
/blog-post owns article eligibility, authoring, registration, and public-review gates.
/imagegen owns raster-generation/editing mechanics; this issue must specify the brief and accepted artifact, not duplicate provider/tool parameters.
blog.json is a navigation registry today, while BlogNeo.mjs models only the existing navigation fields. Graduation must decide whether cover metadata belongs there, in post front matter, or in a separate bounded manifest.
#13383 owns the sustained blog stream and is the correct parent.
No new .mjs placement is prescribed before graduation. Any graduated executable/schema proposal must run structural pre-flight first.
Reservation-Era Recommendation (superseded)
Adopt a default cover with a bounded path: every publishable post receives a distinct cover unless its selected profile explicitly opts out; the default path uses a reusable brief/template, safe-area variants, accessible alt text, immutable source/final references, and a fast human visual-acceptance receipt. If that path cannot stay cheap across the first measured packages, revert the universal default to profile-triggered covers.
Divergence Matrix
Option
When it is right
Source / evidence
Falsifier
Recommended — bounded default cover
A reusable brief/template plus fast acceptance makes consistency cheaper than repeated bespoke decisions
Median cover effort or correction cycles materially delay the first three profiled packages, or templates produce misleading/generic art
Universal bespoke cover
Every article needs a unique art-directed campaign asset and quality is worth the production cost
Build Week poster/thumbnail work proves bespoke assets can be valuable
Cadence or review capacity collapses; accepted visuals repeatedly require project-specific surgery
Thesis-driven opt-in only
Visuals help only when the article's thesis has a genuine visual anchor
The current corpus already ships many text-led posts
Repeated missing/late social-preview assets or inconsistent public presentation create rework that the default path would have prevented
Reservation-Era Fix Sketch (superseded)
Define the post profiles for which a cover is default, optional, or refused.
Add a reusable cover brief with thesis, claim references, aspect/safe-area variants, alt text, disclosure/provenance, source hash, and immutable accepted-artifact identity.
Route raster mechanics to /imagegen while keeping eligibility and acceptance in /blog-post.
Select the metadata owner only after comparing post front matter, blog.json, and a package manifest.
Define the bounded visual-review receipt and the decay trigger measured by the longitudinal sibling ticket.
Reservation-Era Contract Ledger (superseded)
Target Surface
Source of Authority
Proposed Behavior
Fallback
Docs
Evidence
Blog cover eligibility
Graduated D#15673 + /blog-post
Default/optional/refused is explicit per selected post profile
No implicit universal rule; unresolved profile blocks promotion
blog authoring guide
Profile fixture + review receipt
Cover brief / accepted artifact
Graduated D#15673
Carries thesis/claim refs, dimensions/safe areas, alt text, provenance, hashes, and acceptance
Missing/invalid fields fail the cover gate without invalidating the article draft
Conditional /blog-post reference
Schema/fixture plus visual review
Raster production handoff
/imagegen ownership boundary in D#15673
/blog-post supplies the brief and consumes the accepted bundle; no duplicated image-generation mechanics
Manual accepted asset remains possible if it satisfies the same receipt
Cross-skill link
Two production routes yielding the same receipt
Portal/media registration
Existing blog.json and BlogNeo surfaces; final owner pending graduation
Store only the minimum media identity needed by consumers
Keep metadata out of navigation registry if no live consumer earns it
Portal registration docs
Consumer test + rendered portal proof
Reservation-Era Decision Record Impact (superseded)
depends-on D#15673. No ADR is amended by this reservation.
Reservation-Era Decision Record (superseded)
PENDING D#15673. Graduation must classify this as Not needed, Optional, or Required.
Reservation-Era Exit Criteria (superseded)
Final implementation ACs are intentionally deferred. This reservation closes its current phase only when:
D#15673 graduates with the cover ownership/profile boundary resolved.
This body is refreshed against the exact graduated body version and signals.
Final Contract Ledger rows, tests/evidence, and one-PR decomposition replace the provisional sections.
/create-skill and /turn-memory-pre-flight are named as PR gates if /blog-post substrate changes.
Graduation Refresh Receipt
Completed by the authoritative graduation section above; the reservation-era text below remains provenance only.
Out of Scope
Generating covers for the existing backlog.
Implementing /video-create.
Social-channel distribution strategy.
Pinning a provider, model, prompt, or one universal pixel size before graduation.
Avoided Traps
Universal-by-guilt: “cover always” without an explicit opt-out and cost falsifier.
[GRADUATED_TO_TICKET: #15795]
Graduation Refresh — authoritative
Selected disposition
The reservation's universal-default premise did not survive convergence. /blog-post owns named publishing profiles: hero/campaign work may require a distinct cover; standard posts remain thesis-driven opt-in. /imagegen owns raster-generation/editing mechanics. A missing cover is an error only when the selected profile requires one.
This remains a one-PR leaf under #13383 and is independent of #15795's implementation order.
Final Contract Ledger
Decision Record impact
Aligned with #15795 and D#15673; no ADR is amended.
Decision Record
Not needed for a profile/receipt workflow. A canonical media schema or new portal-wide contract flips this to Required.
Discussion Criteria Mapping
Final Acceptance Criteria
Final Signal Ledger
Unresolved Dissent
None. The exact-anchor STEP_BACK reported zero blockers.
Unresolved Liveness
The returning Kimi seats retain a non-gating ratification courtesy because Iris and Phoebe materially shaped the source Discussion. Revalidate this ticket if #15795 expands into executable code/schema, the selected blog ownership seam changes, or new evidence invalidates an accepted invariant.
Context
The operator asked that the blog + video + cover recommendations become durable substrate now rather than remain chat memory. Fold 4 introduced the publishing-package option; Phoebe's non-author challenge retained a default cover only if a reusable brief/template and fast review path keep its cost bounded.
Live repository evidence on 2026-07-22:
The Problem
“Every post gets a cover” is easy to state and costly to sustain. Without an explicit production and review boundary, it decays into one of two failures: bespoke artwork throttles the publishing cadence, or low-effort filler weakens the hero-piece quality bar. The current blog workflow cannot distinguish a missing required cover from a deliberate no-cover post, and it has no receipt proving safe-area, alt-text, source/provenance, or visual acceptance.
The Architectural Reality
Reservation-Era Recommendation (superseded)
Adopt a default cover with a bounded path: every publishable post receives a distinct cover unless its selected profile explicitly opts out; the default path uses a reusable brief/template, safe-area variants, accessible alt text, immutable source/final references, and a fast human visual-acceptance receipt. If that path cannot stay cheap across the first measured packages, revert the universal default to profile-triggered covers.
Divergence Matrix
Reservation-Era Fix Sketch (superseded)
Reservation-Era Contract Ledger (superseded)
Reservation-Era Decision Record Impact (superseded)
depends-on D#15673. No ADR is amended by this reservation.
Reservation-Era Decision Record (superseded)
PENDING D#15673. Graduation must classify this as Not needed, Optional, or Required.
Reservation-Era Exit Criteria (superseded)
Final implementation ACs are intentionally deferred. This reservation closes its current phase only when:
Graduation Refresh Receipt
Completed by the authoritative graduation section above; the reservation-era text below remains provenance only.
Out of Scope
Avoided Traps
Related
D#15673 · #13383 · #13689 · #5987 · #6012
Origin Session ID: cb60301d-74a4-4024-b80d-2f7efdbf9cd1
Retrieval Hint: "D#15673 publishing package bounded default cover Fold 4 Fold 5"; Memory Core memory c8ec72a9-a8e2-4989-ac93-76e3cd9faa96.
Authored by Emmy (GPT-5.6 Sol Ultra, Codex).