Commit Graph

328 Commits

Author SHA1 Message Date
Tianyi Cui
4aa7c9d0e1 Merge origin/master into worktree/explicit-change-scope-report-20260727 2026-07-27 20:00:24 +08:00
Tianyi Cui
61703d224b feat(dev-infra): add explicit change scope report 2026-07-27 19:53:50 +08:00
Tianyi Cui
dd03c88083 Merge commit 'refs/codex-unblock/20260727/pr660-master' into worktree/pr660-merge-20260727
# Conflicts:
#	scripts/doc-budgets.manifest.json
2026-07-27 19:34:55 +08:00
Tianyi Cui
4cd6d5b762 Merge remote-tracking branch 'origin/master' into worktree/pr744-macos-wine-fix
# Conflicts:
#	.github/workflows/ci.yml
2026-07-27 18:59:56 +08:00
Turtle
5d2329e207 feat(skills): bundle and harden personal maintenance workflows 2026-07-27 18:53:30 +08:00
Tianyi Cui
62b5bd2fee Merge origin/wine-local-gate into macOS Wine fix 2026-07-27 18:43:19 +08:00
Tianyi Cui
7b9eceff53 fix(ci): make local Wine gate portable on macOS 2026-07-27 18:43:00 +08:00
Tianyi Cui
1665ab9884 ci: preserve stores across pnpm action setup
Keep restore-only and self-hosted stores outside pnpm/action-setup's replaceable install directory, resolving the configured path for every paired cache. Pin Yarn 4 for the generated-project e2e so runner images without Corepack do not fall back to Yarn Classic, and update the bilingual decision record.
2026-07-27 18:39:20 +08:00
Tianyi Cui
2421179702 Merge origin/master into worktree/pr675-retarget-20260727 2026-07-27 18:22:22 +08:00
Tianyi Cui
4e32f838b3 Merge branch 'master' into wine-local-gate 2026-07-27 18:00:55 +08:00
Tianyi Cui
1ee8029bc6 Merge remote-tracking branch 'origin/master' into worktree-process-service-seam 2026-07-27 17:24:20 +08:00
Tianyi Cui
8be70e72d2 docs: scope the local Wine gate to Windows-failure diagnosis only
AGENTS.md and the Wine Agent Note pair state the run policy: CI owns the
everyday win32 signal; run check:windows-wine only while investigating a
known Windows-related failure, and pre-push selection never includes it.
2026-07-27 17:15:37 +08:00
Tianyi Cui
f12ea986cb ci: share one Wine Windows gate script between CI and an optional local gate
scripts/wine-windows-gates.sh owns the whole lane — workspace snapshot,
concurrent Node/wineboot/install provisioning, entrypoint resolution, the
vue link, smoke, and the two concurrent blocking gates — so the ci.yml
windows job shrinks to runner provisioning plus one script call, and
pnpm run check:windows-wine runs the identical script locally. The local
path never mutates the working tree, persists the Wine prefix and the
checksum-verified Windows Node zip under .cache/wine-windows/, and falls
back to the cached zip offline. AGENTS.md ceiling 1680 -> 1695 for the
one-line command entry.
2026-07-27 17:04:05 +08:00
Chinesezjc
7b49f4a4ee docs(ci): runbook — glob migrated identity files; scope the promise to enterprise-pool outages
- The clone exclusion is now '.runner*' (catches .runner_migrated /
  .credentials_migrated, which GitHub writes on migrated runners and
  which equally trip the already-configured refusal — hit live during
  the 2026-07-27 org-group migration).
- The problem statement now states the verdict runs on ubuntu-latest,
  scopes the switch to enterprise Linux-pool outages, and names the
  residual dependency: node-compat/python-sdk/windows stay standard-
  hosted, so a broader hosted-capacity failure still blocks the
  verdict, with Windows the only leg lacking any in-house substitute.
Static gate green locally: 32 passed, 0 failed.
2026-07-27 16:56:02 +08:00
Chinesezjc
2bacd4814e Merge master; re-record serial-reference pairing over the merged pair 2026-07-27 16:48:01 +08:00
Tianyi Cui
7bdb90aebb Merge remote-tracking branch 'origin/master' into worktree-process-service-seam 2026-07-27 16:44:38 +08:00
Chinesezjc
3cf2853b3f docs(ci): bootstrap procedure starts the listener service
config.sh only registers; the runner stays offline until svc.sh
install/start. Both language sides updated so emergency capacity
actually comes online.
2026-07-27 16:22:30 +08:00
Chinesezjc
ce3b13bb08 ci: standby fetches full history; runbook — writer wording throughout, master-ref pinning incompatibility
- serial-linux-selfhosted checks out fetch-depth 0: depth 2 misses
  github.event.before on multi-commit or force pushes, failing the
  archive verifier on a valid tree. Full fetch is cheap against the
  VM's local mirror.
