Skip to content

release: deprecate --principal-from-client-info, and harden the publish gate - #17

Merged
arpanghoshal merged 1 commit into
mainfrom
release-loose-ends
Sep 3, 2026
Merged

arpanghoshal merged 1 commit into
mainfrom
release-loose-ends

Conversation

@arpanghoshal

Copy link
Copy Markdown
Member

The two loose ends, plus one I found while reading the publish workflow before tagging.

--principal-from-client-info is deprecated

It now names its replacement wherever an operator meets it — the startup warning, the --help line, and a CHANGELOG Deprecated section. Removed in 0.3; use --principal-header.

The CHANGELOG states why it exists at all, because the reason expires rather than weakens: a v0.1 policy cannot address the principal (SPEC-v0.1 §3.2 refuses agent_eq and every other reserved name at load), so an unauthenticated principal misattributes evidence and cannot widen an outcome. v0.3's authority model makes the principal an authorization input, at which point a self-reported name cannot be one.

The publish gate was weaker than CI

Found while reading publish.yml before tagging, and worth fixing before an irreversible upload rather than after.

The sdist gate ran pip install ".[dev]", so test_gateway_server.py, test_acs.py, test_elicitation.py and test_otel.py all skipped — on exactly the artifacts about to be published to a version number that can never be reused. It installs .[dev,gateway,otel] now, matching main.

That is the one change here I'd call unrequested, so: it is one line, it strictly increases what is verified before publishing, and I'd rather flag it than have quietly shipped through a gate I knew was thin.

Also

docs/BUILD-PROMPTS-v0.2.md (git-excluded) updated: item 8 is "OpenTelemetry sink + ACS adapter" with T51–T55, and item 0's §9 line no longer says "design note only".

Verification

1269 tests pass, mypy --strict src/, ruff check and ruff format --check clean. No behaviour changed beyond the warning text.

…sh gate

--principal-from-client-info now names its replacement wherever an operator
meets it: the startup warning, the --help line, and a CHANGELOG Deprecated
section. Removed in 0.3; use --principal-header.

It is worth stating why it exists at all, because the reason expires rather
than weakens. A v0.1 policy cannot address the principal — SPEC-v0.1 §3.2
refuses agent_eq and every other reserved name at load — so an unauthenticated
principal misattributes evidence and cannot widen an outcome. v0.3's authority
model makes the principal an authorization input, at which point a
self-reported name cannot be one.

The publish workflow's sdist gate installed only [dev], so the gateway, ACS,
elicitation and OTel modules skipped on exactly the artifacts about to be
uploaded — a weaker check than the one on main, guarding an upload to a version
number that can never be reused. It installs the extras now.
@arpanghoshal
arpanghoshal merged commit 87bc56f into main Sep 3, 2026
3 checks passed
@arpanghoshal
arpanghoshal deleted the release-loose-ends branch September 3, 2026 21:46
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