microduck-cli 0.9.2__tar.gz → 0.9.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (190) hide show
  1. microduck_cli-0.9.3/.devague/current +1 -0
  2. microduck_cli-0.9.3/.devague/current_plan +1 -0
  3. microduck_cli-0.9.3/.devague/deliveries/thor-sanity.json +52 -0
  4. microduck_cli-0.9.3/.devague/frames/thor-sanity.json +622 -0
  5. microduck_cli-0.9.3/.devague/plans/thor-sanity.json +439 -0
  6. microduck_cli-0.9.3/.eidetic/memory/microduck-cli__public.jsonl +1 -0
  7. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/CHANGELOG.md +34 -0
  8. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/PKG-INFO +1 -1
  9. microduck_cli-0.9.3/docs/plans/2026-09-04-thor-sanity.md +81 -0
  10. microduck_cli-0.9.3/docs/specs/2026-09-04-thor-sanity.md +122 -0
  11. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/docs/verification/2026-09-04-sim-bringup.md +5 -1
  12. microduck_cli-0.9.3/docs/verification/2026-09-04-thor-sanity.md +324 -0
  13. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/microduck_cli/env/doctor.py +2 -0
  14. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/microduck_cli/env/hosts.py +73 -8
  15. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/pyproject.toml +1 -1
  16. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/tests/test_hosts.py +44 -5
  17. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/uv.lock +1 -1
  18. microduck_cli-0.9.2/.devague/current +0 -1
  19. microduck_cli-0.9.2/.devague/current_plan +0 -1
  20. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.claude/skills/agent-config/SKILL.md +0 -0
  21. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.claude/skills/agent-config/data/backend-fingerprints.yaml +0 -0
  22. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.claude/skills/agent-config/scripts/show.sh +0 -0
  23. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.claude/skills/ask-colleague/SKILL.md +0 -0
  24. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.claude/skills/ask-colleague/prompts/explore.md +0 -0
  25. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.claude/skills/ask-colleague/prompts/review.md +0 -0
  26. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.claude/skills/ask-colleague/prompts/write.md +0 -0
  27. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.claude/skills/ask-colleague/scripts/ask-colleague.sh +0 -0
  28. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.claude/skills/assign-to-workforce/SKILL.md +0 -0
  29. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.claude/skills/assign-to-workforce/scripts/assign-to-workforce.sh +0 -0
  30. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.claude/skills/challenge/SKILL.md +0 -0
  31. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.claude/skills/cicd/SKILL.md +0 -0
  32. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.claude/skills/cicd/scripts/_resolve-nick.sh +0 -0
  33. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.claude/skills/cicd/scripts/portability-lint.sh +0 -0
  34. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.claude/skills/cicd/scripts/pr-reply.sh +0 -0
  35. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.claude/skills/cicd/scripts/pr-status.sh +0 -0
  36. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.claude/skills/cicd/scripts/workflow.sh +0 -0
  37. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.claude/skills/communicate/SKILL.md +0 -0
  38. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.claude/skills/communicate/scripts/fetch-issues.sh +0 -0
  39. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.claude/skills/communicate/scripts/mesh-message.sh +0 -0
  40. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.claude/skills/communicate/scripts/post-comment.sh +0 -0
  41. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.claude/skills/communicate/scripts/post-issue.sh +0 -0
  42. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.claude/skills/communicate/scripts/templates/skill-new-brief.md +0 -0
  43. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.claude/skills/communicate/scripts/templates/skill-update-brief.md +0 -0
  44. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.claude/skills/deviate/SKILL.md +0 -0
  45. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.claude/skills/doc-test-alignment/SKILL.md +0 -0
  46. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.claude/skills/doc-test-alignment/scripts/check.sh +0 -0
  47. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.claude/skills/operate-microduck/SKILL.md +0 -0
  48. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.claude/skills/pypi-maintainer/SKILL.md +0 -0
  49. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.claude/skills/pypi-maintainer/scripts/switch-source.sh +0 -0
  50. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.claude/skills/recall/SKILL.md +0 -0
  51. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.claude/skills/recall/scripts/recall.sh +0 -0
  52. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.claude/skills/remember/SKILL.md +0 -0
  53. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.claude/skills/remember/scripts/remember.sh +0 -0
  54. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.claude/skills/run-tests/SKILL.md +0 -0
  55. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.claude/skills/run-tests/scripts/test.sh +0 -0
  56. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.claude/skills/scope/SKILL.md +0 -0
  57. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.claude/skills/sonarclaude/SKILL.md +0 -0
  58. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.claude/skills/sonarclaude/scripts/sonar.sh +0 -0
  59. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.claude/skills/spec-to-plan/SKILL.md +0 -0
  60. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.claude/skills/spec-to-plan/scripts/spec-to-plan.sh +0 -0
  61. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.claude/skills/summarize-delivery/SKILL.md +0 -0
  62. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.claude/skills/think/SKILL.md +0 -0
  63. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.claude/skills/think/scripts/think.sh +0 -0
  64. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.claude/skills/validate-delivery/SKILL.md +0 -0
  65. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.claude/skills/version-bump/SKILL.md +0 -0
  66. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.claude/skills/version-bump/scripts/bump.py +0 -0
  67. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.claude/skills.local.yaml.example +0 -0
  68. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.devague/deliveries/microduck-cli-env-teach-operate-rules.json +0 -0
  69. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.devague/deliveries/orin-sanity.json +0 -0
  70. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.devague/frames/microduck-cli-env-teach-operate-rules.json +0 -0
  71. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.devague/frames/orin-sanity.json +0 -0
  72. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.devague/plans/microduck-cli-env-teach-operate-rules.json +0 -0
  73. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.devague/plans/orin-sanity.json +0 -0
  74. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.flake8 +0 -0
  75. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.github/workflows/publish.yml +0 -0
  76. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.github/workflows/tests.yml +0 -0
  77. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.gitignore +0 -0
  78. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/.markdownlint-cli2.yaml +0 -0
  79. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/AGENTS.colleague.md +0 -0
  80. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/CLAUDE.md +0 -0
  81. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/LICENSE +0 -0
  82. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/README.md +0 -0
  83. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/culture.yaml +0 -0
  84. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/docs/deliveries/2026-09-03-microduck-cli-env-teach-operate-rules.md +0 -0
  85. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/docs/deliveries/2026-09-04-orin-sanity.md +0 -0
  86. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/docs/operating-the-duck.md +0 -0
  87. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/docs/plans/2026-09-03-microduck-cli-env-teach-operate-rules.md +0 -0
  88. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/docs/plans/2026-09-04-orin-sanity.md +0 -0
  89. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/docs/skill-sources.md +0 -0
  90. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/docs/specs/2026-09-03-microduck-cli-env-teach-operate-rules.md +0 -0
  91. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/docs/specs/2026-09-04-orin-sanity.md +0 -0
  92. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/docs/upstream-pins.md +0 -0
  93. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/docs/verification/2026-09-04-orin-sanity.md +0 -0
  94. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/microduck_cli/__init__.py +0 -0
  95. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/microduck_cli/__main__.py +0 -0
  96. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/microduck_cli/behavior/__init__.py +0 -0
  97. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/microduck_cli/behavior/compose.py +0 -0
  98. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/microduck_cli/behavior/default_rules.toml +0 -0
  99. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/microduck_cli/behavior/defaults.py +0 -0
  100. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/microduck_cli/behavior/engine.py +0 -0
  101. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/microduck_cli/behavior/human_gate.py +0 -0
  102. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/microduck_cli/behavior/idle.py +0 -0
  103. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/microduck_cli/behavior/intents.py +0 -0
  104. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/microduck_cli/behavior/liveness.py +0 -0
  105. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/microduck_cli/behavior/model.py +0 -0
  106. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/microduck_cli/behavior/release.py +0 -0
  107. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/microduck_cli/behavior/replay.py +0 -0
  108. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/microduck_cli/behavior/rule_engine.py +0 -0
  109. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/microduck_cli/behavior/rules.py +0 -0
  110. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/microduck_cli/behavior/sense.py +0 -0
  111. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/microduck_cli/behavior/senselog.py +0 -0
  112. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/microduck_cli/behavior/sink.py +0 -0
  113. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/microduck_cli/behavior/skills.py +0 -0
  114. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/microduck_cli/cli/__init__.py +0 -0
  115. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/microduck_cli/cli/_commands/__init__.py +0 -0
  116. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/microduck_cli/cli/_commands/cli.py +0 -0
  117. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/microduck_cli/cli/_commands/doctor.py +0 -0
  118. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/microduck_cli/cli/_commands/duck.py +0 -0
  119. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/microduck_cli/cli/_commands/env.py +0 -0
  120. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/microduck_cli/cli/_commands/explain.py +0 -0
  121. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/microduck_cli/cli/_commands/learn.py +0 -0
  122. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/microduck_cli/cli/_commands/overview.py +0 -0
  123. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/microduck_cli/cli/_commands/policy.py +0 -0
  124. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/microduck_cli/cli/_commands/rules.py +0 -0
  125. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/microduck_cli/cli/_commands/whoami.py +0 -0
  126. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/microduck_cli/cli/_errors.py +0 -0
  127. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/microduck_cli/cli/_output.py +0 -0
  128. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/microduck_cli/duck/__init__.py +0 -0
  129. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/microduck_cli/duck/addressing.py +0 -0
  130. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/microduck_cli/duck/gate.py +0 -0
  131. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/microduck_cli/duck/record.py +0 -0
  132. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/microduck_cli/env/__init__.py +0 -0
  133. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/microduck_cli/env/params.py +0 -0
  134. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/microduck_cli/env/stack.py +0 -0
  135. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/microduck_cli/explain/__init__.py +0 -0
  136. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/microduck_cli/explain/catalog.py +0 -0
  137. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/microduck_cli/explain/duck.py +0 -0
  138. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/microduck_cli/explain/env.py +0 -0
  139. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/microduck_cli/explain/policy.py +0 -0
  140. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/microduck_cli/explain/rules.py +0 -0
  141. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/microduck_cli/ipc/__init__.py +0 -0
  142. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/microduck_cli/ipc/client.py +0 -0
  143. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/microduck_cli/ipc/proto.py +0 -0
  144. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/microduck_cli/train/__init__.py +0 -0
  145. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/microduck_cli/train/artifacts.py +0 -0
  146. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/microduck_cli/train/lane.py +0 -0
  147. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/sonar-project.properties +0 -0
  148. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/tests/__init__.py +0 -0
  149. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/tests/fake_robotd.py +0 -0
  150. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/tests/fixtures/duck_ipc_proto.json +0 -0
  151. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/tests/live/__init__.py +0 -0
  152. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/tests/live/test_live_cli.py +0 -0
  153. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/tests/test_addressing.py +0 -0
  154. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/tests/test_cli.py +0 -0
  155. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/tests/test_cli_introspection.py +0 -0
  156. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/tests/test_client.py +0 -0
  157. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/tests/test_default_rules.py +0 -0
  158. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/tests/test_duck.py +0 -0
  159. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/tests/test_engine.py +0 -0
  160. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/tests/test_env.py +0 -0
  161. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/tests/test_env_doctor.py +0 -0
  162. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/tests/test_fake_robotd.py +0 -0
  163. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/tests/test_gate.py +0 -0
  164. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/tests/test_human_gate.py +0 -0
  165. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/tests/test_idle.py +0 -0
  166. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/tests/test_intents.py +0 -0
  167. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/tests/test_lane.py +0 -0
  168. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/tests/test_learn_skill.py +0 -0
  169. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/tests/test_links.py +0 -0
  170. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/tests/test_liveness.py +0 -0
  171. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/tests/test_lockstep.py +0 -0
  172. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/tests/test_model.py +0 -0
  173. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/tests/test_no_config_writes.py +0 -0
  174. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/tests/test_no_hardware_paths.py +0 -0
  175. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/tests/test_no_secrets_in_output.py +0 -0
  176. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/tests/test_params.py +0 -0
  177. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/tests/test_policy.py +0 -0
  178. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/tests/test_proto.py +0 -0
  179. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/tests/test_record.py +0 -0
  180. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/tests/test_release.py +0 -0
  181. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/tests/test_replay.py +0 -0
  182. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/tests/test_rule_engine.py +0 -0
  183. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/tests/test_rules.py +0 -0
  184. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/tests/test_rules_cli.py +0 -0
  185. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/tests/test_sense.py +0 -0
  186. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/tests/test_senselog.py +0 -0
  187. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/tests/test_sink.py +0 -0
  188. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/tests/test_skills.py +0 -0
  189. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/tests/test_stack.py +0 -0
  190. {microduck_cli-0.9.2 → microduck_cli-0.9.3}/tests/test_zero_deps.py +0 -0