- Runbook (both languages): every remaining admin phrasing (problem
  statement, switch heading, alternatives, consequences) now says
  writer; and the 'composes with this mechanism' claim about a
  master-ref-pinned runner group is replaced with the truth observed
  live on 2026-07-27 — master-ref pinning blocks PR failover, and the
  shipped posture is repository-scoped all-workflow group access.
Static gate green locally: 32 passed, 0 failed.
2026-07-27 16:13:45 +08:00
Chinesezjc
24d7211f09 docs(ci): stop claiming no PR-editable path reaches the standby pool
The standby lane itself is push-only, but under failover pull_request
jobs do reach these runners with the PR merge ref's workflow. The
workflow comment and the larger-runner note (both languages) now state
that plainly and name the actual boundary — repository membership
(private, forking disabled, Dependabot excluded) — matching the
runbook. Static gate green locally: 32 passed, 0 failed.
2026-07-27 16:02:56 +08:00
Chinesezjc
e2eca69e9c docs(ci): writer-level trust boundary stated everywhere; serial note counts four references
- Sweep every remaining 'admin-only' claim (workflow comments, runbook
  lines 13/40, topology note, all zh pairs): the variable is
  writer-manageable, and the boundary against untrusted code is
  repository membership (private, forking disabled, Dependabot
  excluded) — stated identically at every site instead of only in the
  'who can flip' paragraph.
- Serial cross-platform reference note (both languages): master now
  runs four references — the three hosted OS legs plus the self-hosted
  standby drill, linked to the failover runbook.
Static gate green locally: 32 passed, 0 failed.
2026-07-27 15:54:59 +08:00
Chinesezjc
d606ab6877 ci: standby archive base ref; runbook — dependabot exception, clean bootstrap, variable trust model
- serial-linux-selfhosted now fetches depth 2 and passes
  DSH_ARCHIVE_BASE_REF=github.event.before, running the same
  frozen-archive comparison as serial-linux instead of diffing the
  new manifest against itself.
- Runbook (both languages): documents the deliberate dependabot
  exception (queued-on-hosted during failover is expected, not a
  failed switch); corrects the emergency-capacity bootstrap to
  exclude .runner/.credentials when cloning a runner directory; and
  replaces the 'admin-only' variable claim with the accurate
  trust-model statement — repository variables are writer-manageable,
  which in this private fork-disabled repo with an all-workflows
  runner group is routing among members, not an escalation.
Static gate green locally: 32 passed, 0 failed.
2026-07-27 15:47:19 +08:00
Chinesezjc
caabf8f671 ci: dependabot stays hosted under failover; runbook matches shipped bounds
- All four failover selectors (three workers + the verdict job) and the
  paired env/cache expressions now exclude dependabot[bot]: under
  failover, dependency-supplied code keeps queueing for the hosted pool
  instead of executing on the persistent VM. A delayed Dependabot PR
  during an outage is an acceptable cost; dependency code on the
  privileged host is not.
- Runbook (both languages): records the shipped failover bounds
  (coverage 8, snapshots 12, sized for six instances) and documents
  that the verdict job follows the selector too — operators previously
  had no explanation for a verdict queued after all workers passed.
- Local static gate green: 32 passed, 0 failed (translation pairing
  519 pairs consistent).
2026-07-27 15:36:11 +08:00
Chinesezjc
aedf7fbf34 docs(i18n): keep the runbook link target identical across the pair
The pairing gate requires link target #9 to be byte-identical between
the language sides; my earlier 'fix' pointed the zh side at the zh
runbook and broke the contract. Reverted to the shared target and
re-recorded the pairing hash.
2026-07-27 15:27:40 +08:00
Tianyi Cui
cff614d37d ci: run the pull-request Windows blocking gates under Wine on hosted Linux
The required windows job moves from windows-2025 to ubuntu-latest, running
checksum-verified Windows Node under Wine at Linux-job wall clock (2m46s
warm vs 7-9min); master's serial-windows native-kernel reference is
untouched, and a new master-only wine-apt-cache job seeds the apt cache
every pull request restores. The experiment workflow folds into ci.yml,
the Agent Note moves to implemented with measured results, and the two CI
topology notes update to the shipped facts.
2026-07-27 13:17:12 +08:00
Tianyi Cui
b2dac8854d Merge remote-tracking branch 'origin/nih-imp-ci-cache' into nih-imp-ci-cache 2026-07-27 13:15:38 +08:00
Tianyi Cui
073c698c72 ci: finish the corepack sweep — pnpm/action-setup everywhere
Review follow-up on the symmetric-cache conversion: provisioning and
caching are separable concerns, so the remaining 8 corepack enable
sites (the three enterprise restore-only PR jobs, the required Windows
job, serial-macos/serial-windows, the cache-less ci.yml jobs, and
sandbox.yml) now provision pnpm via pnpm/action-setup@v4 too — only
the provisioning line moves; every deliberate cache shape (enterprise
restore-only pairing, serial-linux producer, Windows cache-less) is
byte-preserved. corepack is gone from CI entirely.

