Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
8 changes: 5 additions & 3 deletions ai-docs/HANDOFF.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@
Retrofit of 2.2.0 to the package-modernize standard, branch `v2-retrofit` (2026-09-28). Phase 0 golden capture 84dbc6b (tests/Golden, never edit). Ruled: every recommendation, plus the place list fixed in place as 2.3.0. Phase 2 done and verified locally and from a fresh clone (202 tests, pack, consumers, actionlint, zizmor). GitHub settings applied (rulesets 24095614 master and 24095615 tags). Plan: plans/2026-09-28-retrofit-and-2.3.0-release.md.

## In progress
2.3.0 is released and verified (release run 36419884168, verify-published 36421937100 on three OSes, attestation, README images). Only open item: PR #15 (branch baseline-2.3.0, PackageValidationBaselineVersion 2.3.0) waits for Mark's merge. Records done: package-modernization #10 merged (inventory row 4 done), package-modernize #10 merged (L-105, L-106, C-20260928-4).
2.3.0 is released and verified (release run 36419884168, verify-published 36421937100 on three OSes, attestation, README images); PR #15 (baseline 2.3.0) merged as 65a3af8. Records done: package-modernization #10 merged (inventory row 4 done), package-modernize #10 merged (L-105, L-106, C-20260928-4).

GitHub wiki (2026-09-28): eleven pages published (wiki commit 0bf2dd6) from the sibling working copy `D:\m4bwa\Claude\Projects\Ai\labs\DotNetRandomNameGenerator.wiki`, remote `DotNetRandomNameGenerator.wiki.git`. How to update it: notes/2026-09-28-github-wiki.md.

