Repository identity migration — rename, or replace with a clean repository¶
Status: Path B executed 2026-08-08 — non-destructively.
TaylorAmarelTech/duecare now exists and holds the full 1,732-commit history.
gemma4_comp was not renamed, archived, deprecated, or modified in any
way: it remains the live public repository that the frozen Kaggle writeup
points judges at, and it stays that way until grading is confirmed complete.
Nothing in the sections below about archiving or link cutover has been done.
Execution receipt (2026-08-08)
| Step | Result |
|---|---|
| New repository | TaylorAmarelTech/duecare, private, created 2026-08-08 |
| History pushed | master + ui-polish-2026-05-23, explicit refspecs only |
| Refs on the new remote | exactly 2 — no refs/backup/*, no refs/pull/* |
| Fresh-clone verification | 1,732 commits; git fetch 'refs/pull/*' returns 0 refs |
| Credential scan of the clone | 0 usable credentials; only the runbook's truncated 12- and 11-character revocation-table prefixes (real keys are 39 and 37 characters) |
| Nomenclature pass | 223 files, 553 replacements |
| Provenance preserved | /pull/, /actions/runs/, and /commit/ URLs in 4 files still resolve against gemma4_comp, where those pull requests and runs actually exist |
| Untouched by design | _archive/**, SECURITY.md, docs/security/** — historical records that would be falsified by rewriting |
| Gates | all six validators PASS; suite matches master exactly (8 pre-existing local-environment failures, identical before and after — see below) |
The refs/pull/* residue described in
security/CREDENTIAL_HISTORY_PURGE.md
does not exist in duecare — it starts clean by construction. That residue
remains in gemma4_comp and is still inert, because both credentials were
revoked at their providers on 2026-08-05.
Known, pre-existing, not caused by this migration: a full local
pytest packages tests run reports 8 failures on duecare and on untouched
gemma4_comp master. They pass in isolation. At least
test_run_fails_cleanly_without_auth fails because this workstation has
Kaggle credentials configured while the test asserts their absence. CI is green
because GitHub Actions has no such credentials. These are environment
artifacts, not defects, and they are not a migration regression.
Publication (2026-08-08, owner-requested)¶
-
duecaremade public; - GitHub Pages enabled with
build_type=workflow; the MkDocs deploy succeeded and https://tayloramareltech.github.io/duecare/ serves the documentation, deep pages included. The previously failing "Deploy docs site" run had failed only because Pages was not yet enabled.
gemma4_comp and its Pages site were not altered and both still return 200.
Duplicate scheduled workflows — one item still open¶
The new repository inherited three cron schedules. All three are read-only
(none commits back), so there is no divergence risk, but until gemma4_comp is
archived both repositories will run them, doubling outbound requests to
third-party NGO and government sites.
| Workflow | Schedule | State on duecare |
|---|---|---|
scheduled-scrape |
daily 06:17 UTC | disabled 2026-08-08 |
entity-harvest |
Mondays 05:23 UTC | still active — see below |
sentinel-weekly |
Mondays 09:00 UTC | still active — see below |
GitHub registers a workflow only after its first run, so the two weekly jobs could not be disabled pre-emptively — the API returns 404 for an unregistered workflow even though the file is present on the default branch. They will register when they first fire on a Monday. Disable them then:
gh workflow disable entity-harvest.yml --repo TaylorAmarelTech/duecare
gh workflow disable sentinel-weekly.yml --repo TaylorAmarelTech/duecare
Do not "fix" this by editing the workflow files, which would fork the two
repositories' CI configuration for a temporary condition. Archiving
gemma4_comp disables its workflows automatically, at which point re-enable
all three on duecare with gh workflow enable.
Repository hardening applied at publication¶
- secret scanning and push protection enabled on
duecare(both were off by default on the new repository — the same gap that let the original credential exposure sit unnoticed for three months); - topics set for discovery, carrying forward the original set minus
hackathon, which described the artifact rather than the project; - description, MIT licence, and
duecare-ai.comhomepage confirmed.
Hugging Face: no card exists to update¶
TaylorScottAmarel/duecare-gemma-4-e4b-safetyjudge is public but empty —
.gitattributes only, no README, no weights, 0 downloads. It is a reserved
placeholder, consistent with the model registry recording every entry as
planned. There is no model card pointing anywhere, so there is nothing to
re-point. If a model is ever published there, its card should cite duecare
and reuse MODEL_CARD_DRAFT.md, which documents the
adapters published in the Kaggle learning-study dataset, not on Hugging
Face.
Archiving gemma4_comp — cancelled by owner decision (2026-08-08)¶
The runbook below recommended archiving the old repository behind a pointer
README. That step is not being taken. The owner's decision is to keep
gemma4_comp online, public, and available indefinitely, with a signpost in
its README directing readers here.
This is the better outcome, and it removes the risk the runbook was hedging against rather than merely deferring it:
- the frozen Kaggle writeup link keeps resolving to a live, non-archived repository, with no "Archived" banner for a reviewer to misread;
- every commit SHA, permalink, and documentation link ever shared stays valid;
- the Kaggle kernels install from
gemma4_compand keep working untouched, so no judged artifact has to be re-pushed and re-run; tayloramareltech.github.io/gemma4_comp/stays published, so the question of whether archiving would have unpublished it never has to be answered.
The signpost landed in gemma4_comp's README on 2026-08-08. It is worded to
route readers rather than to deprecate: submission verifiers stay there, code
reusers come here, Kaggle users change nothing.
Consequence for this repository: duecare is the development line, not a
replacement that requires anything to be shut down. Both remain live. Nothing
in this document authorizes archiving, deleting, or redirecting gemma4_comp.
Optional, no longer required¶
- re-pushing the 3 active Kaggle kernels to install from
duecare. Their currentgemma4_compsource is permanent, so this buys consistency only. It edits a judged artifact and triggers a re-run, so it is worth doing — if at all — well after grading, not during it.
Original planning document follows. It was written before execution and is retained because its cost analysis is what justified choosing Path B.
This document is gated on the same event as
POST_COMPETITION_HOSTING_TRANSITION.md:
the owner confirming that Gemma 4 Good grading is complete. It covers a
different concern — the identity and history of the source repository, not
where the website is hosted.
Why anyone would want this¶
Two goals get bundled together in the phrase "clean repo with a new name." They are separable, they have different costs, and only one of them is actually pressing.
| Goal | What it means | Solved by |
|---|---|---|
| Better name | gemma4_comp is a hackathon-artifact name. The product is DueCare. |
A rename |
| Clean history | Both revoked credentials remain fetchable through GitHub's frozen refs/pull/* refs (see security/CREDENTIAL_HISTORY_PURGE.md) |
A fresh repository, or a GitHub Support request |
A rename does not clean history — the PR refs travel with the repository.
A fresh repository does not require a rename, but it is the only way to
resolve the refs/pull/* residue without depending on GitHub Support.
The hard constraint: do not touch this before results¶
The Kaggle writeup was submitted and is frozen. It points judges at
github.com/TaylorAmarelTech/gemma4_comp, and the competition awards 30 points
for Technical Depth & Execution as verified by the code repository.
- A 404 at that URL is a direct scoring loss.
- An Archived banner reads as "abandoned" to a reviewer who does not know the backstory.
Neither is worth trading for tidiness. Both goals below survive waiting.
Measured inventory (2026-08-07)¶
What actually pins the current name, counted rather than guessed:
| Surface | Count / state | Breaks on a fresh repo? |
|---|---|---|
Tracked files naming gemma4_comp |
314 | Mechanical sed; most are docs/ and archives |
| Active Kaggle kernels installing from the repo | 3 kernels, 9 refs, via DUECARE_REPO env default |
Yes — each needs a re-push |
| Kaggle writeup link | Frozen, unchangeable | Yes — mitigated by archiving, not deleting |
| GitHub Pages docs URL | tayloramareltech.github.io/gemma4_comp/ — derived from repo name |
Yes, on either path |
| Helm repo URL | Same Pages host | Yes, on either path |
| CI workflows | Use github.repository context; only comments name the repo |
No — portable as written |
| PyPI | Not published (all three package JSON APIs return 404) | No — no immutable external metadata pins the URL |
| Hugging Face adapter repo | Live; model card references the repo | Card edit, cheap |
| Stars / forks / watchers | 4 / 0 / 0 | 4 stars lost; nothing else |
| Repository size | 306 MB (seed_prompts.jsonl alone trips GitHub's 50 MB warning three times) |
An opportunity — see below |
The absence of published PyPI packages is the single most important line in that table. Published package metadata is immutable and would have pinned the old URL forever. It does not exist, so migration is far cheaper than it looks.
Path A — rename in place¶
- GitHub redirects old web and git URLs to the new name, indefinitely, for clone, fetch, and push.
- Stars, issues, pull requests, and history are preserved.
- Cost: the Pages URL changes to
tayloramareltech.github.io/duecare/. Documentation links and the Helm repo URL must be updated. Redirects for Pages are less dependable than for git. - Does not remove the
refs/pull/*residue. - Risk: if anyone later creates a repository named
gemma4_compunder the same account, the redirect breaks permanently.
Path B — fresh repository, archive the old one (recommended)¶
This is the option that does real work: it produces a repository whose history has never contained the credentials, in any ref, cached or otherwise.
# 1. Create the new repository (private first — verify before exposing).
gh repo create TaylorAmarelTech/duecare --private \
--description "DueCare — an agentic LLM safety harness for migrant-worker exploitation"
# 2. Push the already-purged history. No PR refs, no cached SHAs come with it.
git remote add duecare https://github.com/TaylorAmarelTech/duecare.git
git push duecare master:master
git push duecare --tags
# 3. Prove it is clean before making it public.
git ls-remote duecare
# Then, on a fresh clone of the new repo:
# git fetch origin 'refs/pull/*:refs/remotes/origin/pr/*' -> returns nothing
# git log --all -S'<key-prefix>' | wc -l -> 0
Then, and only then:
- Update the 314 tracked references, the 3 Kaggle kernel
DUECARE_REPOdefaults, the docs Pages URL, the Helm repo URL, and the HF model card. - Re-push the 3 active Kaggle kernels so their installs resolve.
- Make
duecarepublic. - Archive — do not delete —
gemma4_comp, with its README replaced by a pointer to the new repository.
Archiving matters: an archived repository stays fully readable and clonable, so the frozen Kaggle writeup link keeps resolving and lands a reader on a clear signpost. Deleting it would break that link permanently, along with every external permalink ever shared.
What Path B also fixes¶
- Makes
security/GITHUB_SUPPORT_REQUEST.mdunnecessary for the new repository — it starts clean by construction. (Send it anyway if the archived repository should also be scrubbed.) - Offers a natural moment to move
configs/duecare/domains/trafficking/seed_prompts.jsonl(57–63 MB across revisions) to Git LFS or a Kaggle dataset, cutting the 306 MB clone. Do this as a deliberate, separately verified change — not silently during the migration, or the "file content is byte-identical" guarantee from the purge is lost.
Recommendation¶
Wait for results. Then take Path B, named duecare, archiving the old
repository with a pointer README.
Path A is tempting because it is one command, but it buys the cosmetic half of the problem and leaves the substantive half — and it still breaks the Pages URL, which is most of Path B's link work anyway. If the Pages URL must change regardless, take the option that also produces genuinely clean history.
If neither goal feels worth the work after results are in: do nothing. The credentials are revoked, the residue is inert, and a working repository that judges have already visited has real value. "Deprecate and replace" is a preference, not a remediation.
Do not¶
- Do not execute any part of this while grading is open.
- Do not delete
gemma4_compunder any circumstance — archive it. - Do not rename and create a fresh repository under the old name; that breaks the rename redirect.
- Do not bundle the LFS/large-file change into the same operation as the identity change.
- Do not push
refs/backup/*to any remote. Those refs hold the original unpurged history.
Acceptance gate¶
- competition grading completion is owner-confirmed;
- the new repository's history is verified clean on a fresh clone,
including
refs/pull/*; - all 3 active Kaggle kernels install and boot from the new URL;
- the docs Pages site and Helm repo URL resolve at their new addresses;
-
gemma4_compis archived, readable, and carries a pointer README; -
python scripts/validate_public_surface.pyandpython scripts/check_external_links.py --checkpass against the new URLs.