SOF-7926 - #408
Conversation
Extract hash into a reusable hashed schema and compose bankable from hashed plus exabyteId. Co-authored-by: Cursor <cursoragent@cursor.com>
Compose hash via system/hashed at consumer schemas instead of allOf in bankable. Co-authored-by: Cursor <cursoragent@cursor.com>
Material entities now compose system/hashed.json alongside named/defaultable in-memory mixins so MaterialSchema includes the persisted hash field. Co-authored-by: Cursor <cursoragent@cursor.com>
name and status are already provided via named_defaultable and status refs in workflow/unit/base.json; removing them from mixins/base avoids duplicate getters in generated schema mixins. Co-authored-by: Cursor <cursoragent@cursor.com>
unit-specific mixins already declare literal type values; keeping type off the shared base mixin avoids TS interface merge conflicts in wode. Co-authored-by: Cursor <cursoragent@cursor.com>
Remove required hash from material.json and add material_hashed.json composing material + system/hashed for persisted hashed entities. Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
| } | ||
| }, | ||
| "required": [ | ||
| "type", |
There was a problem hiding this comment.
We should keep this base "as is"
Introduce basis_constrained so materials can require atomic constraints on basis, and compose material_constrained / material_constrained_hashed like material_hashed.
| "enableRender": { | ||
| "description": "Whether Rupy should attempt to use Jinja templating to add context variables into the unit", | ||
| "type": "boolean" | ||
| }, |
There was a problem hiding this comment.
Let's add a "description" field at the top level to explain:
(1) type is necessary field, but these need to be defined as consts/enums in specific "child" instances
(2) replace reference to "Rupy" with "render during workflow/job runtime"
| "$ref": "system/hashed.json" | ||
| } | ||
| ] | ||
| } |
There was a problem hiding this comment.
We can remove scaledHash from top-level material_properties per https://github.com/mat3ra/esse/blob/005522d69e213bec1a94bd3c41172f5539ef9ab7/schema/material/material_properties.json#L42C9-L45C11
There was a problem hiding this comment.
Should we consider:
material_constrained -> material_with_protoproperties
material_hashed -> material_hashed
material_constrained_hashed -> material_with_protoproperties_hashed
Keep MaterialSchema free of hashing fields so MaterialHashed / MaterialConstrainedHashed own scaledHash via the hashed schema. Co-authored-by: Cursor <cursoragent@cursor.com>
Throw when a schema $id is not registered so consumers do not need a local resolve helper. Co-authored-by: Cursor <cursoragent@cursor.com>
Clarify that these variants carry a constrained basis (and optional hash), not a separate "constrained material" domain concept. Co-authored-by: Cursor <cursoragent@cursor.com>
Address review feedback preferring "enhanced" terminology. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Drop null/"" keys before AJV cleaning so entity JSON with optional null fields (e.g. slug) validates, and register tsType/tsEnumNames no-op keywords on shared AJV instances. Co-authored-by: Cursor <cursoragent@cursor.com>
Entity schemas use "" as intentional placeholders (flowchart links); stripping them broke wode condition/subworkflow units. Empty-string cleaning stays in application JsonSchemaValidator. Co-authored-by: Cursor <cursoragent@cursor.com>
No description provided.