@agent-native/core 0.168.7 → 0.168.10

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.
Files changed (91) hide show
  1. package/corpus/README.md +1 -1
  2. package/corpus/templates/analytics/actions/mutate-dashboard.ts +8 -1
  3. package/corpus/templates/calendar/actions/delete-event.ts +34 -18
  4. package/corpus/templates/calendar/actions/delete-events.ts +13 -1
  5. package/corpus/templates/calendar/app/components/calendar/EventDetailPanel.tsx +22 -3
  6. package/corpus/templates/calendar/app/lib/calendar-timezone.ts +19 -0
  7. package/corpus/templates/calendar/server/lib/google-api.ts +18 -1
  8. package/corpus/templates/clips/actions/finalize-meeting.ts +16 -0
  9. package/corpus/templates/clips/actions/list-meetings.ts +1 -0
  10. package/corpus/templates/clips/actions/sync-calendars.ts +10 -29
  11. package/corpus/templates/clips/desktop/src/hooks/useMeetingTranscription.ts +28 -12
  12. package/corpus/templates/clips/desktop/src/lib/meeting-stop.ts +16 -0
  13. package/corpus/templates/clips/server/lib/calendar-event-meetings.ts +19 -9
  14. package/corpus/templates/content/app/components/editor/SlashCommandMenu.tsx +1 -0
  15. package/corpus/templates/content/app/global.css +5 -0
  16. package/corpus/templates/content/docs/solutions/2026-08-20-code-block-slash-production-regression-shape.md +492 -0
  17. package/corpus/templates/content/docs/solutions/2026-08-20-code-block-surface-background-shape.md +273 -0
  18. package/corpus/templates/factory/.agents/skills/factory-graphs/SKILL.md +5 -0
  19. package/corpus/templates/factory/AGENTS.md +12 -22
  20. package/corpus/templates/factory/README.md +11 -8
  21. package/corpus/templates/factory/actions/approve-factory-item.ts +35 -8
  22. package/corpus/templates/factory/actions/babysit-agent-native-pull-request.ts +24 -9
  23. package/corpus/templates/factory/actions/create-factory.ts +211 -0
  24. package/corpus/templates/factory/actions/evaluate-triage-item.ts +29 -5
  25. package/corpus/templates/factory/actions/get-factory-graph.ts +1 -1
  26. package/corpus/templates/factory/actions/get-slack-feedback-context.ts +20 -11
  27. package/corpus/templates/factory/actions/get-triage-config.ts +13 -12
  28. package/corpus/templates/factory/actions/get-triage-item.ts +28 -6
  29. package/corpus/templates/factory/actions/govern-agent-native-pull-request.ts +33 -17
  30. package/corpus/templates/factory/actions/ingest-github-observation.ts +10 -4
  31. package/corpus/templates/factory/actions/list-factory-audit.ts +11 -4
  32. package/corpus/templates/factory/actions/list-factory-automations.ts +34 -12
  33. package/corpus/templates/factory/actions/list-triage-items.ts +11 -3
  34. package/corpus/templates/factory/actions/list-triage-rules.ts +11 -4
  35. package/corpus/templates/factory/actions/poll-github-sources.ts +24 -10
  36. package/corpus/templates/factory/actions/poll-sentry-errors.ts +26 -11
  37. package/corpus/templates/factory/actions/poll-slack-channel.ts +31 -13
  38. package/corpus/templates/factory/actions/reconcile-triage-run.ts +59 -9
  39. package/corpus/templates/factory/actions/record-triage-feedback.ts +14 -3
  40. package/corpus/templates/factory/actions/run-factory-automation.ts +12 -2
  41. package/corpus/templates/factory/actions/save-factory-automation.ts +82 -21
  42. package/corpus/templates/factory/actions/save-factory-graph.ts +10 -1
  43. package/corpus/templates/factory/actions/save-triage-config.ts +90 -36
  44. package/corpus/templates/factory/actions/save-triage-rule.ts +16 -3
  45. package/corpus/templates/factory/actions/start-builder-for-item.ts +28 -20
  46. package/corpus/templates/factory/actions/suggest-factory-rules.ts +11 -4
  47. package/corpus/templates/factory/actions/view-screen.ts +22 -30
  48. package/corpus/templates/factory/app/components/factory/FactorySettingsView.tsx +7 -2
  49. package/corpus/templates/factory/app/components/factory/FactoryWorkspaceActions.tsx +7 -22
  50. package/corpus/templates/factory/app/components/factory/NewFactoryForm.tsx +260 -0
  51. package/corpus/templates/factory/app/components/layout/Layout.tsx +1 -1
  52. package/corpus/templates/factory/app/components/layout/Sidebar.tsx +2 -1
  53. package/corpus/templates/factory/app/hooks/use-navigation-state.ts +3 -3
  54. package/corpus/templates/factory/app/i18n/en-US.ts +18 -1
  55. package/corpus/templates/factory/app/routes/factory.tsx +78 -62
  56. package/corpus/templates/factory/app/routes/{factory-settings.tsx → new-factory.tsx} +12 -9
  57. package/corpus/templates/factory/server/db/schema.ts +18 -3
  58. package/corpus/templates/factory/server/factory-graph/contracts.ts +24 -0
  59. package/corpus/templates/factory/server/factory-graph/store.ts +16 -9
  60. package/corpus/templates/factory/server/lib/factory-automation-plan.ts +136 -0
  61. package/corpus/templates/factory/server/lib/factory-automation-repair.ts +31 -0
  62. package/corpus/templates/factory/server/lib/factory-scope.ts +416 -0
  63. package/corpus/templates/factory/server/lib/require-factory-automation.ts +11 -0
  64. package/corpus/templates/factory/server/plugins/agent-chat.ts +4 -2
  65. package/corpus/templates/factory/server/plugins/factory-migrations.ts +80 -0
  66. package/corpus/templates/factory/server/plugins/factory-scheduler-job.ts +142 -43
  67. package/corpus/templates/factory/server/triage/audit.ts +4 -0
  68. package/corpus/templates/factory/server/triage/ids.ts +4 -0
  69. package/dist/cli/native-dependencies.js +4 -1
  70. package/dist/client/AgentPanel.d.ts +5 -1
  71. package/dist/client/AgentPanel.js +9 -4
  72. package/dist/client/agent-chat/index.d.ts +1 -1
  73. package/dist/client/agent-chat/index.js +1 -1
  74. package/dist/client/chat-first/apps-rail.js +6 -6
  75. package/dist/client/chat-first/primary-nav.js +14 -6
  76. package/dist/client/integrations/IntegrationsPanel.d.ts +15 -0
  77. package/dist/client/integrations/IntegrationsPanel.js +29 -21
  78. package/dist/client/integrations/index.d.ts +1 -1
  79. package/dist/client/integrations/index.js +1 -1
  80. package/dist/client/resources/McpIntegrationDialog.js +1 -1
  81. package/dist/collab/struct-routes.d.ts +1 -1
  82. package/dist/deploy/build.js +1 -1
  83. package/dist/file-upload/actions/upload-image.d.ts +1 -1
  84. package/dist/observability/routes.d.ts +3 -3
  85. package/dist/progress/routes.d.ts +1 -1
  86. package/dist/secrets/routes.d.ts +6 -6
  87. package/dist/server/realtime-token.d.ts +1 -1
  88. package/dist/server/transcribe-voice.d.ts +1 -1
  89. package/dist/shared/mcp-embed-headers.d.ts +1 -1
  90. package/dist/shared/mcp-embed-headers.js +10 -3
  91. package/package.json +1 -1
