Files
hemx/SPEC.tsv
T
2026-09-01 00:58:29 +02:00

6.9 KiB

1IDRULEINTENTS
2kernel/001The wire effect algebra must contain only Patch, Insert, Remove, Move, Focus, Scroll, Visit, and Dispatch.protocol/001 scope/001
3kernel/002Patch must offer Morph and Replace; Insert and Move must use first, last, before, or after positions.protocol/001 resource/001
4kernel/003Every DOM effect target must be a generated resource reference, never a CSS selector.resource/001 protocol/001
5kernel/004A batch must validate its envelope before applying effects in order and stopping at the first failure.protocol/001
6kernel/005A later effect must be able to address a resource created by an earlier effect in the same batch.protocol/001 resource/001
7kernel/006Move must preserve the identity and browser-owned state of the moved node.protocol/001 web/001
8kernel/007Rendered HTML must enter an effect only through the explicit SafeHtml type.server/001 web/001
9kernel/008Identical semantic effect batches must produce identical canonical wire bytes.protocol/001
10kernel/009Decoding must reject invalid magic, versions, tags, lengths, UTF-8, fingerprints, and trailing bytes.protocol/001
11kernel/010Compatibility must never guess an opcode, resource, selector, fingerprint, or alternate wire meaning.protocol/001
12kernel/011Canonical effect batches must round-trip between typed values and wire bytes without semantic loss.protocol/001
13kernel/012A compatibility fixture must accept only its declared wire ABI version.protocol/001
14kernel/013Focus must change focus without encoding form validation or other application policy.protocol/001 web/001
15kernel/014Scroll must reveal its resource without changing focus.protocol/001 web/001
16kernel/015Dispatch must carry a generated typed non-visual payload without mutating the DOM.protocol/001 resource/001
17kernel/016Visit must update URL history through partial navigation with ordinary navigation fallback.protocol/001 web/001
18resource/001Generated resource types must expose only operations valid for their capability.resource/001
19resource/002Generated APIs must carry resource, action, fingerprint, opcode, and marker values for application code.resource/001
20resource/003Repeated resources must use generated stable keys for typed Remove and Move operations.resource/001 protocol/001
21resource/004Generated form helpers must address fields through typed resources, not copied selectors or IDs.resource/001 server/001
22resource/005Generated artifacts must change only when their semantic template inputs change.resource/001 protocol/001
23resource/006Missing or invalid generated resources must fail compilation with an actionable source diagnostic.resource/001
24html/001Generated markup must use data-hemx-root, build, resource, key, action, and island markers.resource/001 protocol/001
25html/002Native event defaults must need no attribute; data-hemx-on must only override the native event.web/001 scope/001
26html/003Navigation must use anchors or GET forms and retain ordinary browser fallback without enhancement.web/001 server/001
27html/004On validation failure, rendered forms must identify invalid fields and associate accessible messages.web/001 server/001
28html/005Hemx must preserve native keyboard, IME, autofill, file selection, and constraint-validation behavior.web/001 scope/001
29html/006Request policy must cover only concurrency, debounce, throttle, confirmation, navigation, and history.web/001 scope/001
30html/007Concurrency policy must be one of latest, queue, drop, or parallel.web/001 scope/001
31runtime/001The browser runtime must apply an effect only within the root owning its generated resource.protocol/001 resource/001
32runtime/002Loading the runtime must expose diagnostics without performing startup side effects.protocol/001
33runtime/003Ordinary forms must submit URL-encoded data unless native semantics select another encoding.web/001 server/001
34runtime/004GET forms must produce URL-state navigation while retaining ordinary navigation fallback.web/001 server/001
35runtime/005HTTP, decode, or effect failure must stop the batch and emit one root-scoped diagnostic.protocol/001
36runtime/006SSE and WebSocket adapters must carry unchanged canonical effect-batch bytes.protocol/001 scope/001
37runtime/007Each optional adapter must bind once, scan inserted fragments, clean removals, and enforce root ownership.scope/001 protocol/001
38runtime/008An explicit island must own its subtree; Hemx must not morph through island-owned nodes.scope/001 web/001
39axum/001Axum effect responses must carry canonical batch bytes and the generated build fingerprint.protocol/001 resource/001
40axum/002Axum must serve the generic browser runtime without owning application behavior.server/001 scope/001
41axum/003Partial navigation must preserve status and title metadata and support full-navigation recovery.web/001 server/001
42axum/004Interaction requests must enforce media type and configured body limits before handler dispatch.server/001
43axum/005Typed dispatch responses must preserve status, canonical bytes, and actionable diagnostics.protocol/001 server/001
44build/001A template read failure must report the source path and I/O cause.resource/001
45build/002Identical inspected template inputs must produce identical generated contract fingerprints.resource/001 protocol/001
46build/003A no-op build must not rewrite an unchanged generated contract artifact.resource/001
47derive/001The surface macro must preserve user-authored inline module items while adding generated resources.resource/001
48derive/002The handler macro must reject unknown handles and invalid handler signatures at compilation.resource/001 server/001
49derive/003The component macro must reject a component missing its required handler implementation.resource/001 server/001
50derive/004A reference to an absent generated resource must fail compilation.resource/001
51wasm/001Normal server-side Hemx APIs must compile for wasm32 without host parser dependencies.portable/001
52boundary/001Framework transport behavior must stay in hemx-axum and generic browser behavior in hemx-js.scope/001
53boundary/002Optional transport, timer, and reveal behavior must be direct lifecycle adapters, not a plugin registry.scope/001 protocol/001
54boundary/003The core must have no effects for classes, styles, attributes, scripts, validation, dialogs, or transport.scope/001 web/001
55boundary/004Hemx must not maintain a client application store that mirrors authoritative server state.server/001 scope/001
56test/001Public test utilities must inspect synchronous and asynchronous handlers through one effect model.server/001 protocol/001
57test/002A failed HTML update assertion must report both expected and actual effects.protocol/001
58test/003Public test utilities must inspect complete documents with owned HTML structure.web/001
59test/004With Axum support enabled, public test utilities must inspect effect responses through a real router.protocol/001 server/001
60test/005The public process helper must wait for delayed TCP readiness and capture child output on failure.server/001