Fold Ponente.Common into Ponente.Kanban #79

Closed
opened 2026-08-14 02:01:32 +00:00 by Grandiras · 2 comments
Owner

The Common project is kinda pointless, fold it in. Also decide, whether the Kanban name suffix should remain or if the remaining project should just be called Ponente.

The Common project is kinda pointless, fold it in. Also decide, whether the Kanban name suffix should remain or if the remaining project should just be called Ponente.
Collaborator

🤖 On it — follow along in the action run; the reply will link the full session transcript.

📜 Live transcript — updating every ~5 minutes while the task runs.

🤖 On it — follow along in [the action run](https://git.grandiras.net/Grandiras/claude-bot/actions/runs/213); the reply will link the full session transcript. 📜 [Live transcript](https://git.grandiras.net/Grandiras/claude-bot/src/branch/claude-logs/transcripts/Grandiras/Ponente/issue-79/run-213.md) — updating every ~5 minutes while the task runs.
Collaborator

Folded Ponente.Common into Ponente.Kanban and answered the naming question. Branch: claude/issue-79.

The fold

Ponente.Common held two files — IDataEncryptor and AesGcmDataEncryptor — and exactly one consumer. A project earns its place by being referenced by more than one thing, and this one never was, so it was a csproj, a solution entry, two Dockerfile COPY layers and a separately published assembly bought with nothing.

The code moves to src/Ponente.Kanban/Encryption/ under Ponente.Kanban.Encryption, as a folder beside Auth/ and Data/ rather than inside either — encryption at rest isn't the data layer's private business, Program.cs registers it too. Four using lines change; nothing else in the source did. Also removed: the ProjectReference, the solution's project + config + nesting entries, and the two Common lines in the Dockerfile. README's project-layout block and the two stale CLAUDE.md passages (Ponente.Common.Encryption, "both apps") are updated.

The name: .Kanban stays

Three reasons, recorded in CLAUDE.md so it isn't re-litigated:

  • Common was never the sibling the suffix was reserving room for. It was shared library code, not a second product, so folding it in says nothing about whether siblings arrive later. What would foreclose them is handing the umbrella name to one product — a future Ponente.Notes beside a plain Ponente reads as a child of it rather than a peer.
  • The suffix reaches further into the deployment than it looks: the container's ENTRYPOINT, the Dockerfile paths, the release skill, KanbanDbContext, and the ConnectionStrings__KanbanDb variable both stacks set. Renaming is 99 files of churn plus an env change on two servers.
  • Nobody sees it. The UI, the manifest and the domain all say Ponente already; Ponente.Kanban is an assembly name and a namespace root.

I made this call rather than asking, since the issue said to decide — but it's a one-line revert of the docs paragraph if you'd rather have the rename, and I'd do it as its own PR either way, not folded into this one.

Verified

  • dotnet build Ponente.sln -c Release — succeeds from a clean tree, 0 errors (the one CS8604 warning in Calendar.razor predates this and is untouched).
  • dotnet test Ponente.sln -c Release165/165 pass.
  • The Dockerfile's exact publish command (dotnet publish … -o … /p:UseAppHost=false) produces Ponente.Kanban.dll with no Ponente.Common.dll beside it, so the unchanged ENTRYPOINT still resolves.

Not run: the Playwright e2e suite and an actual image build — this runner has no container engine (the same limitation ci.yml documents). Nothing here touches runtime behaviour, markup or CSS, so there's no e2e surface to move; the image build is covered insofar as the publish step it wraps was run directly.


⏱ 3m 51s · 30 turns · tokens: 73.6k in / 12.6k out (+2265.2k cache-read)
📜 Full session transcript
→ Opened PR: #81

Folded `Ponente.Common` into `Ponente.Kanban` and answered the naming question. Branch: **`claude/issue-79`**. ## The fold `Ponente.Common` held two files — `IDataEncryptor` and `AesGcmDataEncryptor` — and exactly one consumer. A project earns its place by being referenced by more than one thing, and this one never was, so it was a csproj, a solution entry, two Dockerfile `COPY` layers and a separately published assembly bought with nothing. The code moves to `src/Ponente.Kanban/Encryption/` under `Ponente.Kanban.Encryption`, as a folder beside `Auth/` and `Data/` rather than inside either — encryption at rest isn't the data layer's private business, `Program.cs` registers it too. Four `using` lines change; nothing else in the source did. Also removed: the `ProjectReference`, the solution's project + config + nesting entries, and the two Common lines in the Dockerfile. README's project-layout block and the two stale CLAUDE.md passages (`Ponente.Common.Encryption`, "both apps") are updated. ## The name: `.Kanban` stays Three reasons, recorded in CLAUDE.md so it isn't re-litigated: - **Common was never the sibling the suffix was reserving room for.** It was shared *library* code, not a second product, so folding it in says nothing about whether siblings arrive later. What *would* foreclose them is handing the umbrella name to one product — a future `Ponente.Notes` beside a plain `Ponente` reads as a child of it rather than a peer. - **The suffix reaches further into the deployment than it looks**: the container's `ENTRYPOINT`, the Dockerfile paths, the release skill, `KanbanDbContext`, and the `ConnectionStrings__KanbanDb` variable both stacks set. Renaming is 99 files of churn plus an env change on two servers. - **Nobody sees it.** The UI, the manifest and the domain all say Ponente already; `Ponente.Kanban` is an assembly name and a namespace root. I made this call rather than asking, since the issue said to decide — but it's a one-line revert of the docs paragraph if you'd rather have the rename, and I'd do it as its own PR either way, not folded into this one. ## Verified - `dotnet build Ponente.sln -c Release` — succeeds from a clean tree, 0 errors (the one `CS8604` warning in `Calendar.razor` predates this and is untouched). - `dotnet test Ponente.sln -c Release` — **165/165 pass**. - The Dockerfile's exact publish command (`dotnet publish … -o … /p:UseAppHost=false`) produces `Ponente.Kanban.dll` with no `Ponente.Common.dll` beside it, so the unchanged `ENTRYPOINT` still resolves. Not run: the Playwright e2e suite and an actual image build — this runner has no container engine (the same limitation `ci.yml` documents). Nothing here touches runtime behaviour, markup or CSS, so there's no e2e surface to move; the image build is covered insofar as the publish step it wraps was run directly. --- ⏱ 3m 51s · 30 turns · tokens: 73.6k in / 12.6k out (+2265.2k cache-read) 📜 [Full session transcript](https://git.grandiras.net/Grandiras/claude-bot/src/branch/claude-logs/transcripts/Grandiras/Ponente/issue-79/run-213.md) → Opened PR: https://git.grandiras.net/Grandiras/Ponente/pulls/81
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Grandiras/Ponente#79
No description provided.