The OpenSIN-AI organization had accumulated duplicated, ambiguously-owned, and wrongly-located repos across four distinct failure modes:
- Split siblings: three near-identical repos for the coding-team agents that were designed for a pnpm workspace but lived in separate repositories, so the
workspace:*dependencies could never resolve. - Duplicated Python platforms: a standalone
opensin-ai-coderepo claimed to be "the Python Agent Development Platform" while theOpenSINmonolith already shippedopensin_core/opensin_cli/opensin_api/opensin_sdk. - Split setup repos:
Infra-SIN-Dev-Setup(developer environment) andOpenSIN-onboarding(end-user first-run) owned the same domain with different audiences. - Ambiguous web surface + stale marketing copy:
OpenSIN-WebApphad no GitHub description and was easily confused withwebsite-my.opensin.ai.Biz-SIN-Marketingadvertised hard-coded counts ("372 Packages · 620 Agent Teams · 79 Blog Posts") that contradictedOpenSIN's own description ("310+ packages") and were internally inconsistent.
Merged into OpenSIN-AI/Team-SIN-Code-Core:
A2A-SIN-Coding-CEO→agents/coding-ceo/A2A-SIN-Code-AI→agents/code-ai/
Added pnpm-workspace.yaml, packages/shared-helpers/ (previously-missing workspace:* target), and start:coding-ceo / start:code-ai scripts.
PR: https://github.com/OpenSIN-AI/Team-SIN-Code-Core/pull/2 — merged.
Merged opensin-ai-code → OpenSIN/opensin_agent_platform/. Preserved source tree; rationalization plan documented in the new folder's README. Not yet wired into production build.
PR: OpenSIN-AI/OpenSIN#1720 — merged.
Added to OpenSIN-overview:
START-HERE.mddocs/CANONICAL-REPOS.md(initial version)docs/CONSOLIDATION-2026-04.md
PR: #29 — merged.
OpenSIN-AI/A2A-SIN-Coding-CEO— archived with redirect README.OpenSIN-AI/A2A-SIN-Code-AI— archived with redirect README.OpenSIN-AI/opensin-ai-code— archived with redirect README.
Merged OpenSIN-onboarding → Infra-SIN-Dev-Setup/user-onboarding/. New top-level README splits developer vs. end-user paths.
PR: OpenSIN-AI/Infra-SIN-Dev-Setup#34
Redirect PR: OpenSIN-AI/OpenSIN-onboarding#5
- Added
Related repostable to README distinguishing the three web properties (chat.opensin.ai,my.opensin.ai,opensin.ai). - Fixed
OpenSIN-Code/Infra-SIN-OpenCode-Stacktypo →Delqhi/.... - Set GitHub repo description and homepage (was blank).
PR: https://github.com/OpenSIN-AI/OpenSIN-WebApp/pull/13
- Blog-post badge 79 → 89 (actual disk count).
- Replaced hard-coded "372 Packages · 620 Agent Teams" with a qualitative claim + pointer to
OpenSIN-overview/registry/as the future SSOT for numbers. - Quick Links:
OpenSIN-Codeis the Autonomous CLI, not a VS Code Extension.
PR: https://github.com/OpenSIN-AI/Biz-SIN-Marketing/pull/60
docs/CANONICAL-REPOS.mdexpanded from 6 entries (wave 1) to ~14 entries covering: Python kernel, coding surface, web surface (3), documentation, infra (merged), marketing, templates, org meta, external SSOT.- Added explicit Naming convention section documenting the two schemes (flagship vs. domain-prefix) and when to use each.
- Added a repo-proposal gate — four questions that must be answered before creating any new
OpenSIN-AI/*repo. START-HERE.mdupdated to match the expanded map, with a Delqhi SSOT callout.
This PR — https://github.com/OpenSIN-AI/OpenSIN-overview/pull/
OpenSIN-AI/OpenSIN-onboarding— archived with redirect README.
| Before | After |
|---|---|
| 9 overlapping code repos | 4 code repos + clearly-split web surface (3) + infra (1) + template (1) + marketing (1) + 2 meta = 12 distinct, non-overlapping repos |
| 4 archived Wave-1+2 | A2A-SIN-Coding-CEO, A2A-SIN-Code-AI, opensin-ai-code, OpenSIN-onboarding |
- Transfer
OpenSIN-Code/Infra-SIN-OpenCode-StackandOpenSIN-AI/Infra-SIN-Global-Brainto OpenSIN-AI. Six+ repos declare these as SSOT in their READMEs. They must live under the same governance as the repos that depend on them.
- Diff
OpenSIN/opensin_agent_platform/againstOpenSIN/opensin_core/(both havehooks,plugins,skills). Port genuinely useful logic intoopensin_coreand retire the folder.
- Regenerate
OpenSIN-overview/registry/MASTER_INDEX.mdandplatforms/registry.jsonto reflect post-wave-2 layout. - Run a link-fixer across all README files: find every reference to the archived repos (
A2A-SIN-Coding-CEO,A2A-SIN-Code-AI,opensin-ai-code,OpenSIN-onboarding) and replace with the canonical target fromdocs/CANONICAL-REPOS.md.
- When adding
Team-SIN-Google,Team-SIN-BugBounty, etc. — they go as folders under the existingTeam-SIN-*monorepo that owns their domain, NOT as standalone repos. See the repo-proposal gate indocs/CANONICAL-REPOS.md.
Transferred the two external SSOT repos from Delqhi (personal account) to OpenSIN-AI (organization) and renamed them per the canonical Infra-SIN-* convention:
| Before | After |
|---|---|
OpenSIN-Code/Infra-SIN-OpenCode-Stack |
OpenSIN-Code/Infra-SIN-OpenCode-Stack |
Delqhi/global-brain |
OpenSIN-AI/Infra-SIN-Global-Brain |
Impact:
- Both repos now live under the organization's governance: branch protection, team reviews, audit log.
- GitHub automatically redirects the old URLs, so
sin-syncreferences and the 6+ repo READMEs that cited the old paths continue to work during the transition. They will be updated to the canonical path in a follow-up link-sweep. - The transfer fixes the governance gap called out in
docs/CANONICAL-REPOS.md § 8— the section is rewritten to reflect the new home in this PR.
Follow-ups:
- Link-sweep: update all repo READMEs that reference the old
Delqhi/...paths to the new canonical paths (GitHub redirects cover us for now, but we don't want permanent indirection). → tracked as FOLLOWUPS.md § L1. - Verify
sin-synctooling works with the new repo names or uses the GitHub redirect transparently.
Closes the remaining Wave-2.5 inconsistencies inside OpenSIN-overview and categorizes the last two in-org duplicate repos.
Every remaining OpenSIN-Code/Infra-SIN-OpenCode-Stack and Delqhi/global-brain reference inside OpenSIN-overview has been rewritten to the canonical OpenSIN-AI/Infra-SIN-* path, with a one-line note where the legacy path still matters (for people searching for the old name):
README.md— agent config table (6 rows) now points toInfra-SIN-OpenCode-StackSTART-HERE.md— section title "Externe SSOT (noch in @Delqhi...)" rewritten to "Infrastruktur-SSOT (seit 2026-04-18 in-Org)" with redirect hintBOUNDARIES.md— canonical-ownership table updated; staleai-agent-systementry replaced withOpenSIN-backend;Infra-SIN-Global-Brainaddedgovernance/BOUNDARY-ROLE-RULES.md— matching update for rule listplatforms/canonical-repos.json— full rewrite (v3.0.0): moved the two SSOT entries out ofexternal_ssotinto a newinfrastructure_ssotsection undercanonical_repos, markedtransferred_at: 2026-04-18, recordedlegacy_pathfor searchability, and emptiedexternal_ssot
OpenSIN-AI/opensin-ai-cli (Rust coding CLI) and OpenSIN-AI/opensin-ai-platform (plugin ecosystem) were listed as "NEU April 2026" in the README but were not in the canonical map. Both overlap with existing canonical repos:
opensin-ai-cli⟷OpenSIN-Code(TS autonomous CLI + Rust engine)opensin-ai-platform⟷OpenSIN/opensin_agent_platform/(plugin ecosystem)
Instead of silently accepting them, Wave 3 flags both as "Rationalization pending — do not extend" in:
README.md(Core Engine + Doku & SSOT sections)registry/MASTER_INDEX.md § 99docs/CANONICAL-REPOS.md § 9(new section)platforms/canonical-repos.json(newrationalization_pendingarray)
Each has a decision ticket in docs/FOLLOWUPS.md § R1 and § R2.
README.md— fixed the accidental duplicatechat.opensin.airow whereOpenSIN-backendwas also claimed to serve that domain (corrected: backend is the internal API consumed byOpenSIN-WebApp).README.md—OpenSIN-overviewSSOT entry "Registry aller 165 Repos" → "MASTER_INDEX.md (188 Repos)".registry/MASTER_INDEX.md— header count 187 vs 188 inconsistency fixed;Infra-SIN-OpenCode-StackandInfra-SIN-Global-Brainadded to § 11 Infrastructure.docs/opensin-ai-agent-feature-spec.md— 5 references to the now-flaggedopensin-ai-cliand 1 reference to the archivedopensin-ai-coderewritten to canonicalOpenSIN-Code/opensin_sdk.
Central, stable-anchor tracker for all open consolidation work:
R1—opensin-ai-clivsOpenSIN-CodedecisionR2—opensin-ai-platformvsOpenSINdecisionR3—opensin_agent_platform/vsopensin_core/internal diff (Wave-1 carry-over)L1— Delqhi → OpenSIN-AI link sweep across consumer reposL2— Archived-repo link sweep across consumer reposC1—OpenSIN-WebAppregistry description refreshC2—DEPLOYMENT_STATUS.mdfreshness check
Every ticket has a stable #anchor so other docs deep-link to it.
| Category | Count | Notes |
|---|---|---|
| Canonical code repos | 4 | OpenSIN, OpenSIN-Code, OpenSIN-backend, Team-SIN-Code-Core |
| Canonical web surfaces | 3 | website-opensin.ai, website-my.opensin.ai, OpenSIN-WebApp |
| Canonical meta / docs | 2 | OpenSIN-overview, OpenSIN-documentation |
| Canonical infra | 3 | Infra-SIN-Dev-Setup, Infra-SIN-OpenCode-Stack, Infra-SIN-Global-Brain |
| Canonical templates | 1 | Template-SIN-Agent |
| Canonical business | 1 | Biz-SIN-Marketing |
| Wave 1/2 archived | 4 | A2A-SIN-Coding-CEO, A2A-SIN-Code-AI, opensin-ai-code, OpenSIN-onboarding |
| Rationalization pending | 2 | opensin-ai-cli, opensin-ai-platform (flagged, not extended) |
Every ambiguously-owned repo now has exactly one of three states: canonical, archived, or rationalization-pending with an open decision ticket. Agents opening PRs can read CANONICAL-REPOS.md and FOLLOWUPS.md and know where their change belongs without asking.
Wave 3 identified 5 Prio-1 decisions that needed to be made before the next marketing push. Wave 4 made all 5 and shipped the artifacts.
| # | Topic | Decision |
|---|---|---|
| 1 | UI-layer role conflict | Strict 4-surface separation: opensin.ai / my.opensin.ai / chat.opensin.ai / docs.opensin.ai — see PRODUCT-VISION.md § UI-Schichtung |
| 2 | Marketplace mechanic | Option A — Team-SIN-* are metadata manifests. Schema + 17 manifests shipped. |
| 3 | OpenSIN-backend vs Core-SIN-Control-Plane |
Merge into OpenSIN-backend. Core-SIN-Control-Plane → archived with redirect after migration (§ CP1). |
| 4 | Team-SIN-Code-Core integrity |
Audit-confirmed scaffold (not a broken merge). Normalized into Option A like the other 16 teams. |
| 5 | Scaffold + dead repo audit | Audit script shipped; 4 dead repos archived; 6 A2A-SIN-Code-* kept open pending R1 decision (§ S2). |
PRODUCT-VISION.md— all 5 topics bumped from "proposed" to "DECIDED"schemas/team.schema.json— JSON Schema (Draft 2020-12, full property coverage)schemas/README.md— schema usage + aggregator contracttemplates/teams/*.json— all 17 team manifests (Team-SIN-Commerce = gold-standard reference)templates/teams/README.md— per-team template directory guidescripts/audit-repos.js— classifier (alive / active / scaffold / dead / archived) withgh repo listinputscripts/validate-team-manifests.js— Ajv validation against the schema (CI-ready)scripts/push-team-manifests.js— pushesteam.json+ README banner into each downstreamTeam-SIN-*reporegistry/SCAFFOLD_AUDIT.md— generated audit snapshot (2026-04-18)
A2A-SIN-Facebook— 0 kb, never implementedA2A-SIN-Mattermost— 0 kb, never implementedA2A-SIN-RocketChat— 0 kb, never implementedA2A-SIN-Slack— 0 kb, never implemented
CP1— actual code-level merge ofCore-SIN-Control-Plane→OpenSIN-backendS2— per-repo decision on 6A2A-SIN-Code-*scaffolds (tied to R1)M1— team-manifest downstream-push to 17Team-SIN-*repos (DONE via script)M2—oh-my-sin.jsonaggregator GH Action inInfra-SIN-OpenCode-Stack- Old R1/R2/R3/L1/L2/C1/C2/D1 still stand, but now each has a smaller scope because the strategic questions around them are answered.
The organization has a coherent topology: 1 product vision, 3 product tiers, 4 UI surfaces, 4 canonical code repos, 3 infra repos, 17 marketplace teams (all with manifests), ~80 active agents, 8 archived repos, 2 rationalization-pending repos with decision tickets. Anyone can read START-HERE → PRODUCT-VISION → STATE-OF-THE-UNION → CANONICAL-REPOS in 15 minutes and be fully oriented.