Agent Note retitled to the decision's real shape (provisioning policy,
with caching as per-job policy on top), EN+ZH, pair re-recorded;
composite-action and stop-at-cache-workflows alternatives recorded.
2026-07-27 13:15:09 +08:00
Chinesezjc
5fa74343aa docs(ci): six always-on instances, no pre-registered spares
The spare tier is retired. Steady-state pool load is one serial standby
job per master push, so six always-on instances already are the
failover capacity; pre-registered offline runners are a silently
expiring guarantee (GitHub garbage-collects them after 30 days
offline). Incident-time extra capacity is a one-minute org-token
registration, now documented in the runbook.
2026-07-27 12:54:35 +08:00
Tianyi Cui
38a05724f4 Merge remote-tracking branch 'origin/master' into worktree-process-service-seam
# Conflicts:
#	apps/cli/package.json
2026-07-27 11:36:03 +08:00
Tianyi Cui
30673b09f4 Merge branch 'master' into nih-imp-ci-cache 2026-07-27 11:33:55 +08:00
Chinesezjc
fbd50aeb74 Merge remote-tracking branch 'origin/master' into ci/offload-coverage-to-vm-backup 2026-07-27 10:43:18 +08:00
Tianyi Cui
e423bfbee6 Merge remote-tracking branch 'origin/master' into worktree-i18n-update-workflow
# Conflicts:
#	.agents/notes/implemented/process/2026-07-02-bilingual-docs-and-pairing-gate.i18n.yaml
#	.agents/skills/dsh-translate-docs/SKILL.md
#	docs/i18n/README.i18n.yaml
2026-07-27 09:39:54 +08:00
Tianyi Cui
581bf9cb53 Merge remote-tracking branch 'origin/master' into nih-imp-ci-cache 2026-07-27 06:09:26 +08:00
Tianyi Cui
736c8bf6de Merge remote-tracking branch 'origin/master' into worktree-nih-dependency-audit 2026-07-27 04:59:50 +08:00
Tianyi Cui
3fe60837c1 docs(i18n): record the v1-vs-v2 briefing A/B in the Agent Note
Head-to-head replay of the same ten historical examples, both arms in
one time window with identical prompts and pairwise blind judging:
prose quality and cost at parity (stylistic margins only); the shipped
briefing wins two objective outcomes — code-fence-only examples land
byte-identical to the human-reviewed updates with zero model tokens,
and the flagged first-occurrence move reproduces the human-reviewed
gloss relocation the section-only form leaves as a contract violation.
Chinese counterpart brought along via the briefed path and the pair
re-recorded.
2026-07-27 03:35:50 +08:00
Tianyi Cui
3b328b375e ci: restore standard Windows allocation 2026-07-27 02:31:46 +08:00
Tianyi Cui
53283003e9 feat(i18n): unit-mapped briefings with mechanical --apply, adopting the #684 planner mechanics
The briefing now maps each update at the narrowest safely aligned
granularity, widening deterministically on mapping failure: a change
confined to the pair's byte-identical code fences is computed outright
(--apply splices it into the counterpart and validates the result
against the pairing gate's structural signature before writing);
otherwise changed Markdown units — headings, paragraphs, table rows,
list items, fences, block quotes, HTML blocks, thematic breaks, link
definitions, matched by container-scoped kind sequences — each carry
their last-confirmed source, current source, and current counterpart
text; units that do not align fall back to depth-matched heading
sections (depth only, so translated heading text still maps); and when
sections do not align either, or both sides drifted, the briefing says
so and withholds the mapping. Terminology rows now match the changed
spans only, English terms on word boundaries with plural inflections,
and Chinese-target briefings track each relevant term's document-wide
first occurrence — a moved occurrence pulls the vacated and receiving
spans into the briefing with an explanatory note.

The unit mapping, mechanical code splice, and first-occurrence tracking
adopt the planner design from the incremental prompt-pipeline PR (#684),
whose provider-backed bake-off independently validated the same scope
ladder; this PR carries those mechanics into the agent-facing briefing
path so both consumers of the consistency records behave alike. The
prior line-hunk section mapping and its heading-text alignment (which
could not map cross-language sections) are replaced wholesale.

Docs: SKILL.md update path, i18n README pair, development.md pair, and
the briefed-updates Agent Note pair brought along; the development.md
fence edit was applied with --apply itself, and the prose updates were
made through the new unit/section briefings.
2026-07-27 02:31:07 +08:00
Tianyi Cui
8b684fa5d0 ci: fetch archive baseline history 2026-07-27 02:01:46 +08:00
Tianyi Cui
9f1d5e3fe5 Merge branch 'master' into worktree-process-service-seam 2026-07-27 01:47:49 +08:00
Tianyi Cui
3b8600e2e8 ci: keep required aggregate on enterprise runner 2026-07-27 01:25:01 +08:00
Tianyi Cui
51bf3ca96e Merge remote-tracking branch 'origin/master' into worktree/archive-agent-notes-20260726
# Conflicts:
#	.agents/notes/archived/process/2026-07-23-browser-demo-gif-recording.i18n.yaml
2026-07-27 00:53:07 +08:00
Tianyi Cui
394b3f804c Merge remote-tracking branch 'origin/master' into worktree-nih-dependency-audit 2026-07-27 00:46:06 +08:00
Tianyi Cui
3841c4ee58 docs(i18n): briefed update path in the workflow, contract, and Agent Note
The dsh-translate-docs skill now triages updates onto a briefing-driven
path — gen-translation-brief output as the translator's whole working
set, orchestrator-applied mechanical fence edits, scoped record/check —
while the whole-document path for new pairs is unchanged. The i18n
README documents the scoped gate forms and the briefing tool;
development.md lists the new command; the new bilingual Agent Note
records the decision and the ten-example benchmark behind it (briefed
path ~1/3 the tokens and wall clock of the corpus-loading path at equal
judged quality; whole-document re-translation rejected on preservation
collapse). Counterpart updates in this commit were produced with the
new briefed path; the new note's Chinese side is a whole-document
translation.
2026-07-27 00:44:22 +08:00
Tianyi Cui
d14f3371ae Merge remote-tracking branch 'origin/master' into worktree-nih-dependency-audit 2026-07-27 00:40:02 +08:00
Tianyi Cui
420e0b5fb7 Merge remote-tracking branch 'origin/master' into worktree/fix-pty-sigint-flake 2026-07-27 00:35:06 +08:00
Tianyi Cui
23e82fdfb0 docs(process): add the subprocess area to the PR label taxonomy
The new capability family is a recurring repository domain; the area list
grows to 46 (en+zh, pair re-recorded) and the GitHub label exists.
2026-07-27 00:34:41 +08:00
Tianyi Cui
25a7c6e207 Merge branch 'master' into code-mode-ui/dispatch-spill 2026-07-27 00:05:29 +08:00
Tianyi Cui
d2b15e71df Merge pull request #662 from deepseek-harness/code-mode-ui/shiki
feat(web): shiki syntax highlighting for code surfaces
2026-07-27 00:00:23 +08:00
Tianyi Cui
e0e187a6a7 test(pty): avoid echoed readiness marker race 2026-07-26 23:52:12 +08:00
Tianyi Cui
8ceb638bb5 docs(skills): record-browser-gif — assets-branch publishing + mandatory GUI-PR gifs
Every PR that changes product-user-visible GUI behavior now includes a
demonstration GIF with real provenance (that branch's built tree, real
key, real model rounds). Recording stays side-effect-free; the skill
gains a bounded final publication step: GIFs go on an append-only
orphan assets branch (one per PR series) and embed via the blob URL
with ?raw=true, never on the PR branch itself.

Folds in the operational lessons from the Code Mode UI series:
.playwright-mcp/ screenshot roots (now gitignored), per-PR staging and
precise server teardown, one-call DOM polling for transient states,
exact-text completion predicates, prompt engineering for UI states,
and the export-before-invoke GIF_SKILL_DIR encoder pitfall.

Agent Note: implemented/process/2026-07-26-gui-pr-gif-evidence-and-assets-branch (+ zh pair); the 2026-07-23 recording note now defers publication policy to it.
2026-07-26 23:21:44 +08:00
Tianyi Cui
37140bf823 docs(notes): archive low-value decision records 2026-07-26 23:06:00 +08:00