Skip to content

chore: retire the Google Jules lane - #12453

Merged
MarkusNeusinger merged 8 commits into
mainfrom
docs/jules-skill-round3
Oct 29, 2026
Merged

MarkusNeusinger merged 8 commits into
mainfrom
docs/jules-skill-round3

Conversation

@MarkusNeusinger

@MarkusNeusinger MarkusNeusinger commented Oct 29, 2026 •

Copy link
Copy Markdown
Owner

Summary

  • Google Jules lane removed. Google announced on 2026-10-29 that Jules takes no new sessions after 2026-11-11 and shuts down on 2026-12-31. The owner chose to remove the lane now rather than use the last two weeks: in three test rounds Jules paid off only for work a command can verify (three of nine page-split variants kept their page unchanged), and its rules sat in every session's context. This PR started as the round-3 skill update and now retires the lane instead.
    • CLAUDE.md and .github/copilot-instructions.md: the Jules sentences leave the delegation rule and the external-writes rule (merge exception, Jules CI wording). The Dependabot CI sentence stays.
    • .claude/guardrails.md: the Jules lane row, the "why allowed", merge-rule, and Pro-versus-Flash sections become one retired-lane record. The CI-split sections stay, in past tense where they describe the lane.
    • Deleted: the jules-task skill with watch-sessions.py, .mcp.json (it held only the Jules server), and the .jules/ ignore line.
    • zweitmeinung: the /jules-task review case is gone.
  • What outlasts the lane moves into gemini-task, where behaviour-preserving refactors go: section 3, step 3 now says how to prove that a refactor left behaviour unchanged (a jsdom snapshot with the existing test's mocks, including loading and error states; a browser comparison built against the production API; a diff of canvas callbacks; stopping preview servers by PID).
  • Not in this PR, on purpose: the CI conditions naming google-labs-jules[bot] (ci-tests.yml, ci-image.yml) and the docs that describe them. Until 2026-11-11 a Jules session can still wake up, for example when its PR is closed, and push, so the guard stays. A follow-up after 2026-11-11 removes them (Todoist); ci-image.yml is coordinated with the agent-network session.

Plan

N/A

Test plan

  • tests/unit/test_agent_instructions.py: 36 passed (the two Jules anchors removed)
  • ruff check and ruff format --check on the test file
  • uv run python -m tools.changelog check --base origin/main
  • grep -rni jules over CLAUDE.md, .github/copilot-instructions.md, .claude/skills, agentic/docs/project-guide.md, .gitignore: only the DebugPage evidence in gemini-task and the current CI description remain
  • agentic/workflows/modules/agent.py reads .mcp.json only when it exists
  • No Gemini Flash check: the diff deletes files and changes only instruction files, docs, and two test anchors

🤖 Generated with Claude Code

MarkusNeusinger and others added 3 commits October 29, 2026 15:26
Three test rounds (2026-10-27 to 10-29): watcher events dominated Claude's
cost, sessions asked despite interactive=false, and behaviour-preserving
refactors mostly failed. The skill now limits Jules to mechanically verifiable
work, watches with --changes-only/--allow, forbids confirmation questions and
string-sliced edits in prompts, budgets stuck sessions, adds a REST fallback
for messages, and records how to prove unchanged UI behaviour.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…fixed

Gemini Flash pre-PR check: a GitHub hiccup could end the watch before the PR
was checked, single-dash flags were taken as session IDs, the skill's grep
dropped the PR lines, the REST fallback used an unset $D, and stopping a
preview server by port lacked the kill.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Copilot AI lite review requested due to automatic review settings October 29, 2026 17:08
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Active critical and moderate findings remain in the watcher’s error-status handling, option parsing, and synchronized routing documentation, so the change is not ready for approval.

3 open issues
What changed in this PR

This PR narrows Jules assignments to mechanically verifiable work, routes larger behavior-preserving refactors to Gemini, and reduces monitoring overhead through watcher, prompt, fallback, and verification updates.

Changes:

  • Updates Jules/Gemini routing guidance, guardrails, and operational documentation.
  • Adds quieter session monitoring, path allowlists, stricter argument handling, and PR validation.
  • Documents branch conventions, fallback messaging, and unchanged-behavior verification procedures.
  • Final review findings remain unresolved: credential exposure in the REST fallback (moderate, 1 vote), lost watcher exit status (critical, 2 votes), option-value parsing accepting unknown flags (moderate, 3 votes), and an outdated synchronized routing guide (moderate, 2 votes).
File Description
CLAUDE.md Updates agent-selection guidance to restrict Jules to mechanically verifiable work.
changelog.d/​jules-skill-round3.md Documents the Jules lane, watcher updates, and verification results.
.claude/​skills/​jules-task/​SKILL.md Defines Jules task boundaries, monitoring, prompts, fallback handling, and review procedures.
.claude/​skills/​jules-task/​scripts/​watch-sessions.py Adds quiet monitoring, path allowlists, argument parsing, and PR validation.
.claude/​skills/​gemini-task/​SKILL.md Routes larger behavior-preserving refactors to Gemini.
.claude/​guardrails.md Aligns delegation rationale and cost guidance with the revised Jules/Gemini boundaries.

Review effort: Lite

Comment thread .claude/skills/jules-task/SKILL.md Resolved
Comment thread CLAUDE.md Resolved
@codecov

codecov Bot commented Oct 29, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

MarkusNeusinger and others added 4 commits October 29, 2026 18:24
… code behind grep

Copilot review of #12453.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Google announced on 2026-10-29 that Jules takes no new sessions after
2026-11-11 and shuts down on 2026-12-31. The owner chose to remove the
lane now instead of using the last two weeks: Jules paid off only for
mechanically verifiable work, and its rules cost every session context.

- Remove the Jules lane from CLAUDE.md, copilot-instructions and the
  guardrails (a short retired-lane record stays there), the jules-task
  skill with its watcher, and the Jules MCP server in .mcp.json.
- Move the behaviour-proof checks for refactors (jsdom snapshot with the
  existing test's mocks, browser comparison against the production API,
  canvas callbacks, loading and error states) into gemini-task.
- Keep the CI conditions for Jules and Dependabot PRs until Jules stops
  taking sessions, since closing a Jules PR wakes its session.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@MarkusNeusinger MarkusNeusinger changed the title docs(jules): narrow the lane to verifiable work and cut Claude's share chore: retire the Google Jules lane Oct 29, 2026
@MarkusNeusinger
MarkusNeusinger merged commit 0bf9468 into main Oct 29, 2026
16 checks passed
@MarkusNeusinger
MarkusNeusinger deleted the docs/jules-skill-round3 branch October 29, 2026 21:15
MarkusNeusinger added a commit that referenced this pull request Oct 29, 2026
## Summary

- **DebugPage and MapPage split into sections, with no change in
behaviour.** `DebugPage.tsx` goes from 1,853 to 541 lines; its KPI grid,
charts, tables, and feedback blocks move into `app/src/sections/debug/`.
`MapPage.tsx` goes from 1,291 to 265 lines; selection, search, and
resize logic move into hooks with tests (`useMapSelection`,
`useMapSearch`, `useMapResize`), and the canvas, legend, hover panel,
search pill, and weights panel into `app/src/sections/map/`. Refs #9631:
PalettePage and the SpecTabs tag-chip dedup stay open.
- **Provenance.** The splits came from a best-of-3 Google Jules round on
2026-10-29: for each page three sessions tried a different cut, and the
variant that kept the page unchanged was merged into
`feature/split-pages` (DebugPage #12446, MapPage #12450). Of the other
variants, one changed visible text, one broke an aria label, one touched
a shared hook against the brief, and PalettePage got no usable variant.
Jules has since been retired (#12453).
- **Fixes on top, found by the Gemini 3.8 Flash pre-PR check** (all
verified against `main` before fixing):
  - MapPage had lost its loading spinner while the specs fetch.
- `useMapSelection`'s unmount cleanup read the hover timer at mount, so
it never cleared a pending timer. The debounced hover handler now lives
in the hook next to the timer it owns.
- `MapWeights` drew an invented solid separator instead of the dashed
top border of the threshold row.
- `countImpls` and five API types were duplicated between the page and
the sections.
- The split typed props as `any` behind twelve new `eslint-disable`
comments; they now use the existing graph types, and the map has two
disables, as on `main`.

## Plan

N/A

## Test plan

- [x] `yarn lint` (no warnings), `yarn fm:check`, `yarn type-check`,
`yarn test` (113 files, 1,197 tests), `yarn build`
- [x] Browser comparison against `main`, both built with
`VITE_API_URL=https://api.anyplot.ai`: `/map` (706 elements), `/palette`
(707), and `/debug` (locked view) have identical text and tag sequences
- [x] DebugPage jsdom snapshot with the existing test's mocks against
the pre-split base: identical apart from the measured mock ping (5 ms
and 8 ms)
- [x] ForceGraph2D paint callbacks: moved bodies diffed against the
original (round 3)
- [x] Gemini 3.8 Flash pre-PR check: five findings, all fixed in
e8342c3
- [ ] `/map` and `/debug` on the deployed site after the merge

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
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