Skip to content

feat(aperture): route A3–A4 through /ratchet:map before build#9

Merged
TheLucidTech merged 1 commit into
mainfrom
feat/aperture-map-routing
Jul 6, 2026
Merged

feat(aperture): route A3–A4 through /ratchet:map before build#9
TheLucidTech merged 1 commit into
mainfrom
feat/aperture-map-routing

Conversation

@TheLucidTech

Copy link
Copy Markdown
Owner

What

Wires /ratchet:map (PR1) into the aperture dial so /ratchet:ignite routes high-uncertainty work through the fog gate instead of relying on the operator to remember it.

  • Metered sequence now includes map, before build:
    • A3 lock → map → auction → cut → decide → build → attack → patch → compile
    • A4 lock → map → cut → decide (still builds nothing)
  • mapRequired flag on scoreAperture() output — true at A3+, or when a single dimension the summed score under-weights demands it: taste = 2 ("I'll know it when I see it"), or terrain = 2 with any ambiguity. So a high-taste task earns a map even at a low overall score.
  • md.aperture() renders **Pre-build map:** required when the flag is set.

Why the single-dimension override

Pure score bands miss the case where one dimension dominates: taste=2 with everything else 0 sums to 2 → A0, yet "make this feel right, I'll know it when I see it" is exactly when you should show options first. The flag catches that; the band sequence doesn't have to.

Verification

  • npm test → green: cli 49 (incl. new aperture routes high-uncertainty work through /ratchet:map) · evolve 19 · plugin-shape 14.
  • node bin/ratchet doctor → healthy.
  • Failing-first: the render assertion is red until md.aperture() emits the line.
  • Live renders confirmed for A3, A4 (build-free), the A0 taste-override, and a plain A1 (stays quiet).

Scope / safety

  • No schema change; A0–A2 sequences untouched; A4 still produces options, not code.
  • mapRequired is an additive field — no consumer deep-compares the aperture object.
  • Still [Unreleased]; no version bump.

Known residual

At A0/A1 with the single-dimension override, the render shows a low-depth loop and Pre-build map: required — intentional (the flag overrides the loop and says "map first"), documented in skills/ignite/SKILL.md, but it relies on the reader heeding the flag line.

🤖 Generated with Claude Code

https://claude.ai/code/session_016zHEHzbyqKYJZhDpSJfkq5

The aperture dial named the loop depth but not the pre-build fog gate, so
/ratchet:ignite relied on the operator to remember /ratchet:map. Fold it into
the metered sequence: A3 = lock -> map -> auction -> cut -> decide -> build ...,
A4 = lock -> map -> cut -> decide (still builds nothing).

Add a derived mapRequired flag — true at A3+, or when a single dimension the
summed score under-weights demands it (taste=2, or terrain=2 with any
ambiguity) — so a high-taste "know it when I see it" task earns a map even at a
low overall score. md.aperture() renders "Pre-build map: required" and
/ratchet:ignite routes into the map on its own.

Guarded by a new cli.test assertion: sequence routing, the flag, the render
line, the two low-score overrides, and the negative case. npm test green
(cli 49 · evolve 19 · plugin-shape 14); ratchet doctor healthy. No schema
change; A0-A2 sequences untouched; A4 still produces options, not code.

Author-model: claude-opus-4-8[1m]

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@TheLucidTech TheLucidTech merged commit 421e871 into main Jul 6, 2026
6 checks passed
@TheLucidTech TheLucidTech deleted the feat/aperture-map-routing branch July 6, 2026 10:45
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