Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
9b3955e
Fix encoded email subjects
peterdrier Sep 22, 2026
37f0d5b
Deduplicate ticket cache resolver
peterdrier Sep 22, 2026
124a89f
Remove unused MailerLite date converter
peterdrier Sep 22, 2026
2f7bd07
Move camp role slot sorting out of repository
peterdrier Sep 22, 2026
2460127
Consolidate shift signup helpers
peterdrier Sep 22, 2026
d10c539
Remove unused shift date local
peterdrier Sep 22, 2026
c21664c
Localize container validation errors
peterdrier Sep 22, 2026
010e513
Move campaign tracking sort out of repository
peterdrier Sep 22, 2026
a4977e5
Move Google resource sorting out of repository
peterdrier Sep 22, 2026
9ecf0a4
Localize team edit page
peterdrier Sep 22, 2026
25e57db
Localize individual event form
peterdrier Sep 22, 2026
566313e
Localize event submission surfaces
peterdrier Sep 22, 2026
eeea18d
Persist explicit shift offset zeroes
peterdrier Sep 22, 2026
524f56c
Move camp role definition sorting out of repository
peterdrier Sep 22, 2026
60d7c44
Localize rideshare notifications
peterdrier Sep 22, 2026
1f70242
Limit Codex command output
peterdrier Sep 22, 2026
59c6bda
Localize profile communication feedback
peterdrier Sep 22, 2026
0961c35
Localize email merge confirmation
peterdrier Sep 22, 2026
6acbf49
Localize guest account feedback
peterdrier Sep 22, 2026
839c074
Localize shift profile errors
peterdrier Sep 22, 2026
03623fb
Localize ticket transfer feedback
peterdrier Sep 22, 2026
1a1e0b7
Localize event state feedback
peterdrier Sep 22, 2026
e6d6ab8
Localize event submission feedback
peterdrier Sep 22, 2026
9a0ed28
Localize event upload validation
peterdrier Sep 22, 2026
e673287
Localize event upload completion
peterdrier Sep 22, 2026
0634102
Localize guest data export failure
peterdrier Sep 22, 2026
2472877
Merge main into codex/daily-debt/2026-09-22
claude Sep 22, 2026
c5cd1bd
Debt review: revert 2, repair 8, fix 5 findings
claude Sep 22, 2026
56e26bf
Revert display-sort relocations into services
claude Sep 22, 2026
a88a5c9
Restore EVENTS-7 debt row, narrowed to form labels
claude Sep 22, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .codex/TECH_DEBT_QUEUE.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ violation, never edit a baseline the code still triggers.
`src/Sections/Humans.<Section>/Docs/<Section>.md` + `Docs/data-access.md`.
Debt is whatever diverges from that model; find it by comparing a section against
the model, not by consuming a frozen list.
- **Surface / interconnectivity baseline:** `dotnet build Humans.slnx -v quiet`, then
- **Surface / interconnectivity baseline:** `dotnet build Humans.slnx -v quiet -clp:ErrorsOnly`, then
`reforge surface-score --all --top-symbols 200 --format Json` (score a **built**
solution — unbuilt under-reports ~4%). Rank sections by the Section Refactor History
table in `docs/architecture/maintenance-log.md`. The score is a detector, not an
Expand Down Expand Up @@ -71,8 +71,8 @@ violation, never edit a baseline the code still triggers.
*Current state* below **by rewriting it**.
2. Pick one item by the priority order. Write a one-sentence architecture thesis; if
the thesis is "a number goes down", pick something else.
3. Make the smallest real refactor. Targeted section tests + `dotnet build Humans.slnx -v quiet`
per change; full `dotnet test Humans.slnx -v quiet` before any push.
3. Make the smallest real refactor. Targeted section tests + `dotnet build Humans.slnx -v quiet -clp:ErrorsOnly`
per change; full `dotnet test Humans.slnx -v quiet -clp:ErrorsOnly` before any push.
4. One coherent improvement per commit; push the branch; open/refresh the PR
(`memory/process/always-open-a-pr.md`).
5. When stopping: rewrite *Current state* (including *Needs Peter*), leave the
Expand Down
2 changes: 1 addition & 1 deletion .codex/bug-hunt-prompt.md
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ Do not modify:
## Build Command

```
dotnet build Humans.slnx -v q && dotnet test Humans.slnx -v q --filter "FullyQualifiedName~Application"
dotnet build Humans.slnx -v q -clp:ErrorsOnly && dotnet test Humans.slnx -v q -clp:ErrorsOnly --filter "FullyQualifiedName~Application"
```

