Commit Graph
5 Commits
Author SHA1 Message Date
Tianyi Cui 605587e79c docs(rfc): classify RFCs by kind via path-encoded subdirectories
Add a second axis to every RFC — its class (feature, bug-fix,
simplification, architecture, process, testing) — encoded in the path
as docs/rfc/{lifecycle}/{class}/file.md. The folder is the label, so
the closed set is enforced by structure rather than a parsed field.

Two new doc-sync gates back it:
- verify-rfc-classification: every RFC sits in a valid class folder and
  the README index lists it under the matching lifecycle→class heading.
- verify-doc-refs: every docs/*.md path cited in a packages|examples TS
  comment resolves — closes a drift class verify-md-links can't see, and
  catches the four comment refs this reorg moved.

The README gains a Classification section explaining the taxonomy and
per-class index sub-sections. A self-referential process RFC records why
the scheme is path-encoded and gated.
2026-06-20 22:29:45 +08:00
Tianyi Cui 27721f9f45 docs(rfc): record real-API e2e CI decision + security model
Adds docs/rfc/implemented/2026-06-19-real-api-e2e-ci.md covering the rationale
for running the real-API e2e suite in a separate secret-consuming workflow, the
fork/Dependabot/secret threat model, the residual exposure of the pull_request
trigger, and what changes when the repo goes public. Indexes it in the RFC
README.

Also adds a SECURITY comment on the pull_request trigger forbidding a switch to
pull_request_target (an untrusted-code-with-secrets leak vector, especially once
public), pointing at the RFC.
2026-06-19 18:42:27 +08:00
Tianyi Cui c4d0e07488 ci(e2e): move nightly schedule to 08:17 China time (00:17 UTC) 2026-06-19 18:29:48 +08:00
Tianyi Cui 759ef04692 ci(e2e): source key from DEEPSEEK_API_KEY_EXTERNAL secret
The repo secret is named DEEPSEEK_API_KEY_EXTERNAL; map it to the
DEEPSEEK_API_KEY env var the e2e suites read (process.env.DEEPSEEK_API_KEY).
2026-06-19 18:23:19 +08:00
Tianyi Cui 9caaa6c95e ci: add real-API e2e workflow against external DeepSeek API
Adds .github/workflows/e2e.yml, which runs `pnpm run test:e2e` against the
external DeepSeek API (https://api.deepseek.com) using a DEEPSEEK_API_KEY repo
secret. ci.yml stays keyless/forkable; this is a separate, secret-consuming
workflow that fills the gap of nothing in CI exercising the with-key suites.

- Triggers: workflow_dispatch + push to main/master + nightly schedule +
  pull_request. A job-level `if:` skips untrusted PRs (forks + Dependabot, both
  keyless), keying the Dependabot test on the PR author (pull_request.user.login)
  not github.actor. A job-level skip reports as success, so this is safe as a
  required check.
- Unconditional preflight hard-fails on a missing secret so the self-skipping
  suite can't report a false green when the key is misconfigured.
- Secret scoped to the preflight + e2e steps only; permissions: contents: read;
  DEEPSEEK_BASE_URL pinned to the external API; single Node 24; timeout 45m;
  cancel-in-progress only for PR runs.

Plan converged with Codex (gpt-5.5:xhigh) over 3 review rounds.
2026-06-19 14:36:21 +08:00