Skip to content

Upstream divergence inventory: 402 ahead / 896 behind (v7.1.2 -> v10.3.0) — PR audit, risk table, resync options #267

Open

Description

@jsboige

Context

User mandate 26/09 ("pérennisation upstream"), coordinator GO 19:09Z (grains a+b, carrier po-2025). Deliverable = divergence risk table + owner-arbitration list, feeding the resync-strategy arbitration (c).

Facts, measured from the hub clone: merge-base 980ea089 (2026-05-09, v7.1.2); 402 commits ahead / 896 behind; upstream now at v10.3.0 (2026-09-24), with three breaking majors (8.0, 9.0, 10.0) and 10.x releases every 1-3 days through September.

(a) The 402, classified by path footprint

Class Count Upstream-relevant?
Carries packages/** (core) 181 yes — the only part that matters for resync
Fleet-only paths (scripts/, docs/reference/, docs/deployment/, .claude/, .env.sidecar.example) 106 no (individual scripts could be offered as optional tooling)
Root docs / CLAUDE.md decision records 35 no (fleet knowledge layer)
Merge commits 80 —

Core-commit themes (by subject): stream/SSE robustness ~57 (never-hang family, S4 index-mapping, finalize, first-event watchdog) · failover/budget ~30 · tool handling ~23 · capture ~19 · thinking dialects ~14 · openai-ingress ~13 · relay ~12 · GLM ~12.

(b) Upstream PR audit — all 21 PRs ever opened against MadAppGang/claudish

0 merged as-is. 1 open. 20 closed — but Read-Body changes the reading completely:

Owner's standing pattern: he does not maintain fork PRs; he absorbs findings and reimplements them in his own architecture, crediting the finder. On #184 he re-verified our premise himself, apologized for a premature close, asked us to send the fix, then built it anyway and apologized for the reversal ("The finding is yours and the commit says so"). Implication: the contribution currency upstream is precise findings + fixtures, not long-lived PRs.

The one live thread: #237 (Fable version-independent mapping) — open since 09-11, zero owner response (only the Claude bot review-disabled comment). Last genuine upstream contribution attempt.

Key negative finding: the findings->upstream pipeline stopped mid-September. None of the September core work (S4-a/b, never-hang corpus re-check, #108 first-event watchdog, #170 pre-visible re-forward, policy-refusal retry, OpenAI ingress, #262 sanitizer, #264 anti-revisit) has been offered upstream.

Risk table

# Risk Evidence Severity
R1 Rebase-based resync can never converge Upstream 10.x every 1-3 days vs our fleet-release cadence; #143 already closed for conflicts; 3 breaking majors since fork Critical
R2 Duplicate implementations on naive rebase At least 8 of our merged fixes already exist upstream in reimplemented form (capture/error-body persistence, index clamping, input_tokens forwarding, inline-system strip, billing-header strip, GLM burst handling, server_tool_use suppression, custom-endpoint streamFormat) High
R3 Fleet-critical differentiators have no upstream home relay/sidecar topology, budget failover, drain/twins, capture fleet, Qwen/GLM guards all carry production traffic; a resync movement must quarantine them as a fleet layer High
R4 Findings pipeline stalled No upstream offer since 09-11 (#237); our September robustness work is invisible to the owner Medium
R5 Wrong-repo PR mistakes recur 5 occurrences; the gh pr create parent-target trap is known but unfixed in our flow Low

Options for arbitration (c) — NOT decided here

  • (i) Rebase onto v10.3 — refuted by R1 (cadence mismatch).
  • (ii) Fleet-layer quarantine + batched porting — declare the fork a long-lived derivative; refactor our core deltas behind stable seams (the three-layer adapter architecture is already that seam); port upstream releases as features on OUR cadence; resume contributing findings + fixtures upstream (owner's stated currency). Requires a dedupe pass first (R2).
  • (iii) Full reset on v10.3 + re-apply fleet layer — highest cost/risk, fallback if (ii) fails.

Recommendation (for coordinator then user): (ii), dedupe pass first, quarterly port window, findings-pipeline revival (R4) as the cheap high-value half.

Verification trail

  • Classification: git log upstream/main..main --format=@@ --name-only + path-footprint awk (scripts, counts above, 402 total).
  • PR states: gh pr list --author jsboige --state all + per-PR last-comment reads (Read-Body rule).
  • Versions: upstream CHANGELOG.md + package.json at upstream/main (10.3.0, 2026-09-24).

🤖 Generated with Claude Code

Activity

  1. jsboige commented on Oct 11, 2026

    @jsboige
    OwnerAuthor

    [po-203] Compteurs rafraîchis (deep-queue repli du 11/10, ~02:00Z) — l'inventaire du 26/09 est périmé sur les deux axes.

    Mesure 26/09 (corps de l'issue) 11/10 (ce commentaire) Dérive
    merge-base 980ea089 (2026-05-09, v7.1.2) inchangé —
    Ahead (flotte) 402 518 +116 en ~15 j (≈ 7,7/j)
    Behind (upstream) 896 1 020 +124 en ~15 j (≈ 8,3/j)
    Tête upstream v10.3.0 (2026-09-24) v10.4.1 (2026-10-07), HEAD 2e4ac246 2 mineures de plus en 13 j — le rythme 10.x tous les 1-3 j tient

    Lecture : les deux côtés avancent au même rythme (~8 commits/j chacun) et l'écart net continue de s'élargir d'environ 15 commits/jour — 15 jours de plus sans arbitrage (c) ajoutent ~225 commits des deux côtés à la future resync. Aucun des compteurs ne se referme seul.

    Inchangé par ailleurs : la base de fusion (2026-05-09) et donc la structure de l'analyse (a)/(b) du corps — les 181 commits cœur flotte du 26/09 sont devenis ~200+ au même périmètre packages/**, les thèmes dominants identiques (never-hang, failover, ingress). L'arbitrage (c) — stratégie de resync — reste le seul geste qui change la pente, et il est toujours en attente côté user.

    (Mesure : git fetch upstream --tags + rev-list --count des deux côtés du merge-base, clone po-203.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions