Skip to content

task: post-detach verification against the pre-detach snapshot #162

Closed

Description

@diffwireauto

Parent: #158.

Prove the detach did what we wanted and broke nothing, by diffing against the pre-detach snapshot.

Corrected 2026-10-03. The original version of this checklist expected our commit SHAs to return 404 under Kpa-clawbot/CoreScope after the detach. That was wrong and would have made a successful detach look like a failure. Settled empirically on a disposable fork — see the correction comment. Detaching stops future object sharing but does not retract objects already in the network.

Checks

Did it work

check expected
gh api repos/OKI-Mesh/CoreScope -q .fork false
parent / source absent (NONE)
repos/Kpa-clawbot/CoreScope/commits/66aa4c5 still 200 — pre-detach objects are retained upstream by design
repos/Kpa-clawbot/CoreScope/commits/ff5e338 still 200 — same
a commit pushed after the detach 422 / not found upstream — this is the real proof that sharing stopped
Sync fork button gone from the UI

The load-bearing check is the second-to-last one. Push a commit after detaching and confirm it is not reachable upstream; that is what distinguishes a completed detach from a stalled one. Note the detach is asynchronous and took ~75 s on the test repo, so fork staying true for a minute after the click is normal.

Did anything break — every row re-read and diffed against the snapshot in #160: repo settings, rulesets (including bypass_actors), both self-hosted runners online, Actions variables (ENABLE_STAGING_DEPLOY still true), secret names, labels, board links, webhooks, open issue and PR numbers, GHCR tags.

Issues, PRs, comments, stars and watchers are not at risk — verified on the test repo, all preserved across the detach. The docs warning about losing them applies to the manual clone-delete-recreate procedure, not the Settings path.

Does it still run

  • git log origin/master -1 matches the snapshot SHA exactly — history unchanged.
  • A no-op commit or manual dispatch produces a green CI/CD Pipeline on master.
  • 🚀 Deploy Staging still reaches the corescope-dev-offband runner.

Is upstream still watchable

  • git fetch of https://github.com/Kpa-clawbot/CoreScope as a plain remote still works.
  • gh pr list -R Kpa-clawbot/CoreScope still works.

Both already verified as detach-independent in #159 (control test against grafana/grafana, a repo we have no fork relationship with).

Done when

Every check above is recorded here with its actual output, and any row that differs from the snapshot is either fixed or has its own issue.

