Skip to content
This repository was archived by the owner on Sep 17, 2026. It is now read-only.

Add a root AGENTS.md, so the rules survive the session that learned them - #20

Merged
Peeja merged 1 commit into
mainfrom
claude/root-agents-md
Sep 17, 2026
Merged

Peeja merged 1 commit into
mainfrom
claude/root-agents-md

Conversation

@Peeja

@Peeja Peeja commented Sep 17, 2026 •

Copy link
Copy Markdown

You asked what would make sure the wiki gets updated as things happen rather than when someone remembers. This is the answer. Two files, based on main, stacked on nothing.

It says up front that it is scaffolding

Added at your prompt, and it changes how the whole file reads, so it is the first section rather than a footnote:

Most of what follows exists because this repository is being assembled, not because it is how Forge is worked on. Rules 7 and 8 are entirely about git subtree; rule 1 is about what is still being moved in; the wiki and the four-document split exist to carry decisions across a construction that spans many sessions and one person's attention. None of that is a durable guide to a finished monorepo, and left in place it will read as though it were.

The replacement trigger is a checkable set of conditions, not a feeling — nothing left to import, no subtree pulls pending, the forge-2 → forge rename done, Phase 1's release machinery real. Same reason the wiki trigger is an event.

It also guesses at the split — rules 2–5 and the conventions probably survive; rules 1 and 6–9, the wiki and most of the document table probably don't — and says explicitly not to treat that guess as settled.

The honest diagnosis it came from

Nothing would have, because every rule this repository runs on has been living in one session's scheduled check-in prompts — session-local, timer-driven, gone when the session ends. That is also why the wiki updates were lumpy: they happened when a check-in fired, not when the thing they describe changed.

All ten services carry an AGENTS.md. The monorepo root carried none. So nothing told a new session — or a person — that a wiki exists, what belongs in it versus MAJOR_DECISIONS.md versus MONOREPO_TODO.md, or what the nine rules are.

The wiki instruction is an event, not a standing wish

"Keep it current" is the exact phrasing that failed twice in one hour, so the file does not use it:

Opened, pushed to, rebased, merged or closed a PR? Made a decision, or took one on someone's behalf? Found something you are deliberately not fixing?
→ update the wiki before you report what you did, not after.

A main sha or a PR list that is one merge stale is worse than no snapshot, because it is believed.

What else is in it

Short on purpose, pointing at the wiki for reasoning rather than duplicating it — duplicated prose is the thing that goes stale. Only what is already decided and observable: where the four documents differ; the nine rules in one-line form; the four workflows, and that nothing is path-filtered on purpose; and two conventions that have caught real mistakes here — never hand-transcribe a digest or a sha, and verify a guard in both directions.

CLAUDE.md is @AGENTS.md, matching every service in the tree.

The draft was wrong, and checking it is what found that

The first version enumerated three guard scripts. main has two — check-stack-images.sh arrives with #17. So the guards section now names the directory and lets it be the list, which is what rule 3 says to do anyway. A document that opened by breaking its own rule 3 would not have been worth much.

Worth your eye

This is a proposal about how this repository is worked on, not a record of something already agreed. In particular: the nine rules are compressed from the wiki and may have flattened a nuance; the wiki trigger is the one line that actually has to work; and the scaffolding section's guess at what survives the rewrite is a guess.

🤖 Generated with Claude Code

https://claude.ai/code/session_01CGAGAib517Ae1kg8SCdcEt

Peeja pushed a commit that referenced this pull request Sep 17, 2026
Recorded here in the same turn the PR was opened, which is the behaviour #20
is arguing for.

Needs Human Work now says why these pages drifted rather than leaving it as an
apology: the rules have been living in one session's check-in prompts, so the
wiki was updated when a timer fired rather than when something changed. #20
moves them into a root AGENTS.md and writes the trigger as an event.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CGAGAib517Ae1kg8SCdcEt
Petra asked what would make sure the wiki gets updated as things happen rather
than when someone remembers. The honest answer is that nothing would, because
every rule this repository runs on has been living in one session's scheduled
check-in prompts: session-local, timer-driven, and gone when the session ends.

All ten services carry an AGENTS.md. The monorepo root carried none, so
nothing told a new session -- or a person -- that a wiki exists, what belongs
in it, or what the nine rules are.

**It says up front that it is scaffolding.** Most of it exists because this
repository is being assembled: rules 7 and 8 are entirely about git subtree,
rule 1 is about what is still being moved in, and the wiki and the
four-document split exist to carry decisions across a construction spanning
many sessions. None of that is a durable guide to a finished monorepo, and
left in place it would read as though it were. The replacement trigger is a
checkable set of conditions -- nothing left to import, no subtree pulls
pending, the rename done, Phase 1 real -- for the same reason the wiki trigger
is an event rather than a wish.

The wiki instruction:

  Opened, pushed to, rebased, merged or closed a PR? Made a decision, or took
  one on someone's behalf? -> update the wiki BEFORE you report what you did.

"Keep it current" is the phrasing that failed twice in one hour. A stale
`main` sha is worse than no snapshot, because it is believed.

The rest is short on purpose and points at the wiki for reasoning rather than
duplicating it. What is here is only what is already decided and observable:
where the four documents differ, the nine rules in their one-line form, the
four workflows, and the two conventions that have caught real mistakes (never
hand-transcribe a digest or a sha; verify a guard in both directions).

The guards section names the directory rather than the scripts, and that is
not laziness -- the first draft listed three, `main` has two, and the third
arrives with #17. Verifying the draft against the tree is what caught it. A
hand-maintained copy of a derivable list is what rule 3 exists to stop, and
this file should not open by breaking it.

CLAUDE.md is `@AGENTS.md`, matching every service in the tree.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CGAGAib517Ae1kg8SCdcEt
@Peeja
Peeja force-pushed the claude/root-agents-md branch from 4663494 to f5fb9e8 Compare September 17, 2026 15:08
Peeja pushed a commit that referenced this pull request Sep 17, 2026
Petra's point: the file is only meaningful during construction, so it needs to
say so where the next reader sees it rather than outliving its usefulness
quietly.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CGAGAib517Ae1kg8SCdcEt
@Peeja
Peeja merged commit 4db1377 into main Sep 17, 2026
21 of 22 checks passed
@Peeja
Peeja deleted the claude/root-agents-md branch September 17, 2026 15:19
Peeja pushed a commit that referenced this pull request Sep 17, 2026
Two pages of state that moved with them: the open list is #19 and #21, both
on main and independent now that #17's merge retargeted #19 and Petra rebased
it; the branch-deletion list is eighteen rather than seven, derived rather
than typed; the root AGENTS.md exists, so the thing that was proposed is now
the thing that either works or does not.

#21 does not need rebasing -- it touches only itest.yml and MONOREPO_TODO.md,
neither of which main has touched since 3c3fe76.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CGAGAib517Ae1kg8SCdcEt
Peeja pushed a commit that referenced this pull request Sep 17, 2026
Petra merged #20, #17, #22, #19, #23 and #24; main is 144b316 and the open
list is #25 and #26. Dropped the merged rows from both tables rather than
letting them accumulate.

#25's e2e red turned out to be the pre-existing filesystem flake, and the one
re-run that cleared it was warm -- so it produced the measurement as well as the
green: 8 images in 23s against a 7m34s baseline, and the e2e job from 13m10s to
5m29s. #26 puts that in MONOREPO_TODO.md with the caveats attached rather than
the headline alone.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CGAGAib517Ae1kg8SCdcEt
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants