@cratis/pi 7.1.4 → 7.1.5

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.
@@ -61,7 +61,13 @@ and neighboring pages; ask only when the alternatives change the outcome.
61
61
  targeted recipes, and exact reference. Give different languages or hosts
62
62
  their own procedures when a shared path cannot be run as written. A
63
63
  'coming from X' bridge should map familiar concepts to the new workflow,
64
- not replace it.
64
+ not replace it. When a page shows several backends, state how they differ
65
+ once, in a "how the backends differ" table near the start: identity
66
+ source, id and response wire types, default authorization, live versus
67
+ snapshot queries, and unsupported features with their tracking issue.
68
+ Inside a step, write only what the current tab's reader needs. Across a
69
+ series, keep backend limitations in one table on the series index and link
70
+ it; don't repeat an issue-tracked limitation on every page.
65
71
  4. Draft in workflow order. For a tutorial, use one working domain throughout,
66
72
  show what to run and what appears, and recap before adding another concept.
67
73
  For a how-to, keep only what the specific task needs. Link out for details.
@@ -144,6 +150,12 @@ Never transcribe an API from memory, hand-translate an unsupported client, or
144
150
  claim a pasted block is runnable when it requires unstated setup. Show the
145
151
  command and observable output for a substantial walkthrough.
146
152
 
153
+ Adding a backend or client to a product also changes pages the product's own
154
+ checks don't scan, such as cross-product and site-level pages. Search them for
155
+ single-language claims ("in C#", C#-only APIs presented as universal) and for
156
+ series indexes whose description, reading order or production claims no longer
157
+ hold.
158
+
147
159
  Edit the *authored* file, never a synced copy. The Cratis site derives each
148
160
  product page's edit link from that source path, so don't hand-author
149
161
  `editUrl` in product frontmatter. Recheck examples against the supported
@@ -157,8 +169,9 @@ wording, structure and examples as readers hit them.
157
169
 
158
170
  Read [Cratis site specifics](references/cratis-site.md) before writing a
159
171
  Cratis product page. It covers the teaching components (`YouWillLearn`,
160
- `Recap`, client tabs), maturity labeling, cross-product compatibility, the
161
- Prompter feedback signal, and who decides page structure.
172
+ `Recap`, client tabs, including on site-owned pages), the variant-docs audit,
173
+ maturity and preview labeling, cross-product compatibility, the Prompter
174
+ feedback signal, and who decides page structure.
162
175
 
163
176
  ## Contextual awareness
164
177
 
@@ -25,6 +25,16 @@ imports and JSX. Use one where it clearly teaches better than plain Markdown.
25
25
  - The site links each expanded tab to its exact snippet file in the owning
26
26
  repository. Don't add those links by hand.
27
27
  - Arc's authoring check rejects `ArcBackendTabs` nested inside `Steps`.
28
+ Tabs can't sit inside `Steps` anywhere, so write a backend procedure as
29
+ numbered H2 steps and keep `Steps` for shared, untabbed procedures such as
30
+ the React screen.
31
+ - Site-owned MDX under `web/src/content/docs/` can use `<ArcBackendTabs>` and
32
+ `<ChronicleClientTabs>` without an import. The site expands them from the
33
+ same manifest and client-owned snippets as product pages, including in the
34
+ Copy Markdown mirror; check the mirror to confirm the macro expanded.
35
+ - The variant-docs audit (`web/variant-docs.yml`) also covers site-owned
36
+ pages. Every site page is audited or explicitly excluded with a reason, and
37
+ direct single-language backend fences are ratcheted.
28
38
  - `TopicHero` declares `title` (required), `icon` and `eyebrow`. Don't copy
29
39
  props from a page that passes others; they are ignored.
30
40
 
@@ -40,6 +50,10 @@ example in a `:::caution` aside, and state only the change and production
40
50
  limits the product source supports. Don't infer those limits from a
41
51
  site-wide label.
42
52
 
