The wiki integration reaches into the domains registry directly instead of through the integration contract #44

Open
opened 2026-09-21 07:18:14 +00:00 by cgalo5758 · 3 comments
Owner

What a contributor runs into

The wiki integration imports the domains registry package and calls it directly, while every other integration reaches core through the registered contract (manifest, routes, workers, configuration, migrations). A contributor changing the registry's API finds one integration coupled to it by import, and a contributor writing a new integration that needs a domain has no contract to follow because the one example bypasses it.

Why it costs

The integration contract is the promise that integrations can be added and removed without touching core. One import that ignores it makes the promise false and leaves the registry's surface undefined for the next integration.

Where

internal/integrations/fedwiki (the import of internal/domains); internal/integration (the contract that has no domain verb).

Done when

The contract carries what an integration needs from the registry (a way to claim, place and release a domain for a resource it owns), the wiki integration uses it, and no integration imports the registry package.

## What a contributor runs into The wiki integration imports the domains registry package and calls it directly, while every other integration reaches core through the registered contract (manifest, routes, workers, configuration, migrations). A contributor changing the registry's API finds one integration coupled to it by import, and a contributor writing a new integration that needs a domain has no contract to follow because the one example bypasses it. ## Why it costs The integration contract is the promise that integrations can be added and removed without touching core. One import that ignores it makes the promise false and leaves the registry's surface undefined for the next integration. ## Where [`internal/integrations/fedwiki`](https://git.coopcloud.tech/wiki-cafe/member-console/src/commit/b7a0e15/internal/integrations/fedwiki) (the import of [`internal/domains`](https://git.coopcloud.tech/wiki-cafe/member-console/src/commit/b7a0e15/internal/domains)); [`internal/integration`](https://git.coopcloud.tech/wiki-cafe/member-console/src/commit/b7a0e15/internal/integration) (the contract that has no domain verb). ## Done when The contract carries what an integration needs from the registry (a way to claim, place and release a domain for a resource it owns), the wiki integration uses it, and no integration imports the registry package.
cgalo5758 added the
kind
debt
area/domainsarea/fedwikiarea/integrations
labels 2026-09-21 07:18:14 +00:00
Author
Owner

Not fixed by 23d5bad, but it now has a planned route. The published integration contract will carry a names capability: an application asks the console to claim, place and release a domain for a resource it owns, and the domains registry stays in core. The wiki integration uses that capability when it moves onto the contract, which removes its import of the registry package.

Design of the delivery core that work builds on: https://git.coopcloud.tech/wiki-cafe/member-console/src/commit/23d5bad/openspec/changes/archive/2026-10-06-integration-delivery-core/design.md

Not fixed by 23d5bad, but it now has a planned route. The published integration contract will carry a names capability: an application asks the console to claim, place and release a domain for a resource it owns, and the domains registry stays in core. The wiki integration uses that capability when it moves onto the contract, which removes its import of the registry package. Design of the delivery core that work builds on: https://git.coopcloud.tech/wiki-cafe/member-console/src/commit/23d5bad/openspec/changes/archive/2026-10-06-integration-delivery-core/design.md
Author
Owner

Two steps of a claim's verification are written twice: the check-now signal (CheckClaimNow in internal/server/member_domains.go, CheckCustomDomainNow in internal/integrations/fedwiki/web/customdomain.go) and the cancel of the verification workflow when a member cancels a claim (CancelClaim and CancelCustomDomainVerification in the same two files). When the names capability exists, one copy of each belongs there, and the wiki integration calls it. The start is not a live copy: startClaimVerification in member_domains.go mirrors the wiki integration's start, but no production code calls it, and scripts/deadcode-testonly.txt already lists it as test-only code owned by #165.

Two steps of a claim's verification are written twice: the check-now signal (`CheckClaimNow` in `internal/server/member_domains.go`, `CheckCustomDomainNow` in `internal/integrations/fedwiki/web/customdomain.go`) and the cancel of the verification workflow when a member cancels a claim (`CancelClaim` and `CancelCustomDomainVerification` in the same two files). When the names capability exists, one copy of each belongs there, and the wiki integration calls it. The start is not a live copy: `startClaimVerification` in `member_domains.go` mirrors the wiki integration's start, but no production code calls it, and `scripts/deadcode-testonly.txt` already lists it as test-only code owned by #165.
cgalo5758 added this to the Public launch milestone 2026-10-20 23:14:03 +00:00
Author
Owner

The two scripts/deadcode-testonly.txt entries for MemberDomainsHandler.startClaimVerification and claimErrorMessage now name this issue, which plans the one copy of each claim-verification step.

The two `scripts/deadcode-testonly.txt` entries for `MemberDomainsHandler.startClaimVerification` and `claimErrorMessage` now name this issue, which plans the one copy of each claim-verification step.
cgalo5758 referenced this issue from a commit 2026-10-22 18:40:40 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: wiki-cafe/member-console#44