@@ -0,0 +1 @@
1
+ thor-sanity
@@ -0,0 +1 @@
1
+ thor-sanity
@@ -0,0 +1,52 @@
1
+ {
2
+ "plan_slug": "thor-sanity",
3
+ "schema_version": 2,
4
+ "created": "2026-09-04T05:31:24Z",
5
+ "updated": "2026-09-04T06:16:01Z",
6
+ "deviations": [
7
+ {
8
+ "id": "d1",
9
+ "what": "Tier 1 (t3, the --fake live suite) cannot run before t2: 'env up --fake' exits 2 with 'no onnxruntime shared object under microduck_rl/.venv' because robotd dlopens libonnxruntime from the RL venv for the ONNX policies even on the fake body. t3 now depends on t2 (serial after the sync), and spec claim c3's 'fake needs only cargo-built robotd' is wrong on this evidence; the record states the real prerequisite",
10
+ "task_ref": "t3",
11
+ "reason": "Observed on Thor at CLI 2b00480: first tier-1 run gave 1 failed, 10 errors, all from the bring-up refusal quoted above",
12
+ "affects": [
13
+ "t3",
14
+ "t2"
15
+ ],
16
+ "origin": "llm",
17
+ "status": "approved",
18
+ "classification": "acceptable",
19
+ "seq": 1
20
+ },
21
+ {
22
+ "id": "d2",
23
+ "what": "Tiers 2 and 3 ran with lobes still up: 'free -g' showed 45-46 GB available before each, which the MuJoCo body (one env) and the 64-env smoke fit in, so the operator was not asked to lower lobes; the record states the free-RAM figures instead of a lowered-lobes figure",
24
+ "task_ref": "t4",
25
+ "reason": "Decision c20 planned for lobes to be lowered; on the box the headroom sufficed and pausing an autonomous run to ask would have blocked without need",
26
+ "affects": [
27
+ "t4",
28
+ "t5"
29
+ ],
30
+ "origin": "llm",
31
+ "status": "approved",
32
+ "classification": "acceptable",
33
+ "seq": 2
34
+ },
35
+ {
36
+ "id": "d3",
37
+ "what": "hosts.py's _classify() is not byte-identical as honesty h8 required: one line inside it changed, the Thor branch now returns the new _THOR_VERIFIED_REMEDIATION constant instead of _UNVERIFIED_REMEDIATION (the Orin branch keeps the old one). No condition, host class, display name or torch_source_applies verdict changed; the diff's only other hunks are the module docstring and the new constant",
38
+ "task_ref": "t7",
39
+ "reason": "A per-board remediation needs the Thor branch to name a different constant; keeping the function byte-identical would have meant lying in the shared text or leaving Thor marked unverified after a passing smoke",
40
+ "affects": [
41
+ "t7"
42
+ ],
43
+ "origin": "llm",
44
+ "status": "approved",
45
+ "classification": "acceptable",
46
+ "seq": 3
47
+ }
48
+ ],
49
+ "evidence": [],
50
+ "deltas": [],
51
+ "supersessions": []
52
+ }