Skip to main content
The orchestrator translates human-friendly references (measure numbers, rehearsal marks) to UUIDs for structural operations. See: /MRS-Specification-RFC#14-query-resolution

Why Query Resolution?

UUIDs provide stable identity, but humans think in:
  • Measure numbers (“measure 45”)
  • Rehearsal marks (“4 bars after B”)
  • Structural positions (“the development section”)
Query resolution bridges human intent and structural identity.

Query Types

Measure Number Resolution

(query
  :type resolve
  :human-ref (:measure-number 45)
  :response (:id #uuid "018c3f40-002d-..." :number 45))

Rehearsal Mark Resolution

(query
  :type resolve
  :human-ref (:rehearsal "B")
  :response (:id #uuid "018c3f40-0020-..." :number 32))

Rehearsal Mark with Offset

(query
  :type resolve
  :human-ref (:rehearsal "B" :offset 4)
  :response (:id #uuid "018c3f40-0024-..." :number 36))
“4 measures after rehearsal B”

Range Resolution

(query
  :type resolve-range
  :human-ref (:measures 45 52)
  :response (:from #uuid "018c3f40-002d-..."
             :to #uuid "018c3f40-0034-..."
             :display-range [45 52]))

Section Resolution

(query
  :type resolve
  :human-ref (:section "development")
  :response (:from #uuid "..." :to #uuid "..." :display-range [65 120]))
Requires form analysis overlay.

Reverse Resolution

UUID to display information:
(query
  :type display-info
  :id #uuid "018c3f40-002d-..."
  :response (:number 45 :rehearsal "C" :beat-start 487))
Useful for:
  • Generating human-readable error messages
  • Creating display hints in Working Sets
  • Logging and debugging

Resolution in Working Sets

Working Set Envelopes include display hints derived from query resolution:
(working-set
  :scope
    (:measures #uuid "018c3f40-002d-..." #uuid "018c3f40-0034-...")
    (:instruments [clarinet-bb])
  :display-hint (:measures 45 52)  ; From reverse resolution
  ...)
The display hint is informational only—never used for structural reference.

Resolution Errors

ErrorDescription
RESOLVE-001Measure number not found
RESOLVE-002Rehearsal mark not found
RESOLVE-003Section name not found
RESOLVE-004Offset out of bounds
(query
  :type resolve
  :human-ref (:rehearsal "Z")
  :error (:code RESOLVE-002 :message "Rehearsal mark 'Z' not found"))

Usage in Task Instructions

Human task instructions use friendly references:
“Add a clarinet countermelody from rehearsal B to 8 bars after B”
The orchestrator resolves:
  1. “rehearsal B” → #uuid "018c3f40-0020-..."
  2. “8 bars after B” → #uuid "018c3f40-0028-..."
And creates a Working Set with those UUIDs in scope.

Query Capabilities

Agents may request resolution:
:available-queries
  [:resolve-measure
   :resolve-rehearsal
   :resolve-section
   :display-info]
Query request from agent:
(query-request
  :type resolve
  :human-ref (:rehearsal "C")
  :reason "Need to reference theme from section C")