microduck-cli 0.9.0__tar.gz → 0.9.1__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 (174) hide show
  1. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.devague/deliveries/microduck-cli-env-teach-operate-rules.json +55 -1
  2. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/CHANGELOG.md +11 -0
  3. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/PKG-INFO +1 -1
  4. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/pyproject.toml +1 -1
  5. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/uv.lock +1 -1
  6. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.claude/skills/agent-config/SKILL.md +0 -0
  7. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.claude/skills/agent-config/data/backend-fingerprints.yaml +0 -0
  8. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.claude/skills/agent-config/scripts/show.sh +0 -0
  9. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.claude/skills/ask-colleague/SKILL.md +0 -0
  10. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.claude/skills/ask-colleague/prompts/explore.md +0 -0
  11. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.claude/skills/ask-colleague/prompts/review.md +0 -0
  12. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.claude/skills/ask-colleague/prompts/write.md +0 -0
  13. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.claude/skills/ask-colleague/scripts/ask-colleague.sh +0 -0
  14. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.claude/skills/assign-to-workforce/SKILL.md +0 -0
  15. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.claude/skills/assign-to-workforce/scripts/assign-to-workforce.sh +0 -0
  16. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.claude/skills/challenge/SKILL.md +0 -0
  17. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.claude/skills/cicd/SKILL.md +0 -0
  18. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.claude/skills/cicd/scripts/_resolve-nick.sh +0 -0
  19. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.claude/skills/cicd/scripts/portability-lint.sh +0 -0
  20. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.claude/skills/cicd/scripts/pr-reply.sh +0 -0
  21. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.claude/skills/cicd/scripts/pr-status.sh +0 -0
  22. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.claude/skills/cicd/scripts/workflow.sh +0 -0
  23. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.claude/skills/communicate/SKILL.md +0 -0
  24. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.claude/skills/communicate/scripts/fetch-issues.sh +0 -0
  25. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.claude/skills/communicate/scripts/mesh-message.sh +0 -0
  26. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.claude/skills/communicate/scripts/post-comment.sh +0 -0
  27. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.claude/skills/communicate/scripts/post-issue.sh +0 -0
  28. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.claude/skills/communicate/scripts/templates/skill-new-brief.md +0 -0
  29. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.claude/skills/communicate/scripts/templates/skill-update-brief.md +0 -0
  30. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.claude/skills/deviate/SKILL.md +0 -0
  31. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.claude/skills/doc-test-alignment/SKILL.md +0 -0
  32. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.claude/skills/doc-test-alignment/scripts/check.sh +0 -0
  33. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.claude/skills/operate-microduck/SKILL.md +0 -0
  34. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.claude/skills/pypi-maintainer/SKILL.md +0 -0
  35. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.claude/skills/pypi-maintainer/scripts/switch-source.sh +0 -0
  36. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.claude/skills/recall/SKILL.md +0 -0
  37. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.claude/skills/recall/scripts/recall.sh +0 -0
  38. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.claude/skills/remember/SKILL.md +0 -0
  39. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.claude/skills/remember/scripts/remember.sh +0 -0
  40. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.claude/skills/run-tests/SKILL.md +0 -0
  41. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.claude/skills/run-tests/scripts/test.sh +0 -0
  42. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.claude/skills/scope/SKILL.md +0 -0
  43. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.claude/skills/sonarclaude/SKILL.md +0 -0
  44. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.claude/skills/sonarclaude/scripts/sonar.sh +0 -0
  45. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.claude/skills/spec-to-plan/SKILL.md +0 -0
  46. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.claude/skills/spec-to-plan/scripts/spec-to-plan.sh +0 -0
  47. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.claude/skills/summarize-delivery/SKILL.md +0 -0
  48. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.claude/skills/think/SKILL.md +0 -0
  49. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.claude/skills/think/scripts/think.sh +0 -0
  50. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.claude/skills/validate-delivery/SKILL.md +0 -0
  51. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.claude/skills/version-bump/SKILL.md +0 -0
  52. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.claude/skills/version-bump/scripts/bump.py +0 -0
  53. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.claude/skills.local.yaml.example +0 -0
  54. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.devague/current +0 -0
  55. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.devague/current_plan +0 -0
  56. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.devague/frames/microduck-cli-env-teach-operate-rules.json +0 -0
  57. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.devague/plans/microduck-cli-env-teach-operate-rules.json +0 -0
  58. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.flake8 +0 -0
  59. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.github/workflows/publish.yml +0 -0
  60. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.github/workflows/tests.yml +0 -0
  61. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.gitignore +0 -0
  62. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/.markdownlint-cli2.yaml +0 -0
  63. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/AGENTS.colleague.md +0 -0
  64. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/CLAUDE.md +0 -0
  65. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/LICENSE +0 -0
  66. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/README.md +0 -0
  67. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/culture.yaml +0 -0
  68. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/docs/deliveries/2026-09-03-microduck-cli-env-teach-operate-rules.md +0 -0
  69. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/docs/operating-the-duck.md +0 -0
  70. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/docs/plans/2026-09-03-microduck-cli-env-teach-operate-rules.md +0 -0
  71. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/docs/skill-sources.md +0 -0
  72. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/docs/specs/2026-09-03-microduck-cli-env-teach-operate-rules.md +0 -0
  73. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/docs/upstream-pins.md +0 -0
  74. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/docs/verification/2026-09-04-sim-bringup.md +0 -0
  75. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/microduck_cli/__init__.py +0 -0
  76. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/microduck_cli/__main__.py +0 -0
  77. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/microduck_cli/behavior/__init__.py +0 -0
  78. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/microduck_cli/behavior/compose.py +0 -0
  79. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/microduck_cli/behavior/default_rules.toml +0 -0
  80. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/microduck_cli/behavior/defaults.py +0 -0
  81. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/microduck_cli/behavior/engine.py +0 -0
  82. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/microduck_cli/behavior/human_gate.py +0 -0
  83. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/microduck_cli/behavior/idle.py +0 -0
  84. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/microduck_cli/behavior/intents.py +0 -0
  85. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/microduck_cli/behavior/liveness.py +0 -0
  86. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/microduck_cli/behavior/model.py +0 -0
  87. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/microduck_cli/behavior/release.py +0 -0
  88. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/microduck_cli/behavior/replay.py +0 -0
  89. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/microduck_cli/behavior/rule_engine.py +0 -0
  90. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/microduck_cli/behavior/rules.py +0 -0
  91. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/microduck_cli/behavior/sense.py +0 -0
  92. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/microduck_cli/behavior/senselog.py +0 -0
  93. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/microduck_cli/behavior/sink.py +0 -0
  94. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/microduck_cli/behavior/skills.py +0 -0
  95. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/microduck_cli/cli/__init__.py +0 -0
  96. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/microduck_cli/cli/_commands/__init__.py +0 -0
  97. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/microduck_cli/cli/_commands/cli.py +0 -0
  98. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/microduck_cli/cli/_commands/doctor.py +0 -0
  99. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/microduck_cli/cli/_commands/duck.py +0 -0
  100. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/microduck_cli/cli/_commands/env.py +0 -0
  101. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/microduck_cli/cli/_commands/explain.py +0 -0
  102. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/microduck_cli/cli/_commands/learn.py +0 -0
  103. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/microduck_cli/cli/_commands/overview.py +0 -0
  104. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/microduck_cli/cli/_commands/policy.py +0 -0
  105. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/microduck_cli/cli/_commands/rules.py +0 -0
  106. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/microduck_cli/cli/_commands/whoami.py +0 -0
  107. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/microduck_cli/cli/_errors.py +0 -0
  108. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/microduck_cli/cli/_output.py +0 -0
  109. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/microduck_cli/duck/__init__.py +0 -0
  110. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/microduck_cli/duck/addressing.py +0 -0
  111. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/microduck_cli/duck/gate.py +0 -0
  112. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/microduck_cli/duck/record.py +0 -0
  113. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/microduck_cli/env/__init__.py +0 -0
  114. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/microduck_cli/env/doctor.py +0 -0
  115. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/microduck_cli/env/hosts.py +0 -0
  116. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/microduck_cli/env/params.py +0 -0
  117. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/microduck_cli/env/stack.py +0 -0
  118. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/microduck_cli/explain/__init__.py +0 -0
  119. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/microduck_cli/explain/catalog.py +0 -0
  120. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/microduck_cli/explain/duck.py +0 -0
  121. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/microduck_cli/explain/env.py +0 -0
  122. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/microduck_cli/explain/policy.py +0 -0
  123. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/microduck_cli/explain/rules.py +0 -0
  124. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/microduck_cli/ipc/__init__.py +0 -0
  125. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/microduck_cli/ipc/client.py +0 -0
  126. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/microduck_cli/ipc/proto.py +0 -0
  127. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/microduck_cli/train/__init__.py +0 -0
  128. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/microduck_cli/train/artifacts.py +0 -0
  129. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/microduck_cli/train/lane.py +0 -0
  130. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/sonar-project.properties +0 -0
  131. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/tests/__init__.py +0 -0
  132. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/tests/fake_robotd.py +0 -0
  133. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/tests/fixtures/duck_ipc_proto.json +0 -0
  134. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/tests/live/__init__.py +0 -0
  135. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/tests/live/test_live_cli.py +0 -0
  136. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/tests/test_addressing.py +0 -0
  137. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/tests/test_cli.py +0 -0
  138. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/tests/test_cli_introspection.py +0 -0
  139. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/tests/test_client.py +0 -0
  140. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/tests/test_default_rules.py +0 -0
  141. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/tests/test_duck.py +0 -0
  142. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/tests/test_engine.py +0 -0
  143. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/tests/test_env.py +0 -0
  144. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/tests/test_env_doctor.py +0 -0
  145. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/tests/test_fake_robotd.py +0 -0
  146. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/tests/test_gate.py +0 -0
  147. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/tests/test_hosts.py +0 -0
  148. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/tests/test_human_gate.py +0 -0
  149. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/tests/test_idle.py +0 -0
  150. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/tests/test_intents.py +0 -0
  151. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/tests/test_lane.py +0 -0
  152. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/tests/test_learn_skill.py +0 -0
  153. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/tests/test_links.py +0 -0
  154. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/tests/test_liveness.py +0 -0
  155. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/tests/test_lockstep.py +0 -0
  156. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/tests/test_model.py +0 -0
  157. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/tests/test_no_config_writes.py +0 -0
  158. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/tests/test_no_hardware_paths.py +0 -0
  159. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/tests/test_no_secrets_in_output.py +0 -0
  160. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/tests/test_params.py +0 -0
  161. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/tests/test_policy.py +0 -0
  162. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/tests/test_proto.py +0 -0
  163. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/tests/test_record.py +0 -0
  164. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/tests/test_release.py +0 -0
  165. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/tests/test_replay.py +0 -0
  166. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/tests/test_rule_engine.py +0 -0
  167. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/tests/test_rules.py +0 -0
  168. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/tests/test_rules_cli.py +0 -0
  169. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/tests/test_sense.py +0 -0
  170. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/tests/test_senselog.py +0 -0
  171. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/tests/test_sink.py +0 -0
  172. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/tests/test_skills.py +0 -0
  173. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/tests/test_stack.py +0 -0
  174. {microduck_cli-0.9.0 → microduck_cli-0.9.1}/tests/test_zero_deps.py +0 -0
@@ -2,7 +2,7 @@
2
2
  "plan_slug": "microduck-cli-env-teach-operate-rules",
3
3
  "schema_version": 2,
4
4
  "created": "2026-09-03T19:58:22Z",
5
- "updated": "2026-09-03T22:16:39Z",
5
+ "updated": "2026-09-03T23:34:51Z",
6
6
  "deviations": [
7
7
  {
8
8
  "id": "d1",
@@ -614,6 +614,60 @@
614
614
  "origin": "llm",
615
615
  "status": "proposed",
616
616
  "superseded": false
617
+ },
618
+ {
619
+ "id": "b10",
620
+ "kind": "amended",
621
+ "behavior_text": "Review wave (PR #3): 'rules engine start' and 'rules intent' (spooling into a live engine) go through the same consent gate as every mover (TTY prompt / dry-run on a pipe / --apply); 'engine start' claims <state>/engine.lock, waits for the child's heartbeat, and logs the child to <state>/engine.log",
622
+ "caused_by": [
623
+ "c7",
624
+ "c24",
625
+ "c32"
626
+ ],
627
+ "evidence_refs": [],
628
+ "origin": "llm",
629
+ "status": "proposed",
630
+ "superseded": false
631
+ },
632
+ {
633
+ "id": "b11",
634
+ "kind": "amended",
635
+ "behavior_text": "Review wave (PR #3): 'duck record' opens its own links for pad.input and tof.stream (DUCK_PAD_SOCKET / <name>-tof.sock) and writes frames in reader arrival order from a bounded notification queue; absent sources are named drops",
636
+ "caused_by": [
637
+ "c41"
638
+ ],
639
+ "evidence_refs": [],
640
+ "origin": "llm",
641
+ "status": "proposed",
642
+ "superseded": false
643
+ },
644
+ {
645
+ "id": "b12",
646
+ "kind": "amended",
647
+ "behavior_text": "Review wave (PR #3): the smoke gate compares the recorded RL commit with the checkout's HEAD; 'env up' tears down what it started on a failed start; rules refuse non-finite numbers; sense booleans are strict; a mode rule reaches robot.setMode; repeated skills are re-sent after the owner expires",
648
+ "caused_by": [
649
+ "c8",
650
+ "c22",
651
+ "c12",
652
+ "c23"
653
+ ],
654
+ "evidence_refs": [],
655
+ "origin": "llm",
656
+ "status": "proposed",
657
+ "superseded": false
658
+ },
659
+ {
660
+ "id": "b13",
661
+ "kind": "amended",
662
+ "behavior_text": "Review wave (PR #3, SonarCloud): 'duck quack' in text mode crashed on a mis-called emit_result after the sound had gone out (exit 1 for a quack that happened) \u2014 fixed with a regression test; SignalExit now derives from Exception and is re-raised through TickBus isolation so a SIGTERM inside a driver still unwinds the loop",
663
+ "caused_by": [
664
+ "c6",
665
+ "c35"
666
+ ],
667
+ "evidence_refs": [],
668
+ "origin": "llm",
669
+ "status": "proposed",
670
+ "superseded": false
617
671
  }
618
672
  ],
619
673
  "supersessions": [
@@ -5,6 +5,17 @@ All notable changes to this project will be documented in this file.
5
5
  Format follows [Keep a Changelog](https://keepachangelog.com/). This project
6
6
  adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.9.1] - 2026-09-04
9
+
10
+ ### Changed
11
+
12
+ - Recorded the PR #3 review wave in the devague delivery ledger
13
+ (`.devague/deliveries/microduck-cli-env-teach-operate-rules.json`): four
14
+ amended behavioral deltas (`b10`–`b13`) covering the gated `rules engine
15
+ start` / `rules intent` path, `duck record`'s own pad and ToF links, the
16
+ smoke-gate commit check and its siblings, and the SonarCloud round (the
17
+ text-mode `duck quack` crash, `SignalExit` unwinding through `TickBus`).
18
+
8
19
  ## [0.9.0] - 2026-09-04
9
20
 
10
21
  ### Added
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: microduck-cli
3
- Version: 0.9.0
3
+ Version: 0.9.1
4
4
  Summary: Agent-agnostic CLI for controlling the MicroDuck robot. Any agent, any human, one CLI. Built on the neurosymbolic-system runtime and following the reachy-mini-cli architecture.
5
5
  Project-URL: Homepage, https://github.com/agentculture/microduck-cli
6
6
  Project-URL: Issues, https://github.com/agentculture/microduck-cli/issues
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "microduck-cli"
3
- version = "0.9.0"
3
+ version = "0.9.1"
4
4
  description = "Agent-agnostic CLI for controlling the MicroDuck robot. Any agent, any human, one CLI. Built on the neurosymbolic-system runtime and following the reachy-mini-cli architecture."
5
5
  readme = "README.md"
6
6
  license = "Apache-2.0"
@@ -227,7 +227,7 @@ wheels = [
227
227
 
228
228
  [[package]]
229
229
  name = "microduck-cli"
230
- version = "0.9.0"
230
+ version = "0.9.1"
231
231
  source = { editable = "." }
232
232
 
233
233
  [package.dev-dependencies]
File without changes
File without changes
File without changes
File without changes
File without changes