Skip to content

Release 1.2.0 - #548

Merged
JE-Chen merged 18 commits into
mainfrom
dev
Nov 2, 2026
Merged

JE-Chen merged 18 commits into
mainfrom
dev

Conversation

@JE-Chen

@JE-Chen JE-Chen commented Nov 2, 2026 •

Copy link
Copy Markdown
Member

Ships 1.2.0. pyproject.toml declares 1.2.0, and that version has no tag yet, so scripts/stable_release.py publishes it as written.

Checks on #547: Codacy, SonarCloud, and the headless suite on Windows 3.11 and 3.14, Ubuntu 3.14 and macOS 3.11 all passed. This PR also runs the Quality workflow and the platform smoke jobs, which only run against main.

… broke

Sonar S9073: an assert joining several conditions with 'and' reports
only that the whole expression was false. One assert per condition keeps
the failing check visible in the pytest output.
The generated tables repeated every owner's dotted path once per exported
name, up to 58 times for agent_runtime. The generator now emits one
module-level constant per owner that more than one binding shares and
refers to it, so a moved module is one line in the diff.
Hoisting the setup calls out of the block means it can only pass when the call under test raises.
Hoisting the setup calls out of the block means it can only pass for the call under test.
Hoisting the setup calls out of the block means it can only pass for the call under test.
Hoisting the setup calls out of the block means it can only pass for the call under test.
…tion

The command schema registered each spec with its own append call and
repeated the same placeholder strings across many fields; group each run
of registrations into one extend call and give the shared placeholders a
name, as the schema already does for its other hints. The Japanese
catalogue and two sync examples get the same treatment for their
repeated literals. The built spec list is byte-for-byte unchanged.
Drop exception classes that an except tuple already covers through a
base class (AgentTaskError is a ValueError, AuthorizationError an
OSError, UnicodeError a ValueError), keeping a note of what the base
covers. Name repeated messages and SQL statements, merge nested with
statements, replace nested conditional expressions with helpers, and
split request_json, merge_buckets, the MCP task handler and the file
receiver binding into smaller functions without changing behaviour.

Regexes moved to \d / \w are compiled with re.ASCII so they still accept
only ASCII digits and identifier characters.
Each contract check (attribute definition, alias resolution, optional loader
shape, child collisions, baseline comparison) now lives in its own function,
so every step reads on its own and no function exceeds the cognitive
complexity budget. The generated bindings are byte-identical and --check
still passes.
… modules

Name repeated messages, SQL and literals once; drop exception classes an
except tuple already covers through a base class; unfold nested conditional
expressions and merge directly nested with statements; extract the skill
proposal step from the task loop and the config route bodies from their
registration so both stay within the complexity budget.

Character-class shorthands keep their ASCII-only meaning through re.ASCII,
subset tests use issubset() instead of a negated <=, and every intentionally
empty authorization scope block now says that entering it is the check.
No behaviour changes.
…e-measure the map

The owner constant for utils.secret_ref matched bandit's B105 name test.
The generator now marks such a constant with a justified nosec, since it
binds a module path. architecture_explore.md line counts follow the
Sonar cleanup's changes.
The loginctl reader's pair comprehension traded S7494 for S7500; a plain
partition loop satisfies both. asset_references returned a one-element,
an empty or a sorted tuple; every path now ends in the same sorted return.
Pillow 13.0.0 and dnspython 2.9.0, the releases that fix the advisories
Dependabot reports, need Python 3.11. While 3.10 was supported the package
pinned Pillow 12.3.0 for it and the lock kept dnspython 2.8.0, so those alerts
could not close. requires-python is >=3.11, Pillow is a single 13.0.0, the
dnspython constraint applies everywhere, the CI cells that ran 3.10 for OS
coverage run 3.11, mypy targets 3.11, and the docs give 3.11 as the floor.
Dropping an interpreter is a compatibility change, so the version is 1.2.0.
…-1.1.0

Clear the SonarCloud findings the 1.1.0 release PR reported
# Conflicts:
#	docs/updates/2026-11.md
#	docs/updates/README.md
…-3.10

Require Python 3.11 and release it as 1.2.0
@codacy-production

Copy link
Copy Markdown

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.

The quality run on the 1.2.0 release PR failed twice in a row on Ubuntu 3.14, at the first ready() of test_reader_loss_does_not_block_worker_owned_release_only_ack_cleanup. The reader must answer within 0.25 s. Under coverage and gdb, late in the suite, a whole-heap collection takes longer than that, and the fixed test order puts it in the same place on every run. The fixture now collects first and disables the collector for each test, and always re-enables it. The product deadline is unchanged.
…er-gc-window

Hold the collector off around the presence reader's timed windows
@sonarqubecloud

sonarqubecloud Bot commented Nov 2, 2026

Copy link
Copy Markdown

@JE-Chen
JE-Chen merged commit 371814c into main Nov 2, 2026
42 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