Skip to content

fix(release): green the publish gate set against porting-sdk main - #82

Merged
anthmFS merged 3 commits into
mainfrom
fix/publish-gates-green
Aug 12, 2026
Merged

fix(release): green the publish gate set against porting-sdk main#82
anthmFS merged 3 commits into
mainfrom
fix/publish-gates-green

Conversation

@anthmFS

@anthmFS anthmFS commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Coordinated-With: porting-sdk@fix/oracle-ai-chat-main

Pairs with porting-sdk#137 — merge that one first.

Makes v3.3.0 publishable. Three gates, three causes.

GEN-FRESH — regenerates the generated files to what porting-sdk main's specs
produce. main currently carries wave6-shaped ones (from #81), which reproduce
differently against main and fail the gate.

DOC-AUDITget_stats is a real SearchEngine method, and
signalwire.search. is excluded from the oracle by design ("RAG / vector-search
BACKEND, approved py-only"). Added to DOC_AUDIT_IGNORE.md under the
Search-subsystem section that already names local_search_agent.py. router
resolves once the oracle knows ChatGateway exists (porting-sdk#137).

DOC-SURFACE — documented the public symbols the ai_chat commits added
without docstrings: GatewayRejection.__init__, ChatGateway.__init__ /
close / check_key, AIChatError.__init__, AIChatClient.__init__ /
close, and the ConversationInfo / ChatResponse / ChatLog dataclasses.
Notable bits recorded: check_key uses compare_digest so it can't be walked a
character at a time; ChatLog.messages holds the system prompt and tool traffic
and must not be relayed to a browser; an omitted gateway secret is
per-process, so handles stop verifying across a restart.

Verification

Full run-ci against porting-sdk main: DRIFT, SEMVER-DIFF, GEN-FRESH, DOC-AUDIT,
DOC-SURFACE, LINT, FMT, NO-CHEAT, ROUTE-COLLISION, SPEC-PARITY, REST-COVERAGE
and ~25 others PASS. 5940 tests pass. The 6 mcp_gateway test failures are
pre-existing — verified by stashing this branch and running them on unmodified
main, where they fail identically.

After merge

Delete the pin (gh variable delete PORTING_SDK_REF), then tag v3.3.0 to
match pyproject.toml and push with --tags. The stale local v3.0.3 tag is
wrong twice: it disagrees with pyproject (the publish workflow hard-fails that
check) and points at 20663a6, which predates these fixes.

🤖 Generated with Claude Code

https://claude.ai/code/session_015dYktt85Ltj3oK9gG5VBww

Publishing is gated on the full run-ci, and publish-release.yml checks
porting-sdk out at a hard `ref: main` — deliberately, so a release can never
ship from an unmerged wave branch (porting-sdk/COORDINATED_PASS.md). So the
release path is judged against porting-sdk MAIN, not the wave6 branch that
test.yml is currently pinned to via PORTING_SDK_REF.

This makes that path green.

GEN-FRESH — revert the generated files to what porting-sdk MAIN's specs
produce. My earlier commit regenerated them against the wave6 specs, which
greened test.yml's copy of the gate but broke the release copy. Only one of the
two can be satisfied while the pin is set, and per COORDINATED_PASS.md the
release path is the one that must hold: publish never builds from a wave.
Verified: `--check` clean against porting-sdk main.

DOC-AUDIT — `get_stats` is a real method on SearchEngine
(signalwire/search/search_engine.py), and `signalwire.search.` is excluded from
the oracle by design ("RAG / vector-search BACKEND (approved py-only)"). Added
to DOC_AUDIT_IGNORE.md under the existing Search-subsystem section, which
already names examples/local_search_agent.py. `router` needed nothing — it
resolves once the oracle knows about ChatGateway.

DOC-SURFACE — documented the public symbols the ai_chat commits added without
docstrings: GatewayRejection.__init__, ChatGateway.__init__/close/check_key,
AIChatError.__init__, AIChatClient.__init__/close, and the ConversationInfo /
ChatResponse / ChatLog dataclasses. Real Args/Returns/Raises, including the
things worth knowing: check_key uses compare_digest so it cannot be walked a
character at a time, ChatLog.messages holds the system prompt and tool traffic
and must not be relayed to a browser, and an omitted gateway secret is
per-process so handles stop verifying across a restart.

Pairs with porting-sdk: the oracle regen (ChatGateway is new surface the
committed oracle predates) and a doc_surface.py fix.

Verified against porting-sdk main: DRIFT, SEMVER-DIFF, GEN-FRESH, DOC-AUDIT,
DOC-SURFACE, LINT, FMT, NO-CHEAT and ~30 other gates all PASS. The only local
reds are TYPECHECK and TEST, both environment-only: 16 mypy findings in
mcp_gateway/search that CI does not report (its 8 files are entirely different)
and the 6 mcp_gateway tests that fail identically on unmodified main. 5940
tests pass.
@anthmFS

anthmFS commented Aug 12, 2026

Copy link
Copy Markdown
Contributor Author

Re-running against PORTING_SDK_REF=fix/oracle-ai-chat-main (porting-sdk#137), which carries the matching oracle regen.

@anthmFS
anthmFS merged commit 409ac30 into main Aug 12, 2026
5 checks passed
@anthmFS
anthmFS deleted the fix/publish-gates-green branch August 12, 2026 20:49
hey-august pushed a commit to hey-august/signalwire-python that referenced this pull request Aug 17, 2026
)

Add the native messaging resource `client.messages`, generated from the
porting-sdk `messages` spec (/api/messaging):

- create — send an SMS/MMS message (POST /api/messaging/messages)
- update — redact a previously sent message's body
  (PATCH /api/messaging/messages/{message_id})

This is a BaseResource (create + update only; no list/get/delete), distinct
from the singular message *logs* resource reachable via `client.logs.messages`.

Files (all generated by scripts/generate_python_rest_types.py):
- messages_types_generated.py, messages_resources_generated.py
- _client_tree_generated.py wires `client.messages`
- tests/unit/rest/messages_generated_test.py — 4 wire tests
  (create + update, each success + error) over the shared mock

Version bumped 3.1.0 -> 3.2.0 (new public minor surface) across pyproject.toml,
__init__.py, agent_server.py + CHANGELOG.

Depends on porting-sdk feat/messages-canonical (SPEC_NAMES + spec markup +
regenerated oracle) — coordinated merge.


Claude-Session: https://claude.ai/code/session_01PqshDQajCmDHD3xPo4CXMC

Co-authored-by: Claude Opus 4.8 <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.

1 participant