microduck-cli 0.9.2__tar.gz → 0.9.4__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.
- microduck_cli-0.9.4/.devague/current +1 -0
- microduck_cli-0.9.4/.devague/current_plan +1 -0
- microduck_cli-0.9.4/.devague/deliveries/readme-as-proof.json +431 -0
- microduck_cli-0.9.4/.devague/deliveries/thor-sanity.json +52 -0
- microduck_cli-0.9.4/.devague/frames/readme-as-proof.json +856 -0
- microduck_cli-0.9.4/.devague/frames/thor-sanity.json +622 -0
- microduck_cli-0.9.4/.devague/plans/readme-as-proof.json +359 -0
- microduck_cli-0.9.4/.devague/plans/thor-sanity.json +439 -0
- microduck_cli-0.9.4/.eidetic/memory/microduck-cli__public.jsonl +1 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/CHANGELOG.md +44 -0
- microduck_cli-0.9.4/PKG-INFO +304 -0
- microduck_cli-0.9.4/README.md +287 -0
- microduck_cli-0.9.4/docs/deliveries/2026-09-04-readme-as-proof.md +158 -0
- microduck_cli-0.9.4/docs/plans/2026-09-04-thor-sanity.md +81 -0
- microduck_cli-0.9.4/docs/specs/2026-09-04-readme-as-proof.md +159 -0
- microduck_cli-0.9.4/docs/specs/2026-09-04-thor-sanity.md +122 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/docs/verification/2026-09-04-sim-bringup.md +5 -1
- microduck_cli-0.9.4/docs/verification/2026-09-04-thor-sanity.md +324 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/microduck_cli/env/doctor.py +2 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/microduck_cli/env/hosts.py +73 -8
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/pyproject.toml +2 -2
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/tests/test_hosts.py +44 -5
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/uv.lock +1 -1
- microduck_cli-0.9.2/.devague/current +0 -1
- microduck_cli-0.9.2/.devague/current_plan +0 -1
- microduck_cli-0.9.2/PKG-INFO +0 -126
- microduck_cli-0.9.2/README.md +0 -109
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.claude/skills/agent-config/SKILL.md +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.claude/skills/agent-config/data/backend-fingerprints.yaml +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.claude/skills/agent-config/scripts/show.sh +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.claude/skills/ask-colleague/SKILL.md +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.claude/skills/ask-colleague/prompts/explore.md +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.claude/skills/ask-colleague/prompts/review.md +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.claude/skills/ask-colleague/prompts/write.md +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.claude/skills/ask-colleague/scripts/ask-colleague.sh +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.claude/skills/assign-to-workforce/SKILL.md +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.claude/skills/assign-to-workforce/scripts/assign-to-workforce.sh +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.claude/skills/challenge/SKILL.md +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.claude/skills/cicd/SKILL.md +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.claude/skills/cicd/scripts/_resolve-nick.sh +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.claude/skills/cicd/scripts/portability-lint.sh +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.claude/skills/cicd/scripts/pr-reply.sh +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.claude/skills/cicd/scripts/pr-status.sh +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.claude/skills/cicd/scripts/workflow.sh +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.claude/skills/communicate/SKILL.md +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.claude/skills/communicate/scripts/fetch-issues.sh +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.claude/skills/communicate/scripts/mesh-message.sh +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.claude/skills/communicate/scripts/post-comment.sh +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.claude/skills/communicate/scripts/post-issue.sh +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.claude/skills/communicate/scripts/templates/skill-new-brief.md +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.claude/skills/communicate/scripts/templates/skill-update-brief.md +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.claude/skills/deviate/SKILL.md +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.claude/skills/doc-test-alignment/SKILL.md +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.claude/skills/doc-test-alignment/scripts/check.sh +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.claude/skills/operate-microduck/SKILL.md +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.claude/skills/pypi-maintainer/SKILL.md +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.claude/skills/pypi-maintainer/scripts/switch-source.sh +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.claude/skills/recall/SKILL.md +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.claude/skills/recall/scripts/recall.sh +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.claude/skills/remember/SKILL.md +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.claude/skills/remember/scripts/remember.sh +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.claude/skills/run-tests/SKILL.md +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.claude/skills/run-tests/scripts/test.sh +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.claude/skills/scope/SKILL.md +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.claude/skills/sonarclaude/SKILL.md +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.claude/skills/sonarclaude/scripts/sonar.sh +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.claude/skills/spec-to-plan/SKILL.md +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.claude/skills/spec-to-plan/scripts/spec-to-plan.sh +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.claude/skills/summarize-delivery/SKILL.md +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.claude/skills/think/SKILL.md +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.claude/skills/think/scripts/think.sh +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.claude/skills/validate-delivery/SKILL.md +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.claude/skills/version-bump/SKILL.md +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.claude/skills/version-bump/scripts/bump.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.claude/skills.local.yaml.example +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.devague/deliveries/microduck-cli-env-teach-operate-rules.json +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.devague/deliveries/orin-sanity.json +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.devague/frames/microduck-cli-env-teach-operate-rules.json +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.devague/frames/orin-sanity.json +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.devague/plans/microduck-cli-env-teach-operate-rules.json +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.devague/plans/orin-sanity.json +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.flake8 +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.github/workflows/publish.yml +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.github/workflows/tests.yml +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.gitignore +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/.markdownlint-cli2.yaml +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/AGENTS.colleague.md +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/CLAUDE.md +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/LICENSE +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/culture.yaml +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/docs/deliveries/2026-09-03-microduck-cli-env-teach-operate-rules.md +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/docs/deliveries/2026-09-04-orin-sanity.md +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/docs/operating-the-duck.md +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/docs/plans/2026-09-03-microduck-cli-env-teach-operate-rules.md +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/docs/plans/2026-09-04-orin-sanity.md +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/docs/skill-sources.md +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/docs/specs/2026-09-03-microduck-cli-env-teach-operate-rules.md +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/docs/specs/2026-09-04-orin-sanity.md +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/docs/upstream-pins.md +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/docs/verification/2026-09-04-orin-sanity.md +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/microduck_cli/__init__.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/microduck_cli/__main__.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/microduck_cli/behavior/__init__.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/microduck_cli/behavior/compose.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/microduck_cli/behavior/default_rules.toml +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/microduck_cli/behavior/defaults.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/microduck_cli/behavior/engine.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/microduck_cli/behavior/human_gate.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/microduck_cli/behavior/idle.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/microduck_cli/behavior/intents.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/microduck_cli/behavior/liveness.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/microduck_cli/behavior/model.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/microduck_cli/behavior/release.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/microduck_cli/behavior/replay.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/microduck_cli/behavior/rule_engine.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/microduck_cli/behavior/rules.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/microduck_cli/behavior/sense.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/microduck_cli/behavior/senselog.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/microduck_cli/behavior/sink.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/microduck_cli/behavior/skills.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/microduck_cli/cli/__init__.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/microduck_cli/cli/_commands/__init__.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/microduck_cli/cli/_commands/cli.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/microduck_cli/cli/_commands/doctor.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/microduck_cli/cli/_commands/duck.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/microduck_cli/cli/_commands/env.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/microduck_cli/cli/_commands/explain.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/microduck_cli/cli/_commands/learn.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/microduck_cli/cli/_commands/overview.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/microduck_cli/cli/_commands/policy.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/microduck_cli/cli/_commands/rules.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/microduck_cli/cli/_commands/whoami.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/microduck_cli/cli/_errors.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/microduck_cli/cli/_output.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/microduck_cli/duck/__init__.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/microduck_cli/duck/addressing.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/microduck_cli/duck/gate.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/microduck_cli/duck/record.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/microduck_cli/env/__init__.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/microduck_cli/env/params.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/microduck_cli/env/stack.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/microduck_cli/explain/__init__.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/microduck_cli/explain/catalog.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/microduck_cli/explain/duck.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/microduck_cli/explain/env.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/microduck_cli/explain/policy.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/microduck_cli/explain/rules.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/microduck_cli/ipc/__init__.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/microduck_cli/ipc/client.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/microduck_cli/ipc/proto.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/microduck_cli/train/__init__.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/microduck_cli/train/artifacts.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/microduck_cli/train/lane.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/sonar-project.properties +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/tests/__init__.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/tests/fake_robotd.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/tests/fixtures/duck_ipc_proto.json +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/tests/live/__init__.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/tests/live/test_live_cli.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/tests/test_addressing.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/tests/test_cli.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/tests/test_cli_introspection.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/tests/test_client.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/tests/test_default_rules.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/tests/test_duck.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/tests/test_engine.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/tests/test_env.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/tests/test_env_doctor.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/tests/test_fake_robotd.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/tests/test_gate.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/tests/test_human_gate.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/tests/test_idle.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/tests/test_intents.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/tests/test_lane.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/tests/test_learn_skill.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/tests/test_links.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/tests/test_liveness.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/tests/test_lockstep.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/tests/test_model.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/tests/test_no_config_writes.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/tests/test_no_hardware_paths.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/tests/test_no_secrets_in_output.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/tests/test_params.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/tests/test_policy.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/tests/test_proto.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/tests/test_record.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/tests/test_release.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/tests/test_replay.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/tests/test_rule_engine.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/tests/test_rules.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/tests/test_rules_cli.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/tests/test_sense.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/tests/test_senselog.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/tests/test_sink.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/tests/test_skills.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/tests/test_stack.py +0 -0
- {microduck_cli-0.9.2 → microduck_cli-0.9.4}/tests/test_zero_deps.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
readme-as-proof
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
readme-as-proof
|
|
@@ -0,0 +1,431 @@
|
|
|
1
|
+
{
|
|
2
|
+
"plan_slug": "readme-as-proof",
|
|
3
|
+
"schema_version": 2,
|
|
4
|
+
"created": "2026-09-04T19:11:29Z",
|
|
5
|
+
"updated": "2026-09-04T19:32:16Z",
|
|
6
|
+
"deviations": [
|
|
7
|
+
{
|
|
8
|
+
"id": "d1",
|
|
9
|
+
"what": "Every mention of neurosymbolic-system removed from README.md, contradicting confirmed claims c9 (five limits, one being the not-a-dependency statement) and c10 (the sibling table)",
|
|
10
|
+
"task_ref": "t3",
|
|
11
|
+
"reason": "User direction mid-run: \"no need to mention neurosymbolic-system at all\". The README no longer names it, so the what-it-is-not section states four limits rather than the five h7 enumerates, and the sibling table has four rows rather than five",
|
|
12
|
+
"affects": [
|
|
13
|
+
"c9",
|
|
14
|
+
"c10"
|
|
15
|
+
],
|
|
16
|
+
"origin": "user",
|
|
17
|
+
"status": "approved",
|
|
18
|
+
"classification": "acceptable",
|
|
19
|
+
"seq": 7
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"id": "d2",
|
|
23
|
+
"what": "The what-it-is-not opener and walkthrough step 1 now lead with the MuJoCo simulation (the real robotd --sim driving microduck_rl duck-body) rather than robotd --fake; the intro names the real daemon and the sim on three machines",
|
|
24
|
+
"task_ref": "t3",
|
|
25
|
+
"reason": "User direction mid-run: \"We ran it through the simulation, not just fake. So it was validated against that.\" The prior wording listed the fake body first and read as if only the fake was exercised",
|
|
26
|
+
"affects": [
|
|
27
|
+
"c9"
|
|
28
|
+
],
|
|
29
|
+
"origin": "user",
|
|
30
|
+
"status": "approved",
|
|
31
|
+
"classification": "acceptable",
|
|
32
|
+
"seq": 8
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"id": "d3",
|
|
36
|
+
"what": "The tick-engine diagram redrawn from a wide flowchart LR into a vertical flowchart TB of four labelled layers (read / decide / write / after the write); the topology diagram reverted to and left exactly as committed",
|
|
37
|
+
"task_ref": "t1",
|
|
38
|
+
"reason": "User direction mid-run: the tick-engine diagram was \"too long to read (Appears small) vertical, and maybe layers could work\". Rendered and checked at mermaid.live before and after; the user explicitly kept the committed topology diagram",
|
|
39
|
+
"affects": [
|
|
40
|
+
"c6"
|
|
41
|
+
],
|
|
42
|
+
"origin": "user",
|
|
43
|
+
"status": "approved",
|
|
44
|
+
"classification": "acceptable",
|
|
45
|
+
"seq": 9
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"id": "d4",
|
|
49
|
+
"what": "pyproject.toml description rewritten to drop neurosymbolic-system and name the sim-first evidence, extending d1 beyond README.md and widening boundary c12 by one line",
|
|
50
|
+
"task_ref": "t3",
|
|
51
|
+
"reason": "User direction after the validate-delivery report: pyproject.toml description is the subtitle PyPI renders directly above the README, so leaving neurosymbolic-system there would contradict the README on the same page",
|
|
52
|
+
"affects": [
|
|
53
|
+
"c12"
|
|
54
|
+
],
|
|
55
|
+
"origin": "user",
|
|
56
|
+
"status": "approved",
|
|
57
|
+
"classification": "acceptable",
|
|
58
|
+
"seq": 18
|
|
59
|
+
}
|
|
60
|
+
],
|
|
61
|
+
"evidence": [
|
|
62
|
+
{
|
|
63
|
+
"id": "e1",
|
|
64
|
+
"obligation_ref": "o2",
|
|
65
|
+
"test_ref": "scratchpad script: extract every fenced microduck path, run `uv run microduck <path> --help`",
|
|
66
|
+
"behavior_text": "asserts each of the 9 fenced command paths exits 0 under its own --help",
|
|
67
|
+
"contract_text": "every fenced command resolves against the shipped --help at the version README names",
|
|
68
|
+
"evidence_type": "automated",
|
|
69
|
+
"strength": "execution",
|
|
70
|
+
"strength_basis": "ran at HEAD: paths=9 misses=0. NOTE: this repo has no @pytest.mark.behavioral marker and no tests/behavioral/ folder, so this and every check below is an ad-hoc agent-side script, not a committed suite \u2014 it will not re-run on a future PR",
|
|
71
|
+
"outcome": "pass",
|
|
72
|
+
"run": {
|
|
73
|
+
"timestamp": "2026-09-04T22:10:17+03:00",
|
|
74
|
+
"commit": "6501d27"
|
|
75
|
+
},
|
|
76
|
+
"origin": "llm",
|
|
77
|
+
"status": "approved",
|
|
78
|
+
"superseded": false,
|
|
79
|
+
"seq": 1
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"id": "e2",
|
|
83
|
+
"obligation_ref": "o3",
|
|
84
|
+
"test_ref": "scratchpad script: diff each fenced text block line-by-line against the three docs/verification records",
|
|
85
|
+
"behavior_text": "asserts every capture line appears verbatim in a record, allowing only the ~ home-directory substitution",
|
|
86
|
+
"contract_text": "every capture is byte-identical to its source modulo marked elision and carries box, CLI commit and version",
|
|
87
|
+
"evidence_type": "automated",
|
|
88
|
+
"strength": "execution",
|
|
89
|
+
"strength_basis": "ran at HEAD: blocks=4 differing_lines=0; each block is captioned with its box and CLI commit (420dc5c Spark, 3c09fb0 Orin, 2b00480 Thor)",
|
|
90
|
+
"outcome": "pass",
|
|
91
|
+
"run": {
|
|
92
|
+
"timestamp": "2026-09-04T22:10:17+03:00",
|
|
93
|
+
"commit": "6501d27"
|
|
94
|
+
},
|
|
95
|
+
"origin": "llm",
|
|
96
|
+
"status": "approved",
|
|
97
|
+
"superseded": false,
|
|
98
|
+
"seq": 2
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"id": "e3",
|
|
102
|
+
"obligation_ref": "o5",
|
|
103
|
+
"test_ref": "curl -o /dev/null -w %{http_code} over every https link, plus a filesystem existence test for every relative link",
|
|
104
|
+
"behavior_text": "asserts all 10 external repo/issue links answer 200 and all 12 relative paths exist",
|
|
105
|
+
"contract_text": "every repo link resolves and upstream commits are linked through docs/upstream-pins.md rather than duplicated",
|
|
106
|
+
"evidence_type": "automated",
|
|
107
|
+
"strength": "execution",
|
|
108
|
+
"strength_basis": "ran at HEAD: 10/10 external links 200, 12/12 relative targets exist, and no upstream commit sha is duplicated in README (the pins table is linked)",
|
|
109
|
+
"outcome": "pass",
|
|
110
|
+
"run": {
|
|
111
|
+
"timestamp": "2026-09-04T22:10:17+03:00",
|
|
112
|
+
"commit": "6501d27"
|
|
113
|
+
},
|
|
114
|
+
"origin": "llm",
|
|
115
|
+
"status": "approved",
|
|
116
|
+
"superseded": false,
|
|
117
|
+
"seq": 3
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
"id": "e4",
|
|
121
|
+
"obligation_ref": "o6",
|
|
122
|
+
"test_ref": "uvx --from microduck-cli==0.9.3 microduck --version && microduck whoami",
|
|
123
|
+
"behavior_text": "asserts the published package installs from PyPI and the named console script runs",
|
|
124
|
+
"contract_text": "install leads with the published package and the command shown works",
|
|
125
|
+
"evidence_type": "automated",
|
|
126
|
+
"strength": "execution",
|
|
127
|
+
"strength_basis": "ran at HEAD in a clean uvx env: printed \"microduck-cli 0.9.3\" and a whoami payload. CAVEAT: verified against 0.9.3, the currently published release; 0.9.4 (this PR) is not on PyPI until merge, and README names 0.9.4",
|
|
128
|
+
"outcome": "pass",
|
|
129
|
+
"run": {
|
|
130
|
+
"timestamp": "2026-09-04T22:10:17+03:00",
|
|
131
|
+
"commit": "6501d27"
|
|
132
|
+
},
|
|
133
|
+
"origin": "llm",
|
|
134
|
+
"status": "approved",
|
|
135
|
+
"superseded": false,
|
|
136
|
+
"seq": 4
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
"id": "e5",
|
|
140
|
+
"obligation_ref": "o9",
|
|
141
|
+
"test_ref": "grep -n \"/home/\\|orinachum\" README.md",
|
|
142
|
+
"behavior_text": "asserts no box home directory and no account name appears in the published text",
|
|
143
|
+
"contract_text": "captures are scrubbed of identity before they ship, because README is the PyPI long description",
|
|
144
|
+
"evidence_type": "automated",
|
|
145
|
+
"strength": "execution",
|
|
146
|
+
"strength_basis": "ran at HEAD: 0 hits",
|
|
147
|
+
"outcome": "pass",
|
|
148
|
+
"run": {
|
|
149
|
+
"timestamp": "2026-09-04T22:10:17+03:00",
|
|
150
|
+
"commit": "6501d27"
|
|
151
|
+
},
|
|
152
|
+
"origin": "llm",
|
|
153
|
+
"status": "approved",
|
|
154
|
+
"superseded": false,
|
|
155
|
+
"seq": 5
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
"id": "e6",
|
|
159
|
+
"obligation_ref": "o12",
|
|
160
|
+
"test_ref": "uv run --with readme-renderer[md] python -m readme_renderer README.md, then read the HTML with tags stripped",
|
|
161
|
+
"behavior_text": "asserts the six-step walkthrough is legible when the mermaid fences degrade to plain code blocks",
|
|
162
|
+
"contract_text": "the numbered walkthrough is the single text fallback for the PyPI render",
|
|
163
|
+
"evidence_type": "automated",
|
|
164
|
+
"strength": "execution",
|
|
165
|
+
"strength_basis": "ran at HEAD: 21088 bytes rendered; the numbered walkthrough and its commands read correctly with the diagrams stripped; both mermaid fences do render as raw source on PyPI, which is the accepted cost of the q1 decision",
|
|
166
|
+
"outcome": "pass",
|
|
167
|
+
"run": {
|
|
168
|
+
"timestamp": "2026-09-04T22:10:17+03:00",
|
|
169
|
+
"commit": "6501d27"
|
|
170
|
+
},
|
|
171
|
+
"origin": "llm",
|
|
172
|
+
"status": "approved",
|
|
173
|
+
"superseded": false,
|
|
174
|
+
"seq": 6
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
"id": "e7",
|
|
178
|
+
"obligation_ref": "o7",
|
|
179
|
+
"test_ref": "git diff --name-only origin/main..HEAD",
|
|
180
|
+
"behavior_text": "asserts the branch touches only the files the boundary named",
|
|
181
|
+
"contract_text": "the branch diff lists README.md, CHANGELOG.md and pyproject.toml and nothing else",
|
|
182
|
+
"evidence_type": "automated",
|
|
183
|
+
"strength": "execution",
|
|
184
|
+
"strength_basis": "ran at HEAD and FAILED as h10 is literally worded: the diff also carries uv.lock (the version bump propagating), .devague/current, .devague/frames/readme-as-proof.json and docs/specs/2026-09-04-readme-as-proof.md. No module, test, skill or verification record is touched, so c12 as written holds; h10 enumerated three paths and four more are present",
|
|
185
|
+
"outcome": "fail",
|
|
186
|
+
"run": {
|
|
187
|
+
"timestamp": "2026-09-04T22:18:02+03:00",
|
|
188
|
+
"commit": "6501d27"
|
|
189
|
+
},
|
|
190
|
+
"origin": "llm",
|
|
191
|
+
"status": "approved",
|
|
192
|
+
"superseded": false,
|
|
193
|
+
"seq": 10
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
"id": "e8",
|
|
197
|
+
"obligation_ref": "o1",
|
|
198
|
+
"test_ref": "manual read of each mermaid node against microduck_cli/behavior/engine.py, duck/addressing.py, ipc/proto.py and docs/upstream-pins.md; both fences rendered at mermaid.live",
|
|
199
|
+
"behavior_text": "asserts every node and edge names something that exists in the code or the pins table, and that both diagrams render",
|
|
200
|
+
"contract_text": "each diagram transcribes the code rather than inventing a topology",
|
|
201
|
+
"evidence_type": "manual",
|
|
202
|
+
"strength": "fidelity",
|
|
203
|
+
"strength_basis": "read node by node: the socket path matches DEFAULT_STATE_DIR in duck/addressing.py, API 16 matches the pins table, and the tick order matches engine.py. Both fences rendered clean at mermaid.live v11.17.2 and were screenshotted. NOT machine-checked - no test asserts a diagram against the code, so this ages like the captures",
|
|
204
|
+
"outcome": "pass",
|
|
205
|
+
"run": {
|
|
206
|
+
"timestamp": "2026-09-04T22:18:02+03:00",
|
|
207
|
+
"commit": "6501d27"
|
|
208
|
+
},
|
|
209
|
+
"origin": "llm",
|
|
210
|
+
"status": "approved",
|
|
211
|
+
"superseded": false,
|
|
212
|
+
"seq": 11
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
"id": "e9",
|
|
216
|
+
"obligation_ref": "o4",
|
|
217
|
+
"test_ref": "manual read of the what-it-is-not section against learn.py, the d1 note and docs/verification",
|
|
218
|
+
"behavior_text": "asserts each stated limit traces to the file that records it",
|
|
219
|
+
"contract_text": "the section states its limits, each traceable to the file that records it",
|
|
220
|
+
"evidence_type": "manual",
|
|
221
|
+
"strength": "fidelity",
|
|
222
|
+
"strength_basis": "AMENDED by deviation d1: the section now states four limits, not the five h7 enumerated - the neurosymbolic-system item was removed on user direction. The four that remain (no physical duck, no locomotion at the pin, API-16 deviation d1, and the gate/relax warning) each trace to a file",
|
|
223
|
+
"outcome": "pass",
|
|
224
|
+
"run": {
|
|
225
|
+
"timestamp": "2026-09-04T22:18:02+03:00",
|
|
226
|
+
"commit": "6501d27"
|
|
227
|
+
},
|
|
228
|
+
"origin": "llm",
|
|
229
|
+
"status": "approved",
|
|
230
|
+
"superseded": false,
|
|
231
|
+
"seq": 12
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
"id": "e10",
|
|
235
|
+
"obligation_ref": "o8",
|
|
236
|
+
"test_ref": "manual diff of the three-box table against the box tables and What-was-NOT-verified sections of the three records; gh view of microduck_rl#39",
|
|
237
|
+
"behavior_text": "asserts each box row carries the caveat its record states, and that the linked upstream PR is still open",
|
|
238
|
+
"contract_text": "the table names Thor override with microduck_rl#39 open, and Orin missing sm_87 kernels",
|
|
239
|
+
"evidence_type": "manual",
|
|
240
|
+
"strength": "fidelity",
|
|
241
|
+
"strength_basis": "each caveat matches its record verbatim in substance; microduck_rl#39 answered 200 and is open at check time. It may merge at any point, which would make the row stale",
|
|
242
|
+
"outcome": "pass",
|
|
243
|
+
"run": {
|
|
244
|
+
"timestamp": "2026-09-04T22:18:02+03:00",
|
|
245
|
+
"commit": "6501d27"
|
|
246
|
+
},
|
|
247
|
+
"origin": "llm",
|
|
248
|
+
"status": "approved",
|
|
249
|
+
"superseded": false,
|
|
250
|
+
"seq": 13
|
|
251
|
+
},
|
|
252
|
+
{
|
|
253
|
+
"id": "e11",
|
|
254
|
+
"obligation_ref": "o10",
|
|
255
|
+
"test_ref": "grep of every fenced command plus a read of docs/operating-the-duck.md",
|
|
256
|
+
"behavior_text": "asserts one invocation form throughout, with the uv run form reconciled once",
|
|
257
|
+
"contract_text": "README uses one command form and reconciles it with the walkthrough doc",
|
|
258
|
+
"evidence_type": "manual",
|
|
259
|
+
"strength": "fidelity",
|
|
260
|
+
"strength_basis": "every fenced command uses the bare microduck form; the Install section states once that uv run microduck is the checkout equivalent and names docs/operating-the-duck.md as the doc that uses it",
|
|
261
|
+
"outcome": "pass",
|
|
262
|
+
"run": {
|
|
263
|
+
"timestamp": "2026-09-04T22:18:02+03:00",
|
|
264
|
+
"commit": "6501d27"
|
|
265
|
+
},
|
|
266
|
+
"origin": "llm",
|
|
267
|
+
"status": "approved",
|
|
268
|
+
"superseded": false,
|
|
269
|
+
"seq": 14
|
|
270
|
+
},
|
|
271
|
+
{
|
|
272
|
+
"id": "e12",
|
|
273
|
+
"obligation_ref": "o11",
|
|
274
|
+
"test_ref": "read of learn.py _PURPOSE (lines 20-26) and explain/catalog.py (lines 79-83) in full against the README section",
|
|
275
|
+
"behavior_text": "asserts the README makes no claim the CLI own text contradicts",
|
|
276
|
+
"contract_text": "README may extend but must not contradict the CLI own sim-first statements",
|
|
277
|
+
"evidence_type": "manual",
|
|
278
|
+
"strength": "fidelity",
|
|
279
|
+
"strength_basis": "both in-CLI texts say sim-first, no physical MicroDuck driven, exercised against robotd --fake/--sim and the in-process fake; the README says the same and adds the sim emphasis from deviation d2. No contradiction",
|
|
280
|
+
"outcome": "pass",
|
|
281
|
+
"run": {
|
|
282
|
+
"timestamp": "2026-09-04T22:18:02+03:00",
|
|
283
|
+
"commit": "6501d27"
|
|
284
|
+
},
|
|
285
|
+
"origin": "llm",
|
|
286
|
+
"status": "approved",
|
|
287
|
+
"superseded": false,
|
|
288
|
+
"seq": 15
|
|
289
|
+
},
|
|
290
|
+
{
|
|
291
|
+
"id": "e13",
|
|
292
|
+
"obligation_ref": "o13",
|
|
293
|
+
"test_ref": "markdownlint-cli2 README.md, the command check, the capture diff, and the readme_renderer probe",
|
|
294
|
+
"behavior_text": "asserts the mechanical half of the success signal",
|
|
295
|
+
"contract_text": "a reader answers the four questions; markdownlint clean; command check zero misses",
|
|
296
|
+
"evidence_type": "observation",
|
|
297
|
+
"strength": "coverage",
|
|
298
|
+
"strength_basis": "the mechanical assertions all pass. The human half - a reader with no other context answering the four questions - was NOT performed: no reader was asked. Filed at coverage strength for that reason, not execution",
|
|
299
|
+
"outcome": "pass",
|
|
300
|
+
"run": {
|
|
301
|
+
"timestamp": "2026-09-04T22:18:02+03:00",
|
|
302
|
+
"commit": "6501d27"
|
|
303
|
+
},
|
|
304
|
+
"origin": "llm",
|
|
305
|
+
"status": "approved",
|
|
306
|
+
"superseded": false,
|
|
307
|
+
"seq": 16
|
|
308
|
+
},
|
|
309
|
+
{
|
|
310
|
+
"id": "e14",
|
|
311
|
+
"obligation_ref": "o2",
|
|
312
|
+
"test_ref": "the command check, capture diff, identity grep, markdownlint and readme_renderer probe, all re-run after the d1/d2/d3 amendments",
|
|
313
|
+
"behavior_text": "asserts the amended README still satisfies every mechanical obligation",
|
|
314
|
+
"contract_text": "the amendments did not break a previously passing check",
|
|
315
|
+
"evidence_type": "automated",
|
|
316
|
+
"strength": "execution",
|
|
317
|
+
"strength_basis": "e1-e6 were filed at commit 6501d27, before the three deviations amended the README; every one of those checks was re-run on the amended working tree with identical results (paths=9 misses=0, blocks=4 differing_lines=0, identity hits=0, neurosymbolic mentions=0, markdownlint 0 errors, readme_renderer exit 0)",
|
|
318
|
+
"outcome": "pass",
|
|
319
|
+
"run": {
|
|
320
|
+
"timestamp": "2026-09-04T22:18:18+03:00",
|
|
321
|
+
"commit": "6501d27"
|
|
322
|
+
},
|
|
323
|
+
"origin": "llm",
|
|
324
|
+
"status": "approved",
|
|
325
|
+
"superseded": false,
|
|
326
|
+
"seq": 17
|
|
327
|
+
},
|
|
328
|
+
{
|
|
329
|
+
"id": "e15",
|
|
330
|
+
"obligation_ref": "o4",
|
|
331
|
+
"test_ref": "recount of the what-it-is-not section after d1, against h7 item by item",
|
|
332
|
+
"behavior_text": "asserts exactly which of the five enumerated limits survive and where each now lives",
|
|
333
|
+
"contract_text": "the section states its limits, each traceable to the file that records it",
|
|
334
|
+
"evidence_type": "manual",
|
|
335
|
+
"strength": "fidelity",
|
|
336
|
+
"strength_basis": "CORRECTS e9, whose basis said \"four limits\". Item by item against h7: no-physical-duck (bullet 1), no-locomotion-at-the-pin (bullet 2), API-16 deviation d1 (bullet 3) \u2014 three bullets, not four; the gate/relax warning is a following paragraph; zero third-party runtime dependencies survives but was relocated to the intro paragraph; the neurosymbolic-system item is gone (d1). So four of h7 five survive, one of them outside the section",
|
|
337
|
+
"outcome": "pass",
|
|
338
|
+
"run": {
|
|
339
|
+
"timestamp": "2026-09-04T22:21:23+03:00",
|
|
340
|
+
"commit": "2777532"
|
|
341
|
+
},
|
|
342
|
+
"origin": "llm",
|
|
343
|
+
"status": "approved",
|
|
344
|
+
"superseded": false,
|
|
345
|
+
"seq": 19
|
|
346
|
+
},
|
|
347
|
+
{
|
|
348
|
+
"id": "e16",
|
|
349
|
+
"obligation_ref": "o7",
|
|
350
|
+
"test_ref": "git diff --name-only origin/main..HEAD, re-run after deviation d4",
|
|
351
|
+
"behavior_text": "asserts the branch touches only the files the boundary named",
|
|
352
|
+
"contract_text": "the branch diff lists README.md, CHANGELOG.md and pyproject.toml and nothing else",
|
|
353
|
+
"evidence_type": "automated",
|
|
354
|
+
"strength": "execution",
|
|
355
|
+
"strength_basis": "RE-VALIDATES e7 after d4 as the staleness check demanded. Still failing, and now wider: README.md, CHANGELOG.md, pyproject.toml, uv.lock, docs/specs/2026-09-04-readme-as-proof.md and five .devague/ paths (frame, plan, delivery, current, current_plan). c12 substance holds \u2014 no module, test, skill or verification record is touched \u2014 but h10 literal enumeration is off by six paths",
|
|
356
|
+
"outcome": "fail",
|
|
357
|
+
"run": {
|
|
358
|
+
"timestamp": "2026-09-04T22:21:23+03:00",
|
|
359
|
+
"commit": "2777532"
|
|
360
|
+
},
|
|
361
|
+
"origin": "llm",
|
|
362
|
+
"status": "approved",
|
|
363
|
+
"superseded": false,
|
|
364
|
+
"seq": 20
|
|
365
|
+
},
|
|
366
|
+
{
|
|
367
|
+
"id": "e17",
|
|
368
|
+
"obligation_ref": "o4",
|
|
369
|
+
"test_ref": "the full check set re-run after the prose-compression pass",
|
|
370
|
+
"behavior_text": "asserts the compressed README still satisfies every mechanical obligation",
|
|
371
|
+
"contract_text": "compressing the prose did not break a previously passing check",
|
|
372
|
+
"evidence_type": "automated",
|
|
373
|
+
"strength": "execution",
|
|
374
|
+
"strength_basis": "paths=9 misses=0, blocks=4 differing_lines=0, 0 identity/neurosymbolic hits, markdownlint 0 errors, readme_renderer ok, 287 lines. COST: the compression dropped three traceability anchors the honesty conditions leaned on \u2014 tests/fake_robotd.py, the \"the CLI says so itself: microduck learn\" pointer, and microduck_cli/behavior/release.py. The claims still hold in substance; a reader can no longer follow two of them to the file that records them",
|
|
375
|
+
"outcome": "pass",
|
|
376
|
+
"run": {
|
|
377
|
+
"timestamp": "2026-09-04T22:32:16+03:00",
|
|
378
|
+
"commit": "fab427c"
|
|
379
|
+
},
|
|
380
|
+
"origin": "llm",
|
|
381
|
+
"status": "proposed",
|
|
382
|
+
"superseded": false,
|
|
383
|
+
"seq": 21
|
|
384
|
+
}
|
|
385
|
+
],
|
|
386
|
+
"deltas": [
|
|
387
|
+
{
|
|
388
|
+
"id": "b1",
|
|
389
|
+
"kind": "removed",
|
|
390
|
+
"behavior_text": "README.md no longer names neurosymbolic-system anywhere: the not-a-dependency limit and the sibling-table row are gone, so the what-it-is-not section states four limits where the confirmed honesty condition h7 enumerated five",
|
|
391
|
+
"caused_by": [
|
|
392
|
+
"d1"
|
|
393
|
+
],
|
|
394
|
+
"evidence_refs": [
|
|
395
|
+
"e9"
|
|
396
|
+
],
|
|
397
|
+
"origin": "llm",
|
|
398
|
+
"status": "approved",
|
|
399
|
+
"superseded": false
|
|
400
|
+
},
|
|
401
|
+
{
|
|
402
|
+
"id": "b2",
|
|
403
|
+
"kind": "amended",
|
|
404
|
+
"behavior_text": "The what-it-is-not opener and the walkthrough step 1 lead with the MuJoCo simulation rather than the fake body, and the intro says the evidence comes from the real daemon and the sim on three machines",
|
|
405
|
+
"caused_by": [
|
|
406
|
+
"d2"
|
|
407
|
+
],
|
|
408
|
+
"evidence_refs": [
|
|
409
|
+
"e9"
|
|
410
|
+
],
|
|
411
|
+
"origin": "llm",
|
|
412
|
+
"status": "approved",
|
|
413
|
+
"superseded": false
|
|
414
|
+
},
|
|
415
|
+
{
|
|
416
|
+
"id": "b3",
|
|
417
|
+
"kind": "amended",
|
|
418
|
+
"behavior_text": "The tick-engine diagram is a vertical four-layer flowchart TB instead of a wide flowchart LR; the topology diagram is byte-identical to the committed version",
|
|
419
|
+
"caused_by": [
|
|
420
|
+
"d3"
|
|
421
|
+
],
|
|
422
|
+
"evidence_refs": [
|
|
423
|
+
"e8"
|
|
424
|
+
],
|
|
425
|
+
"origin": "llm",
|
|
426
|
+
"status": "approved",
|
|
427
|
+
"superseded": false
|
|
428
|
+
}
|
|
429
|
+
],
|
|
430
|
+
"supersessions": []
|
|
431
|
+
}
|
|
@@ -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
|
+
}
|