Files
fejkdata/todo.md
T
lilleman 3f5f754189
Tests / vet + fmt + tests (pull_request) Successful in 1m25s
Tests / Gitea release from CHANGELOG.md (pull_request) Has been skipped
Order the plan as the releases that ship it, and move the repo's own facts out of the handoff
2026-09-19 01:42:39 +02:00

7.8 KiB
Raw Blame History

Plan

Ordered as the releases that ship it. Research notes: ~/code/claude-handoffs/fejkdata/2026-09-16/.

v0.1.0

Data

Shape: T = table, t = template, c = choice. Every factual list is read from a register by a data-import/ script, per README goal 10.

  • Add the remaining misc tables and templates from the table below, closing step 4.
  • Read misc.emoji from the Unicode emoji-test.txt register, and misc.car from an international make and model source; vPIC and Mobility Sweden are national, so they build en_US.car and sv_SE.car.
  • Add the remaining locale categories: company, phone, finance, vehicle, words.
  • Give every shipped category building-block columns, misc.uuid → variant among them, and one record shape across the national ids; re-pin the shape.
  • Give the address records one column set across countries: region and municipality as columns on geo.SE.address too.
  • Fill the 398 Swedish localities weighted 200 from SCB småorter.
  • Accept a middle name, and draw a shipped personnummer inside a selected sex; both want a draw group sharing its family's pins. Stop the conflict error naming a rewrite that returns a different value where the read it conflicts with sits inside another category, and report a struct column's draw conflict with the path spelling a tag takes.
  • Let geo.SE.locality[Lund].address descend from a selected row into the template beside the family: the path step reaches a sibling category and the outer selector's pins seed every draw group of the render.
  • Decide whether email.local and username share one handle list — a reference between shipped categories is a major once tagged, so it lands before v0.1.0 or not at all.

misc (locale-neutral)

Category Shape Source Licence
httpmethod, port, tld, protocol, loglevel T/c IANA CC0
ip v4 documentation ranges, private, CIDR; ipv6 2001:db8::/32; mac locally administered t RFC 5737, 1918, 9637 facts
creditcard per network: IIN, length, CVV, expiry T+t network rules, {luhn()} facts
bic, isin, cusip t structure rules facts
ean, upc, gtin, isbn, issn, imei, asin, sku t check-digit rules, GS1 demo prefix 952 facts
product name, adjective, material, department, garmentsize T/c LLM-written lists —
airport IATA, ICAO, territory, municipality; airline; aircraft; flight, seat, pnr T+t OurAirports, Wikidata public domain, CC0
element, unit, planet T PubChem, BIPM, NASA public domain, CC BY 4.0
animal by class, plant T Wikidata CC0
bloodtype weighted (global) c AABB facts
color named, hex, rgb, hsl, cmyk T+t CSS Color 4, XKCD W3C, CC0
programminglanguage, os, browser, database column/type/engine, fileext T/c Linguist, curated MIT
commit message, branch, sha t LLM-written, {hex(40)} —
password, hash, jwt, slug, hostname, avatar, placeholderimage t shapes —
book title, author; genre; instrument; dish, ingredient T Gutenberg catalog, MusicBrainz, USDA CC0
lorem, hacker, hipster, catchphrase, buzzword, quote T/c lorem ipsum, LLM-written —
direction, continent, ulid c/t — —

sv_SE (research-sources-se.md)

Category Shape Source Licence
person title, birthdate, age, blood type weighted t geblod.nu distribution facts
organisationsnummer by form, vat t Bolagsverket group digits, Luhn, SE…01 facts
company name patterns, legal form weighted t Bolagsverket registrations 2025 CC BY 2.5 SE
sni industry codes T SCB SNI 2025 "Källa: SCB"
ssyk occupations T SCB SSYK 2012 "Källa: SCB"
phone mobile, fixed per area code, E.164 T+t PTS numbering plan 2024 facts
bankgiro, plusgiro, bankaccount clearing + Luhn/mod-11 T+t Bankinfrastruktur CSV, Bankgirot rules facts
licenseplate ABC 123, ABC 12A, blocked combinations t Transportstyrelsen facts
car make, model weighted by registrations T Mobility Sweden 2025 cite
word noun, verb, adjective, adverb; sentence T+t SALDO CC BY 4.0
month and weekday names, holiday t+T CLDR sv, lag 1989:253 Unicode
territory localised names keyed by alpha2 T CLDR sv territory names Unicode

en_US (research-sources-world.md, part1–4)

Category Shape Source Licence
ein valid ranges t IRS facts
company names, suffix, naics t+T SEC tickers for patterns, NAICS 2022 public domain
phone NANP with valid NPA/NXX t NANPA rules facts
routing ABA with check, bankaccount t Fed prefix ranges facts
licenseplate per state T hand-authored patterns facts
car make, model T NHTSA vPIC public domain
word, sentence, paragraph T+t Moby POS or WordNet public domain / WordNet
month and weekday names, holiday t+T CLDR en Unicode

Builtins the data cannot express

  • Add {isin()} (Luhn over letters expanded to digits), {cusip()}, {aba()} (3-7-1 weights) and {vin()} (position 9 over the whole; a sample taking the WMI, since the check sits mid-string).
  • Add {base64url(n)} for JWT shapes.
  • Add a unix layout to date() once something needs it.

Open questions to settle

  • Decide whether misc.browser becomes a parent of misc.useragent, so misc.browser[Chrome].useragent resolves. Adding a parent after v0.1.0 is a major.
  • Decide whether misc.timezone keeps every zone tzdb names: one added recently, Europe/Kyiv among them, is rejected by a consumer resolving it against older tzdata, and the population weight makes that zone likelier, not rarer. Today the README names the action a reader takes instead; narrowing what ships is the alternative.
  • Decide whether misc.territory.country is renamed sovereign: it holds a code, and country collides with the misc.country path it replaced. A rename after v0.1.0 is a major.
  • Decide whether parent: territory stays, given a --data-path override of misc.territory now fails New unless misc.timezone is overridden with it.

Release

  • Move the README's Decisions section to docs/decisions.md, leaving a one-line index of the titles in AGENTS.md, and drop the AGENTS.md line pointing decisions at the README.
  • Rewrite CHANGELOG.md's [Unreleased] as what v0.1.0 holds: nothing has shipped, so "no longer paths", "where it used to fail" and "where it used to be an empty string" describe versions no reader can have installed.
  • Ship prebuilt binaries so the CLI needs no Go: GoReleaser attaching them to the Gitea release the tag workflow publishes, a container image, Homebrew and Scoop. A checkout build prints devel for --version; the binaries carry the stamped tag.

v0.2.0

  • Ship the full registers as packs, each a Go module with its own embed.FS and a zip for --data-path: every US place of 10,000 and more streets per locality, built by --min-population and --streets-per-locality. The default embed stays under ~1 MB per country and New under ~50 ms.
  • Add the locales nb_NO, da_DK, fi_FI, de_DE, en_GB, nl_NL, fr_FR and es_ES, with person, address, phone, national id, company and date names each, and the geo trees NO, DK, FI, NL, FR, AU, CA, ES, GB and DE under them.
  • Add {btc()} and {eth()}, which need sha256 and keccak for Base58Check and EIP-55.
  • Pair a street with its exact postnummer, which needs an application to Lantmäteriet; today a street goes to the nearest postal code centroid.
  • Publish a homepage with an in-browser generator: the library compiled to WebAssembly, so visitors generate as much data as they like in their own browser.