Commit Graph

5683 Commits

Author SHA1 Message Date
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
bf87be0d7d feat(i18n): briefing generator and pair-scoped pairing gate
gen-translation-brief assembles the minimal-update working set for an
out-of-sync pair from its consistency record: the authored side's diff
since last confirmation, the counterpart sections that diff lands in
(heading-mapped only where the last-confirmed structures align), the
terminology rows the diff touches, and a per-direction rules digest.

verify-translation-pairing now accepts pair paths to check just the
named pairs during update iteration; --write requires naming the
confirmed pairs (--write --all is the explicit corpus form) so a bulk
re-record can no longer silently bless drifted pairs the caller never
reviewed. Each record's comment names its own scoped command.
2026-07-27 00:44:21 +08:00
Tianyi Cui
fc33543285 Merge pull request #681 from deepseek-harness/worktree/fix-pty-sigint-flake
test(pty): avoid shell-echo readiness race
2026-07-27 00:41:29 +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
e2b21df62d Merge branch 'nih-dependency-audit' into nih-imp-execa 2026-07-27 00:38:55 +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
72fa31b745 Merge remote-tracking branch 'origin/master' into worktree/packed-chunks-default-rfc 2026-07-27 00:29:58 +08:00
Tianyi Cui
8cb908b9e8 Merge pull request #661 from deepseek-harness/code-mode-ui/dispatch-spill
feat(web): Code Mode UI completion — bounded sub-dispatch logs, shiki highlighting, trajectory/waterfall sub-calls
2026-07-27 00:28:23 +08:00
Tianyi Cui
1fc289c8bb Merge branch 'worktree-subprocess-consumers' into worktree-process-service-seam 2026-07-27 00:22:29 +08:00
Tianyi Cui
ea58a5660b Merge remote-tracking branch 'origin/master' into worktree-process-service-seam 2026-07-27 00:22:15 +08:00
Tianyi Cui
45a5175e44 feat(tool-web): replace the regex HTML-to-markdown converter with turndown
Implements the turndown Agent Note from the NIH dependency audit (full
variant, not the minimal entities-only fallback): dsh-tool-web's fetch
rendering now converts HTML through turndown + @joplin/turndown-plugin-gfm
(atx headings, fenced code, dash bullets, GFM tables/strikethrough) over
the real domino DOM, with script/style/noscript removed wholesale. The
hand-rolled ~86-line regex converter html.ts and its entity tables are
deleted; renderBody wraps the conversion in try/catch falling back to
the raw HTML body, because turndown's recursive DOM walk overflows with
a RangeError on pathological nesting (measured: 4k levels on the main
thread, 8k in a worker) where the regex version could never throw.

Closure weight, measured: tool-web IS in the single-exe runtime closure,
and the exe asset globs would pack ~7.9 MB of the three new packages —
but ~6 MB of that is domino's test corpus, with runtime lib/ at ~550 KB
against a ~174 MB artifact (<0.5% either way), so the swap wins.

Per testing policy the previously-missing keyless web_fetch snapshot
ships in the same change: the acp-agent `web-fetch` scenario boots a new
web.cordis.yml overlay (web seam + real dsh-web-fetch-local provider +
tool-web fetch-only + a loopback HTTP fixture server on a fixed port
serving deterministic HTML with entities, a GFM table, and nesting), so
recording and keyless replay both drive the real HTTP fetch and real
conversion end to end; the scenario pins the new `web` header class.

