Skip to content

[S2] Reprendre la branche sync existante (df2ad1d, 11/08) et la rebaser sur v7.62 #26

Description

@jsboigeEpita

Epic : #24

Point de départ : ne pas repartir de zéro

Une sync est déjà engagée et a été poursuivie plus loin que la mémoire d'équipe ne l'indiquait :

Repartir de main jetterait ce travail. Ce lot reprend l'existant.

Travail

  1. Tag de sauvegarde avant toute opération.
  2. Rebaser / mettre à jour sync/upstream-rebase-2026-07-25 sur upstream/main à jour (v7.62.0, 7515317).
  3. Mesurer le delta restant vs les 19 commits critiques identifiés en phase 2c/d (ré-implémentation contre CredentialAuthority upstream).
  4. Rapporter l'état réel : ce qui est déjà porté, ce qui reste.

Garde-fous

  • Tag de sauvegarde avant (précédent : pre-upstream-sync-2026-07-25, off-site).
  • Force push interdit sur les branches partagées.
  • Aucun déploiement prod depuis ce lot.

Definition of done

  • Branche à jour sur upstream/main v7.62.0.
  • État des 19 commits critiques documenté (porté / à refaire / caduc).
  • Delta restant chiffré.

Activity

  1. jsboige commented on Sep 22, 2026

    @jsboige
    Owner

    S2 rescoped — the rebase is superseded, but the old branch still carries 9 commits that must be checked by content

    Revived by user decision (2026-09-23: dormant issues are to be driven to completion). Measured today on origin/sync/upstream-rebase-2026-07-25 (last commit 57472ca, 2026-08-28):

    count
    non-merge commits on the branch, not in main, not in upstream/main 52
    patch-equivalent commit already in main (git cherry) 14
    no patch-equivalent, but a commit with the same subject exists in main (rebased copies) 29
    same subject absent from main 9

    The strategy S2 was written for — rebase this branch onto upstream, then land it — has been replaced by per-file absorption of upstream into main (S4-b/c/d/e, merged file by file). Rebasing the branch is therefore no longer the deliverable. What remains is the question S2 existed to protect: is anything of ours only on that branch? The 9 candidates:

    605c1f0 phase2a pre-cherry-pick fork/ tree · 9d38bce server_tool_use suppression before index-remap · 202c17a --isolate by default · 4dfbe46 Bun 1.3.14 typecheck fixes · 44dd641 cluster-critical Invariant 8 · 76ad426 qwen3.6 notice gate as a Set · 1fffab8 web-search: no myia host fallback, require SEARXNG_URL · a252f1c servedSlotIds coexistence (Claude Desktop) · 57472ca index remap via Map<orig,emitted>.

    A missing subject is not a missing change: several of these likely landed in main under another commit (the S4-a index-remap work, the server_tool_use ordering described in CLAUDE.md). Content, not SHA or subject, decides.

    New DoD

    • Each of the 9 has a verdict: present in main (name the commit or the code anchor), port (small PR), or obsolete (why).
    • Ports merged, each with its test.
    • Branch left in place (no deletion without proof of preservation). Closing this issue deletes nothing.

    — myia-ai-01:claudish (coordinator)

  2. jsboige commented on Oct 5, 2026

    @jsboige
    Owner

    #26 — verdicts on the 9 commits (content-decided, per the rescope)

    Machine: po-2024, base main@937e124b, branch origin/sync/upstream-rebase-2026-07-25 @ 57472ca. Each verdict names its anchor or its reason; content, not SHA or subject.

    commit verdict anchor / reason
    605c1f0 phase2a fork/ tree extraction present All 8 files live in main (fork/middleware/request-logger.ts, fork/server/relay.ts ecosystem…) and evolved far past the extraction — request-logger now writes attribution envelopes ({ts,src,machine,model,pid,…,body}).
    9d38bce server_tool_use suppression BEFORE index-remap present Main's parser is single-pass (suppression state inline at parse time; the tool is even executed — webReader — and assistant-side tool_result suppressed per the 2026-08-11 live capture). The two-pass ordering bug this fixed is structurally impossible in main's architecture; behavior pinned by format-translation.test.ts "Chantier D".
    202c17a --isolate by default port — PR #361 Flag exists in current bun ("fresh global object. Leaked handles from one file cannot affect another"); neither the test script nor the strict runner's spawn used it. Measured A/B on this machine: 9 → 6 failing entries — the 5 mcp-searxng + 1 web-search failures were cross-file pollution victims (they pass isolated); 3 order-dependent module-load deaths surface instead (pre-existing latent, see PR).
    4dfbe46 Bun 1.3.14 typecheck fixes obsolete (absorbed by rewrite) All 4 touched files were rewritten wholesale by S4; none of the commit's hunks exist in today's tree. Side-finding: main's scoped tsc baseline today is 361 errors (TS6133-dominant, incl. 15 across those same 4 files and a TS2769 in tui/test-provider.ts) — typecheck is not currently a merge gate; this port would be noise.
    44dd641 Invariant 8 = post-#8 relay header contract present relay.test.ts:140 "preserves X-Claudish-Machine, injects x-proxy-key (not x-api-key)" + :184 "ai-01 Opus passthrough — stale x-api-key dropped, OAuth preserved" — exactly the contract the cluster-critical test asserted, against the real forwardToUpstream.
    76ad426 qwen3.6 notice gate as a Set obsolete composed-handler.ts:537 still string-compares qwen3.6-35b-a3b. The motivating condition — more economy-tier models to gate — never materialized; a single-member Set is ceremony with no behavior change. Revisit when a second economy model lands.
    1fffab8 require SEARXNG_URL (no myia fallback) port — PR #360 Stronger case today than in August: the default points at search.myia.io, behind IIS Basic Auth since 2026-08-19 — the default could only 401 (any working setup carries creds in the userinfo and sets the full URL anyway). Ported adapted to the per-call searxngConfig() shape; the inverted pin ("unset → default") was the defect; new pin proves 0 network calls.
    a252f1c servedSlotIds coexistence (Claude Desktop) obsolete No servedSlotIds producer exists in our tree — slot mode was upstream's shape, and this guard existed for the rebase coexistence strategy that S4's per-file absorption replaced. Our /v1/models is the fork's own aggregator (opt-in via CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1); its credential-filtering half is polish on an opt-in route. If Claude Desktop/slot mode ever becomes a target, this commit is the reference.
    57472ca index remap via Map<orig,emitted> + cluster-critical tests + 2 fixtures present (behavior) Main's index-mapping layer implements the whole contract — jumped starts remapped, pair remembered, orphan delta/stop dropped whole — pinned by anthropic-sse-s4a.test.ts (4 describes: index mapping b48042c, filtered path, no orphan event headers, abandoned tail) and documented in CLAUDE.md §S4-a. The mechanism differs (single-pass tracking; no Map import needed), and the branch's two fixture shapes (delta-unknown-index, index-skip-1) are the orphan/jump classes those describes pin.

    Score: 4 present · 3 obsolete · 2 ported (PR #360 Refs #26, PR #361 Refs #26).

    DoD state. ☑ verdicts complete — ☑ branch untouched (nothing deleted, per the rescope) — ☐ ports merged: both PRs await review; #26 stays open until they land (their bodies carry Refs, not Closes, by design).

    Two side-findings worth their own eyes (not actioned here): main's 361-error scoped-tsc baseline (typecheck is de facto not a gate — earlier "tsc OK" claims in cycle reports should be read against this), and the 3 order-dependent test files (cli.test.ts, cli-passthrough.test.ts, native-handler-advisor.test.ts) that only ever loaded on warmed globals — exposed by #361's flag.

  3. jsboige commented on Oct 11, 2026

    @jsboige
    Owner

    [po-203] S2 — rapport uniquement (deep-queue repli du 11/10, ~02:10Z) : la branche existe, elle n'est PAS perdue, mais la premise « rebaser sur v7.62 » est périmée et le coût a triplé de dimension.

    État réel de la branche sync/upstream-rebase-2026-07-25 :

    Sondage de rebasabilité (git merge-tree --write-tree, ORT, lecture seule — rien n'est touché, aucun tag de sauvegarde requis pour CE rapport) : 21 fichiers en conflit contre upstream/main (v10.4.1), dont :

    • les 4 fichiers sensibles eux-mêmes : composed-handler.ts, proxy-server.ts, anthropic-sse.ts, openai-sse.ts ;
    • le noyau adjacent : native-handler.ts, config-schema.ts, profile-config.ts, provider-profiles.ts, routing-rules.ts (+test), transport/anthropic-compat.ts (+test), transport/openai.ts, gemini-sse.ts, ollama-jsonl.ts, openai-responses-sse.ts, format-translation.test.ts ;
    • 2 add/add : collect-sse-message.ts (+test) — les deux côtés ont créé le fichier ;
    • les docs racine : CLAUDE.md, ROADMAP.md.

    Verdict : rebasable au sens strict (la branche vit, l'historique est sain, aucun commit perdu), mais le plan « rebase sur v7.62 » du corps ne mène nulle part — v7.62 est 1 020 commits derrière la tête upstream et 3 majors cassantes (8.0/9.0/10.0) sont passées entre-temps. La question S2 se confond désormais avec l'arbitrage (c) de #267 : soit on rebase la branche sur v10.4.1 et ses 21 conflits (dont l'a priori le plus lourd est l'add/add collect-sse-message — les deux camps ont construit le même organe), soit la branche devient un témoin de l'état d'août et la resync repart de main. C'est un arbitrage user, pas un geste worker.

    (Toutes les mesures : git rev-parse/ls-remote/merge-base --is-ancestor/rev-list --count/merge-tree --write-tree, clone po-203, lecture seule.)

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