Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
77 changes: 77 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,62 +20,139 @@

---

<div align="center">

<sub>**When the work happens** · [Growth, year by year](#user-content-growth) · [Hour of day](#user-content-rhythm) · [Weekday × hour](#user-content-punchcard) · [Weekday vs weekend](#user-content-surplus) · [Per repository](#user-content-ground) · [Cumulative](#user-content-accrual) · [Repository lifecycles](#user-content-lifecycles) · [Releases in time](#user-content-cadence) · [Unbroken days](#user-content-streak)</sub>

</div>

<details open>
<summary><a name="growth"></a><b>Growth, year by year</b></summary>

<!-- FIG:growth --><img src="assets/growth.svg" width="700" alt="Column chart, contributions per year 2016 to 2026 on a square-root scale: 1, 0, 0, 13, 129, 198, 676, 589, 1,181, 3,193, 9,313. 2017 and 2018 are exactly zero, drawn as open slots below the axis. 2023 (589) is lower than 2022 (676). Data: GitHub." /><!-- /FIG:growth -->

<sub>Eleven years, square-root scale. **<!-- DATA:cur_total -->9,313<!-- /DATA:cur_total --> in <!-- DATA:cur_year -->2026<!-- /DATA:cur_year -->** — after two years that are genuinely zero and one year that is genuinely down.</sub>

**2016** — one commit. **2017–2018** — nothing; the gap in the chart is real, and it is two years long. **2019** — 13. **2020** — 129, the year of coming back. **2021** — 198. **2022** — 676. **2023** — 589, lower than the year before, and the chart does not smooth it. **2024** — 1,181; the first upstream patch merged into [Dify](https://github.com/langgenius/dify/pull/5631) that July. **2025** — 3,193; `negentropy-perceives` in August, `agentic-ai-cognizes` in October. **2026-01-31** — the trunk starts. **2026-05-18** — both of those repositories are archived into it. **<!-- DATA:cur_year -->2026<!-- /DATA:cur_year -->** — <!-- DATA:cur_total -->9,313<!-- /DATA:cur_total --> so far.

</details>

<details>
<summary><a name="rhythm"></a><b>Hour of day</b></summary>

<!-- FIG:rhythm --><img src="assets/rhythm.svg" width="700" alt="Histogram of 4,349 open-source commits by hour of day, Asia/Shanghai, axis running 04:00 through 03:00 so the night block stays contiguous. Values by hour from 04:00: 0, 0, 0, 11, 44, 232, 338, 319, 186, 184, 265, 285, 262, 292, 242, 206, 214, 348, 460, 329, 91, 36, 3, 2. 04:00 to 06:59 are exactly zero, drawn as open slots below the axis. Peak 22:00 with 460 commits, 10.6 percent of all commits, 2.54 times a flat baseline. Bars below the 2.5-pixel minimum height are drawn at that minimum." /><!-- /FIG:rhythm -->

<sub>The surplus, located: **<!-- DATA:peak_h -->22:00<!-- /DATA:peak_h -->**, <!-- DATA:peak_x -->2.54×<!-- /DATA:peak_x --> a flat baseline — <!-- DATA:commits_total -->4,349<!-- /DATA:commits_total --> open-source commits, Asia/Shanghai. Dawn is empty, not missing.</sub>

</details>

<details>
<summary><a name="punchcard"></a><b>Weekday × hour</b></summary>

<!-- FIG:punchcard --><img src="assets/punchcard.svg" width="700" alt="Punchcard of 4,349 open-source commits by weekday and hour, Asia/Shanghai, columns running 04:00 to 03:00 and rows Monday to Sunday, window 2024-06-22 to 2026-09-01. Cell area is proportional to count; cell side rounded to one decimal. Weekday totals Monday to Sunday: 615, 557, 563, 504, 602, 780, 728. Densest cell Sunday at 22:00 with 83 commits. 37 of 168 cells are exactly zero, drawn as open squares. Weekends hold 1,508 commits = 34.7 percent, against a flat share of 28.6. Data: GitHub." /><!-- /FIG:punchcard -->

<sub>The two-dimensional answer: densest cell **<!-- DATA:pc_cell -->Sun 22:00<!-- /DATA:pc_cell -->**, <!-- DATA:pc_val -->83<!-- /DATA:pc_val --> commits; <!-- DATA:pc_empty -->37<!-- /DATA:pc_empty --> of 168 cells are true zeros; weekends hold <!-- DATA:wknd_pct -->34.7%<!-- /DATA:wknd_pct --> against a 28.6% flat share.</sub>

</details>

<details>
<summary><a name="surplus"></a><b>Weekday vs weekend</b></summary>

<!-- FIG:surplus --><img src="assets/surplus.svg" width="700" alt="Two step curves on one hour-of-day axis running 04:00 to 03:00, Asia/Shanghai, 2024-06-22 to 2026-09-01, normalised to commits per day of that kind so 572 weekdays and 230 weekend days are comparable. Weekday rate by hour from 04:00: 0.0, 0.0, 0.0, 0.0, 0.0, 0.3, 0.5, 0.4, 0.2, 0.2, 0.3, 0.3, 0.3, 0.3, 0.2, 0.2, 0.2, 0.4, 0.5, 0.4, 0.1, 0.0, 0.0, 0.0. Weekend rate: 0.0, 0.0, 0.0, 0.0, 0.1, 0.2, 0.2, 0.3, 0.3, 0.4, 0.4, 0.4, 0.4, 0.5, 0.5, 0.4, 0.5, 0.6, 0.7, 0.5, 0.2, 0.1, 0.0, 0.0. Weekday peak 22:00 at 0.5 per day; weekend peak 22:00 at 0.7. Data: GitHub." /><!-- /FIG:surplus -->

<sub>Weekday vs weekend, normalised to per-day rates (**<!-- DATA:wd_days -->572<!-- /DATA:wd_days --> weekdays ÷ <!-- DATA:we_days -->230<!-- /DATA:we_days --> weekend days**): same shape, and the weekend actually runs hotter per day — peak at <!-- DATA:we_peak_h -->22:00<!-- /DATA:we_peak_h -->. "By day" is a job description, not a schedule.</sub>

</details>

<details>
<summary><a name="ground"></a><b>Per repository</b></summary>

<!-- FIG:ground --><img src="assets/ground.svg" width="700" alt="Horizontal bar chart, commits per source repository, sorted: negentropy 2,048; agentic-ai-cognizes 945; coding-proxy 638; negentropy-perceives 433; hyper-git 125; threefish-ai.github.io 117; give-me-a-break 43. Total 4,349 commits and 29 releases across 7 source repositories; negentropy is 47.1 percent of commits. Releases: coding-proxy 12, give-me-a-break 7, hyper-git 7, negentropy 2, negentropy-perceives 1. agentic-ai-cognizes and negentropy-perceives are archived — they graduated into the negentropy trunk." /><!-- /FIG:ground -->

<sub>[negentropy](https://github.com/ThreeFish-AI/negentropy) knowledge engine · [coding-proxy](https://github.com/ThreeFish-AI/coding-proxy) failover for coding agents · [hyper-git](https://github.com/ThreeFish-AI/hyper-git) changelists for VS Code · [agents.md](https://github.com/ThreeFish-AI/agents.md) the doctrine they are written under</sub>

</details>

<details>
<summary><a name="accrual"></a><b>Cumulative</b></summary>

<!-- FIG:accrual --><img src="assets/accrual.svg" width="700" alt="Cumulative authored commits per source repository at monthly resolution, 2024-06-22 to 2026-09-01 — a window of about 26 months, not the eleven years shown above. Final totals: agentic-ai-cognizes 945, coding-proxy 638, give-me-a-break 43, hyper-git 125, negentropy 2,048, negentropy-perceives 433, threefish-ai.github.io 117; all repos together 4,349. On 2026-05-18 agentic-ai-cognizes and negentropy-perceives flatten and the trunk keeps rising: they graduated into the negentropy trunk that day. Data: GitHub." /><!-- /FIG:accrual -->

<sub>Cumulative, monthly: two curves flatten on the day they graduated into the trunk, which keeps climbing. Window <!-- DATA:win_from -->2024-06-22<!-- /DATA:win_from --> → <!-- DATA:win_to -->2026-09-01<!-- /DATA:win_to --> — **<!-- DATA:win_months -->26<!-- /DATA:win_months --> months, not the eleven years above.**</sub>

</details>

<details>
<summary><a name="lifecycles"></a><b>Repository lifecycles</b></summary>

<!-- FIG:lifecycles --><img src="assets/lifecycles.svg" width="700" alt="Timeline ribbon, one row per source repository from creation to last push, 2024-06-22 to 2026-09-01. agentic-ai-cognizes created 2025-10-22, last push 2026-05-18, archived (graduated); coding-proxy created 2026-03-30, last push 2026-08-27, active; give-me-a-break created 2026-06-23, last push 2026-09-04, active; hyper-git created 2026-06-27, last push 2026-09-01, active; negentropy created 2026-01-31, last push 2026-09-04, active; negentropy-perceives created 2025-08-26, last push 2026-05-18, archived (graduated); threefish-ai.github.io created 2024-06-22, last push 2026-07-08, active. Bar ends mark last push — the closest public proxy for archival, because GitHub exposes no archive timestamp; archived-ness rides the square terminal glyph instead. Repositories deleted before today are invisible at public caliber. Data: GitHub." /><!-- /FIG:lifecycles -->

<sub>Repositories as intervals, creation to last push; the two same-day endings are the graduation. Deleted repos are invisible at this caliber.</sub>

</details>

<details>
<summary><a name="cadence"></a><b>Releases in time</b></summary>

<!-- FIG:cadence --><img src="assets/cadence.svg" width="700" alt="Dot timeline of 29 public releases across 5 repositories on one shared date axis, 2024-06-22 to 2026-09-01. coding-proxy: 12 releases, v0.1.1 on 2026-04-05 through v0.5.2a8 on 2026-07-06; give-me-a-break: 7 releases, v0.1.0 on 2026-06-27 through v0.1.6 on 2026-09-04; hyper-git: 7 releases, v0.0.6 on 2026-06-30 through v0.0.16 on 2026-09-01; negentropy: 2 releases, negentropy-v0.0.1-rc.1 on 2026-06-19 through negentropy-v0.0.1-rc.2 on 2026-06-19, all pre-releases; negentropy-perceives: 1 releases, v0.2.0a3 on 2026-04-20 through v0.2.0a3 on 2026-04-20. Hollow dots are pre-releases. negentropy shows only its 2 release candidates against 2,048 commits because it is a deployed service, not a distributed package — its shipping unit is the merged pull request, not the tag. Data: GitHub." /><!-- /FIG:cadence -->

<sub>Releases have timing, not just counts — latest: **<!-- DATA:rel_last_name -->give-me-a-break<!-- /DATA:rel_last_name --> <!-- DATA:rel_last_tag -->v0.1.6<!-- /DATA:rel_last_tag -->**. negentropy ships as merged PRs, not tags.</sub>

</details>

<details>
<summary><a name="streak"></a><b>Unbroken days</b></summary>

<!-- FIG:streak --><img src="assets/streak.svg" width="700" alt="Rug plot, one tick per day over the latest 400 days, 2025-07-29 to 2026-09-01; tick height is the square root of that day&#x27;s authored-commit count. 208 days carry at least one commit (52 percent); the 192 empty ones are drawn as a thin rule below the axis, one segment per gap. The longest unbroken run inside this window is 88 days, 2026-03-19 to 2026-06-14, marked with a bracket. Counted over authored commits in source repositories — the same population as every other commit figure here, and narrower than the GitHub contributions calendar, which also counts private work, issues and reviews. Data: GitHub." /><!-- /FIG:streak -->

<sub>The run the rug brackets: **<!-- DATA:rug_streak -->88<!-- /DATA:rug_streak --> days, <!-- DATA:rug_streak_from -->2026-03-19<!-- /DATA:rug_streak_from --> → <!-- DATA:rug_streak_to -->2026-06-14<!-- /DATA:rug_streak_to -->**, the longest inside its latest-400-day window; the all-time longest is <!-- DATA:streak -->88<!-- /DATA:streak --> days (<!-- DATA:streak_from -->2026-03-19<!-- /DATA:streak_from --> → <!-- DATA:streak_to -->2026-06-14<!-- /DATA:streak_to -->). Of the <!-- DATA:win_days -->802<!-- /DATA:win_days --> days in the whole window, <!-- DATA:active_days -->249<!-- /DATA:active_days --> carried a commit (<!-- DATA:active_pct -->31%<!-- /DATA:active_pct -->) — authored commits in source repos, a narrower population than the GitHub calendar above.</sub>

</details>

---

<div align="center">

<sub>**How it ships** · [How long a PR waits](#user-content-latency) · [Commit grammar](#user-content-grammar) · [Language shares](#user-content-tongues) · [Upstream pull requests](#user-content-upstream)</sub>

</div>

<details open>
<summary><a name="latency"></a><b>How long a PR waits</b></summary>

<!-- FIG:latency --><img src="assets/latency.svg" width="700" alt="Histogram of merged pull-request lifetime in negentropy with a step cumulative curve on a right-hand zero-to-hundred-percent axis. 1078 merged pull requests, log-spaced buckets: &lt;1m 281, 1-2 72, 2-5 144, 5-15 225, 15-60m 177, 1-4h 92, 4-24h 83, &gt;24h 4. Median 6 min; 90th percentile 2.8 h; 83 percent merge within an hour; the longest waited 11.9 d. 40 further closed pull requests were never merged and are excluded. This is a solo self-merge repository: the lifetime measures how small a change unit is, not how fast a review is. Data: GitHub." /><!-- /FIG:latency -->

<sub>What the median hides: p90 **<!-- DATA:p90 -->2.8 h<!-- /DATA:p90 -->**, longest **<!-- DATA:lat_max -->11.9 d<!-- /DATA:lat_max -->**; of <!-- DATA:pr_closed -->1118<!-- /DATA:pr_closed --> closed, <!-- DATA:pr_unmerged -->40<!-- /DATA:pr_unmerged --> were never merged and are excluded. Solo self-merge: this measures change-unit size, not review speed.</sub>

</details>

<details>
<summary><a name="grammar"></a><b>Commit grammar</b></summary>

<!-- FIG:grammar --><img src="assets/grammar.svg" width="700" alt="Waffle chart of one hundred cells, each cell one percent of 4,349 authored commit subjects classified by Conventional Commits prefix. fix 827, docs 725, feat 697, refactor 319, chore 255, style 176, test 144, ci 110, build 92, perf 6, revert 2. 996 subjects do not parse as Conventional Commits and are drawn as open cells. The accented block is fix, the largest type at 19.0 percent of all subjects. Data: GitHub." /><!-- /FIG:grammar -->

<sub>Seventy-seven of a hundred, made countable: **<!-- DATA:top_type -->fix<!-- /DATA:top_type --> <!-- DATA:top_type_pct -->19.0%<!-- /DATA:top_type_pct -->** leads; **<!-- DATA:nonconf_n -->996<!-- /DATA:nonconf_n --> subjects (<!-- DATA:nonconf_pct -->22.9%<!-- /DATA:nonconf_pct -->) don't parse** — drawn as open cells, not hidden.</sub>

</details>

<details>
<summary><a name="tongues"></a><b>Language shares</b></summary>

<!-- FIG:tongues --><img src="assets/tongues.svg" width="700" alt="Slope chart of language byte shares over the source repositories under two conditions. Left, as GitHub&#x27;s language endpoint reports it: HTML 67.8 percent, Python 22.7 percent, TypeScript 8.3 percent, Swift 0.5 percent, CSS 0.2 percent, C# 0.2 percent. Right, excluding threefish-ai.github.io, whose bytes of HTML are generated static-site output rather than authored source: Python 69.1 percent, TypeScript 25.2 percent, HTML 2.3 percent, Swift 1.4 percent, C# 0.6 percent, CSS 0.5 percent. HTML falls from rank 1 to rank 3; Python rises to rank 1. Byte counts measure committed source size, not authorship or effort, and include vendored files. Every source repo contributes counted bytes. Data: GitHub." /><!-- /FIG:tongues -->

<sub>Both conditions, not a silent pick: GitHub's endpoint says **<!-- DATA:lang_naive -->HTML<!-- /DATA:lang_naive --> <!-- DATA:lang_naive_pct -->67.8%<!-- /DATA:lang_naive_pct -->**; excluding the one generated-site repo, **<!-- DATA:lang_top -->Python<!-- /DATA:lang_top --> <!-- DATA:lang_top_pct -->69.1%<!-- /DATA:lang_top_pct -->**. Bytes measure source size, not effort or authorship.</sub>

</details>

<details>
<summary><a name="upstream"></a><b>Upstream pull requests</b></summary>

<!-- FIG:upstream --><img src="assets/upstream.svg" width="700" alt="Dot ledger of 6 public pull requests to repositories owned by others, 2024-06-26 to 2025-12-06. langgenius/dify#5631, merged, 2024-06-26; langgenius/dify#8921, merged, 2024-09-30; langgenius/dify-plugin-daemon#389, closed unmerged, 2025-07-07; langgenius/dify-cloud-kit#3, merged, 2025-07-08; langgenius/dify#22646, merged, 2025-07-18; DayuanJiang/next-ai-draw-io#124, merged, 2025-12-06. These are 0.3 percent of 1,849 public pull requests; the rest are to my own repositories. Data: GitHub is:public search." /><!-- /FIG:upstream -->

<sub>N = <!-- DATA:ext_prs -->6<!-- /DATA:ext_prs -->, named: <!-- DATA:ext_first -->2024-06-26<!-- /DATA:ext_first --> → <!-- DATA:ext_last -->2025-12-06<!-- /DATA:ext_last -->, <!-- DATA:ext_merged -->5<!-- /DATA:ext_merged --> merged, one closed unmerged — a fraction of a percent of all public PRs.</sub>

</details>

---

### Built against five ways things fall apart
Expand Down
Loading
Loading