feat(skills): add robodojo G05 skill - #113
Closed
qinhan-lyu wants to merge 3 commits into
Closed
qinhan-lyu wants to merge 3 commits into
qinhan-lyu wants to merge 3 commits into
Conversation
qinhan-lyu
force-pushed
the
feature/robodojo-g05-skill
branch
2 times, most recently
from
September 10, 2026 06:23
7db6781 to
7250cdd
Compare
Add one robodojo Skill with a single formal g05 profile: manifest, Skill document, Dora dataflow, and the Gateway / bench-endpoint / benchmark profile configuration for the put_bottles_into_dustbin demo. The profile resolves every node from the installed Node bundles through FORGE_RUNTIME_BIN and reaches profile assets through PAOS_SKILL_ROOT, so the Skill tree carries no benchmark or policy implementation.
Add the per-run install helper and the unsigned schema-v3 index template. The helper presigns each bucket_key on every run, verifies expected_sha256 for each downloaded object, writes the generated index to a private temp dir, prepares the isolated instance, and resolves paos/tosutil through --paos/--tosutil, then PAOS_BIN/TOSUTIL, then PATH. check_bundle_inventory.py keeps the template inventory in sync with the Skill files.
Record the ownership boundary, the external model/processor and Isaac Sim references, the TOS object keys, the node digests, and the remaining acceptance items.
qinhan-lyu
force-pushed
the
feature/robodojo-g05-skill
branch
from
September 10, 2026 06:50
ae0b25b to
8a0a1e4
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Upstream
devstill has no unifiedrobodojoSkill and nog05profile, and the validated G05 flow only exists on the internal integration line. Two boundaries have to hold while upstreaming it:framework/forge_runtime;The multi-file Node bundles this needs are the runtime capability proposed in #112, which is still open and not merged.
What / Fix
Add one
robodojoSkill with a single formalg05profile, in three commits that each stand on their own:feat(skills): add the RoboDojo G05 skill- manifest,SKILL.md, Dora dataflow and the Gateway / bench-endpoint / benchmark profile configuration.feat(robodojo): add install and inventory helpers- the per-run presign install helper, the unsigned schema-v3 index template and the inventory checker.docs(robodojo): document delivery and node ownership- the Skill README and the delivery record.Ownership boundary:
nodes/tree and noprofiles/g05/bin/launcher; every dataflow node runs${FORGE_RUNTIME_BIN}/<entrypoint>from the installed Node bundles.framework/forge_runtime. The lock pins three node digests and declares the four required binaries (gateway,bench_endpoint,robodojo_benchmark,robodojo_policy):forge_runtime/forge-runtime-0.1.0- gateway, built from forge_gatewayv1.0.2; digestcee927eb587f3f958c1803086e59692f6f7ae373477b3cfd15118d01d76c408erobodojo_endpoint/robodojo-endpoint-0.1.0- bench endpoint; digestb9a66fb07b04ee1f76bb8221f68f96b35d1f1ce136d3d6cf967cb7a34da8e159robodojo_benchmark/robodojo-benchmark-0.1.0- RoboDojo benchmark and G05 policy as one digest bundle with two entrypoints, because they share_core,config.pyandadaptersand run in the same Python environment; digeste48cf4e838ba73512ac1eb0c144ea17ea177bb56ad41e524c8332f9a38c19ff2gatewayandbench_endpointstay on the Node 0.1.0 objects that are already published;robodojo_benchmarkis the new object key this PR introduces.bucket_keyon each run, downloads each object once to confirmexpected_sha256, writes the generated schema-v3 index to a private temp dir, prepares the isolated instance (config.json+py/sitecustomize.py), and resolvespaos/tosutilvia--paos/--tosutil, thenPAOS_BIN/TOSUTIL, thenPATH, with setup guidance when missing.profiles/tree that remains inframework/forge_runtimeis a development example; the formal Skill configuration lives here. The node build excludes it (skip_dirscontainsprofiles), so it never reaches a node archive.Verification
Executed for this revision, without GPU, Isaac Sim, Dora or an Agent:
framework/forge_runtime; a Windows and a Linux build of the same tree now produce identicalnode_digestvalues (the builder sorts the payload inventory by POSIX path). Archive sha256 is host-dependent, so the lock pinsnode_digest.scripts/package_skill.py: archive sha2561dd48cbeb536e853891ebb4b3ba816e4993b86407fa073dd679061dfceda6e0d(28825 bytes).install_robodojo.pywith the template's real object keys and itsexpected_sha256values. It hash-matched all four archives - the two already-published Node objects (forge_runtimec524ae7038775e48f2b0a6036e621913b35b327ad2c710f8a8e0c5cad9e7613b,robodojo_endpoint80b7076b04b8abf21712f6f3b11bd9523fde91d5e49bbe3ed202bf17f238e46c) plus this candidate's Skill (1dd48cbeb536e853891ebb4b3ba816e4993b86407fa073dd679061dfceda6e0d) and benchmark node (b07935a55610a9e80e29120a62997727fd54d0ba5f9e2e2bd60965436ecb686f) - and ended withInstalled Skill robodojo 0.1.0. TOS presigning was replaced by a loopback HTTPS endpoint for this local run, because the two new objects are unpublished candidates.paos skill listreportsrobodojo 0.1.0 / g05 / not started;paos forge-node verify robodojo {forge_runtime,robodojo_endpoint,robodojo_benchmark}all report "verified against Skill lock".bin/{gateway,bench_endpoint,robodojo_benchmark,robodojo_policy}as relative symlinks into<runtime>/nodes/<node_id>/versions/<artifact_id>/bin/..., and the renderedlaunch/profiles/g05/dataflow.yamlresolves all four node paths inside that environment, never into the Skill tree and never throughFORGE_PKGS_ROOT/BENCH_ENDPOINT_SRC.scripts/check_bundle_inventory.py --checkreports all 11 Skill files matching the template inventory, categories included.python -m compileall -q PhyAgentOS,pytest -q(21 tests),ruff check PhyAgentOS testsandgit diff --checkpassed on an earlier revision of this branch.Reused historical evidence, not rerun here: the G05 end-to-end run, the PAOS Agent natural-language run, and the same-host fresh-instance install of the pre-split archive.
final_acceptanceremains pending; a presign run against real TOS for the two new objects and the GPU / Isaac Sim / Agent acceptance still have to happen before publishing.Dependency: this PR requires #112. #112 is still open, is no longer a draft, targets
dev, and its single commit isa6e4412b96d549401563afc73051a4e7b6115c1f; it currently conflicts withdev(mergeable_state: dirty), so it needs a rebase before it can land. On currentdev,load_manifest()rejects thedigestnode lock, so this PR stays a draft until #112 is merged.profiles.<name>.startup_timeout_sis already supported bydev.