@@ -0,0 +1,492 @@
1
+ # Ordinary Code Block slash insertion production regression
2
+
3
+ ## Decision
4
+
5
+ Treat the remaining report as a production-only contract regression until a
6
+ reporter-equivalent disposable fixture demonstrates the first divergent
7
+ boundary. Do not repeat the July 24 atomic `setCodeBlock()` repair without that
8
+ evidence: the current repository implementation and the current production
9
+ bundle already contain it, and the exact current repository snapshot passes
10
+ both Enter-key and pointer-selection insertion plus reload persistence in a
11
+ real local Content interface.
12
+
13
+ The Work lane is therefore narrow and fail-closed: reproduce the production
14
+ failure on an approved disposable fixture, capture the editor transaction and
15
+ save receipt, and repair only the first boundary that differs from the passing
16
+ current-head control. If the failure does not reproduce, Work stops with
17
+ changed evidence instead of manufacturing another Code Block implementation.
18
+
19
+ ## Durable identity and coordinates
20
+
21
+ - Bowerbird task: `Repair Content slash-command image and code block insertion`
22
+ - Bowerbird ID: `b39ed5ea-738a-47d7-9300-62c07f49efc0`
23
+ - Supplied current Bowerbird revision:
24
+ `c56ab46ffd312c412f971ab7db183951eb342ca2e9685a86127fd41856f77580`
25
+ - Historical Codex owner: `019ff1d3-9943-7603-9a35-29fa3a94c4e0`
26
+ - Repository: `BuilderIO/agent-native`
27
+ - Refreshed repository HEAD:
28
+ `6203d5dba9095978b7d5681720b81953ce04638c`
29
+ - Production host: `https://content.agent-native.com`
30
+ - Observed production editor asset:
31
+ `assets/VisualEditor-dwyChdnP.js`
32
+ - Shape ledger revision: `content-code-block-production-shape-v1`
33
+
34
+ No Bowerbird row, production/customer document, shipping source, commit, PR,
35
+ deployment, or task title was changed during Shape.
36
+
37
+ ## Scope
38
+
39
+ ### Owned outcome
40
+
41
+ A signed-in Content writer types `/code block` in an ordinary Page and can
42
+ insert one native Code Block with either Enter or pointer selection; the slash
43
+ query disappears atomically, the editor remains responsive, entered code saves,
44
+ and the same block and source return after reload.
45
+
46
+ ### Explicit exclusions
47
+
48
+ - image insertion or upload completion;
49
+ - the adjacent Code Block UX task, including language controls, tabs, execution,
50
+ rendered output, or styling;
51
+ - Mermaid insertion, rendering, fallback, or execution;
52
+ - registry-derived slash-command catalog behavior;
53
+ - broader slash-command discovery, grouping, or keyboard redesign;
54
+ - production/customer-data mutation during diagnosis or acceptance.
55
+
56
+ ## Evidence
57
+
58
+ ### Direct evidence
59
+
60
+ 1. Current source routes both activation modes through the same
61
+ `executeCommand` callback in
62
+ `templates/content/app/components/editor/SlashCommandMenu.tsx`.
63
+ 2. The ordinary Code Block command preserves the slash range and calls
64
+ `setCodeBlockFromSlashCommand`, which chains `focus()`, optional
65
+ `deleteRange(slashRange)`, and `setCodeBlock()` into one ProseMirror command.
66
+ 3. After a document-changing command, `executeCommand` calls
67
+ `onDraftCommitted`; `VisualEditor` binds that callback to
68
+ `persistEditorContent(editor, { userInitiated: true })`.
69
+ 4. `persistEditorContent` serializes the current editor document through NFM,
70
+ registers the emitted collaborative value, and hands it to
71
+ `DocumentEditor`'s queued 500 ms save boundary. Navigation/teardown has a
72
+ separate flush path.
73
+ 5. `CodeBlockNode.tsx` uses Tiptap's native Lowlight Code Block renderer. The
74
+ historical React node view that could lock a collaborative editor is not the
75
+ current renderer.
76
+ 6. The July 24 commit
77
+ `caedc1e6280a012561021eaf016d190da4d763cd` introduced the atomic conversion
78
+ helper and its focused transaction test.
79
+ 7. The focused current-head suite passed 31 of 31 tests. Its Code Block test
80
+ proves the helper transaction, while its pointer test proves button-event
81
+ deduplication; neither currently proves the full pointer/Enter -> command ->
82
+ persistence -> reload story.
83
+ 8. A disposable local Content runtime built from repository HEAD
84
+ `6203d5dba9095978b7d5681720b81953ce04638c` exercised the real rendered
85
+ editor:
86
+ - Enter on exact `/code block` created one native `<pre><code>` block;
87
+ - pointer selection of the ordinary `Code Block` item created a second native
88
+ block;
89
+ - `enter-path-marker` and the pointer marker both survived a full reload;
90
+ - the final interface contained two native Code Blocks.
91
+ 9. Production was inspected read-only. The deployed editor bundle contains
92
+ `setCodeBlock`, `preserveSlashRange`, and `onDraftCommitted`, so production is
93
+ not simply missing the known July 24 command and persistence seams.
94
+ 10. Production interaction was not attempted because every available Page was
95
+ persisted production/customer state and this Shape explicitly forbids
96
+ mutating it.
97
+ 11. The task-owned sandbox `/tmp/content-codeblock-shape-20260820`, its SQLite
98
+ data, dependencies, and local Page were moved to
99
+ `/Users/alicemoore/.Trash/content-codeblock-shape-20260820`. Port 4187 and
100
+ the original sandbox path were independently absent afterward.
101
+
102
+ ### Historical evidence
103
+
104
+ The prior owner reproduced current-head Code Block insertion and navigation
105
+ round-trip on August 12 and recommended hosted confirmation before closure.
106
+ That same run separated native Code Blocks from image media nodes and
107
+ registry-backed Mermaid blocks. The later image repair merged independently.
108
+
109
+ ### Inferences
110
+
111
+ - Because both activation modes pass through one command and persistence path,
112
+ a reporter-equivalent failure in both modes is more likely to occur at shared
113
+ document state, collaboration, serialization/save, or artifact/environment
114
+ boundaries than in the pointer or Enter event adapters individually.
115
+ - The production bundle's presence of current symbol seams is evidence of
116
+ included logic, not proof that production runs the same complete source
117
+ revision or that a specific persisted Page/Y.Doc state accepts the
118
+ transaction.
119
+ - A local pass does not overturn the supplied current truth that production is
120
+ broken; it rules out prescribing the already-landed atomic helper as the next
121
+ repair without a production-equivalent failure trace.
122
+
123
+ ### Unresolved
124
+
125
+ - No safe disposable production Page was available under Shape authority, so
126
+ the exact production transaction, console, network, collaboration, and
127
+ canonical read-back remain unobserved.
128
+ - Production did not expose a repository commit SHA in the inspected page or
129
+ asset names. The exact deployment-to-commit coordinate remains unresolved.
130
+ - The supplied Bowerbird revision could not be independently read back without
131
+ sending a new app request, which Shape forbids. It remains the governing
132
+ durable coordinate supplied by Alice.
133
+
134
+ ## Architecture grounding
135
+
136
+ Grounding is not required beyond the bounded local repair boundary. The
137
+ demonstrated caller is one signed-in Content writer inserting an ordinary native
138
+ Code Block into a Page. Existing ownership is already clear:
139
+
140
+ - `SlashCommandMenu` owns discovery and Enter/pointer command dispatch;
141
+ - ProseMirror/Tiptap owns the atomic document transaction and selection;
142
+ - `CodeBlockNode` owns native Code Block schema/rendering behavior;
143
+ - `VisualEditor` owns collaborative serialization and the explicit
144
+ post-command persistence request;
145
+ - `DocumentEditor` owns queued canonical save, teardown flush, and durable
146
+ document mutation.
147
+
148
+ The smallest compatible delta is the first one of those existing owners proven
149
+ to diverge on the reporter-equivalent fixture. No parallel command, renderer,
150
+ save channel, or Code Block type is permitted. Legacy contracts that must remain
151
+ unchanged are all unrelated slash commands, images, registry blocks, Mermaid,
152
+ ordinary typing and history, NFM round-trip, collaboration, and canonical Page
153
+ persistence.
154
+
155
+ ## Smallest repair boundary
156
+
157
+ Work must not begin with a guessed code change. It must capture these four
158
+ checkpoints for both Enter and pointer paths on the same disposable artifact:
159
+
160
+ 1. **Dispatch:** the ordinary `Code Block` item is selected once with the live
161
+ slash range.
162
+ 2. **Transaction:** the post-command ProseMirror document contains one native
163
+ `codeBlock`, no slash query, a valid selection, and a responsive editor.
164
+ 3. **Persistence request:** `onDraftCommitted` serializes the post-command
165
+ document and produces a distinguishable success or failure result.
166
+ 4. **Durable read-back:** canonical Page content contains the fenced Code Block,
167
+ and reload reconstructs it.
168
+
169
+ Repair only the first failed checkpoint:
170
+
171
+ - dispatch failure -> repair the shared `executeCommand` activation boundary;
172
+ - transaction failure -> repair the one atomic conversion helper or valid
173
+ selection mapping, without changing Code Block UX;
174
+ - persistence-request failure -> repair the existing explicit post-command
175
+ persistence call or its truthful failure propagation;
176
+ - durable-read-back failure -> repair the existing save/reconcile boundary and
177
+ preserve current transaction behavior.
178
+
179
+ If all four checkpoints pass in the reporter-equivalent fixture, no shipping
180
+ repair is justified; classify the production report as stale or
181
+ document-specific and return to Shape with that evidence.
182
+
183
+ ## Frozen successful-user-story acceptance
184
+
185
+ **Persona:** A signed-in Content writer editing an ordinary Page.
186
+
187
+ **Starting state:** A task-owned disposable Page on an isolated local runtime,
188
+ branch preview, or other approved non-production surface built from the exact
189
+ review artifact. The Page begins with two empty paragraphs and no Code Blocks.
190
+ No production/customer document is used.
191
+
192
+ **Disposable data:** One Page with a task marker, exact stable ID, initial
193
+ canonical-content read-back, and a declared create/exercise/delete manifest.
194
+
195
+ H1. Focus the first empty paragraph and type the exact text `/code block`.
196
+ Press Enter once.
197
+ Functional expectation: the slash query is removed and exactly one native
198
+ Code Block appears; the editor remains responsive and focused in the block.
199
+ Visual expectation: one ordinary Code Block is visible with no Mermaid,
200
+ registry-block, image, or execution controls.
201
+ Evidence: interaction trace, post-command editor JSON/DOM, and console.
202
+
203
+ H2. Type `enter-path-marker`, press Tab, and continue typing.
204
+ Functional expectation: the marker and tab are accepted without lockup or
205
+ duplicate block creation.
206
+ Visual expectation: source remains legible in the ordinary Code Block.
207
+ Evidence: visible block text and editor transaction state.
208
+
209
+ H3. Focus the second empty paragraph, type `/code`, and click the ordinary
210
+ `Code Block` item once with the pointer.
211
+ Functional expectation: the slash query is removed and exactly one second
212
+ native Code Block appears; click/mousedown deduplication creates no third
213
+ block.
214
+ Visual expectation: the selected item and resulting block are the ordinary
215
+ Code Block, not `Code`, `Code tabs`, `Diagram`, or another catalog item.
216
+ Evidence: pointer event/command trace and post-command editor JSON/DOM.
217
+
218
+ H4. Type `pointer-path-marker` in the second block.
219
+ Functional expectation: typing remains responsive and the two blocks retain
220
+ distinct source.
221
+ Visual expectation: both ordinary Code Blocks remain visible and usable.
222
+ Evidence: visible source and console.
223
+
224
+ H5. Observe the explicit post-command persistence result for each insertion,
225
+ wait for the canonical save, then navigate away and back or reload.
226
+ Functional expectation: neither persistence request is silently skipped or
227
+ reported successful on failure; canonical read-back contains exactly two
228
+ fenced Code Blocks with their respective markers, and reload reconstructs
229
+ both.
230
+ Visual expectation: both blocks return without slash text, loading lock,
231
+ error fallback, Mermaid rendering, or duplicate blocks.
232
+ Evidence: save request/result, canonical action or database read-back, fresh
233
+ reload screenshot/DOM, and console/network record.
234
+
235
+ **Regression checks:** Existing atomic conversion, pointer deduplication,
236
+ slash-command menu, NFM round-trip, collaborative editor, and focused Content
237
+ tests pass. Image, Mermaid, registry catalog, and Code Block UX assertions are
238
+ limited to proving they did not change.
239
+
240
+ **Cleanup:** Delete only the declared Page and isolated data/runtime, verify its
241
+ stable ID and sandbox path are absent, stop the exact task-owned process, and
242
+ verify its port is unbound. A successful delete response alone is not cleanup
243
+ proof.
244
+
245
+ **Acceptance policy:**
246
+
247
+ - modality: `real-interface`
248
+ - independence: `preferred`
249
+ - custody: `same-context-allowed`
250
+ - interface: fresh browser session against a task-owned isolated Content runtime
251
+ or branch preview built from the exact review artifact, with canonical
252
+ read-back
253
+ - rationale: this is a bounded editor interaction and durability repair;
254
+ same-context real-interface evidence plus exact-artifact automated coverage is
255
+ proportionate, while independent technical review remains useful for any
256
+ collaboration or persistence change
257
+
258
+ ## Exact Work handoff
259
+
260
+ Invoke:
261
+
262
+ `/work templates/content/docs/solutions/2026-08-20-code-block-slash-production-regression-shape.md`
263
+
264
+ Work must:
265
+
266
+ 1. refresh the Bowerbird task at exact ID and revision and stop on an unexpected
267
+ revision or broadened outcome;
268
+ 2. bind the exact repository head, production asset identity, and review
269
+ artifact before mutation;
270
+ 3. declare an isolated fixture manifest with exact account/database/Page/port,
271
+ baseline, stable IDs, expiry, and cleanup proof;
272
+ 4. reproduce H1-H5 on the pre-fix exact artifact; if the production-equivalent
273
+ defect does not reproduce, stop with changed evidence and return to Shape;
274
+ 5. capture all four dispatch/transaction/persistence/read-back checkpoints and
275
+ repair only the first failed owner;
276
+ 6. add focused coverage that drives the full Enter and pointer command paths
277
+ through `onDraftCommitted`, plus the smallest persistence/reload regression
278
+ required by the observed failure;
279
+ 7. run the frozen H1-H5 story against the exact review artifact and complete
280
+ cleanup before reporting Work complete;
281
+ 8. keep image insertion, Code Block UX, Mermaid, and slash-command catalog work
282
+ out of the diff and PR prose.
283
+
284
+ ## Lifecycle authority envelope
285
+
286
+ ```yaml
287
+ authoritySchemaVersion: 3
288
+ stage: shape
289
+ authority-source: Alice's delegated $shape request on 2026-08-20
290
+ authorized-scope:
291
+ repositories:
292
+ - BuilderIO/agent-native
293
+ product-surfaces:
294
+ - Content ordinary native Code Block slash insertion and canonical Page persistence
295
+ outcome: Restore production ordinary Code Block insertion through both Enter and pointer activation without absorbing adjacent editor work.
296
+ allowed-mutations:
297
+ - artifact-write
298
+ - prototype-sandbox-write
299
+ write-targets:
300
+ artifacts:
301
+ - templates/content/docs/solutions/2026-08-20-code-block-slash-production-regression-shape.md
302
+ prototype-sandboxes:
303
+ - /tmp/content-codeblock-shape-20260820
304
+ governing-artifact:
305
+ path: templates/content/docs/solutions/2026-08-20-code-block-slash-production-regression-shape.md
306
+ revision: content-code-block-production-shape-v1
307
+ architecture-fingerprint:
308
+ outcome: Restore production ordinary Code Block insertion through Enter and pointer activation with truthful canonical persistence.
309
+ shipping-surfaces:
310
+ - id: content-ordinary-code-block-slash
311
+ repository: BuilderIO/agent-native
312
+ product-surface: Content visual Page editor ordinary native Code Block insertion and persistence
313
+ constituency: signed-in Content writers
314
+ durable-destination: public Content template behavior in BuilderIO/agent-native
315
+ integration-action: merge
316
+ governing-architecture: SlashCommandMenu dispatches one atomic native Code Block transaction, VisualEditor explicitly requests persistence, and DocumentEditor remains the sole canonical save owner.
317
+ acceptance-story:
318
+ id: content-code-block-slash-production-v1
319
+ summary: A signed-in writer inserts two ordinary native Code Blocks by Enter and pointer, types in both, and reloads with both blocks and source preserved.
320
+ required-assertions:
321
+ - pre-fix production-equivalent defect reproduces or Work stops with changed evidence
322
+ - Enter removes the slash query and creates exactly one native Code Block
323
+ - pointer selection removes the slash query and creates exactly one second native Code Block
324
+ - editor typing and Tab remain responsive with no lockup or duplicate block
325
+ - each explicit persistence request reports success or failure truthfully
326
+ - canonical read-back and reload preserve exactly two fenced Code Blocks and their distinct markers
327
+ - focused automated and exact-review-artifact real-interface evidence pass
328
+ - image Code Block UX Mermaid and catalog behavior remain unchanged and out of scope
329
+ acceptance-policy:
330
+ modality: real-interface
331
+ independence: preferred
332
+ custody: same-context-allowed
333
+ interface: Fresh browser session on a task-owned isolated Content runtime or branch preview built from the exact review artifact, with canonical read-back.
334
+ rationale: Bounded editor interaction and persistence repair; same-context real-interface proof is proportionate, with independent technical review for collaboration or persistence changes.
335
+ risk-strategy:
336
+ kind: system-ready
337
+ production-validation-after-merge: false
338
+ architecture-grounding:
339
+ applicability: not-required
340
+ reason: Bounded local repair within established slash transaction and canonical save owners; no shared contract, schema, identity, or public vocabulary changes are permitted.
341
+ status: grounded
342
+ demonstrated-callers:
343
+ - Signed-in Content writer typing /code block and activating ordinary Code Block by Enter or pointer.
344
+ existing-primitives:
345
+ - SlashCommandMenu executeCommand
346
+ - setCodeBlockFromSlashCommand
347
+ - native CodeBlockLowlight extension
348
+ - VisualEditor persistEditorContent and onDraftCommitted
349
+ - DocumentEditor queued save and teardown flush
350
+ ownership-boundaries:
351
+ - SlashCommandMenu owns dispatch
352
+ - ProseMirror owns atomic transaction and selection
353
+ - VisualEditor owns serialization and persistence request
354
+ - DocumentEditor owns canonical save and read-back
355
+ legacy-contracts:
356
+ - unrelated slash commands and catalog
357
+ - image and media insertion
358
+ - Mermaid and registry blocks
359
+ - Code Block UX and execution
360
+ - NFM collaboration history and canonical Page persistence
361
+ shared-vocabulary:
362
+ - ordinary Code Block means the native Tiptap codeBlock node, not a registry Code or Mermaid block
363
+ smallest-compatible-delta: Repair only the first demonstrated divergent dispatch, transaction, persistence-request, or durable-read-back boundary; add no parallel command, renderer, save channel, or block type.
364
+ deferred-capabilities:
365
+ - image insertion
366
+ - Code Block UX
367
+ - Mermaid rendering
368
+ - slash-command catalog expansion
369
+ reversibility: One bounded existing-owner repair plus focused tests; no schema, migration, provider data, or new persisted representation.
370
+ direct-evidence:
371
+ - repository HEAD 6203d5dba9095978b7d5681720b81953ce04638c
372
+ - production asset VisualEditor-dwyChdnP.js
373
+ - current-head isolated real-interface Enter pointer and reload pass
374
+ - focused SlashCommandMenu suite 31 of 31 pass
375
+ - historical owner 019ff1d3-9943-7603-9a35-29fa3a94c4e0
376
+ inferences:
377
+ - reporter-equivalent dual-path failure likely lies in a shared document, collaboration, persistence, or environment boundary
378
+ unresolved-owner-questions: []
379
+ delegation-ceiling:
380
+ - artifact-write
381
+ product-boundary-gates:
382
+ agent-native-public-constituency: Signed-in Content writers use this public template editor behavior; no Alice-private credential, orchestration, or vault-only dependency is required.
383
+ bowerbird-product-boundary: Bowerbird supplies durable task identity only; no Bowerbird product behavior changes.
384
+ acceptance-state:
385
+ status: pending
386
+ summary: Shape is complete; current source and production bundle contain the known repair, current-head real-interface control passes, and Work must reproduce the production-equivalent failure before any shipping change.
387
+ blockers:
388
+ - Reporter-equivalent production transaction and durable read-back are unavailable without an approved disposable non-production fixture under Work authority.
389
+ last-land-packet: null
390
+ ledger-revision: content-code-block-production-shape-v1
391
+ status: active
392
+ ```
393
+
394
+ ## Prototype disposition
395
+
396
+ Question: Do Enter and pointer activation fail at one shared transaction or
397
+ persistence boundary on current repository head?
398
+
399
+ Observer and decision: The owning Work thread uses the result to decide whether
400
+ the next repair belongs to dispatch, transaction, persistence request, or
401
+ durable read-back.
402
+
403
+ Artifact: Disposable local runtime and SQLite state formerly at
404
+ `/tmp/content-codeblock-shape-20260820`, built from repository HEAD
405
+ `6203d5dba9095978b7d5681720b81953ce04638c` and driven at
406
+ `http://127.0.0.1:4187/page/CmzxL4fTUtnZ`.
407
+
408
+ Observations: Both activation modes created native Code Blocks and both markers
409
+ survived reload. The local control did not reproduce the supplied production
410
+ failure.
411
+
412
+ Verdict: Current source does not justify another atomic helper repair. Work must
413
+ obtain the reporter-equivalent failure trace and patch only the first divergent
414
+ existing owner.
415
+
416
+ Unresolved: Exact production transaction and canonical read-back.
417
+
418
+ Disposition: preserve this document as evidence; sandbox moved to Trash and
419
+ prohibited from promotion.
420
+
421
+ Authority: Shape, ledger `content-code-block-production-shape-v1`, sandbox
422
+ `/tmp/content-codeblock-shape-20260820`, local prototype state only, disposed
423
+ after observation.
424
+
425
+ Next: `/work templates/content/docs/solutions/2026-08-20-code-block-slash-production-regression-shape.md`
426
+
427
+ ## Work execution record
428
+
429
+ Work lane: `codex/repair-content-code-block-slash` at repository revision
430
+ `07e0de38223d646cd847dd59c8ba376a43c3f83d`, refreshed from `origin/main` on
431
+ 2026-08-20. No commits between the
432
+ Shape revision and this Work base touched `SlashCommandMenu.tsx`,
433
+ `VisualEditor.tsx`, `CodeBlockNode.tsx`, or `DocumentEditor.tsx`.
434
+
435
+ Acceptance reconciliation: consistent with schema v3. The frozen modality is a
436
+ real interface, independence is preferred, and same-context custody is allowed.
437
+
438
+ Test-resource manifest:
439
+
440
+ - resource id: `content-codeblock-work-20260820`
441
+ - owner: this Work execution only
442
+ - runtime: task-owned local Content dev server on `127.0.0.1:4188`
443
+ - canonical store: `/tmp/content-codeblock-work-20260820/content.db`
444
+ - scope: task-owned disposable Pages created only to isolate and exercise the frozen H1-H5 story
445
+ - allowed mutations: create, edit, save, reload, read back, and delete this fixture
446
+ - prohibited mutations: production, customer, shared staging, or unrelated local data
447
+ - expiry: 240 minutes after creation
448
+ - cleanup trigger: immediately after H1-H5 evidence capture or on early stop
449
+ - cleanup proof: server stopped, port unbound, and sandbox moved to Trash
450
+
451
+ Pre-fix direct evidence: on the clean task-owned Page `SBWGbSkWZHlj`, typing
452
+ `/code` displayed the native `Code Block` item as selected, but Enter inserted
453
+ a `registryBlock` with `blockType: code` and a `Loading code block…`
454
+ placeholder. Pointer selection of the displayed native item inserted the
455
+ expected `pre.notion-code-block`. The first divergence was therefore the Enter
456
+ adapter, before the shared native transaction and persistence boundary.
457
+
458
+ Root cause: the document-level Enter handler ran exact-title lookup before the
459
+ open-menu selection. The query `code` exactly matched the adjacent registry
460
+ command titled `Code`, overriding the visibly selected ordinary `Code Block`.
461
+
462
+ Smallest repair: run exact-title fallback only when the slash menu is closed.
463
+ When it is open, Enter executes `filteredCommands[selectedIndex]`, the same
464
+ native item presented to the writer. Pointer behavior, registry behavior,
465
+ catalog composition, image insertion, Mermaid, and Code Block UX are unchanged.
466
+
467
+ Post-fix acceptance on Page `55gJt3h1I5WF`:
468
+
469
+ - Enter on `/code` created one native Code Block and removed the query.
470
+ - Pointer selection of `Code Block` created one second native Code Block.
471
+ - Typing and Tab remained responsive in both blocks.
472
+ - After reload, the interface contained `ENTER_MARKER_20260820TAB_OK` and
473
+ `POINTER_MARKER_20260820TAB_OK` in two code nodes.
474
+ - Canonical SQLite read-back contained exactly two fenced Code Blocks with the
475
+ same distinct markers and one intentional empty-block separator.
476
+ - The focused suite passed 32 of 32 tests, including the new visible-menu Enter
477
+ regression story; Content typecheck exited 0. Its production-config audit
478
+ reported the expected absent local production secrets and database URL.
479
+ - Changelog creation was attempted as required, but the Content app explicitly
480
+ reports that changelog support is disabled; no entry was created.
481
+
482
+ Resource cleanup: the browser tab and dev server were closed, port 4188 was
483
+ confirmed unbound, and `/tmp/content-codeblock-work-20260820` was moved to
484
+ `/Users/alicemoore/.Trash/content-codeblock-work-20260820`. No production,
485
+ customer, shared staging, Bowerbird row, or unrelated local data was mutated.
486
+
487
+ Independent technical review: not required. The final shipping delta is one
488
+ low-risk dispatch condition plus one focused regression test; it does not alter
489
+ persistence, collaboration, schema, authorization, or network behavior.
490
+
491
+ Work evidence: complete. Ledger revision:
492
+ `content-code-block-production-work-v1`. Task attention: `land-ready`.