The Agent Note moves proposed -> implemented and is rewritten per the
lifecycle contract (Decision/Consequences/Testing, closure verdict and
alternatives recorded); tool-web and acp-agent READMEs updated in both
languages and pairs re-recorded.
2026-07-27 00:22:13 +08:00
Tianyi Cui
d3a4f4af1b fix(tests): lsp specs ride the seam scrub; acp e2e mounts the subprocess service
CI now exports DSH_GATE_CONCURRENCY into every job, and the lsp suites
spread the raw parent env into the spawn spec's ordinary channel — which
the seam rightly rejects for DSH_* names. The specs now build their child
env the way production does (scrubbedParentEnv() + explicit extras).
The acp with-key e2e never mounted dsh-subprocess-local, leaving the
provider's inject unsatisfied, so no 'acp' provider ever registered.
2026-07-27 00:18:03 +08:00
Tianyi Cui
25a7c6e207 Merge branch 'master' into code-mode-ui/dispatch-spill 2026-07-27 00:05:29 +08:00
Tianyi Cui
46e70be34a Merge pull request #678 from deepseek-harness/skills/record-browser-gif-assets-workflow
docs(skills): record-browser-gif — assets-branch publishing + mandatory GUI-PR gifs
2026-07-27 00:02:55 +08:00
Tianyi Cui
d52f8bfdfe fix(notes): anchor archive seals to prior Git state 2026-07-27 00:01:39 +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
212abfc2e4 Merge pull request #664 from deepseek-harness/code-mode-ui/trajectory-spans
feat(web): Code Mode sub-calls in the trajectory and waterfall views
2026-07-27 00:00:08 +08:00
Tianyi Cui
48400c436b Merge branch 'master' into code-mode-ui/dispatch-spill 2026-07-26 23:58:31 +08:00
Tianyi Cui
e0e187a6a7 test(pty): avoid echoed readiness marker race 2026-07-26 23:52:12 +08:00
Tianyi Cui
0561647ed5 Merge pull request #680 from deepseek-harness/worktree/archive-pr639-agent-notes-20260726
Restore Agent Notes deleted by #639 to the archive
2026-07-26 23:51:59 +08:00
Tianyi Cui
9e04034862 fix(scripts): keep fixture discovery private 2026-07-26 23:49:16 +08:00
Tianyi Cui
05adf5da4a docs: reject the timers/promises sleep proposal after implementation
PR #679 implemented the swap and falsified the note's parity premise:
vitest's fake clock does not intercept node:timers/promises, so the
change traded deterministic fast tests (llm-retry ~4s->~10s real
sleeps, two pty teardown tests rewritten real-time, a weakened
workflow grace-timer guard) for ~10 deleted lines. Moved the note
proposed -> rejected with the verdict on the Status line; the frozen
proposal body is kept per the rejected-lifecycle contract.
2026-07-26 23:47:56 +08:00
Tianyi Cui
a20cf88928 test(session): canonicalize fixtures as packed rows 2026-07-26 23:45:14 +08:00
Tianyi Cui
3cabde323f fix(acp-snapshot): keep the malformed-record capture branch-free for per-file coverage
Store the captured validation error as unknown in a wrapper object and
rethrow it directly: the instanceof-Error normalization added an
un-inducible false branch that failed harness.ts's 100% branch gate.
2026-07-26 23:45:13 +08:00
Tianyi Cui
4ff496c65c feat(session): default JSONL writes to packed rows 2026-07-26 23:44:52 +08:00
Tianyi Cui
da6059d9f9 Merge branch 'worktree/archive-agent-notes-20260726' into worktree/archive-pr639-agent-notes-20260726 2026-07-26 23:35:49 +08:00
Tianyi Cui
5ffa7faecc test(notes): refresh archived-link snapshot 2026-07-26 23:35:16 +08:00
Tianyi Cui
accd4ac3ff Merge branch 'master' into skills/record-browser-gif-assets-workflow 2026-07-26 23:31:44 +08:00
Tianyi Cui
fba048daca Merge branch 'worktree/archive-agent-notes-20260726' into worktree/archive-pr639-agent-notes-20260726 2026-07-26 23:30:20 +08:00
Tianyi Cui
046419faf4 fix(notes): keep archive helpers internal 2026-07-26 23:29:46 +08:00
Tianyi Cui
b458a97907 docs(notes): restore PR 639 history to archive 2026-07-26 23:26:00 +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
cad2af4741 Merge remote-tracking branch 'origin/master' into worktree/packed-chunks-default-rfc 2026-07-26 23:18:40 +08:00
Tianyi Cui
f18fb32e2c fix(notes): narrow complete archive triplets 2026-07-26 23:17:20 +08:00
Tianyi Cui
c3873464ba refactor(scripts): consolidate gate scripts on mdast fences, parseArgs, and globSync
Implements the gate-consolidation Agent Note from the NIH dependency audit:

- Shared markdownFences helper in scripts/markdown.ts (mdast code-node visit);
  doc-typecheck and verify-type-equiv extract fences through it; md-fences.ts
  and the duplicated extractEquivBlocks regex scanner are deleted;
  markdownProseLines derives fenced lines from parsed code-node positions
  instead of a second fence regex.
- publint-all.ts and verify-built-package-invariants.mjs parse argv with
  node:util parseArgs instead of hand-stepped parseOptions copies.
- Five straggler readdirSync walks become globSync: verify-runtime-closure,
  dev-web discoverPluginDirs, verify-package-paths realPackageNames,
  verify-client-domain-graph listSources, publint-all addPath. The
  dirent-diagnostic walks in check-workspace-constraints.ts and clean.ts stay.

