Bone Flow #001 - Bone Core Guide
This is the starting point for understanding the Bone Flow concept and the Core shared by every component.
1. First: What is Bone Flow?
Bone Flow treats UI not merely as a collection of visual controls, but as a flow of meaning → connection → expression → validation.
id / type / valuePort / Compatibility / State / Delivery
Express meaning in a visible, operable form
2. Why separate these responsibilities?
In conventional UI implementations, data, events, DOM, CSS, connections and error handling can become entangled inside one component. A visual change can then break data processing, connection failures become difficult to diagnose, and reuse across screens becomes harder.
This separation allows the same meaning to be expressed as Text, Icon, or on another screen, while keeping visual concerns separate from meaning.
3. What does #001 Bone Core do?
#001 is the foundational runtime loaded first in Bone Flow. It does not draw later UI components; it defines the unit of meaning handled by Bone Flow and its lifecycle.
| #001 is responsible for | #001 is not responsible for |
|---|---|
✓ Validate and hold id / type / value | × Joint lines, ports, or connection states |
| ✓ create / clone / update / replace | × Rendering Text / Icon / Image |
| ✓ normalize / serialize / deserialize | × Property Editor UI |
| ✓ destroy / isDestroyed | × Animation / Transition |
| ✓ Core errors and non-destructive behavior | × Joint WAIT / FIFO / BLOCKED |
4. Minimum Bone structure
{
"id": "customer-name",
"type": "text",
"value": "Yamada Taro"
}
| Property | Meaning | Core behavior |
|---|---|---|
id | Identifier of the Bone | Required string. Missing, empty, or invalid types are rejected. |
type | Describes what the Bone means | Required string. Missing, empty, or invalid types are rejected. |
value | The actual value being carried | Required. Supports null, primitive, array, and object values; circular references and unsupported values are rejected. |
A Bone itself does not own color, font, lines, animation, or DOM. Those belong to the expression layer.
5. How #001 connects to #002 Joint
Creating a Bone with #001 does not yet deliver information to another component. #002 Joint connects Source/Target endpoints and ports, then handles compatibility, state and delivery.
const bone = BoneCore.create({
id: "title",
type: "text",
value: "Hello"
});
// Joint delivers this Bone to the next component,
// where a UI component such as Text expresses value visually.
6. Component QA vs. “000 Development Order Cumulative Regression Test”
Bone Flow separates tests for the component itself from the cumulative regression test for the integrated boneflow.js / boneflow.css.
| Check | Target | Purpose |
|---|---|---|
| Smoke Test | #001 Bone Core only | Quickly checks major APIs and basic behavior. |
| Validation Report | #001 Bone Core only | Checks invalid inputs, error classification, non-destructive behavior, and specification conditions in detail. |
| 000 Development Order Cumulative Regression Test | Integrated Bone Flow | After adding #002 and later components and regenerating boneflow.js / boneflow.css, confirms that earlier components such as #001 have not been broken. |
7. BoneCore Public API
BoneCore.create()Create a new Bone from input.BoneCore.clone()Create an independent copy of a Bone.BoneCore.update()Return a Bone with selected fields updated.BoneCore.replace()Replace the entire Bone.BoneCore.normalize()Normalize input into the official Core structure.BoneCore.serialize()Convert a Bone into JSON text.BoneCore.deserialize()Restore a Bone from JSON text.BoneCore.destroy()Move a Bone into the destroyed state.BoneCore.isDestroyed()Check whether a Bone is destroyed.Basic example
const bone = BoneCore.create({ id:"message", type:"text", value:"Hello" });
const cloned = BoneCore.clone(bone);
const updated = BoneCore.update(bone, { value:"Hello Bone Flow" });
const json = BoneCore.serialize(updated);
const restored = BoneCore.deserialize(json);
8. Non-destructive behavior and lifecycle
#001 must not unexpectedly mutate source input or an earlier Bone. Across clone/update/replace/serialize/deserialize, callers must be able to identify which Bone represents the current value.
- Changing a clone does not affect the original Bone.
- update returns a new Bone without damaging the original.
- After destroy, prohibited operations on the destroyed Bone produce classified errors.
- Meaningful structure survives a serialize/deserialize round trip.
9. Core Error / Validation
Core does not silently repair invalid input and continue. It reports classified error codes so the cause can be identified.
The Test page separates normal-path checks into Smoke Test and invalid/rejection checks into Validation. Completion remains unavailable until both pass.
10. What are boneflow.js and boneflow.css?
The common distribution files used by applications are boneflow.js and boneflow.css.
| File | Role |
|---|---|
boneflow.js | The final JavaScript bundle that contains verified component runtimes and HTML Functional Classes in the defined order starting at #001. |
boneflow.css | The final CSS bundle built from verified component styles. Component-specific rules are scoped so they do not leak into other components. |
Rule: Do not hand-edit the final bundles. Authoritative sources live under src/; bundles are regenerated by the build process.
11. Source layout of the rebuilt Bone Flow
Later components are added to src only after authoritative-source verification, Smoke/Validation, and browser checks, then accumulated into the bundle.
12. CSS themes: Light / Dark / Neon
Bone Flow provides Light / Dark / Neon. Light and Dark are conventional display themes. Neon is the distinctive Bone Flow visual language based on the existing #002 Joint screen.
- Light: conventional white/light UI.
- Dark: conventional dark gray/black UI.
- Neon: dark navy base, dark panels, cyan/blue borders and selection, with green/red/purple used for state and emphasis.
Neon does not mean making every element glow. It uses neon colors selectively for connections, state, selection and important information.
13. Smoke Test / Validation / Completion
Bone Flow is not complete merely because the runtime loads. The #001 Test page independently shows normal-path Smoke, abnormal-path Validation, reports, Runtime Console and Completion.
- Run Smoke Test.
- Run Validation.
- Check total tests / PASS / FAIL / elapsed time / Version.
- Save JSON / MD reports when needed.
- Local completion becomes available only when both pass.
- Do not mark formal Completed / Specification Frozen before user localhost verification.
14. Recommended learning order after #001
After understanding “meaning” in #001, continue to #002 Joint to understand “connection”. Then look at expression components such as Text / Icon / Image / Shape to see how responsibility separation works across Bone Flow.
15. Position of #001 in Bone Flow
#001 Bone Core is not simply the first small component. It defines the meaning model on which Bone Flow is built. Later components must not move Core responsibility into UI code or alter the Bone structure merely for presentation convenience.
Understanding Bone Flow starts with understanding the #001 rule: keep meaning small and explicit.