53
+ Label a preview variant on the first screen of every page that shows it, not
54
+ only on its own getting-started page. An unsupported-variant snippet is one
55
+ sentence with its tracking issue; the surrounding prose doesn't repeat it.
56
+
43
57
  ## Cross-product compatibility
44
58
 
45
59
  There is no numbered compatibility matrix across the Chronicle kernel and its
@@ -7,6 +7,10 @@
7
7
  { "kind": "skill-contains", "value": "## Work from the reader outward" },
8
8
  { "kind": "skill-contains", "value": "cratis-technical-examples" },
9
9
  { "kind": "skill-contains", "value": "## Completion checklist" },
10
- { "kind": "skill-contains", "value": "(references/cratis-site.md)" }
10
+ { "kind": "skill-contains", "value": "(references/cratis-site.md)" },
11
+ { "kind": "skill-contains", "value": "\"how the backends differ\" table" },
12
+ { "kind": "skill-contains", "value": "keep backend limitations in one table on the series index" },
13
+ { "kind": "skill-contains", "value": "single-language claims" },
14
+ { "kind": "skill-contains", "value": "the variant-docs audit" }
11
15
  ]
12
16
  }
@@ -31,6 +31,11 @@ language-tab layout or documentation site implementation.
31
31
  - **Multi-language client example:** keep one explanation; use the established
32
32
  client-owned snippet mechanism, compile each client against its own SDK, and
33
33
  offer only implementations that exist. Do not translate a C# call by guess.
34
+ Use the same domain type names in every tab; if the prose has to explain
35
+ which name each tab uses, fix the snippets instead. State each backend's id
36
+ and command-response wire type (for example `Guid` versus `string`) and keep
37
+ one id type per concept across every page of a series. Shared frontend code
38
+ that depends on those types must be backend-neutral or tabbed per backend.
34
39
  - **Sample application:** one realistic domain, explicit prerequisites and
35
40
  package versions, a documented run command, a reproducible state to start
36
41
  from, and a visible result. Keep it minimal enough for a new reader to finish.
@@ -83,6 +88,14 @@ elsewhere in product documentation. For those, verify against real source and
83
88
  a runnable sample/spec or an explicit snippet comparison; do not claim
84
89
  coverage from a site build or a validator that never scans the page.
85
90
 
91
+ A compiling tab is not a working tab. For each backend, confirm that the
92
+ artifact is discovered and registered, that proxy generation emits the file
93
+ and types the page names, and that any runtime behavior the page claims (live
94
+ updates, constraint rejection) was observed against a real kernel and sink. If
95
+ a tab's code compiles but fails at runtime, don't publish it with a workaround
96
+ in the prose after it. Put working code in the tab and reference the tracking
97
+ issue in a code comment.
98
+
86
99
  A simple process beats a large unmaintained examples gallery: give the reader
87
100
  one small success first, then link to a fuller sample when they need it. Update
88
101
  examples alongside public API changes and incoming reports of copy/paste failure.
@@ -6,6 +6,9 @@
6
6
  { "kind": "skill-contains", "value": "## Choose the right source" },
7
7
  { "kind": "skill-contains", "value": "**Multi-language client example:**" },
8
8
  { "kind": "skill-contains", "value": "## Build the example as a reader would" },
9
- { "kind": "skill-contains", "value": "## Stop conditions" }
9
+ { "kind": "skill-contains", "value": "## Stop conditions" },
10
+ { "kind": "skill-contains", "value": "A compiling tab is not a working tab." },
11
+ { "kind": "skill-contains", "value": "one id type per concept across every page of a series" },
12
+ { "kind": "skill-contains", "value": "Use the same domain type names in every tab" }
10
13
  ]
11
14
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cratis/pi",
3
- "version": "7.1.4",
3
+ "version": "7.1.5",
4
4
  "description": "Configuration-aware Cratis AI integration for Pi",
5
5
  "type": "module",
6
6
  "files": [