Behavior parity verified: pnpm run doc-sync and every rewritten gate produce
byte-identical output before and after on this tree.

Moves the owning Agent Note proposed -> implemented and re-records its pair.
2026-07-26 23:14:28 +08:00
Tianyi Cui
32ae16fa59 Merge origin/master into worktree/archive-agent-notes-20260726 2026-07-26 23:11:33 +08:00
Tianyi Cui
a8a1ada183 docs: move execa Agent Note to implemented; update inbound links and README contracts
- proposed/testing -> implemented/testing with the lifecycle rewrite
  (Proposal->Decision in present tense, Acceptance criteria + Risks
  folded into Consequences); zh counterpart mirrored and both pairs
  re-recorded.
- the rejected NIH-audit roll-up pair now links the implemented/ path.
- loader-smoke README: captured output is bounded by execa's default
  100 MB maxBuffer, no longer unbounded.
- acp-snapshot README: harness.ts now also imports vitest (vi.waitFor),
  so the vitest-run-only constraint names both modules.
- jsonrpc keyless smoke: raise the invalid-env case's subprocess
  deadline to 25s (the 9s pick starved a cold tsx boot on slow NFS).
2026-07-26 23:10:38 +08:00
Tianyi Cui
4dfbd2cbd7 Merge pull request #657 from deepseek-harness/worktree-tasks-service-seam
refactor(tasks): split the task registry into seam and local implementation
2026-07-26 23:09:25 +08:00
Tianyi Cui
0dca9684d5 docs(graphs): retain archived rationale link 2026-07-26 23:08:47 +08:00
Tianyi Cui
98980900d0 Merge origin/master into worktree/archive-agent-notes-20260726
# Conflicts:
#	.agents/notes/implemented/testing/2026-07-24-web-gui-browser-e2e-lane.i18n.yaml
#	.agents/notes/implemented/testing/2026-07-24-web-gui-browser-e2e-lane.md
#	.agents/notes/implemented/testing/2026-07-24-web-gui-browser-e2e-lane.zh.md
2026-07-26 23:07:21 +08:00
Tianyi Cui
37140bf823 docs(notes): archive low-value decision records 2026-07-26 23:06:00 +08:00
Tianyi Cui
8e739eee26 Merge branch 'code-mode-ui/shiki' into code-mode-ui/trajectory-spans 2026-07-26 23:03:17 +08:00
Tianyi Cui
ad27fd76b5 Merge branch 'code-mode-ui/dispatch-spill' into code-mode-ui/shiki 2026-07-26 23:03:07 +08:00
Tianyi Cui
f8be35943c test(snapshots): refresh cordis-inspect-jsdoc — shapeDispatchLog left the public surface 2026-07-26 23:02:35 +08:00
Tianyi Cui
d167af3fb7 Merge branch 'master' into worktree-tasks-service-seam 2026-07-26 22:57:38 +08:00
Tianyi Cui
cb3a1302ee ci: adopt pnpm/action-setup for symmetric pnpm store caching
Convert the hand-rolled corepack + store-path + actions/cache pnpm setups
to pnpm/action-setup@v4 + setup-node cache: pnpm (the landlock-run.yml
pattern) in e2e.yml, docs-pages.yml, pi-ai-provider-e2e.yml,
build-exe-for-python-sdk.yml, and ci.yml's node-compat and benchmark
jobs. The enterprise restore-only PR jobs and the Windows job keep their
documented asymmetries; serial-linux keeps its hand-rolled store cache
because it produces the exact key those restore-only jobs consume, and
only swaps corepack for the action.

Implements and moves the CI-caching Agent Note from PR #667 to
implemented/, recording the serial-linux producer exception and the
exact-key (no restore-keys prefix) behavior of setup-node's cache.
2026-07-26 22:55:05 +08:00
Tianyi Cui
0bcf4886ff Merge branch 'code-mode-ui/shiki' into code-mode-ui/trajectory-spans 2026-07-26 22:54:50 +08:00
Tianyi Cui
d404609e19 docs(subprocess): bring the zh side of the consumer-migration pairs along
The parent branch's zh translations were recorded against its pre-reshape
en text; this PR's Node-ward en deltas get minimal zh updates across the
subprocess catalog and the subprocess/lsp-local/subagent READMEs (all
type-equiv blocks byte-identical), with pairing records re-recorded.
2026-07-26 22:54:44 +08:00