Some checks failed
Main Confidence / confidence (push) Failing after 44s
## Summary - finalize Spec 223 planning artifact set for AstroDeck website rebuild - align `spec.md`, `plan.md`, `tasks.md`, `research.md`, `data-model.md`, `quickstart.md`, and contract schema - add/complete inventory, mapping, exception, drift-follow-up, and supersession artifacts - mark legacy website-spec task references as superseded and wire follow-up ownership ## Key Outcomes - no remaining cross-artifact consistency findings in the Spec 223 bundle - explicit Spec 213 handling path added - material-drift follow-up rules normalized - exception register and documented exception model made explicit and schema-backed ## Validation - Integrated browser smoke check passed for main website routes (`/`, `/product`, `/trust`, `/changelog`, `/contact`, `/privacy`, `/imprint`, `/legal`, `/security-trust`) - no console errors/warnings observed during route smoke navigation - YAML contract parses successfully Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de> Reviewed-on: #262
11 KiB
11 KiB
Data Model: Website Reset and AstroDeck Rebuild
This feature does not introduce runtime persistence. The entities below define the planning artifacts that must exist for the rebuild workflow to remain reviewable and deterministic.
Entity: LegacyWebsiteImplementation
- Purpose: Represents the current
apps/websitecodebase as the retired implementation substrate. - Fields:
scopePath: repository path being retired, currentlyapps/websitestatus: discarded implementation historyreplacedBySpec: spec reference that formally retires it,223-astrodeck-website-rebuildnotes: short rationale for why it is no longer the active base
- Relationships:
- One
LegacyWebsiteImplementationhas manyLegacyTaskDispositionrecords.
- One
Entity: CurrentWebsiteSurface
- Purpose: Captures the existing public routes and current website surfaces that must be reconciled during rebuild planning.
- Fields:
route: public route, such as/,/product,/trust,/contact,/legalsourceFile: current Astro page filesurfaceRole: current role in the website IA, such as core, secondary, legal, redirect, or optionalgoverningSpecs: list of active website specs that currently constrain the surfacecurrentDependencies: content collections, layout primitives, tests, or redirects tied to the surfaceplannedDisposition: keep, adapt, remove, or redirect
- Relationships:
- A
CurrentWebsiteSurfacemay map to one or moreAstroDeckPrimitivecandidates throughPrimitiveMapping.
- A
Entity: AstroDeckSourceIntake
- Purpose: Captures the reviewable AstroDeck source snapshot, intake constraints, and working assumptions before primitive mapping begins.
- Fields:
sourceSnapshotReference: path, tag, archive name, or other stable reference for the imported AstroDeck sourceintakeConstraints: list of intake limitations, licensing boundaries, or review constraintsreviewAssumptions: explicit assumptions used while building the primitive inventory and mappingsnotes: traceability details for reviewers
- Relationships:
- One
AstroDeckSourceIntakemay inform manyAstroDeckPrimitiverecords.
- One
Entity: GoverningWebsiteSpec
- Purpose: Tracks each existing website spec that must be classified before rebuild work continues.
- Fields:
specId: current spec number, initially one of 213, 214, 215, 217, 218title: short spec titleclassification: continuing, partially valid, or supersededscopeSummary: what part of the website the spec governsfollowUpPlan: reference to the per-spec mapping artifact or explicit supersession-closure artifact that owns current-slice delivery for this specrationale: why the classification was chosen
- Relationships:
- One
GoverningWebsiteSpechas manyPrimitiveMappingrecords. - One
GoverningWebsiteSpechas manyLegacyTaskDispositionrecords. - One
GoverningWebsiteSpecmay have oneSupersessionClosurewhen rebuild planning ends with an explicit closure instead of a mapping plan.
- One
Entity: SupersessionClosure
- Purpose: Captures the explicit closure artifact used when an in-scope website spec is classified as superseded and therefore does not continue into a mapping-based rebuild plan.
- Fields:
specId: governing website spec being closed outclassification: supersededclosureRationale: why the spec no longer needs a rebuild mapping artifactlegacyTaskDispositionReference: where the superseded legacy tasks were recordedreplacementReference: replacement plan reference or explicitno replacement work requiredstatementnotes: traceability details for reviewers
- Relationships:
- One
SupersessionClosurebelongs to oneGoverningWebsiteSpec.
- One
Entity: AstroDeckPrimitive
- Purpose: Represents a candidate AstroDeck page, section, or component available for rebuild mapping.
- Fields:
primitiveId: stable identifier inside the imported AstroDeck inventoryprimitiveType: page, section, or componentsourceReference: where the primitive came from inside the AstroDeck source snapshotcandidateSurfaces: current routes or spec requirements it may satisfydemoContentFlags: whether it carries demo copy, demo media, or demo CTA behavior that may require removalnotes: freeform adaptation concerns
- Relationships:
- One
AstroDeckPrimitivemay be referenced by manyPrimitiveMappingrecords.
- One
Entity: PrimitiveMapping
- Purpose: Records how a governing website spec requirement maps to one AstroDeck primitive or falls through to a documented missing-candidate exception path, including the replacement task ownership captured inside the same per-spec artifact.
- Fields:
specId: owning website specrequirementReference: spec requirement, acceptance point, or surface requirement being mappedprimitiveId: referenced AstroDeck primitive when a concrete candidate exists; omitted when the disposition isexceptiondisposition: keep, adapt, remove, or exceptionadaptationSummary: required changes to route, structure, styling, copy slots, or CTA behavioracceptanceMapping: how the mapped primitive satisfies the spec once adaptedreplacementTasks: ordered replacement task list owned by the same per-spec mapping or disposition artifacttaskPrimitiveReferences: named AstroDeck pages, sections, components, or explicit mapping activities referenced by the replacement task listmaterialDriftReferences: references to updated or follow-up website specs required when AstroDeck adoption changes page inventory, CTA logic, navigation, or trust messagingexceptionReference: linkedDocumentedExceptionrecord when the disposition isexception
- Relationships:
- Many
PrimitiveMappingrecords belong to oneGoverningWebsiteSpec. - Many
PrimitiveMappingrecords may target oneAstroDeckPrimitive. - One
PrimitiveMappingmay have zero or oneDocumentedException.
- Many
Entity: ExceptionRegisterEntry
- Purpose: Captures the review outcome for each missing-candidate check so the rebuild keeps a standing register of approved exceptions and explicit no-exception outcomes.
- Fields:
specId: governing website spec under reviewscope: page, section, component, or route slice being checkedreviewOutcome: approved exception or no exception requiredreviewRationale: why the review produced that outcomeexceptionReference: linkedDocumentedExceptionwhen the outcome is approved exceptionnotes: traceability details for reviewers
- Relationships:
- Many
ExceptionRegisterEntryrecords belong to oneGoverningWebsiteSpec. - One
ExceptionRegisterEntrymay reference zero or oneDocumentedException.
- Many
Entity: MaterialDriftFollowUp
- Purpose: Captures any material page inventory, CTA logic, navigation, or trust messaging change discovered during mapping so it becomes an explicit spec update instead of silent template drift.
- Fields:
affectedSpecId: governing website spec whose truth must be updated or followed updriftClass: page inventory, CTA logic, navigation, or trust messagingdriftSummary: concise description of what changed materiallyrequiredSpecAction: update existing spec or create follow-up spectargetSpecReference: path to the existing spec or named follow-up spec that owns the changenotes: rationale and traceability details
- Relationships:
- Many
MaterialDriftFollowUprecords may belong to oneGoverningWebsiteSpec.
- Many
Entity: LegacyTaskDisposition
- Purpose: Preserves old website implementation task history while marking it as no longer authoritative.
- Fields:
originalSpecId: spec that owned the original taskoriginalTaskReference: stable task identifier or short descriptiondisposition:superseded by AstroDeck rebuildreplacementReference: new plan, spec, or task set that replaces the old tasknotes: why the original task cannot simply be reopened
- Relationships:
- Many
LegacyTaskDispositionrecords belong to oneLegacyWebsiteImplementation. - Many
LegacyTaskDispositionrecords may be associated with oneGoverningWebsiteSpec.
- Many
Entity: DocumentedException
- Purpose: Captures the narrow approved cases where no adequate AstroDeck primitive exists and custom work is justified, stored as the approved-exception detail inside the exception register.
- Fields:
scope: page, section, component, or route slice that needs an exceptionmissingCandidate: statement of which AstroDeck search failedunmetRequirement: the active website-spec requirement that could not be satisfiedadequacyFailureReason: why keep or bounded adaptation could not satisfy the requirementboundedDeviation: precise custom work being allowedapprovedBy: named website reviewer, owner, or equivalent feature approverapprovalReference: spec, review note, or task entry that owns the exceptionspreadControl: explicit statement of why the exception stays local
- Relationships:
- One
DocumentedExceptionbelongs to onePrimitiveMapping. - One
DocumentedExceptionis represented by one approvedExceptionRegisterEntry.
- One
Validation Rules
- Every continuing or partially valid
GoverningWebsiteSpecmust have at least onePrimitiveMappingbefore implementation starts. - Every
CurrentWebsiteSurfacemust end the planning phase with an explicit disposition. - Every
LegacyTaskDispositionmust point to a replacement reference or explicitly state that no replacement work is required. - Every
DocumentedExceptionmust name the failed AstroDeck candidate search, the unmet requirement, the adequacy failure reason, the bounded deviation, and the named approver. - Every material page inventory, CTA logic, navigation, or trust messaging change discovered during mapping must create a
MaterialDriftFollowUprecord that points to an updated or follow-up website spec. - Every missing-candidate review must create an
ExceptionRegisterEntrywith outcomeapproved exceptionorno exception required. - Every replacement task list must name the relevant AstroDeck page, section, component, or mapping activity instead of using generic build wording.
- No
PrimitiveMappingmay useexceptionas its disposition without a linkedExceptionRegisterEntryandDocumentedException.
State Transitions
GoverningWebsiteSpec.classification:unreviewed -> continuing | partially valid | supersededCurrentWebsiteSurface.plannedDisposition:discovered -> keep | adapt | remove | redirectPrimitiveMapping.disposition:candidate -> keep | adapt | remove | exceptionExceptionRegisterEntry.reviewOutcome:reviewed -> approved exception | no exception requiredDocumentedException:gap identified -> approved exception recordLegacyTaskDisposition.disposition:historical -> superseded by AstroDeck rebuild
Notes
- These entities are planning artifacts only. They do not imply new database tables, application models, or runtime services.