Skip to content

ESTATE: de-vendor embedded affinescript trees (bofj-kitt / proof-burrower / developer-ecosystem) #230

Open

Description

@hyperpolymath

Is your feature request related to a problem? Please describe.

The estate dialect-conformance audit found 3 repos that vendor a full copy of
the affinescript tree
rather than depending on it:

  • bofj-kitt — affinescript/{conformance,docs,examples,stdlib,test,test_if.affine} (~218 .affine)
  • proof-burrower — same shape (~221 .affine)
  • developer-ecosystem — affinescript-ecosystem/{affinescript-deno-test,rattlescript} (~208 .affine)

Their large "drift" counts in the audit are the vendored affinescript
negative/test corpus
, not independent consumer drift — i.e. phantom drift
that tracks whatever upstream snapshot was copied. Risk: the vendored copies
silently rot vs upstream main (stale stdlib/grammar/conformance), and they
inflate every estate-wide .affine scan.

Describe the solution you'd like

De-vendor: replace each embedded affinescript tree with a pinned dependency
(submodule / package ref / documented snapshot with a refresh job), so there is
one source of truth and no phantom drift.

Describe alternatives considered

  • Leave as-is — rejected: perpetual stale-snapshot risk + scan noise.
  • Fold into the dialect-conformance campaign — rejected: distinct problem class
    (supply-chain / vendoring policy, not dialect drift). Tracked separately here.

Additional context

DEFERRED — explicitly out of scope for the dialect-conformance campaign
(#228/#229); filed so it is not silently forgotten (user decision 2026-05-18).
Not blocked by #228. Audit harness + evidence:
/home/hyperpolymath/dev/repos/.affine-audit/ (results.tsv rows for
bofj-kitt / proof-burrower / developer-ecosystem).

Activity

  1. hyperpolymath commented on May 19, 2026

    @hyperpolymath
    OwnerAuthor

    Cross-link from the #229 closure (2026-05-19) — #230 is the home for this.

    The #229 post-port truthing (docs/RESCRIPT-ELIMINATION.adoc §"#229
    closure status") found that every ReScript-surface file the audit
    flagged in developer-ecosystem, proof-burrower, and bofj-kitt is a
    vendored copy of the affinescript repo itself —
    affinescript/stdlib/effects.affine,
    affinescript/tests/conformance/run_all.affine,
    affinescript/docs/guides/warmup/02_ownership.affine (dev-ecosystem nests
    it deeper under affinescript-ecosystem/rattlescript/affinescript/…). The
    mutable matches were comments ("// State effect - mutable references",
    "// ── mut: mutable borrow ──"), i.e. scanner false positives — the same
    discipline as the affinescript-own-corpus exclusion and the panll FP.

    Consequence:

    No action change to #230's scope; this just makes it the explicit,
    authoritative home so the overlap is not re-litigated under #229.
    Refs #229.

  2. hyperpolymath commented on May 27, 2026

    @hyperpolymath
    OwnerAuthor

    Cross-reference (triage 2026-05-27): scope-disambiguated against #229 and #392 — these three are distinct, not consolidatable.

    #230 pulls copies INTO upstream alignment; #392 pushes subtrees OUT of upstream. Inverse directions, disjoint target sets, distinct problem classes. Consolidation is not safe.

  3. hyperpolymath commented on Sep 19, 2026

    @hyperpolymath
    OwnerAuthor

    Status measured today (2026-09-19) — one of the three is done, one is ambiguous and needs your ruling before anything is deleted.

    Repo State
    bofj-kitt ✅ de-vendored — no affinescript/ path exists on main
    proof-burrower ❌ still vendored — 616 files under affinescript/
    developer-ecosystem ❓ top-level affinescript-ecosystem/ holds affinescript/, affinescript-vite/, affinescriptiser/, rattlescript/, affinescript-deno-test/ — 1,701 entries

    The ambiguity is with #392, and it is not mine to resolve. #392 asks for the binding subtrees (affinescript-vite/, affinescript-dom/, affinescript-pixijs/, affinescript-tea/, affinescriptiser/) to be moved out of the affinescript repo and into developer-ecosystem — i.e. developer-ecosystem is the intended destination for those trees. But the affinescript/ copy sitting inside affinescript-ecosystem/ is still a vendored duplicate of the main repo, which is what this issue is about.

    So: proof-burrower is unambiguously actionable; developer-ecosystem needs #230 and #392 reconciled first — either the vendored affinescript/ is removed and only the binding subtrees stay, or the two issues agree a different shape. I have not deleted anything there.

  4. added
    scope:estateAffects many or all repos across the estate
    feeds:valence-shellFeeds valence-shell's proofs/engineering (D127): judge progress by what it contributes there
    on Sep 30, 2026
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

    enhancementNew capability or improvement to existing behaviourfeeds:valence-shellFeeds valence-shell's proofs/engineering (D127): judge progress by what it contributes therepriority:p3Low - nice to havescope:estateAffects many or all repos across the estate

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions