Skip to content

Release v0.1.1 — Codex tool-call count fix, one docs roadmap, pinned lint - #39

Merged
JasonZQH merged 6 commits into
mainfrom
dev
Jul 28, 2026
Merged

Release v0.1.1 — Codex tool-call count fix, one docs roadmap, pinned lint#39
JasonZQH merged 6 commits into
mainfrom
dev

Conversation

@JasonZQH

Copy link
Copy Markdown
Owner

Promotes dev to main for the v0.1.1 cut.

Important

Do not merge until #37 and #38 land on dev — both are green and mergeable, and this PR picks them up automatically as they merge. Merging early ships a README still pinned to @v0.1.0 and leaves the Dependabot grouping off main, where Dependabot actually reads its config.

What ships

Fix — Codex tool-call counts read ~2× high (#26, via #35). One Codex command emits item.started then item.completed for the same call, and the coalesced activity block counted events rather than calls. The adapter now attaches the item.id those lifecycle events share, and the block folds repeats into one call while still taking the terminal event's fuller detail. Claude Code emits one event per call, carries no id, and is unchanged; the durable ledger is untouched, since _ledger_event_payload rebuilds from kind and label only. Event shapes in the tests come from a real codex exec --json run.

Docs — three numbering schemes folded into one (via #35). "Phase 0/1/2/3", "V1.1–V1.6" and "v0.1.x" were all live simultaneously. The pi · Curator · Orca architecture doc is added as the canonical v0.1.x → v0.2.0 roadmap and linked from every page; the three docs carrying the old ladder get a mapping banner. Bodies and the v0.1.0 release note are untouched.

Chore — the lint rule set is pinned (#36). [tool.ruff] declared no select, so "lint clean" meant whatever Ruff's defaults were that week — 0.16.0 widened them and surfaced 84 findings in code nobody had touched. Now pinned to Ruff's classic defaults, verified as a no-op on both 0.15.19 and 0.16.0.

Chore — Dependabot targets dev (#36) and groups monthly (#37). It was opening against the default branch, contrary to CONTRIBUTING, so merged bumps would land on main only while dev's CI kept testing old versions.

Version

pyproject.toml and curator.__version__ both move to 0.1.1, and a new test asserts they agree — they were declared separately with nothing catching drift. Five tests that hardcoded "0.1.0" while actually asserting "reports the package version" now read __version__, so they stop breaking on every bump.

Verification

  • 372 passing locally and on CI across 3.11/3.12, plus the macOS smoke and the state/mock-provider guard.
  • The two new activity-block tests fail on the pre-fix code and pass after — confirmed by stashing the source change.
  • A multi-agent review of fix: Codex tool-call count reads 2x high (#26) + fold docs onto one v0.1.x roadmap #35 across five dimensions (CLAUDE.md adherence, bug scan, git history, prior-PR comments, code-comment invariants) returned no findings.

After merge

  1. git tag -a v0.1.1 -m "Curator v0.1.1" && git push origin v0.1.1 — annotated, per the note in Release supply-chain: publish artifacts + checksums, add Dependabot #29. This fires release-smoke, which builds and clean-installs the wheel and sdist and publishes them with SHA256SUMS.
  2. gh release create v0.1.1 from the CHANGELOG entry.
  3. chore(deps-dev): bump ruff from 0.15.19 to 0.16.0 #33 (Ruff 0.16.0) unblocks once the pin reaches its base; @dependabot rebase will pick it up.

🤖 Generated with Claude Code

JasonZQH and others added 6 commits July 28, 2026 04:07
…0.1.x roadmap (#35)

* fix(tui): count one Codex tool call once, not once per lifecycle event

One Codex command emits `item.started` then `item.completed` for the same
call, and the coalesced activity block counted each event, so `⏺ label ×N`
and its `· N calls` summary read about 2x high. The Codex adapter now
attaches the item id every lifecycle event shares, and the activity block
folds repeats into one call — a repeat still refreshes the detail, since
the terminal event carries the fuller one (e.g. a non-zero exit code).

Claude Code sends one event per call and no id, so it counts as before.
The driver emits the same events as before and `_ledger_event_payload`
keeps only kind and label, so the ledger is unchanged.

Event shapes in the tests are copied from a real `codex exec --json` run
(codex-cli 0.146.0-alpha.3.1).

Closes #26

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* docs: fold the V1.1-V1.6 ladder into one v0.1.x roadmap

Three numbering schemes were live at once — "Phase 0/1/2/3", "V1.1-V1.6",
and "v0.1.x" — so the docs described mutually contradictory roadmaps.

Adds the pi / Curator / Orca architecture doc, which is now the canonical
v0.1.x -> v0.2.0 roadmap, and links it from every page's index. The three
docs that carry the old ladder get a mapping banner (V1.1 -> v0.1.4/5 and
so on); their bodies stay as written, as does the v0.1.0 release note.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* chore(release): bump to 0.1.1 and date the changelog entry

Moves both version declarations together — pyproject.toml and
curator.__version__ — and turns the [Unreleased] heading into
[0.1.1] with its release-tag link.

Five tests hardcoded the literal "0.1.0" while actually asserting that
the CLI, banner, and doctor report *the package version*, so they broke
on every bump for no signal. They now read __version__. What was worth
pinning is the invariant those literals never checked: pyproject and
__version__ must agree, or the wheel's metadata disagrees with what
`curator --version` prints. That is now one test.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* fix(setup): stop naming a specific version in the seat-setup copy

The wizard told users custom roles are "not selectable in v0.1.0". The
limitation is still real, but naming one release made the sentence wrong
the moment the version moved, and wrong again on every release after.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: JasonZQH <JasonZQH@users.noreply.github.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Two config gaps that both showed up while triaging the open Dependabot PRs.

Ruff: [tool.ruff] set only line-length and target-version, so the project
inherited whatever Ruff's defaults were. 0.16.0 widened them and turned 84
findings up in code nobody had touched (PR #33 is red on exactly this).
Pinning select to Ruff's classic defaults makes "lint clean" a decision made
here rather than one made by whichever Ruff version resolved. Verified as a
no-op: `ruff check src tests` passes on both 0.15.19 and 0.16.0 with the pin,
matching what CI enforced before it. Widening the set is separate work.

Dependabot: it opens against the repository's default branch, which is main,
while CONTRIBUTING requires PRs to be based on dev. Merging those bumps put
them on main only, leaving dev's CI to keep testing the old versions.
target-branch fixes that for future runs.

Note: Dependabot reads this file from the default branch, so the change takes
effect once it reaches main. The five PRs already open stay pointed at main.

Co-authored-by: JasonZQH <JasonZQH@users.noreply.github.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
A separate PR per dependency per week is a treadmill for a solo maintainer,
and five simultaneously open bumps is what it produced. One group per
ecosystem on a monthly cadence caps that at two PRs a month.

Grouping matches on patterns alone. Splitting runtime from dev tooling would
need `dependency-type`, which Dependabot documents as supported for pip but
not uv — and a group that matches nothing falls back to one PR per
dependency, which is the sprawl this is removing.

Security advisories are unaffected: those are raised as they land, outside
both this schedule and the grouping.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The install commands pinned @v0.1.0 and the table still called it Current,
which would have shipped a main whose README advertises a version older than
the package it ships. Adds the v0.1.1 row and demotes v0.1.0 to Previous.

The v0.1.0 highlights paragraph stays as written — it describes that
release's features, which v0.1.1 does not change.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
docs(release): point the README at v0.1.1
chore: group Dependabot updates and move them to monthly
@JasonZQH
JasonZQH merged commit be18bba into main Jul 28, 2026
11 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.

1 participant