Skip to content

samplers: scan the autolens findings-lane tiers - #216

Merged
Jammy2211 merged 1 commit into
mainfrom
claude/automind-task-planning-8wk4ag
Aug 10, 2026
Merged

samplers: scan the autolens findings-lane tiers#216
Jammy2211 merged 1 commit into
mainfrom
claude/automind-task-planning-8wk4ag

Conversation

@Jammy2211

@Jammy2211 Jammy2211 commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Closes the gap the samplers faculty already admitted in its own AGENTS.md:

(Surface gap, filed: this faculty's SamplerSurface scan reads only the autofit-side tiers — it does not yet see the autolens experiment/mature tiers above.)

A conductor was told the findings maturation lane exists and then handed a digest that could not say where any search × likelihood combination sat in it.

Prompt: PyAutoMind:draft/feature/pyautobrain/samplers_surface_autolens_tiers.md

What changed

Two read-only, present-if-checked-out surfaces, matching the three that already exist:

  • experiment (autolens_workspace_developer/searches_minimal) — the runnable probes, reusing _py_stems, plus the *_findings.md docs as name — first heading. The heading carries the campaign verdict, which is the reason a conductor consults the tier at all; a heading-less doc degrades to its bare name.
  • mature (autolens_profiling) — the (sampler × dataset_class × model_type) cell matrix.

Resolution follows the existing convention (PYAUTO_LENS_DEVELOPER, PYAUTO_PROFILING); absent checkouts stay reported, never fatal.

The load-bearing detail: declaration, not path

A mature cell's identity is parsed from its leaf's run_search(...) call via ast, not from scripts/<dataset>/searches/<sampler>/<model_type>.py. The two genuinely disagree on the live tree: all six scripts/cluster/searches/*/mge.py leaves declare dataset_class="group" while their siblings declare "cluster".

group is legitimate, not a bug — each of those leaves passes an explicit default_instrument="hst", so the absent _DEFAULT_INSTRUMENTS["group"] key never fires. Path parsing would mislabel six cells and collide them with real ones. A leaf with no parsable declaration falls back to the path shape rather than vanishing.

Scope held

Inventory only, per the prompt — gaps stays keyed on the autofit promotion tiers, so no new judgment logic enters the faculty. Two deliberate exclusions:

  • _MULTI_START_*_BY_CELL is not surfaced. The prompt names it as a way in, but it holds per-cell tuning knobs, not cell identity, and covers only 4 of the 34 cells.
  • No autolens benchmark table. searches_minimal/output/ does carry a comparison.txt that benchmarks() would read verbatim, but d["benchmarks"] is single-valued and re-keying it is a schema break for no asked-for value. Worth a follow-up prompt.

Verification

Against the real trees: 37 probes, 8 findings, 34 cells, gaps unchanged, exit 4 (not a traceback) with no checkouts.

New tests/test_samplers_surface.py is hermetic — temp fixtures, no dependence on which siblings are cloned — and pins the declaration-beats-path rule with a fixture leaf whose declared class disagrees with its directory, so a future refactor cannot quietly regress to path parsing. It takes tier labels from module constants so the file names no repository and stays clear of the tenant firewall.

Two pre-existing failures in tests/test_skill_install.py are unrelated (confirmed on a stashed clean tree — they assert on installer output that differs in a cloud environment).

Companion

The tenant-firewall allowlist entries for these two files grow correspondingly in PyAutoLabs/PyAutoMind#174 — a new instance fact in an allowlisted file is drift, verified by running the check before the edit and seeing it flag exactly these two files.

🤖 Generated with Claude Code

https://claude.ai/code/session_01WSCA1h6cSKMNwFmWEsxuCL

The faculty's AGENTS.md documents a three-tier findings maturation lane, then
admits its own scan cannot see it ("Surface gap, filed"). So a conductor was
told the lane exists but handed a digest that could not say where any
search x likelihood combination sat in it.

SamplerSurface gains two present-if-checked-out surfaces, matching the three
existing ones:

- experiment (autolens_workspace_developer/searches_minimal) — the runnable
  probes, reusing _py_stems, plus the *_findings.md docs as `name — first
  heading`. The heading carries the campaign verdict, which is why a
  conductor consults the tier at all; a heading-less doc degrades to its name.
- mature (autolens_profiling) — the sampler/dataset_class/model_type cell
  matrix.

A mature cell is read from its leaf's `run_search(...)` declaration via ast,
NOT from its path. The two genuinely disagree on the live tree: all six
scripts/cluster/searches/*/mge.py leaves declare dataset_class="group" while
their siblings declare "cluster", and group is legitimate (each passes an
explicit default_instrument, so the absent _DEFAULT_INSTRUMENTS["group"] key
never fires). Path parsing would mislabel six cells and collide them with
real ones. A leaf with no parsable declaration falls back to the path shape
rather than vanishing.

Read-only and inventory-only, per the prompt: `gaps` stays keyed on the
autofit promotion tiers, so no new judgment logic enters the faculty.
_MULTI_START_*_BY_CELL is deliberately not surfaced — it holds per-cell
tuning knobs, not cell identity, and covers only 4 of the 34 cells.

Verified against the real trees: 37 probes, 8 findings, 34 cells, gaps
unchanged. New hermetic tests cover the tiers and pin the
declaration-beats-path rule so a future refactor cannot regress it; they take
tier labels from module constants so the file names no repository and stays
clear of the tenant firewall.

The firewall allowlist entries for these two files grow correspondingly in
PyAutoMind (scripts/repos_sync.py).

Prompt: draft/feature/pyautobrain/samplers_surface_autolens_tiers.md

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WSCA1h6cSKMNwFmWEsxuCL
@Jammy2211
Jammy2211 merged commit 31b810e into main Aug 10, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants