Skip to content

feat: Eyes board chip + strip, eyes conductor --instance via the PyAutoEyes registry (PyAutoEyes 2) - #429

Merged
Jammy2211 merged 1 commit into
mainfrom
feature/eyes-board-conductor-registry
Sep 28, 2026
Merged

Jammy2211 merged 1 commit into
mainfrom
feature/eyes-board-conductor-registry

Conversation

@Jammy2211

Copy link
Copy Markdown
Contributor

Summary

PyAutoEyes phase 2 (PyAutoMind#451, epic pyautoeyes-birth), Brain half. The companion is PyAutoLabs/PyAutoEyes#3, which merges first. This follows #428 (PyAutoMind#448).

  • Board chip. config/policy.yaml board.boards gains eyes: PyAutoEyes in the canonical organ order (Brain, Mind, Cortex, Memory, Eyes, Heart, Hands, Nerves, Gut). board/_theme.py gains ORGANS["eyes"], an iris gold designed because there is no logo file yet. It sits clear of the Hands orange, at 5.7:1 on white and 11.6:1 on #0d1117. It also gains MARKS["eyes"], an eye in line art. Every family footer (Heart, Hands, Gut, Cortex, Mind) picks up the chip through _theme.board_links.
  • Eyes strip. collect_eyes() reads the counts table at the head of the PyAutoEyes dashboard.md (instances, figures, behind, critiques) and composes it rather than recomputing. It renders beside the Cortex strip in both md and html, and is absent when no Eyes checkout exists. The Cortex read is factored into _dashboard_counts().
  • Conductor --instance. pyauto-brain eyes survey|review --instance <name> (repeatable) resolves the checkout through the PyAutoEyes registry.yaml, trying the grouped path first and then the flat repo.
    • The organ is found at $PYAUTO_EYES, then beside this Brain, then via _repo_paths.
    • Handing either mode the organ root covers every registered instance. Instances with no local checkout are skipped with a note.
    • --json emits an EyesInstanceSet for multi-instance runs. A resolved survey also reports whether the registry's tracked manifest is present.
    • Registry parsing is stdlib-only, and the code still names no instance, which a test pins.
    • The recursive-producer scan bug is deliberately left to its own draft.
  • Prose. agents/conductors/eyes/AGENTS.md and skills/eyes/eyes.md now cover --instance, the organ-root fan-out, exit code 2, and the dashboard critique route (the /eyes review line and the pre-filled eyes-critique issue, which is raw input for intake).

API Changes

Additive:

  • eyes survey|review take --instance NAME, and the positional root is now optional.
  • New exit code 2 for an unknown instance or unreadable registry.
  • New board surface key eyes.
  • New palette/mark key eyes.

See full details below.

Test Plan

  • Full suite outside the bundle env (env -u PYAUTO_ROOT -u PYAUTO_MIND -u PYAUTO_BRAIN -u PYAUTO_HEART -u PYAUTO_HANDS OMP_NUM_THREADS=8 python -m pytest tests -q): 1085 passed (serial, 265 s)
  • tests/test_board_theme.py (33), tests/test_board.py + test_board_degraded.py (hermetic Eyes strip test included), tests/test_eyes_conductor.py (13, including 6 new registry tests on a fabricated organ)
  • PyAutoHeart and PyAutoHands pytest tests -k footer against this branch (PYAUTO_BRAIN + PYTHONPATH): 3 + 3 passed. The Heart footer renders brain, mind, cortex, memory, eyes, hands, nerves, gut, organism
  • Live: bin/pyauto-brain eyes survey --instance lens reports imaging/visualization: 22 png, interferometer/visualization: 18 png, no gaps, and Tracked manifest: gallery/viz_manifest.yaml — present
  • After merge, the sibling boards' committed dashboards gain the Eyes chip on their next self-heal refresh

Heart at ship: YELLOW, and every reason is in the human-acknowledged set. The extra STALE marker "release validation incomplete: no rehearsal for current source" concerns release validation only.

Full API Changes (for automation & release notes)

Added

  • agents/conductors/eyes/_eyes.py: --instance NAME (repeatable) on survey and review; eyes_root(), read_registry(), is_organ_root(), instance_checkout(), select_instances(), RegistryError; the EyesInstanceSet JSON kind; gallery.tracked_manifest on registry-resolved surveys; instance on each registry-resolved decision
  • board/_board.py: collect_eyes(), _dashboard_counts(), and the surface key eyes
  • board/_theme.py: ORGANS["eyes"], MARKS["eyes"]
  • config/policy.yaml: board.boards.eyes: PyAutoEyes

Changed Behaviour

  • The eyes positional root is optional. Given the PyAutoEyes root, the conductor fans out to every registered instance.
  • Exit code 2 now means an unknown instance or an unreadable registry.
  • _theme.board_links() includes eyes, so every family footer gains the chip.

Generated by the PyAutoLabs agent workflow.

🤖 Generated with Claude Code

https://claude.ai/code/session_01CpGs8DxC5qA1MtHcmHeaBQ

…toEyes registry (PyAutoEyes 2)

- config/policy.yaml boards gains eyes: PyAutoEyes, between memory and
  heart in the canonical organ order.
- board/_theme.py gets ORGANS["eyes"] (a designed iris gold, clear of the
  Hands orange; contrast is 5.7:1 light and 11.6:1 dark) and MARKS["eyes"]
  (an eye in line art).
- board/_board.py gets collect_eyes(). It reads the counts table at the
  head of the PyAutoEyes dashboard.md (instances, figures, behind,
  critiques) and renders an Eyes line beside the Cortex strip. The Cortex
  read is factored into _dashboard_counts().
- The eyes conductor gets --instance <name> (repeatable). It resolves
  through the PyAutoEyes registry.yaml, found at $PYAUTO_EYES, then the
  sibling checkout, then _repo_paths. Handing survey/review the organ root
  covers every registered instance, and --json emits an EyesInstanceSet
  that records the instances it skipped. A resolved survey also checks
  that the registry's tracked manifest is present. The registry is read
  stdlib-only, and the code still names no instance (pinned by a test).
- Prose: agents/conductors/eyes/AGENTS.md and skills/eyes/eyes.md now
  document --instance and the dashboard critique route.

PyAutoMind#451. Follows #428 (PyAutoMind#448).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CpGs8DxC5qA1MtHcmHeaBQ
@Jammy2211
Jammy2211 merged commit 79a8652 into main Sep 28, 2026
2 checks passed
@Jammy2211
Jammy2211 deleted the feature/eyes-board-conductor-registry branch September 28, 2026 21:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant