Repository navigation
ci: summarize release notes with a configurable AI API - #313
Merged
zengchuang-hw merged 18 commits intoNov 3, 2026
Merged
Conversation
Keep GPT in a read-only notes job, preserve the GitHub changelog, and fall back to ordinary notes if summary generation or artifact delivery fails. Agent-assisted-by: Codex (implementation) Signed-off-by: zengchuang <zengchuang3@huawei.com>
Generate an optional Markdown overview from a bounded immutable commit range and file statistics. Isolate API credentials from subprocesses, reject redirects and invalid replies, and fall back without stale output when generation is unavailable. Agent-assisted-by: Codex (implementation) Signed-off-by: zengchuang <zengchuang3@huawei.com>
Describe the bounded metadata sent to the API and retain source links without claiming that field selection alone removes all private values. Agent-assisted-by: Codex (implementation) Signed-off-by: zengchuang <zengchuang3@huawei.com>
Conservatively omit metadata fields containing recognizable addresses, personal paths, URLs or credential patterns before constructing the API input. Preserve canonical commit links and source identities, and report that bounded metadata was redacted. Agent-assisted-by: Codex (implementation) Signed-off-by: zengchuang <zengchuang3@huawei.com>
Dong1017
reviewed
Nov 2, 2026
Pass the repository API base URL to the read-only notes helper and align the fallback model with GPT-6.1 Terra. Agent-assisted-by: Codex (implementation) Signed-off-by: zengchuang <zengchuang3@huawei.com>
Allow only the explicitly approved OpenAI and Yibu HTTPS API bases for release overviews. Preserve the requested model override, default to GPT-6.1 Terra, and reject unapproved endpoint variants before constructing an HTTP request. Agent-assisted-by: Codex (implementation) Signed-off-by: zengchuang <zengchuang3@huawei.com>
Send JSON Accept and an explicit InferRSI client user agent for the approved API endpoints. Agent-assisted-by: Codex (implementation) Signed-off-by: zengchuang <zengchuang3@huawei.com>
Agent-assisted-by: Codex Signed-off-by: zengchuang <zengchuang3@huawei.com>
Default release overviews to the official DeepSeek Responses endpoint and documented model name. Disable thinking for DeepSeek requests while preserving explicit model IDs and existing OpenAI/Yibu settings. Keep provider-neutral status messages and all privacy, validation and fallback boundaries. Agent-assisted-by: Codex (implementation) Signed-off-by: zengchuang <zengchuang3@huawei.com>
Agent-assisted-by: Codex Signed-off-by: zengchuang <zengchuang3@huawei.com>
Agent-assisted-by: Codex Signed-off-by: zengchuang <zengchuang3@huawei.com>
Limit release summaries to six concise bullets and 250 words of prose, with one supplied commit link per bullet. Give completed summaries a bounded 3200-token response budget while retaining strict incomplete-response rejection and byte limits. Agent-assisted-by: Codex (implementation) Signed-off-by: zengchuang <zengchuang3@huawei.com>
Agent-assisted-by: Codex Signed-off-by: zengchuang <zengchuang3@huawei.com>
Specify one neutral coverage note whenever commit or file statistics are truncated, and forbid unsupported earlier/later characterizations of omitted history. Preserve the existing source limits, request budget and response validation. Agent-assisted-by: Codex (implementation) Signed-off-by: zengchuang <zengchuang3@huawei.com>
Append a fixed coverage notice from trusted source truncation flags instead of asking the model to infer omitted history. Include that notice and its newlines in the UTF-8 output budget while retaining strict response validation and secret checks. Agent-assisted-by: Codex (implementation) Signed-off-by: zengchuang <zengchuang3@huawei.com>
Agent-assisted-by: Codex Signed-off-by: zengchuang <zengchuang3@huawei.com>
Restrict generated overview Markdown to simple inline links whose exact canonical GitHub commit URLs occur in validated source metadata. Reject images, unsupported link syntax and common raw autolink forms before producing the notes file, preserving the existing fallback and byte-budget behavior. Agent-assisted-by: Codex (implementation) Signed-off-by: zengchuang <zengchuang3@huawei.com>
Detect unsupported colon-without-space URL forms directly instead of rescanning long scheme-like letter runs. Verify a plain ASCII overview at the complete byte limit remains accepted without introducing a timing threshold. Agent-assisted-by: Codex (implementation) Signed-off-by: zengchuang <zengchuang3@huawei.com>
Dong1017
approved these changes
Nov 3, 2026
Dong1017
left a comment
Collaborator
There was a problem hiding this comment.
LGTM for the optional release-overview implementation and link-validation repair at 214f8dc2, assessed for integration with main ebdbf5af.
- The original link/image P2 is cleared, as already confirmed in that resolved thread; this review adds an independent assessment of the full five-file scope.
- The inspected source-to-publication path preserves bounded source collection, credential isolation, approved endpoints/no redirects, atomic text output and a publisher that reads the notes as data. Optional notes failure preserves the ordinary release path.
- Current Ready/declaration checks pass. The inspected 3.11 run reports Ruff success, 3,534 passed, 13 skipped and 284 passing subtests. This is hosted integration evidence, not a new provider call by this reviewer.
- zengchuang-hw retains draft finalization/integration. This software approval does not accept the whole Issue or establish future scheduled AI-stage activation, account import or model/service effects.
Evidence and scope
- Approved head:
214f8dc29e38951b57d8f8e5c55ed1d2ccd27af6; API base:2baebf6ebb815ebf07d21c41e3b3754858c0798e; assessed current main:ebdbf5af00c94f228b504a3f4d813aad0b63840c. - Independently reviewed the five-file optional-notes scope: workflow, helper, documentation and helper/publisher regression definitions. The new validator's source-bound gate is called after completed-response parsing and before writing the artifact. Prompt guidance alone is not relied on as that gate.
- Ready run, inspected 3.11 job, and current declarations.
- The actual tested checkout is synthetic merge
9f44c9e2e85a09ed916f14b3689be356f440b9f6, with main/head parents. Its tree7e868ff271aaa834be82a812ae80d3f904f5f3d3differs from standalone head tree783b9a10644314cc8cf2dc4a573ee391e1a50df5: the complete 206-path integration delta brings in existing main framework/packaging changes and changes none of this PR's five files. I do not label this as an identical-tree standalone-head test. - Main advanced during preflight through hardware-only PR #283. The complete 103-path main delta changes library metadata/projections and no file in this PR or its release-helper/publisher interfaces. Main's tree equals the passing #283 head
012bdcc8524a56c65482e14561469111736ac907. I reuse the earlier Ready evidence for the unchanged release-overview scope; a combined post-main run was not executed here. - The successful live provider preview was at historical helper
b7ee0fa502d73600725d89fcfb862825c2723b14; it is not a current-head live-call result. The new gate is covered by static inspection and hosted software tests; no fresh API request, local suite or workflow run was initiated here. - Independent review only; I did not implement this PR. Approval is bound to this head and assessed integration input. Merge authority and requester acceptance remain separate.
zengchuang-hw
marked this pull request as ready for review
November 3, 2026 06:09
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.
Governing Issue and resulting behavior
Refs #238
After package validation, an optional read-only job calls a configured Responses API to produce a concise English release overview. The original GitHub changelog and PR links remain. Missing credentials, unusable output or provider errors fall back to ordinary notes without blocking an otherwise valid publication.
The requester selected DeepSeek's official API and DeepSeek-V4.1-Flash-1017. Its documented API name is
deepseek-flash; this provider-managed alias may be upgraded and is not a version pin. Publication remainsgithub-actions[bot]creating tags and Releases. AI has no repository write capability.Configuration and implementation
DS_API_KEY, mapped only in the notes step to the helper's internalOPENAI_API_KEYenvironment variable. There is no fallback to the old repository secret. No key value was retrieved, exposed or copied.OPENAI_RELEASE_NOTES_MODEL=deepseek-flash,OPENAI_BASE_URL=https://api.deepseek.com.https://api.deepseek.com,https://api.openai.com/v1andhttps://yibuapi.com/v1. It normalizes trailing slashes and appends/responses. Other destinations and redirects cannot forward the key. Configured model IDs are sent unchanged.reasoning: {effort: "none"}. The payload includesstore: false, which DeepSeek ignores under its documented stateless compatibility; this does not establish zero retention. Billing and data handling depend on the selected provider.--notes-file, retain GitHub's changelog and the fixed source/evidence notice, and never execute generated text.A changed-source dry run calls the selected provider when the key is configured. Ordinary releases work without AI access. Existing public releases are never rewritten.
Verification
Head:
214f8dc29e38951b57d8f8e5c55ed1d2ccd27af6. Source base:977289d290092dcb4251cadb9593950771b6178c; assessed target base:2baebf6ebb815ebf07d21c41e3b3754858c0798e.214f8dc29e38951b57d8f8e5c55ed1d2ccd27af6againstb7ee0fa502d73600725d89fcfb862825c2723b14, including 46 focused source/link/long-text checks, additional reference-link/image cases and an offline replay of the prior real summary. No material blockers remain in the three-file review-fix delta. Endpoint credentials, strict response rejection, coverage/byte caps and publisher behavior are unchanged.b7ee0fa502d73600725d89fcfb862825c2723b14before output-link hardening, the official endpoint,deepseek-flashandDS_API_KEY. The response completed: 13683 input tokens, 745 output tokens, 0 reasoning tokens. The artifact contains the validated summary and credential-free metadata.The earlier HTTP401 run read the old repository secret and did not validate
DS_API_KEY. The corrected binding now authenticates and generates notes successfully.Readiness and Issue completion
The previously missed GitHub P2 is fixed and answered in its original thread. Independent review, 190 focused local checks and final-head hosted CI passed; the addressed review thread is resolved. The earlier provider test remains applicable with the current gate independently validated offline. This PR remains a draft; merging enables the optional stage for future releases. Future scheduled AI-stage activation and requester acceptance remain separate from this preview. Issue #238 stays open.
Provider contracts: model mapping, Responses compatibility.