Package Stage: Protocells Support - Tracking Issue
**⚠️ AUTO-GENERATED:** Do not edit this description directly. Source of truth: [tracking_issue_description.md](https://gitlab.com/cwoolley-gitlab/ai-workflow-artifacts/-/blob/master/workflow-artifacts/workitem-19604/protocells_geo_support_workflow/tracking_issue_description.md). Any manual edits **will be overwritten** on next sync. # Package Stage: Protocells Support - Tracking **Implementation plan:** https://gitlab.com/cwoolley-gitlab/ai-workflow-artifacts/-/blob/master/workflow-artifacts/workitem-19604/a-plan/v40/plan-v40.md **Verification environment:** https://gitlab.com/issue-reproduce/pkg-geo-get — see `docs/verification-process.md` ## Current Status ### In Progress - GroupDistribution and ProjectDistribution — leaning towards D-split migration (consistent with other Debian models), but doing due diligence spike on dual-blob replicator approach first ([comment](https://gitlab.com/gitlab-org/gitlab/-/work_items/592643#note_3229900022)) ### Verification Complete — Awaiting Review - ProjectComponentFile — automated and manual verification passed, ready for review request ### On Hold - RPM: Package team confirmed RPM registry is an abandoned MVC. Geo replication on hold per @crystalpoole ([comment](https://gitlab.com/gitlab-org/gitlab/-/issues/379055#note_3220415029)). Tasks and MRs closed. ## Process per Add Geo Support Issue **Entry point:** Run `/protocells-geo-next` to see what's actionable and pick the next step. For each issue, the cycle is ([Per-Model Execution Checklist](https://gitlab.com/cwoolley-gitlab/ai-workflow-artifacts/-/blob/master/workflow-artifacts/workitem-19604/a-plan/v40/plan-v40.md#per-model-execution-checklist)): 1. [Validate generator](https://gitlab.com/cwoolley-gitlab/ai-workflow-artifacts/-/blob/master/workflow-artifacts/workitem-19604/a-plan/v40/plan-v40.md#c1-pre-flight-validate-generator) against Nuget::Symbol reference 2. [Generate Task 1](https://gitlab.com/cwoolley-gitlab/ai-workflow-artifacts/-/blob/master/workflow-artifacts/workitem-19604/a-plan/v40/plan-v40.md#c2-task-1-modify-db-schema-for-geo-support--mr-1) (DB schema) → create MR 3. [Generate Task 2](https://gitlab.com/cwoolley-gitlab/ai-workflow-artifacts/-/blob/master/workflow-artifacts/workitem-19604/a-plan/v40/plan-v40.md#c3-task-2-implement-geo-replication-behind-feature-flag--mr-2) (implementation) → create stacked MR 4. [Deploy, verify, and iterate](https://gitlab.com/issue-reproduce/pkg-geo-get/-/blob/main/docs/verification-process.md) — omnibus build → deploy to GET → automated verification → manual verification. Iterate as needed: fix issues → re-generate → rebuild → re-verify. See also [review iteration protocol](https://gitlab.com/cwoolley-gitlab/ai-workflow-artifacts/-/blob/master/workflow-artifacts/workitem-19604/a-plan/v40/plan-v40.md#c8-review-iteration-protocol). 5. When both MRs are verified and review-ready, request review 6. After Task 1 and Task 2 merge: [Task 3](https://gitlab.com/cwoolley-gitlab/ai-workflow-artifacts/-/blob/master/workflow-artifacts/workitem-19604/a-plan/v40/plan-v40.md#c4-task-3-release-geo-support--mr-3) (release) → [feature flag rollout](https://gitlab.com/cwoolley-gitlab/ai-workflow-artifacts/-/blob/master/workflow-artifacts/workitem-19604/a-plan/v40/plan-v40.md#c7-feature-flag-rollout-process-per-issue-after-task-3) Task 1 is never merged independently — both Task 1 and Task 2 must be fully verified before requesting review on either. ## Prerequisites - [x] A1: Dual-uploader question resolved → implementation in https://gitlab.com/gitlab-org/gitlab/-/issues/592643+s - [x] A2: Organization-based selective sync validated - [x] A3: Object storage handling decided for package models ## Workflow Tooling - [x] B2: Generator script created and validated - [x] B3: Claude Code skills created and symlinked - [x] B4: This tracking issue created - [x] B5: Geo tracking database configured for development (via `geo.experimental.allow_secondary_tests_in_primary`) ## Add Geo Support Issues ### 1. Packages::Debian::ProjectComponentFile (https://gitlab.com/gitlab-org/gitlab/-/issues/333611+s) - [x] Generate Task 1 (DB schema) → https://gitlab.com/gitlab-org/gitlab/-/work_items/594713+s - [x] MR: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/228787+s - [x] Generate Task 2 (implementation) → https://gitlab.com/gitlab-org/gitlab/-/work_items/594714+s - [x] MR: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/228959+s - [x] Verification passed — **Status: automated and manual verification PASS** - 2026-03-30: Discovered llhttp-ffi bug blocking ALL Geo blob sync (#595139+s) — runtime workaround (gem upgrade + monkey-patch) required on both nodes until MR !229530+s merges - 2026-03-30: Debian ProjectComponentFile replication verified via S3 bucket content match — PASS, but REST API counters absent (replicator not registered in REPLICATOR_CLASSES) - 2026-03-31: Omnibus build green, deployed to GET, 0 Geo-related CI failures - 2026-04-07: **Automated verification PASS.** With llhttp workaround + `geo_packages_debian_project_component_file_replication` feature flag enabled, REST counter incremented 4→5 in ~50s. Root cause of llhttp issue: `rugged` 1.9.0 corrupts Omnibus libffi 3.2.1 FFI callbacks on kernel >= 6.8 (#595139+s). Upstream fix: MR !230361+s. - 2026-04-13: **Manual verification PASS.** GUI inspection confirmed replication working correctly. - [ ] Request review - [ ] Task 1 and Task 2 merged - [ ] Task 3: Release → https://gitlab.com/gitlab-org/gitlab/-/work_items/594715+s - [ ] MR: _not yet created_ - [ ] Feature flag rollout ### 2. Packages::Debian::GroupComponentFile (https://gitlab.com/gitlab-org/gitlab/-/issues/556945+s) - [ ] Generate Task 1 (DB schema) — **Status: not started** - [ ] MR: _not yet created_ - [ ] Generate Task 2 (implementation) - [ ] MR: _not yet created_ - [ ] Verification passed - [ ] Request review - [ ] Task 1 and Task 2 merged - [ ] Task 3: Release - [ ] MR: _not yet created_ - [ ] Feature flag rollout ### 3. Packages::Debian::GroupDistribution (https://gitlab.com/gitlab-org/gitlab/-/issues/556947+s) - [ ] Generate Task 1 (DB schema) — **Status: waiting on https://gitlab.com/gitlab-org/gitlab/-/issues/592643+s (spike on dual-blob vs D-split in progress)** - [ ] MR: _not yet created_ - [ ] Generate Task 2 (implementation) - [ ] MR: _not yet created_ - [ ] Verification passed - [ ] Request review - [ ] Task 1 and Task 2 merged - [ ] Task 3: Release - [ ] MR: _not yet created_ - [ ] Feature flag rollout ### 4. Packages::Debian::ProjectDistribution (https://gitlab.com/gitlab-org/gitlab/-/issues/556946+s) - [ ] Generate Task 1 (DB schema) — **Status: waiting on https://gitlab.com/gitlab-org/gitlab/-/issues/592643+s (spike on dual-blob vs D-split in progress)** - [ ] MR: _not yet created_ - [ ] Generate Task 2 (implementation) - [ ] MR: _not yet created_ - [ ] Verification passed - [ ] Request review - [ ] Task 1 and Task 2 merged - [ ] Task 3: Release - [ ] MR: _not yet created_ - [ ] Feature flag rollout ### 5. Packages::Rpm::RepositoryFile (https://gitlab.com/gitlab-org/gitlab/-/issues/379055+s) — **ON HOLD** RPM registry upload was never implemented (abandoned mid-2022 MVC). Package team (@crystalpoole) confirmed Geo replication on hold until the format is revisited. Prod RPM tables are empty (0 rows). Tasks closed, MRs closed. - [x] Generate Task 1 (DB schema) → https://gitlab.com/gitlab-org/gitlab/-/work_items/593815+s (closed) - [x] MR: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/227615+s (closed) - [x] Generate Task 2 (implementation) → https://gitlab.com/gitlab-org/gitlab/-/work_items/593816+s (closed) - [x] MR: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/227707+s (closed) - [ ] Update `every_gitlab_uploader_spec.rb` to mark RPM replication as not needed → https://gitlab.com/gitlab-org/gitlab/-/merge_requests/230471+s
issue