# rSkill manifest — find-object (kind: playbook) # # A symbolic S2 *decision procedure* the Reasoner reads (not a neural policy): # locate a named object, falling back to bounded commonsense active search and # finally human handoff. Composes existing read-only + actuating reasoner tools; # carries no weights and never actuates directly (every motion it triggers is an # ExecuteRskill → Action chunk → C++ safety kernel). schema_version: "0.1" name: "OpenRAL/rskill-playbook-find_object" version: "0.1.0" license: "apache-2.0" role: "s2" kind: "playbook" # Embodiment-agnostic — a playbook is gated by capabilities_required, not by a # specific embodiment. Declared explicitly with the "any" wildcard (never an # empty list, which the manifest validator rejects). embodiment_tags: ["any"] # Real RobotCapabilities flag: locating an object requires a camera. The loader's # capability gate (openral_rskill.loader.check_capability_flags) raises # ROSCapabilityMismatch on any robot that does not declare `has_vision: true`, # or on an unknown flag name — so only real capability fields belong here. The # navigation / container-opening the SOP performs is gated at runtime by the # composed tools' own requirements, not by this playbook's flags. capabilities_required: has_vision: true # A playbook actuates nothing itself. actuators_required: [] # Required field; pinned to 1 like the perception kinds (no Action rows). chunk_size: 1 # S2 planning budget (~0.2 Hz tick). CI enforces on the reference host. latency_budget: per_chunk_ms: 5000.0 description: > S2 decision procedure: locate a named object, falling back to bounded commonsense active search and finally human handoff. Composes recall_object, resolve_place, locate_in_view and NAVIGATE/OPEN skills. # RSkillAction.PLAN — registry/discovery metadata only (a playbook is role s2, # never an ExecuteSkill dispatch verb). actions: - "plan" objects: - "open-vocabulary object" scenes: - "kitchen" - "indoor" # Provenance citation (a playbook has no weights / upstream model repo, so a # citation is still required for publish-readiness — CLAUDE.md §6.4). The # The authoring decision record is private (OpenRAL/management); this points at # the public stub that explains where it lives. paper_url: "https://github.com/OpenRAL/openral/blob/master/docs/decisions.md" # The playbook decision-procedure contract. playbook: trigger: "the goal names a physical object whose location is not given" body_uri: "./PLAYBOOK.md" composes_tools: - "recall_object" - "resolve_place" - "locate_in_view" - "execute_rskill" - "memory_search" done_predicate: "the target object is confirmed in view at a known pose" max_steps: 12