release: 0.6.0 — seven ranking-ingestion review fixes + the cut - #27
Merged
Conversation
…-16)
Four confirmed findings (2 skeptics each) plus three repro-verified
from the unverified pool, all reproducing on main:
- models.decimal_key_number() (NEW, single-sourced): parses a numeric
answer key only when isascii() and isdigit(), killing the
isdigit()/int() ValueError (e.g. "prio.²") at all three sites —
bridge fold, _resolve_line_key ranking slot, and the field-number
branch.
- markdown_ingestion._rank_entry() (NEW): strips a leading ordinal
ONLY when the strip turns a non-option into an option; "3.12" and
"2) legacy" now ingest exactly, "1. billing" still strips.
- bridge._fold_expanded_answers: folds EVERY decimal slot (0 and
out-of-range included) so the validator names the wrong length
instead of silently dropping ranks; docstring corrected.
- _EXPANDING_TYPES docstring: the elicitation schema carries a ranking
as ONE bounded array; only AskUserQuestion + markdown expand.
- markdown_to_answers: quoted JSON dotted slots no longer override a
TYPED list line (typed_keys tracking preserves typed precedence).
- widget submit gate: blocks any 0<len<slots ranking regardless of
`required` ("Rank every slot or none: ...").
- round-trip simulator: records the ranked <ol> (a suggested order
posts the proposal) and respects the slot cap.
Behavior KEPT: an untouched ranking with `suggested` posts the
proposal — the badge makes it visible, the submit IS the confirmation.
_control_ranking_html docstring rewritten to say so.
Findings: ~/.attune/reports/reviews/ranking-construct-review-2026-08-16.json
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
TestReviewFindings in test_ranking_construct.py — six regressions
verified to FAIL on pre-fix main: exact digit-leading labels ("3.12",
"2) legacy") ingest exactly on both shorthand paths, out-of-range/zero
dotted slots are named by the length check instead of silently
dropped, a Unicode-digit slot suffix never raises a raw ValueError
(collect + both _resolve_line_key branches), quoted JSON slots never
override a TYPED list line, and the widget submit gate blocks a
partial OPTIONAL ranking.
TestReviewFindings in test_widget_roundtrip.py — the simulator now
models the real script: an untouched `suggested` ranking posts the
proposal (submit IS the confirmation, D2-c) and _fill caps at the
slot budget.
611 tests total.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
CHANGELOG: [Unreleased] becomes [0.6.0] — 2026-08-16 (the backlog-constructs release) with an intro paragraph matching the 0.5.0 precedent; the seven ranking-ingestion review fixes added under Fixed; the ranking entry's "an untouched form posts nothing" corrected — with a `suggested` order the proposal renders pre-ranked and submitting untouched posts it (the submit IS the confirmation); ordinal stripping described as option-aware; link refs updated (the missing [0.5.0] compare link added). Version 0.5.0 -> 0.6.0 in pyproject.toml, plugin.json, and marketplace.json (the version-sync guard holds all three to one value). README test count 510+ -> 610+. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The MCP elicitation schema carries a ranking as ONE bounded array property — only AskUserQuestion and markdown shorthand expand to dotted slots. The last uncorrected sentence from review finding #11. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Everything owed before the 0.6.0 tag, in four commits:
fix:the seven ranking-ingestion fixes from the 2026-08-16 five-lens review of the ranking construct's diff (four findings confirmed by two skeptics each, three reproduced from the unverified pool; all reproduce on main):decimal_key_number()(new, single-sourced, ASCII-only) — a Unicode-digit slot suffix (prio.²) can no longer raise a rawValueErrorout ofcollect_form_response/ the MCP collect toolsuggestedposts the proposal)test:all seven pinned —TestReviewFindingsintest_ranking_construct.py+test_widget_roundtrip.py; the six src-side regressions verified to FAIL on pre-fix main. 611 tests.release:the cut —[Unreleased]→[0.6.0] — 2026-08-16, fix entries + the "untouched form posts nothing" correction, missing[0.5.0]compare link added; version 0.6.0 in pyproject + both plugin manifests (drift guard green); README test count refreshed.docs:finding docs: README rewrite for zero-attune-context readers (R4.2) #11's last sentence — the fold docstring's elicitation-schema claim.Review report:
~/.attune/reports/reviews/ranking-construct-review-2026-08-16.json. Finding #7 (bullets vs R4's "numbered option list") chair-ratified as intended — D5 recorded on the spec log via attune-ai PR #2071 (fcfe528d7). Finding #12 (non-canonical numeric spellings) was refuted;decimal_key_number's ASCII guard covers its Arabic-Indic case anyway.Release parameters (chair-ratified 2026-08-16)
Version 0.6.0, date 2026-08-16, the eight
[Unreleased]entries + these fixes are the complete changelog, pypi gate approved, same flow as 0.5.0. After merge: tag from the merge SHA →release-execute→ post-cut order per the D4 ranking receipt (attune-ai parity → Article B → Article A).🤖 Generated with Claude Code