## Decisions made this session
decisions/2026-09-28-retrofit-without-code-changes.md (accepted; the place-list part overruled: fixed now as 2.3.0).
Expand All @@ -13,10 +15,10 @@ decisions/2026-09-28-retrofit-without-code-changes.md (accepted; the place-list
The net48 golden replay as win-x86 differs from the 64-bit capture in one OutOfMemoryException message; it runs as win-x64. Adopting eol=lf in an autocrlf clone leaves CRLF working files until `git rm -r --cached . && git reset --hard` after a commit.

## Standing work
Dependabot pull requests (seven-day cooldown); Mark's nuget.org deprecations of 1.1.0 (Critical bugs) and 1.0.5.1, 1.1.1, 1.2.0, 1.2.1 (Legacy, alternate 2.x); the next major (3.0) removes CensusListStripper and FileCompressor.
Dependabot pull requests (seven-day cooldown); Mark's nuget.org deprecations of 1.1.0 (Critical bugs) and 1.0.5.1, 1.1.1, 1.2.0, 1.2.1 (Legacy, alternate 2.x); the next major (3.0) removes CensusListStripper and FileCompressor. README: the thread-safety sentence says a default generator is safe to share on .NET Framework, but there it holds a plain per-instance `Random`; reword at the next README change (the wiki already states one generator per thread).

## Evergreen upkeep (from the SessionStart hooks)
evergreen: no claims due; dandy: one undated claim, re-check only before relying on it; acestep-music refresh half done (research saved, edits and PR pending, see that repo's HANDOFF on branch refresh-2026-09-27).

## Next single action
Mark merges PR #15; check `ci` green on master after it. Nothing else is owed by the agent for this package.
Mark merges PR #16 (records only). Nothing else is owed by the agent for this package; the README thread-safety sentence waits for the next README change.
1 change: 1 addition & 0 deletions ai-docs/INDEX.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ Generated by `everlast.py index`; do not hand-edit (edit the entries' frontmatte

- 2026-09-25 [2.1.0 pass: stages 1 to 6](notes/2026-09-25-stages-1-to-6.md) `v2,2.1.0,log,ci,data`: what the 2.1.0 pass changed, the verified commands, dead ends (NU1004 lock-file mismatch, MSB4024) and how the place data was fixed by hand; read before changing the build or the data
- 2026-09-27 [2.2.0: star names](notes/2026-09-27-star-names-2.2.0.md) `v2,2.2.0,stars,data,iau`: why the star lists hold what they hold (sources, licences, size), the build script and the 2.2.0 release; read before changing the star data
- 2026-09-28 [GitHub wiki written and published for 2.3.0](notes/2026-09-28-github-wiki.md) `wiki,docs,2.3.0,github`: the eleven wiki pages, where their git working copy is, how the wiki was published (the first page must be saved in the web UI before the wiki repository exists) and how to update it; read before touching the wiki or the README's thread-safety sentence
- 2026-09-28 [Phase 0 gap audit of RandomNameGeneratorLibrary 2.2.0 (package-modernize retrofit)](notes/2026-09-28-phase-0-gap-audit.md) `survey,phase-0,retrofit,nuget,golden,gap-audit,place-data`: what 2.2.0 lacks against the package-modernize standard, what the golden capture recorded, the place-list truncation bug, and how seeded output moved from 1.2.2 to 2.2.0; read before planning a change or a release

## plans
Expand Down
12 changes: 12 additions & 0 deletions ai-docs/log.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,3 +75,15 @@ Append-only. One line per operation: `## [YYYY-MM-DD] op | title` where op is on
- nuget.org flat-container index lists 2.3.0. verify-published run 36421937100 for 2.3.0: green on Ubuntu, Windows and macOS.
- check-readme-images.mjs on the README inside the 2.3.0 nupkg with `--registry nuget`: 3 images, every one works, exit 0. (Without the flag it checks for npm; pass `--registry nuget` for NuGet.)
- Branch baseline-2.3.0: PackageValidationBaselineVersion 2.2.0 to 2.3.0 (D5, after publication).

## [2026-09-28] add | GitHub wiki written, push blocked on the first page
- Mark merged PR #15 (65a3af8); master holds the 2.3.0 baseline.
- Mark asked for the repository wiki to be filled. Eleven pages written (Home, Getting started, API reference, Recipes, Reproducible names, Name lists and data sources, Versions and upgrading, FAQ, Development, sidebar, footer); every example output verified against the published 2.3.0 (file-based app, `dotnet fsi`, PowerShell `Add-Type`). Committed as 0bf2dd6 in the sibling working copy `D:\m4bwa\Claude\Projects\Ai\labs\DotNetRandomNameGenerator.wiki`.
- `git push` to `DotNetRandomNameGenerator.wiki.git`: `Repository not found`. GitHub creates the wiki repository only when the first page is saved in the web UI; no API exists. Mark's click, then `git push --force -u origin master` from the working copy. Details: notes/2026-09-28-github-wiki.md.
- Found while writing: the README's thread-safety sentence overstates the .NET Framework case (a default generator there holds a plain per-instance `Random`). Not changed; recorded in the note and in HANDOFF standing work.

## [2026-09-28] verify | Wiki published
- Mark saved the first page in the web UI (placeholder commit 8543ca6). `git push --force -u origin master` from the working copy replaced it with 0bf2dd6; `git ls-remote` shows 0bf2dd6, and Home, Getting-Started, API-Reference, Recipes, Reproducible-Names, Name-Lists-and-Data-Sources, Versions-and-Upgrading, FAQ and Development answer 200 with the sidebar and footer rendered.
- PR #16 updated with the published state.
## [2026-09-28] index | rebuilt (7 entries)
## [2026-09-28] index | rebuilt (7 entries)
47 changes: 47 additions & 0 deletions ai-docs/notes/2026-09-28-github-wiki.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
---
title: GitHub wiki written and published for 2.3.0
kind: note
date: 2026-09-28
verified: 2026-09-28
stale_after: 2027-03-28
tags: [wiki, docs, 2.3.0, github]
summary: "the eleven wiki pages, where their git working copy is, how the wiki was published (the first page must be saved in the web UI before the wiki repository exists) and how to update it; read before touching the wiki or the README's thread-safety sentence"
---

# GitHub wiki for 2.3.0

## Summary

Mark asked for the repository wiki (https://github.com/m4bwav/DotNetRandomNameGenerator/wiki) to be filled with helpful material. Eleven pages were written from the 2.3.0 source, README, CHANGELOG, AGENTS.md, the ai-docs notes and the two closed issues, with every example output verified against the published 2.3.0 package (a .NET 10 file-based app with `#:package RandomNameGeneratorLibrary@2.3.0`, `dotnet fsi`, and PowerShell 7 `Add-Type`). Published on 2026-09-28 as wiki commit 0bf2dd6 after Mark saved the first page; every page answers 200 and the sidebar and footer render.

## Updating the wiki later

Edit the markdown in the working copy below, run the everwrite checker (`python C:\Users\m4bwa\.claude\skills\everwrite\scripts\tells.py *.md`), commit and `git push`. Page names are the file names with hyphens (`Getting-Started.md` is the page "Getting Started"); links between pages are plain markdown (`[Recipes](Recipes)`). When a release changes counts, seeded examples or the version number, the pages to touch are Home, Getting started, API reference, Versions and upgrading, and the footer's version line.

## Where the pages are

`D:\m4bwa\Claude\Projects\Ai\labs\DotNetRandomNameGenerator.wiki` (a sibling of this clone, outside this repository), branch `master`, remote `origin` = `https://github.com/m4bwav/DotNetRandomNameGenerator.wiki.git`, commit 0bf2dd6. Files: `Home.md`, `Getting-Started.md`, `API-Reference.md`, `Recipes.md`, `Reproducible-Names.md`, `Name-Lists-and-Data-Sources.md`, `Versions-and-Upgrading.md`, `FAQ.md`, `Development.md`, `_Sidebar.md`, `_Footer.md`. Plain markdown links (`[Recipes](Recipes)`), no wikilinks. Everwrite checker: 0 strong, 4 weak (all judged fine).

## How it was published

The first `git push` answered `Repository not found`: the repository had `has_wiki: true` but no page had ever been created, and GitHub creates the `.wiki.git` repository only when the first page is saved in the web UI. There is no REST or GraphQL API for wiki pages, so an agent cannot do that step. Mark saved a first page; `git push --force -u origin master` then replaced GitHub's placeholder commit (8543ca6) with the eleven pages. For any other repository's wiki: run `git ls-remote https://github.com/<owner>/<repo>.wiki.git` first, and ask for the click early when it fails.

## Facts verified while writing (not in the README)

- `new PersonNameGenerator(42)`: `Alisa Streets`; male `Morton`, female `Marguerita`, last `Vis`. `new PlaceNameGenerator(42)`: `Boardman`. `new StarNameGenerator(42)`: star `Delta² Gruis`, proper `Parumleo`, catalogue `HIP 4210`. `new Random(42)` chained: female `Marguerita`, place `Sedco Hills`, star `Ran`.
- Two place names contain a comma (`Islamorada, Village of Islands`, `Lynchburg, Moore County`); 33 place names and 1 proper star name contain an apostrophe; no name contains a double quote. Person names are letters only.
- 331 first names are on both the male and the female list; 6,394 place names contain a space; 52 place names carry non-ASCII characters; 1,394 last names start with `Mc`.
- The lists are in Census frequency order (Smith, Johnson, Williams; James, John, Robert; Mary, Patricia, Linda).
- Package 2.3.0: nupkg 942,766 bytes; netstandard2.0 DLL 995,840 bytes; the seven resources total 977,150 bytes (last names 695,422).
- The unit tests have no test that shares one generator between threads; the golden capture's "8 threads" case is the only multi-thread evidence.

## Open item found: README thread-safety sentence

The README says a default-constructed generator "is safe to share between threads (it uses `Random.Shared` on .NET 6+ and a well-seeded `Random` per generator on .NET Framework)". On the netstandard2.0 build `BaseNameGenerator` creates a plain `new Random(SeedSource.Next())` per generator, and `System.Random` is not thread-safe, so the .NET Framework half of that sentence overstates it. The wiki states the safe pattern (one generator per thread on .NET Framework). Fix the README sentence in the next README change; the README ships in the package, so it reaches nuget.org with the next release.

## Gotchas

- GitHub wiki repositories use branch `master`; `git init -b master` matched it.
- `curl` of the nuget.org `registration5-gz-semver2` index needs `--compressed`; without it the body is gzip bytes.

Related: builds on [2026-09-28-phase-0-gap-audit.md](2026-09-28-phase-0-gap-audit.md); see also [../HANDOFF.md](../HANDOFF.md), [../../README.md](../../README.md).