## Phase 1: Razor Rendering & HTML Structure *(highest frequency — 15+ historical fixes)*
Expand Down
4 changes: 2 additions & 2 deletions .codex/skills/humans-bug-hunt/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@ Run recurring autonomous bug-hunt passes in this repository.
2. Search for one high-confidence bug at a time, using repo patterns rather than a fixed checklist.
3. Implement the smallest defensible fix.
4. Add or extend tests when practical.
5. Run targeted verification, plus `dotnet build Humans.slnx --disable-build-servers -v q`.
6. Periodically run `dotnet test Humans.slnx --no-build --disable-build-servers -v q --filter "FullyQualifiedName~Application"`.
5. Run targeted verification, plus `dotnet build Humans.slnx --disable-build-servers -v q -clp:ErrorsOnly`.
6. Periodically run `dotnet test Humans.slnx --no-build --disable-build-servers -v q -clp:ErrorsOnly --filter "FullyQualifiedName~Application"`.
7. Commit each fix separately and push the branch after verified progress.
8. Continue until remaining ideas are speculative or require forbidden areas.

Expand Down
2 changes: 1 addition & 1 deletion .codex/skills/humans-refactor/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ Then repeat until stasis:
3. Pick the highest-leverage cohesive improvement, not just the highest scoring rule.
4. Write a candidate thesis in the run notes: what concept will be deleted, which responsibility moves to its rightful owner, or which duplicated/cross-section path disappears. If the thesis is just "the score drops", reject the candidate before editing.
5. Make the change.
6. Run targeted tests and `dotnet build Humans.slnx --disable-build-servers -v q`.
6. Run targeted tests and `dotnet build Humans.slnx --disable-build-servers -v q -clp:ErrorsOnly`.
7. Run Reforge after the change.
8. Run the score-blind architecture-review gate.
9. If accepted, commit and push. If rework/reject, improve or abandon before committing.
Expand Down
4 changes: 2 additions & 2 deletions .codex/skills/humans-tech-debt/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,9 @@ Run recurring autonomous tech-debt reduction passes in this repository.
3. Before editing, write a one-sentence architecture thesis: what concept will be deleted, what responsibility will move to its rightful owner, or what duplication/coupling will disappear. If the thesis is "the score drops", abandon the candidate.
4. Make the smallest coherent improvement that reduces divergence, duplication, misplaced responsibility, or durable public surface.
5. Add or extend tests when practical.
6. Run targeted verification, plus `dotnet build Humans.slnx --disable-build-servers -v q`.
6. Run targeted verification, plus `dotnet build Humans.slnx --disable-build-servers -v q -clp:ErrorsOnly`.
7. Run a score-blind second pass before commit. Review only the diff, the architecture thesis, and verification. Reject the change if it would not be worth keeping without metric movement.
8. Run the full `dotnet test Humans.slnx --no-build --disable-build-servers -v quiet` gate before any push.
8. Run the full `dotnet test Humans.slnx --no-build --disable-build-servers -v quiet -clp:ErrorsOnly` gate before any push.
9. Commit each accepted improvement separately and push the branch after verified progress.
10. Continue until remaining ideas are low-value, speculative, blocked by forbidden areas, or only reducible through metric-gaming changes.

Expand Down
4 changes: 2 additions & 2 deletions .codex/tech-debt-prompt.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ file's *Current state* instead of restarting discovery.
`docs/sections/SECTION-TEMPLATE.md`, `docs/architecture/design-rules.md`, each
section's `Docs/<Section>.md` + `Docs/data-access.md`. Divergence from the model is
the debt.
- Surface / coupling baseline: `dotnet build Humans.slnx -v quiet`, then
- Surface / coupling baseline: `dotnet build Humans.slnx -v quiet -clp:ErrorsOnly`, then
`reforge surface-score --all` (built solution only). Reduce it through
architecturally-real deletions; the score is a detector, never the objective.

Expand All @@ -46,7 +46,7 @@ file's *Current state* instead of restarting discovery.
`local/tech-debt-runs/<run-id>/` either way.
- One coherent improvement per commit, each with a one-sentence architecture thesis
that stands without score movement. Targeted section tests + build per change;
full `dotnet test Humans.slnx -v quiet` before any push. `-v quiet` always.
full `dotnet test Humans.slnx -v quiet -clp:ErrorsOnly` before any push. `-v quiet` always.
- Honor every boundary in the queue file's *Boundaries* section — especially: debt
only (never feature follow-ups, even fully-specced ones), no authorization/privacy
shape changes, no reverting documented test-infrastructure decisions, and new public surface goes to *Needs Peter* instead of into the code.
Expand Down
8 changes: 0 additions & 8 deletions docs/architecture/debt-ledger.yml
Original file line number Diff line number Diff line change
Expand Up @@ -395,10 +395,6 @@ inbox:
# sweep scope entirely); PasswordGenerator CSPRNG (explicitly deferred by
# Peter, 2026-04-24); BudgetRepository ResponsibleTeam .Include (covered by
# grandfathered-hum0024-nav-strip).
- added: 2026-08-11
id: CENTRAL-14
what: "EventSettingsConfiguration.cs:44-47 declares HasDefaultValue(-25/-16/-9/-4) on four int offsets without HasSentinel — EF's int sentinel stays 0, so explicitly assigning 0 to any of these offsets is skipped and the DB default written instead (int-flavoured bool-sentinel trap). Pre-existing; surfaced by the EF migration review of the Shifts peel (peel 13, nobodies-collective/Humans#858)"
review: light
- added: 2026-08-07
id: CENTRAL-12
what: "Shifts section's own Web layer (ShiftAdminController, ShiftsController, VolunteerTrackingController, ShiftViewModels.cs, ShiftAdminPageBuilder, ShiftBrowsePageBuilder, ShiftDashboardPageBuilder, ShiftBrowseMapper, ShiftFilterResolver, ShiftSignupBucketer, ShiftVolunteerSearchBuilder, DevelopmentDashboardSeeder, ShiftSignupsViewComponent) carries the EF EventSettings entity as a view-model/builder field on read-only display paths — should be BurnSettingsInfo per nobodies-collective/Humans#809's acceptance criteria. Distinct from the write/edit path (EventSettingsFormMapper), which legitimately keeps the entity. ~10 interconnected files forming one section's own display pipeline — warrants its own dedicated section-scoped PR rather than folding into #809's cross-section batch (found while working nobodies-collective/Humans#809)"
Expand Down Expand Up @@ -583,10 +579,6 @@ inbox:
id: CENTRAL-59
what: "src/Sections/Humans.Users.Contracts/IUserInfoInvalidator.cs:24 deliberately omits the IInvalidator marker (its own comment says so, debt nobodies-collective/Humans#805), so HUM0028 cannot see it and it needs no [Grandfathered] marker — one invalidator dodging the ratchet by being invisible to it. Marking it (or recording the exemption where the analyzer reads it) is small and separable from the big invalidator rework the HUM0028 theme is parked on. Found by the 2026-09-20 accepted-smell audit."
review: light
- added: 2026-09-20
id: CENTRAL-60
what: "The pre-existing Codex prompt/skill files run dotnet with `-v quiet`/`-v q` but without the `-clp:ErrorsOnly` that memory/process/dotnet-verbosity-quiet.md requires (.codex/tech-debt-prompt.md, .codex/bug-hunt-prompt.md, .codex/TECH_DEBT_QUEUE.md, .codex/skills/humans-{tech-debt,refactor,bug-hunt}/SKILL.md). Without it the obsolete-warning wall floods the context of every Codex run that follows them, which costs most on a time-budgeted unattended run. Mechanical fix, no judgement needed. Found 2026-09-20 while adding the flag to the nightly debt runner in peterdrier/Humans#1759, which deliberately did not widen to these files."
review: light
- added: 2026-09-20
id: CENTRAL-61
what: "Two pre-existing Codex runner scripts use `git -C <path>`, which memory/process/never-use-git-dash-c.md marks a HARD RULE with no exceptions: .codex/run-weekly-bug-hunt.sh and .codex/cleanup-merged-bug-hunt-worktrees.sh. Fix is mechanical — run each group in a `(cd \"$dir\" && git ...)` subshell, as .codex/cron/run-daily-debt.sh now does. Worth noting the atom's stated rationale (a wrong shell folder; defeating Bash allowlist prefixes) is about agent-issued commands, so Peter may want to say whether the rule binds committed scripts at all rather than have it re-found every audit. Found 2026-09-20 while fixing the same violation in the nightly debt runner in peterdrier/Humans#1759."
Expand Down
1 change: 0 additions & 1 deletion src/Sections/Humans.Camps/Data/CampRepository.Roles.cs
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,6 @@ public async Task<IReadOnlyList<CampRoleAssignment>> GetAssignmentsForSeasonAsyn
.Include(a => a.Definition)
.Include(a => a.CampMember)
.Where(a => a.CampSeasonId == campSeasonId)
.OrderBy(a => a.Definition.SortOrder).ThenBy(a => a.AssignedAt)
.ToListAsync(ct);
}

Expand Down
6 changes: 1 addition & 5 deletions src/Sections/Humans.Email/Docs/debt.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,4 @@
# /debt-sweep pools every src/Sections/*/Docs/debt.yml into the same inbox as the central ledger.
version: 1
next_id: 3
inbox:
- added: 2026-09-11
id: EMAIL-2
what: "src/Sections/Humans.Email/Services/EmailRenderer.cs HTML-encodes these subject lines: Email_IssueComment_Subject, Email_CoordinatorRotaMessage_Subject, Email_CoordinatorTeamRotasMessage_Subject, Email_GoogleGroupRemoval_LossOfAccess_Subject, Email_GoogleDriveRemoval_LossOfAccess_Subject, Email_GoogleAccessRemoval_SecondaryCleanup_Subject. A Subject header is plain text, so a title containing & or < reaches the recipient as R&amp;D. The assembly-vote subjects had the same bug and were fixed in peterdrier/Humans#1649; these are left alone as out of that PR's scope."
review: light
inbox: []
Loading
Loading