Skip to content

Stabilize schema-backed Dance invocation and loader UX for Issue 652 and Issue 653 - #654

Merged
evomimic merged 2 commits into
mainfrom
652-dance-pr2-cut-over-to-name-addressed-schema-backed-invocation
Aug 20, 2026
Merged

Stabilize schema-backed Dance invocation and loader UX for Issue 652 and Issue 653#654
evomimic merged 2 commits into
mainfrom
652-dance-pr2-cut-over-to-name-addressed-schema-backed-invocation

Conversation

@evomimic

Copy link
Copy Markdown
Owner

Summary

This PR implements the smaller Dance-schema slice for #652 and folds in the corpus fix for #653.

The main outcome is a clean cutover toward name-addressed, schema-backed invocation without expanding this PR into the full DAHN → TS SDK → Commands → Dance vertical slice. Commands and TS SDK vertical-slice work remain separable, while the schema/runtime foundations are now aligned for Dances and Commands to be discovered and invoked by schema-backed names.

Changes

#652: Dance schema-backed invocation foundation

  • Cut over Dance invocation toward name-addressed, schema-backed invocation.
  • Added schema/runtime support for afforded Dances and Commands on holon descriptors.
  • Extended descriptor-facing affordance APIs so holons can expose available Dances and Commands through their effective contract.
  • Preserved existing client/command flows while avoiding a one-off loader path.
  • Kept validation out of scope for this slice; tests rely on well-formed Dances rather than blocking on the Validation track.
  • Kept HATEOAS-style generation of available Dance requests explicitly out of scope.
  • Internally stamps invocation source instead of accepting it as an API parameter.
  • Kept Dance exposure and Command exposure distinct, while allowing command-only lowering where that is currently the implemented path.
  • Updated Conductora schema upload ergonomics:
    • Added recursive directory selection for JSON import files.
    • Removed misleading native file-input “files selected” labels.
    • Preserved existing individual multi-file upload flow.

#653: Qualify operator affordance inverse names

  • Renamed the shared AffordedBy inverse relationship used by two different AffordsOperator declarations:
    • Core value operator inverse is now ValueTypeAffordedBy.
    • Validation rule operator inverse is now ValidationRuleAffordedBy.
  • Preserved the forward relationship name AffordsOperator in both schemas.
  • Regenerated the JSON import corpus from TDL.
  • Updated CoreRelationshipTypeName variants for the new inverse names.
  • Updated OperatorDescriptor::afforded_by() to follow ValueTypeAffordedBy.
  • Added regression coverage proving the two operator inverse names resolve independently without ambiguous traversal.

Testing

  • Rebuilt hApp: nominal.
  • Rebuilt host: nominal.
  • npm test: nominal.
  • npm start: nominal.
  • Schema directory upload tested through Conductora with all 15 JSON import files loaded successfully.
  • Additional targeted checks run during implementation:
    • npm run map-schema:compile:coreschema
    • npm run map-schema:check:coreschema
    • cargo test --manifest-path tools/map-schema/Cargo.toml --lib
    • cargo test --manifest-path shared_crates/holons_core/Cargo.toml --lib
    • cargo test --manifest-path shared_crates/type_system/type_names/Cargo.toml --lib
    • git diff --check

Notes for reviewers

  • This PR intentionally does not implement the full vertical slice through TS SDK and Commands; that remains tracked separately.
  • This PR intentionally does not introduce HATEOAS-style Dance request generation.
  • This PR intentionally does not wait on descriptor-aware validation; well-formed test data is sufficient for this slice.
  • Generated JSON import files were regenerated from schema-src/; they were not hand-edited.

- update Dance schema to use DanceName, RequestType, InvocationSource, and affording-holon based resolution
- make DanceAffordedBy the declared affordance relationship and AffordsDance its inverse
- remove obsolete synthetic Commit/Delete dance paths from command runtime tests
- expose dance and command affordance lookup helpers on ReadableHolon
- regenerate Dance and Query-Dance schema imports
- update Sweettest expectations for renamed relationships and new generated counts
- improve JSON uploader handling for duplicate schema filenames and directory uploads
- show qualified relative paths for directory-selected schema files
- harden loader result display for load-error responses
Rename the shared AffordedBy inverse relationship used by Core value
operators and Validation rule operators into distinct schema-backed names:
ValueTypeAffordedBy and ValidationRuleAffordedBy.

This avoids ambiguous inverse relationship traversal on OperatorType while
preserving the existing forward AffordsOperator relationship name in both
schemas.

Also update the CoreRelationshipTypeName enum, OperatorDescriptor::afforded_by(),
regenerate the JSON imports, and add regression coverage for resolving both
operator inverse affordance names independently.
@evomimic

Copy link
Copy Markdown
Owner Author

Approve

Reviewed PR #654 at 68addf3a.

The revised #652 scope matches the implementation: name-addressed Dance invocation, generic schema-backed Dance affordances, effective-descriptor lookup APIs, and deferred structural validation. Issue #653’s source-qualified operator inverse names, generated imports, value-oriented lookup, and ambiguity regression coverage are also complete.

All CI checks are passing (ci_pass, fmt, and test). Manual verification was nominal for hApp and host builds, npm test, and npm start.

Approved for merge; merging will close #652 and #653.

@evomimic
evomimic merged commit 3b677c4 into main Aug 20, 2026
3 checks passed
@evomimic
evomimic deleted the 652-dance-pr2-cut-over-to-name-addressed-schema-backed-invocation branch August 20, 2026 13:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Qualify inverse names for ValueType and ValidationRule operator affordances Dance PR2: Cut over to name-addressed schema-backed invocation

1 participant