← Back to home@mrwisdon

dsh-tianyicui-monitor

DeepSeek Harness plugin: commit activity, contribution heatmap with shared selection, and a calibrated 72h release probability

Stars
2
Language
JavaScript
Created
Oct 12, 2026
Updated
Oct 12, 2026

Introduction

dsh-tianyicui-monitor

tests license

A DeepSeek Harness (DSH) plugin. It adds a sidebar entry showing a maintainer's commit activity and a calibrated probability that a new DSH version ships within 72 hours.

Reads public GitHub data only. No credentials, no telemetry.

English | 中文


What it does

A row in the DSH sidebar, next to Plugins / MCP, opening a report:

  • Verdict — a gauge with the 90% threshold drawn on the arc, and a verdict band (release likely / watch / quiet)
  • Totals — commits in the main repo, commits across all public repos, GitHub contribution count
  • Timeline — daily commits with release markers
  • Heatmap — GitHub-style contribution grid
  • Model timeline — DeepSeek model launches against DSH releases
  • Contributions — daily GitHub contribution counts, private-activity days flagged
  • Evidence — Brier / AUC / calibration error, and the hazard bucket behind the current number

Click any day on the timeline or the heatmap: both charts highlight it and a readout shows that day's commit counts, whether a release landed, and which version.

How the probability is derived

1. Predictors

Each hour is a sample. Two features are used, both known at that moment:

  • hours since the last release
  • day of week

Commit volume was tested and dropped: in a 24-hour window it carries no signal (0.99× the baseline). Whether a release is overdue is what matters.

2. Hazard × weekday

Bucketed by hours since the last release, the empirical release rate rises steadily as a cycle ages:

Hours since last releaseP(release within 72h)
0–6 h74.4%
30–36 h64.0%
48–60 h85.7%
72–96 h97.0%
96 h+100%

There is also a strong weekday effect — the team ships midweek, not on Fridays (Thursday 95.8% vs Friday 54.7%). The two are combined on the odds scale:

logit P = logit(hazard[hours-since-last-release bucket])
        + log(weekday relative risk)

3. Calibration

A monotone (isotonic) curve is fitted to the model's own out-of-sample output, so the number shown is the observed frequency rather than a raw score.

P_calibrated = isotonic(P_raw)

4. Why a 72-hour window

The probability that a release lands in the next 24 hours tops out at 77.7% (Wilson upper bound 87.9%), so a 90% verdict is unreachable in that window. Over 72 hours it reaches 94.0%, which makes 90% a real, crossable line:

HorizonBase rateBest achievableReaches 90%?
12 h24.4%54.0%no
24 h43.1%77.7%no
48 h63.5%88.8%no
72 h78.8%94.0%yes

(Base rate here is the unconditional release rate over the same window used for the horizon sweep; the calibrated model's own fitted base rate over its training window is 82.1%.)

Validation

Rolling-origin backtesting: refit every 6 hours on data strictly before the evaluation instant, across 1,092 out-of-sample hours.

ModelBrier ↓AUC ↑Log loss ↓
Constant base rate0.15090.5000.4819
hazard × weekday0.14020.6870.4451
+ isotonic calibration0.13460.6870.4426

Calibration error falls from 7.33 pp to 4.17 pp.

The ≥90% verdict fires on 49.9% of hours and is followed by a release within 72 hours 92.7% of the time (Wilson 95% CI 90.2–94.6%).

Limitation: the history contains only 37 independent release events, so the intervals are wide. The panel states this in its footer. Do not make important decisions from it.

DeepSeek model releases

Model launches are shown as timeline context, not as a model input. Scoped to models published since the DSH repository was created — including V4-Flash-0731 and V4-Pro-0813 — with dates taken from Hugging Face model-card creation time.

Notable alignment: each of the three flagship launches after DSH's first public release was followed by a DSH release within 0.5 days.

Model launchNext DSH release
2026-08-13 · V4-Pro-0813+0.2 d
2026-08-31 · V4-Flash-Vision-Exp+0.4 d
2026-09-10 · V4.1-Flash+0.5 d

With only three observations this is a pattern, not a measurable effect, and it is not evidence that a model launch causes a DSH release. The three earlier launches predate DSH's first release and cannot be compared at all. They are deliberately kept out of the probability model, both because n=3 cannot support a predictor and because the base rate already explains most of it.

Install

npm test        # 109 tests
npm run build   # emits lib/client.js

Place the package under your DSH profile's node_modules, then append a loader entry to that profile's cordis.patch.yml:

- insert:
    - id: tianyicui-monitor
      name: dsh-tianyicui-monitor

Restart DSH. sync.sh automates the copy:

DSH_CANON_DIR="$HOME/dsh-plugins/dsh-tianyicui-monitor" \
DSH_PROFILES="$HOME/.dsh/profiles/web" \
  ./sync.sh

Data sources

WhatEndpoint
Commits in the main repoGET /repos/{owner}/{repo}/commits
ReleasesGET /repos/{owner}/{repo}/releases
Commits across all public reposGET /repos/{owner}/{repo}/contributors
Contribution graph (includes private)https://github.com/users/{u}/contributions

An offline snapshot ships with the plugin so the panel always renders, then refreshes live. Unauthenticated GitHub allows 60 requests/hour; the panel shows a countdown when that runs out.

Two notes on reading this data:

  • Unreadable is not zero. GET /user/repos returns 401 unauthenticated, so private repositories cannot be counted. The panel reports private repos visible: 0 and says why.
  • The contribution graph counts "contributions" (commits + PRs + issues + reviews), not commits, so it is shown as a separate row and never summed with the commit totals. Its daily numbers do include private activity, because the account enables "include private contributions on my profile". GitHub returns only the count, never the repository.

A true commit count including private repos needs an authenticated GraphQL query (contributionsCollection.totalCommitContributions).

Tests

npm test

109 tests. test/render.test.mjs evaluates the built bundle and executes every component body against real data; test/contributions.test.mjs parses a real captured page and asserts its daily sum matches the total GitHub prints; test/core.test.mjs covers the analysis core and re-verifies the model's own claims.

Rebuilding the data

git clone --filter=blob:none --no-checkout --shallow-since=2026-04-01 \
  --single-branch --branch master \
  https://github.com/deepseek-ai/deepseek-harness.git build/dsh-git

npm run data            # extract -> refit -> bundle
npm run repos           # per-repo commit scan
npm run contributions   # contribution graph

Every number above is reproducible with node build/evaluate3.mjs and node build/evaluate4.mjs.

Disclaimer

Not affiliated with or endorsed by DeepSeek or by tianyicui. It reads public GitHub data about a public account. All trademarks belong to their owners.

MIT licensed.