Skip to content

Add CLAUDE.md, and point at the blog's search - #5

Merged
wormeyman merged 1 commit into
mainfrom
docs/claude-md-and-blog-search
Aug 17, 2026
Merged

Add CLAUDE.md, and point at the blog's search#5
wormeyman merged 1 commit into
mainfrom
docs/claude-md-and-blog-search

Conversation

@wormeyman

Copy link
Copy Markdown
Contributor

Two things, both about knowledge that had nowhere to live.

CLAUDE.md

The repo had none, so everything learned by running the game sat only in a session's memory. Most of it is invisible from the code and expensive to rediscover:

  • Factorio writes nothing to stderr
  • Omission in mod-list.json means enabled
  • read-data is layout-dependent, so a relative token only works on macOS
  • script.on_init takes exactly one handler
  • serde_json is one ULP out on long decimal literals
  • preserve_order must stay off
  • runtime-api.json publishes no defines values
  • Factorio 2.1 deleted LuaEntity.fluidbox and the whole LuaFluidBox class
  • Feature detection on LuaEntity needs a pcall, because 2.0 raises on unknown keys
  • factorio.exe is a GUI-subsystem binary, so PowerShell does not wait for it

Each is recorded with what was measured, not as a rule to follow, because the reason is the part that stops someone undoing it. A reader who does not know why preserve_order is off will turn it on.

The section leads with why it exists: three real defects here once survived 60 unit tests and were caught by the first run against the actual game, because the fake encoded the same wrong beliefs the code did.

Also covers the layout, the five run modes and their per-mode success predicates, the exact CI command, and the test counts to expect (113 unit plus 6 install-gated, which skip rather than fail without a game - so a green run on a machine with no Factorio proves less than it looks).

The blog search

The README said the blog "carries the 10 most recent posts only". That is true of the Atom feed and wrong about the blog. There is a search endpoint:

https://factorio.com/blog/search/<term>

It covers the whole archive - a search for mirroring returns FFF #80, from 2015. That matters because the feed alone cannot answer "what shipped in version X", which is the actual question after a game update.

Measured 2026-08-17: HTML not JSON, about 10 results, no total shown. Word choice matters more than you would expect - mirroring does not return FFF #442, the post that introduced entity mirroring, while flip and fluid both do. So the note says to try two or three wordings before concluding a post does not exist. A bare number works too: search/442.

Checks

Docs only, no code changes. cargo fmt --all -- --check, cargo clippy --all-targets -- -D warnings and cargo test --all-targets all pass: 113 unit tests plus 6 install-gated integration tests, run against a real 2.1.14 install.

🤖 Generated with Claude Code

https://claude.ai/code/session_01P9FADuTnjE7SFEQWnpNhfc

Two things, both about knowledge that had nowhere to live.

The repo had no CLAUDE.md, so everything learned by running the game sat only
in a session's memory. Most of it is invisible from the code and expensive to
rediscover: Factorio writes nothing to stderr, omission in mod-list.json means
enabled, read-data is layout-dependent, script.on_init takes exactly one
handler, serde_json is one ULP out on long decimals, preserve_order must stay
off, runtime-api.json publishes no defines values, and 2.1 deleted
LuaEntity.fluidbox along with the whole LuaFluidBox class.

Each of those is recorded with what was measured rather than as a rule to
follow, because the reason is the part that stops someone undoing it. A reader
who does not know why preserve_order is off will turn it on.

The section leads with the reason it exists: three real defects here once
survived 60 unit tests and were caught by the first run against the actual
game, because the fake encoded the same wrong beliefs the code did.

Second, the README said the blog "carries the 10 most recent posts only". That
is true of the Atom feed and wrong about the blog. There is a search endpoint,
https://factorio.com/blog/search/<term>, and it covers the whole archive - a
search for "mirroring" returns FFF #80 from 2015. That matters because the feed
alone cannot answer "what shipped in version X", which is the actual question
after a game update.

Measured 2026-08-17: search returns HTML, about 10 results, no total. Word
choice matters more than expected - "mirroring" does NOT return FFF #442, the
post that introduced entity mirroring, while "flip" and "fluid" both do. So the
note says to try several wordings before concluding a post does not exist.

Docs only. fmt, clippy and test all pass: 113 unit tests plus 6 install-gated.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01P9FADuTnjE7SFEQWnpNhfc
@wormeyman
wormeyman merged commit 8f09af9 into main Aug 17, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant