@typeroll/mcp-server 0.45.20 → 0.45.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,160 @@
1
+ ---
2
+ name: tr-migration-evidence
3
+ description: Source-first design baseline, native capability mapping and evidence gates required before bulk website migration or visual acceptance.
4
+ ---
5
+
6
+ # Migration evidence contract
7
+
8
+ Use this shared contract with WordPress, Astro, URL and multisite recipes.
9
+ Default to preserving the source appearance and behavior. A redesign requires
10
+ explicit scope. A partly migrated target is not the design reference.
11
+
12
+ ## Gate 1: source baseline, before conversion
13
+
14
+ Record the authoritative source URL/date, scope, relevant Core version, active
15
+ Page templates and overrides. Inventory home, category/archive, long/short
16
+ articles, downloads, empty related lists and each distinct business surface.
17
+ Capture screenshots and computed geometry at matching actual `innerWidth`
18
+ values (320/390/768/1024/1280/1536 where relevant, plus both sides of actual
19
+ breakpoints). Record loaded font families/weights, color panels, logo/header,
20
+ hero, gutters, article/sidebar widths, card anatomy/grid and footer. Inspect
21
+ loaded images, menus, scrolled TOC, anchor landings and long links.
22
+ Inventory semantic CTA anchors/buttons, downloads and affiliate links before
23
+ copying prose: retain decoded labels, href paths, query parameters, fragments,
24
+ `target` and meaningful `rel` tokens. A source CSS class may identify a CTA
25
+ whose appearance would disappear when copied into prose.
26
+
27
+ Before removing builder wrappers/classes, preserve the information they carry:
28
+ anchors, lazy/srcset/background images, captions, tables, ordering, downloads,
29
+ embeds and interactions. Content modernization is a separate decision.
30
+
31
+ ## Gate 2: one verified prototype per active recipe, before bulk writes
32
+
33
+ Call `list_block_types` and `read_block_type` on the deployed runtime. Map each
34
+ source component to exact fields/bindings, defaults, minimum version and expected
35
+ geometry. A registry entry does not prove the capability works. Save and read
36
+ back each prototype, then inspect its preview and an authorized static build.
37
+
38
+ Example: a 48px heading uses `core/heading.font_size_px: 48` on Core 0.2.25+;
39
+ read the saved block back and measure computed `fontSize` at 1280px. Writing
40
+ `font_size_px` to `core/prose`, which does not declare it, is an unsupported
41
+ mapping even if an API preserves that unknown key. Stop with
42
+ `waiting_for_native_support` when required capability is absent or ignored;
43
+ do not hide the gap with tenant CSS or generic custom blocks.
44
+
45
+ Validate shared Page references, item order, missing images and empty/unpublished
46
+ references. Keep semantics separate from presentation: category emoji belongs
47
+ to its shared Page field, not copied into every article or card excerpt.
48
+ Validate actual field types, not just key names: number fields use JSON numbers
49
+ (`16`, `1.6`, `1`), not strings (`"16"`, `"1.6"`, `"1"`); booleans use `true`/
50
+ `false`. Check responsive map values too. Read-back retention is not enough:
51
+ measure the resulting font size, line height and paragraph spacing. If an
52
+ incorrect type is accepted but ignored, fix the prototype before bulk writes.
53
+
54
+ Map standalone CTAs to `core/button` when its declared fields preserve the
55
+ source behavior, rather than leaving class-dependent anchors in prose.
56
+ Core 0.2.25+ `new_tab: true` emits `target="_blank"` and
57
+ `rel="noopener noreferrer"` in static HTML; false/unset keeps the same tab.
58
+ Verify the rendered target/rel, preserved affiliate queries/fragments, keyboard
59
+ activation, actual tab opening and narrow-screen wrapping without requiring
60
+ JavaScript. Do not silently discard source `sponsored`/`nofollow`, download
61
+ behavior or other semantics unsupported by the chosen block: record the gap
62
+ and use a supported composition or stop for native support.
63
+ Do not apply a template to hundreds of Pages until its prototype passes.
64
+
65
+ ## Separate files, addresses and business behavior
66
+
67
+ Inventory both file bytes and every discovered historical asset URL, including
68
+ PDF/download hrefs, image click targets, srcsets and backgrounds. Verify transfer
69
+ and rendering separately from old-address preservation. Deduplicate by content
70
+ identity, not similar filenames. Preflight expanded redirect artifact bytes and
71
+ provider rule limits. A 200 at an unrelated destination is a failure. A source
72
+ 404 is not permission to discard a URL with traffic/backlinks: record a decision.
73
+ Query URLs need explicit routing support at the future host; keeping the old
74
+ server does not preserve them when the same hostname moves.
75
+
76
+ Classify each CTA: contact form, owned lead workflow, affiliate link, partner
77
+ iframe/script or other runtime. Preserve market, language, destinations and
78
+ attribution. Never clone recipients or partner IDs across markets. Test loading,
79
+ interaction and conversion separately; only use an authorized synthetic mode and
80
+ safe recipient. Unavailable delivery remains UNVERIFIED. No real leads or mail
81
+ to third parties merely to fill a checklist.
82
+
83
+ ## Evidence record (repeat per recipe, viewport and state)
84
+
85
+ - Source URL/date and target URL; Page/template IDs; exact publication ID.
86
+ - Runtime/Core version and saved content/config revision.
87
+ - Actual viewport `innerWidth` and height; scroll/menu/anchor state.
88
+ - Source and target screenshot paths; measured expected and actual geometry.
89
+ - Capability mapping: block type, field, read-back value and computed result.
90
+ - Separate PASS / FAIL / UNVERIFIED for routing, content, visual, assets,
91
+ keyboard/interaction and delivery; reviewer and timestamp.
92
+ - Visible deviation, specific user benefit, accepted scope and rationale.
93
+
94
+ Filled examples:
95
+
96
+ | Observation | Technical result | Visual decision |
97
+ | --- | --- | --- |
98
+ | Source video overflows a 390px viewport; native video fits and shows the entire frame | Width 390px, original aspect preserved; captures reviewed | PASS: deliberate improvement in mobile usability |
99
+ | Source has four cards and turquoise hero at 1280px; target has three plain cards and no color panel | HTTP 200, no overflow, all content is blocks | FAIL: brand/layout lost; those technical facts cannot attest visual fidelity |
100
+ | Heading round-trip retains 48 but computed size stays 32 | Save succeeds | FAIL: find ignored field/cascade before bulk conversion |
101
+
102
+ Keep imported, saved, locally checked, hosted-preview checked, published and
103
+ traffic-cut-over distinct. Template/theme changes invalidate affected acceptance;
104
+ never attach old evidence to a new publication. `record_migration_seo_acceptance`
105
+ booleans are reviewer attestations, not automated visual proof. Do not set them
106
+ from HTTP status, native-block count or overflow alone. Report a completed
107
+ pre-cutover scope honestly when DNS or integrations remain out of scope.
108
+
109
+ ## Complete census and visual signoff
110
+
111
+ The initial route census must combine source sitemaps, internal links, archive
112
+ pagination, CMS inventory and known utility routes. Include homepage, archives,
113
+ 404/search behavior and routes outside the sitemap where present. Do not invent
114
+ features absent from the source. Assign every route a recipe, template override,
115
+ composition or documented exception. Inventory the whole shell: content outside
116
+ `main`, header, footer, service navigation and archive heroes are not optional.
117
+
118
+ Derive required evidence from that census. Pair every in-scope source/target route
119
+ at mobile and desktop; add each unique component, breakpoint and interaction
120
+ state. Inspect page-specific media, lists, tables, embeds, CTAs, anchors and related
121
+ content. One representative article cannot attest every article's content.
122
+
123
+ A coverage row records route, recipe, component, state, actual viewport dimensions,
124
+ source revision, target content/config/Core/publication revision, paired screenshot
125
+ references, reviewer, review time and result. All rows start `UNVERIFIED`.
126
+ Keep independent results for content, links, list cardinality, full membership,
127
+ sequence, appearance, keyboard behavior and delivery. Screenshots must be inspected;
128
+ image diffs and contact sheets assist review and do not prove aesthetics.
129
+
130
+ For menus capture source and target closed, open and scrolled states, nested groups
131
+ if present, short landscape, focus order, Escape, link activation and breakpoint
132
+ transitions. For TOCs capture top/middle/bottom and anchor landings. Include tabs,
133
+ accordions and empty/loading/error/success states where applicable. Separate mobile
134
+ and desktop menu compositions require separate evidence; shared links may be reused
135
+ but one variant's screenshots do not attest the other.
136
+
137
+ Report denominators separately: routes/content, paired visual pages, recipes,
138
+ components and states. Missing an archive, open menu, footer or a unique embed leaves
139
+ coverage incomplete even if all captured screenshots pass. Shared block, theme,
140
+ partial or template changes invalidate every dependent row; content changes
141
+ invalidate that route and dependent listings. An old revision cannot approve a new
142
+ one. Source availability failures remain `UNVERIFIED`, not silently excluded.
143
+
144
+ Visual signoff requires zero uncovered required surfaces and zero unexplained
145
+ regressions. `FAIL` or `UNVERIFIED` blocks that signoff, even when a separately scoped
146
+ technical publication has approval. An intentional deviation needs exact before/
147
+ after evidence, specific user benefit and accepted scope; “cleaner” is not a reason.
148
+
149
+ Examples from a moving-services migration:
150
+
151
+ | Surface | Passing evidence | Separate visual result |
152
+ | --- | --- | --- |
153
+ | Mobile menu | Keyboard focus and Escape work | FAIL: header moves, source service group is missing, open-menu composition differs |
154
+ | Category archive | Every destination URL exists | FAIL: source sequence, card anatomy and columns differ |
155
+ | Article body | All text imported | UNVERIFIED: unique embed and footer were never compared |
156
+
157
+ Do not report “all design checked” from a viewport or recipe sample. Keep source
158
+ link-order comparisons and paired contact sheets with the report. The same contract
159
+ applies to WordPress, URL, Astro and multisite migration; do not create separate,
160
+ weaker checklists for individual import mechanisms.
@@ -81,3 +81,36 @@ headings render as H2 without mutating storage. A Page without a template H1 can
81
81
  keep one body H1. The layout itself does not inject an additional title.
82
82
  `core/field_list` defaults to a 0.7rem row gap, weight-600 labels and values that
83
83
  wrap long URLs. Empty rows and entirely empty groups stay hidden.
84
+
85
+ ### Native precision (Core 0.2.25 candidate)
86
+
87
+ Read current block schemas before relying on new controls. Heading/Page title
88
+ support responsive `font_size_px`, unitless `line_height` and `color`. Sections
89
+ separate full-width background from `max_width_px`, `padding_x` and
90
+ `content_gap_px`; Containers add `max_width_px`, `gap_px`, `padding_x_px` and
91
+ `padding_y_px`. Two columns add `gap_px` and `right_width_px`. Use numeric values
92
+ or `{mobile, tablet, laptop, desktop, wide}` overrides, not CSS strings.
93
+ Breadcrumbs have `padding_before_px`, `padding_after_px`, `divider`; TOC has
94
+ `padding_px`, `radius_px`, `border`, `shadow`, `link_color: neutral` and
95
+ `list_style: chevron`. Keep TOC generated from headings. Icon box adds native
96
+ card dimensions and `whole_card_link`; map real Page URLs rather than freezing
97
+ customer routes in HTML. Site logo accepts `height_px`. The `system` font family
98
+ uses the device stack without a webfont request. Preserve complete images and
99
+ validate actual mobile/desktop output, including scrolled outlines.
100
+
101
+ Columns `stack_below` accepts the select strings `"721"` (default), `"768"`,
102
+ `"1024"`, `"1280"`. A direct-slot TOC follows the selected stacked boundary: its
103
+ `mobile_display: "hidden"` releases the otherwise empty slot; `"visible"` keeps
104
+ it in flow. Use `"1024"` for full article width below laptop when justified by
105
+ the source comparison. Do not merely hide the TOC with `hidden_on` while leaving
106
+ a reserved two-column track, or duplicate body content for tablet/desktop.
107
+
108
+ For a sticky site header, use an outer semantic Container (`tag: "header"`,
109
+ `sticky: true`, optional responsive `sticky_top_px`, 0–240) outside main. Keep
110
+ its background opaque and its containing block tall enough; do not create a
111
+ short header wrapper or clip it with ancestor overflow. Sticky is opt-in.
112
+ Container `padding_top_px`/`padding_bottom_px` override `padding_y_px` per side
113
+ and accept responsive maps. Grid/Repeater and repeater aliases expose responsive
114
+ `gap_px` (0–240). Use these fields for exact source spacing rather than empty
115
+ spacers or corrective CSS. TOC active-section feedback includes document scroll
116
+ padding; remove obsolete duplicated tenant header offsets during migration.