docs: cut every worktree from a freshly fetched origin/main #58

Merged
jklein merged 2 commits from docs/worktree-from-origin-main into main 2026-09-28 15:22:57 +02:00
2 Commits
Author SHA1 Message Date
jklein 61e28a1459 docs: the instructions block is a snapshot from session start
Validate Helm Charts / Detect changed charts (pull_request) Successful in 2s
Validate Helm Charts / Resource quantities (pull_request) Successful in 8s
Validate Helm Charts / Build ${{ fromJSON(needs.detect-changed-charts.outputs.charts) }} (pull_request) Skipped
Validate Helm Charts / Trivy config ${{ fromJSON(needs.detect-changed-charts.outputs.scan-charts) }} (pull_request) Skipped
Validate Helm Charts / Install-test (pull_request) Skipped
The first wording said the project-instructions block "is read from the
spawning session's working directory", which suggests that pulling in
that directory fixes it. It does not. The block is a snapshot taken when
the spawning session started, and nothing re-reads it afterwards.

Measured: a session whose working directory had been fast-forwarded to
the tip immediately before, and verified as up to date, still handed the
next agent a block from before Gitea #47 — while that agent's own
worktree was identical to origin/main (0 0). A current checkout and
stale instructions at the same moment.

Hence the two consequences that actually hold: the directory must be
current before the session starts, and an agent checks a rule against
the file in its own worktree and the diff against origin/main, because
the first cannot be enforced from inside an agent and the second can.
2026-09-27 23:05:06 +00:00
jklein 56bed94064 docs: cut every worktree from a freshly fetched origin/main
Validate Helm Charts / Detect changed charts (pull_request) Successful in 3s
Validate Helm Charts / Build ${{ fromJSON(needs.detect-changed-charts.outputs.charts) }} (pull_request) Skipped
Validate Helm Charts / Trivy config ${{ fromJSON(needs.detect-changed-charts.outputs.scan-charts) }} (pull_request) Skipped
Validate Helm Charts / Install-test (pull_request) Skipped
Validate Helm Charts / Resource quantities (pull_request) Successful in 8s
A worktree branched from the local main ref can be arbitrarily old, and
the staleness is invisible where it costs most: the project-instructions
block a subagent receives at the head of its context is read from the
spawning session's working directory, not from origin/main. An outdated
worktree therefore hands every agent rules that were already corrected.

Measured on 2026-09-27: an agent reported a contradiction in CLAUDE.md
that two PRs had already fixed, and quoted the stale copy as binding.
Nothing broke only because the same agent compared its diff against
origin/main rather than against the local pointer. The same day, in the
shared checkout, main..HEAD showed 105 differing files while the
difference against origin/main was one line.

Also name the wiki's default branch: it is main, not master. Since the
rule to fetch and rebase before every wiki push, the name is required —
an agent tried to rebase onto origin/master and the rebase failed.

Fixes #57
2026-09-27 22:58:39 +00:00