Core foundation
Initial Patch
v0.1.1 is the first bus-gx patch. It is only the deterministic
render tree, with enough structure to represent safe static HTML and
prove the renderer contract:
Shared interfaces define how Go values become normalized VNode trees and deterministic HTML. Text always escapes. Element accepts lowercase HTML-compatible names from the Element allowlist. Fragment groups children without adding output. Props serializes attributes in stable order and rejects unsafe names and values. VNode is the shared immutable node shape passed to renderers and tests.
Ownership
bus-gx owns the low-level Core in this patch: nodes, props, escaped text,
safe lowercase elements, fragments, validation, deterministic rendering, and
tests for those contracts. This patch does not initialize bus-ui, a portal
host, product feature modules, providers, controller code, browser behavior, or
library components.
Provider/API modules own authorization, persistence, validation, and domain
operations. Product feature modules own screen-ready labels, permissions
display, disabled reasons, selected-row state, safe links, workflow copy, and
other product-specific view-model projection. Reusable low-level behavior only
moves into bus-gx when it is needed to build framework pieces across
products.
Module Initialization
This version initializes the bus-gx submodule as Go library code, not as a CLI
tool. The module should contain normal BusDK Go development infrastructure:
go.mod, a module Makefile, package tests, formatting and lint targets, a
short README.md, and a PLAN.md that tracks the next implementation work.
The public library package is pkg/gx. It defines the data structures,
shared interfaces, constructors, validation, and deterministic HTML rendering
needed by the pages in this version. The package API should be small enough that
bus-ui can import it to build higher-level components without depending on
any command-line tooling.
Core node acceptance defines the concrete module files and checks that prove this patch.
No bus gx command is required in this version. Source parsing, .gx files,
bus gx fmt, bus gx lint, compilation, component calls, composition,
controllers, events, lifecycle hooks, browser hydration, and generated Go
output are outside this version. The module still has ordinary Go formatting
and lint targets for the library code initialized in this patch.
Composition Rule
Code in this iteration should stay limited to nodes, props, escaped text, safe elements, fragments, deterministic rendering, and focused tests for those contracts.