Activity

  1. diffwireauto commented on Oct 3, 2026

    @diffwireauto
    ContributorAuthor

    Correction: the 404 checks in this issue are wrong and must not be used

    This issue's "Did it work" table expects our commit SHAs to return 404 under Kpa-clawbot/CoreScope after the detach. They will not. Anyone running this checklist as written would conclude the detach had failed when it had succeeded.

    Replaced by measurement, not reasoning. Tested end to end on a disposable fork, OKI-Mesh/fork-detach-test (a 1 KB public fork of octocat/Hello-World, meeting the same three preconditions as CoreScope), detached by the owner 2026-10-03 ~02:36Z.

    What the experiment showed [verified: api 2026-10-03]

    commit pushed reachable under the former parent afterwards
    e717edc before detach yes — 200
    6d4bf44 after detach no — 422 "No commit found for SHA"

    Detaching stops future object sharing. It does not retract objects already in the network. Every commit pushed to CoreScope while it was a fork stays readable under Kpa-clawbot/CoreScope permanently, including commits on branches we have since deleted.

    Accepted, not a problem to solve: this is public code, and what went upstream is upstream's to hold.

    Corrected "Did it work" table

    check expected
    gh api repos/OKI-Mesh/CoreScope -q .fork false
    parent / source absent (NONE)
    repos/Kpa-clawbot/CoreScope/commits/66aa4c5 still 200 — pre-detach object, retained by design
    repos/Kpa-clawbot/CoreScope/commits/ff5e338 still 200 — same
    a commit pushed after the detach 422 / not found upstream — this is the real proof sharing stopped
    Sync fork button gone from the UI

    The load-bearing check is the last-but-one: push one commit after detaching and confirm it is not reachable upstream. That is what distinguishes a completed detach from a stalled one.

    Also verified by the same experiment — nothing is destroyed [verified: api 2026-10-03]

    The docs warning on Detaching a fork reads: "The new repository will not retain any of its issues, pull requests, wikis, stars, watchers, comments, child forks, or other metadata." That warning belongs to the manual clone → delete → recreate procedure further down the same page. It does not apply to the Settings path.

    Measured across the detach on the test repo:

    before after
    fork / parent / source true / octocat/Hello-World false / NONE / NONE
    its own issue #1 present present, open
    the comment on it 1 1, body intact
    its own PR #2 open open, mergeable=true
    stars 1 1
    watchers 1 1
    has_issues true true

    So CoreScope's 124 issues and 33 PRs are not at risk, and #160's snapshot does not need to attempt the impossible job of preserving issue history. It covers settings, which is what it can cover.

    Detach completed in roughly 75 seconds and is asynchronous, as the docs state — fork stayed true for over a minute after the click. Do not read that interval as a failed detach.

    Provenance of the error

    The original table was written from the assumption that severing the network withdraws shared objects. That was never tested before being written into a verification checklist. The owner's prior knowledge was correct: what goes upstream stays upstream.

    The test repository has been deleted now that the result is recorded here.

  2. added 2 commits that reference this issue on Oct 3, 2026
  3. diffwireauto commented on Oct 3, 2026

    @diffwireauto
    ContributorAuthor

    Post-detach verification: 34 of 34 pass

    Detach completed 2026-10-03T03:05:17Z, ~60 s after the owner's click. All checks below [verified: api + box 2026-10-03].

    Did it work

    check result
    fork false
    parent / source absent
    network_count 0 (was 67)
    repos/Kpa-clawbot/CoreScope/commits/66aa4c5 200 — pre-detach object, retained upstream as expected
    repos/Kpa-clawbot/CoreScope/commits/ff5e338 200 — same
    aeeb798, pushed AFTER the detach 404/422 upstream — object sharing has stopped

    The last row is the load-bearing proof. A throwaway branch carried one commit, it was confirmed unreachable under the former parent, and the branch was deleted in the same run.

    Did anything break — nothing

    baseline (#160) now
    master tip ff5e338f8c2bb612477e2a1bbb75040d0a9c567b identical
    ruleset 18667552 Protect Main active, 4 rules active, 4 rules
    ruleset rules deletion, non_fast_forward, pull_request, required_status_checks all 4 present
    bypass actors OrganizationAdmin/always, RepositoryRole 5/always both intact
    required check context ✅ Go Build & Test identical, codepoint for codepoint
    runners corescope-dev-offband, deadbeef-prod both present, both online
    Actions variables ENABLE_STAGING_DEPLOY=true unchanged
    secret names PROJECT_PAT unchanged
    labels 34 34
    board link #2 CoreScope #2
    webhooks / deploy keys none none
    issues, all states 124 124
    pull requests, all states 33 33
    visibility, default branch, merge methods, issues/wiki/projects, stars, watchers per #160 all identical

    The required-check context deserves a note: the automated run flagged it as a mismatch, but that was this session's console decoding gh's UTF-8 as cp1252. Re-read as bytes and decoded explicitly it is U+2705 U+0020 U+0047 U+006F ... — identical to baseline, and identical to the name: of the job in deploy.yml that produces it. That exact-string match, emoji included, is what the whole required-check mechanism depends on, and it survived.

    Does it still run

    CI/CD Pipeline dispatched on master at ff5e338 after the detach, run 37092118347:

    job result
    Detect changes success
    ✅ Go Build & Test success
    🏗️ Build & Publish Docker Image success
    🚀 Deploy Staging success
    🎭 Playwright E2E Tests still running at time of writing; not a required check and not a gate for this issue

    Deploy Staging ran on runner corescope-dev-offband, 03:20:46 → 03:21:54 [api: actions/runs/37092118347/jobs], and the dev container came back healthy on the box [box: offband, docker ps]. Self-hosted runners, GHCR publishing and the dev deploy path all work with no fork relationship.

    Is upstream still watchable — yes

    • git ls-remote --heads https://github.com/Kpa-clawbot/CoreScope.git master → 093e320c2bda
    • gh api repos/Kpa-clawbot/CoreScope → reads fine

    Both are ordinary public-repo operations, independent of any fork link, as #159 established with grafana/grafana as a control.


    Outcome

    CoreScope is a standalone repository. The Sync fork network button is gone, so no future one-click merge of upstream can undo what #144 removes. Nothing was lost in the process.

    Accepted and unchanged: commits pushed while CoreScope was a fork stay readable under Kpa-clawbot/CoreScope permanently. Only post-detach commits are ours alone.

    Remaining under the Epic: #163 (how we track upstream now the link is gone) and #164 (live CI still had the pre-handover registry hardcoded — fixed on fix/164-release-fast-path-registry, awaiting a PR grant).

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

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions