Untracks 63 build/scraper-run artifacts that were committed to git despite
being pure runtime output:
13 .pyc files under services/{api,scrapers}/**/__pycache__/ — already
covered by .gitignore (__pycache__/, *.pyc), but they predate that
rule so git kept tracking them (ignore patterns don't retroactively drop
already-tracked files).
50 scraped brreg.no JSON pages under services/scrapers/output/ — no
ignore rule existed for this path at all.
Verified before removing: repo-wide grep shows neither set is referenced by
any source file, test, or doc as a fixture — both are just local run output.
Added services/scrapers/output/ to .gitignore so future scraper runs
don't reintroduce this.
No source or test file touched. pnpm test (156 passed / 1 honestly skipped
— the realinfra ST0RE check, which needs live credentials this session
doesn't have) and pnpm run typecheck both pass unchanged before and after.
Matches docs/compliance/BACKLOG.mdP4-4, explicitly listed as hygiene
"kan göras i en session utan produktbeslut" (no product decision required).
Picks up unfinished work from an earlier local branch of the same name that
was never pushed/merged.
Mergas EJ av mig — för Simons granskning.
Untracks 63 build/scraper-run artifacts that were committed to git despite
being pure runtime output:
- 13 `.pyc` files under `services/{api,scrapers}/**/__pycache__/` — already
covered by `.gitignore` (`__pycache__/`, `*.pyc`), but they predate that
rule so git kept tracking them (ignore patterns don't retroactively drop
already-tracked files).
- 50 scraped `brreg.no` JSON pages under `services/scrapers/output/` — no
ignore rule existed for this path at all.
Verified before removing: repo-wide grep shows neither set is referenced by
any source file, test, or doc as a fixture — both are just local run output.
Added `services/scrapers/output/` to `.gitignore` so future scraper runs
don't reintroduce this.
No source or test file touched. `pnpm test` (156 passed / 1 honestly skipped
— the realinfra ST0RE check, which needs live credentials this session
doesn't have) and `pnpm run typecheck` both pass unchanged before and after.
Matches `docs/compliance/BACKLOG.md` **P4-4**, explicitly listed as hygiene
"kan göras i en session utan produktbeslut" (no product decision required).
Picks up unfinished work from an earlier local branch of the same name that
was never pushed/merged.
**Mergas EJ av mig — för Simons granskning.**
13 compiled .pyc files under services/{api,scrapers}/**/__pycache__/ and 50
scraped brreg.no JSON pages under services/scrapers/output/ were committed to
git despite __pycache__/*.pyc already being covered by .gitignore -- they
predate that rule and git does not retroactively drop already-tracked files
that start matching an ignore pattern.
Neither set is referenced by any source, test, or doc as a fixture (verified
via repo-wide grep); both are pure runtime artifacts regenerated on demand.
Untrack them with git rm --cached, delete the local copies, and add
services/scrapers/output/ to .gitignore so scraper runs stop reintroducing
this. No source or test file touched; pnpm test still 156 passed / 1 honestly
skipped (realinfra ST0RE check) after the change.
Matches docs/compliance/BACKLOG.md P4-4, explicitly flagged as hygiene doable
without a product decision. Picks up unfinished work from an earlier,
never-merged branch of the same name.
Status: BLOCKED by branch protection, not by CI, not superseded, and not actually conflicted.
Re-verified against main = 364b7643 (after PR #26 landed).
Why it cannot be merged. The PR touches .gitignore (+3 lines), and protected_file_patterns on main contains the literal .gitignore. Gitea rejects the whole
PR on that basis — including the 63 file deletions that are not protected at all. There is no way
to split the .gitignore line out and still have it land while the pattern stands.
Not superseded — content proof, not path existence. All 63 files this PR removes are still
tracked on today's main:
Landing set against today's main: 64 files changed, 3 insertions(+), 50 deletions(-).
The .gitignore merge is not a regression. The merged file keeps main's newer entries and
adds this PR's:
+# scraper run output (local dumps written by services/scrapers/*.py, never source)
+services/scrapers/output/
mergeable: false in the API is stale, not a real conflict. Gitea's DB row says pull_request.status = 1 (PullRequestStatusChecking), conflicted_files = NULL — the conflict
check has been sitting in "checking" since 2026-08-14 and never finished. A real conflict looks
different: the closed PR #21 has status = 0 with conflicted_files = [".devcontainer/devcontainer.json", "compose.dev.yaml"]. Independently, git merge-tree --write-tree origin/main pr/22 exits 0 despite the branch being 26 commits
behind. Do not rebase this branch to "fix" a conflict that does not exist.
CI is green on head 6c17f0a0: both required contexts success (2026-08-14T13:55:03Z /
13:54:43Z), combined state success.
What Simon has to do: relax protected_file_patterns on main long enough to merge, then
restore it. Splitting the PR does not help here.
**Status: BLOCKED by branch protection, not by CI, not superseded, and not actually conflicted.**
Re-verified against `main` = `364b7643` (after PR #26 landed).
**Why it cannot be merged.** The PR touches `.gitignore` (+3 lines), and
`protected_file_patterns` on `main` contains the literal `.gitignore`. Gitea rejects the *whole*
PR on that basis — including the 63 file deletions that are not protected at all. There is no way
to split the `.gitignore` line out and still have it land while the pattern stands.
**Not superseded — content proof, not path existence.** All 63 files this PR removes are still
tracked on today's `main`:
```
git ls-tree -r --name-only origin/main | grep -cE '__pycache__|services/scrapers/output/'
63 # = 13 .pyc + 50 brreg_page_*.json
```
and zero of them survive the merge:
```
git ls-tree -r --name-only $(git merge-tree --write-tree origin/main pr/22) \
| grep -cE '__pycache__|services/scrapers/output/'
0
```
Landing set against today's `main`: **64 files changed, 3 insertions(+), 50 deletions(-)**.
**The `.gitignore` merge is not a regression.** The merged file keeps `main`'s newer entries and
adds this PR's:
```
+# scraper run output (local dumps written by services/scrapers/*.py, never source)
+services/scrapers/output/
```
**`mergeable: false` in the API is stale, not a real conflict.** Gitea's DB row says
`pull_request.status = 1` (PullRequestStatusChecking), `conflicted_files = NULL` — the conflict
check has been sitting in "checking" since 2026-08-14 and never finished. A real conflict looks
different: the closed PR #21 has `status = 0` with
`conflicted_files = [".devcontainer/devcontainer.json", "compose.dev.yaml"]`. Independently,
`git merge-tree --write-tree origin/main pr/22` exits 0 despite the branch being 26 commits
behind. **Do not rebase this branch to "fix" a conflict that does not exist.**
CI is green on head `6c17f0a0`: both required contexts `success` (2026-08-14T13:55:03Z /
13:54:43Z), combined state `success`.
**What Simon has to do:** relax `protected_file_patterns` on `main` long enough to merge, then
restore it. Splitting the PR does not help here.
Generated with [Claude Code](https://claude.com/claude-code)
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Untracks 63 build/scraper-run artifacts that were committed to git despite
being pure runtime output:
.pycfiles underservices/{api,scrapers}/**/__pycache__/— alreadycovered by
.gitignore(__pycache__/,*.pyc), but they predate thatrule so git kept tracking them (ignore patterns don't retroactively drop
already-tracked files).
brreg.noJSON pages underservices/scrapers/output/— noignore rule existed for this path at all.
Verified before removing: repo-wide grep shows neither set is referenced by
any source file, test, or doc as a fixture — both are just local run output.
Added
services/scrapers/output/to.gitignoreso future scraper runsdon't reintroduce this.
No source or test file touched.
pnpm test(156 passed / 1 honestly skipped— the realinfra ST0RE check, which needs live credentials this session
doesn't have) and
pnpm run typecheckboth pass unchanged before and after.Matches
docs/compliance/BACKLOG.mdP4-4, explicitly listed as hygiene"kan göras i en session utan produktbeslut" (no product decision required).
Picks up unfinished work from an earlier local branch of the same name that
was never pushed/merged.
Mergas EJ av mig — för Simons granskning.
13 compiled .pyc files under services/{api,scrapers}/**/__pycache__/ and 50 scraped brreg.no JSON pages under services/scrapers/output/ were committed to git despite __pycache__/*.pyc already being covered by .gitignore -- they predate that rule and git does not retroactively drop already-tracked files that start matching an ignore pattern. Neither set is referenced by any source, test, or doc as a fixture (verified via repo-wide grep); both are pure runtime artifacts regenerated on demand. Untrack them with git rm --cached, delete the local copies, and add services/scrapers/output/ to .gitignore so scraper runs stop reintroducing this. No source or test file touched; pnpm test still 156 passed / 1 honestly skipped (realinfra ST0RE check) after the change. Matches docs/compliance/BACKLOG.md P4-4, explicitly flagged as hygiene doable without a product decision. Picks up unfinished work from an earlier, never-merged branch of the same name.Status: BLOCKED by branch protection, not by CI, not superseded, and not actually conflicted.
Re-verified against
main=364b7643(after PR #26 landed).Why it cannot be merged. The PR touches
.gitignore(+3 lines), andprotected_file_patternsonmaincontains the literal.gitignore. Gitea rejects the wholePR on that basis — including the 63 file deletions that are not protected at all. There is no way
to split the
.gitignoreline out and still have it land while the pattern stands.Not superseded — content proof, not path existence. All 63 files this PR removes are still
tracked on today's
main:and zero of them survive the merge:
Landing set against today's
main: 64 files changed, 3 insertions(+), 50 deletions(-).The
.gitignoremerge is not a regression. The merged file keepsmain's newer entries andadds this PR's:
mergeable: falsein the API is stale, not a real conflict. Gitea's DB row sayspull_request.status = 1(PullRequestStatusChecking),conflicted_files = NULL— the conflictcheck has been sitting in "checking" since 2026-08-14 and never finished. A real conflict looks
different: the closed PR #21 has
status = 0withconflicted_files = [".devcontainer/devcontainer.json", "compose.dev.yaml"]. Independently,git merge-tree --write-tree origin/main pr/22exits 0 despite the branch being 26 commitsbehind. Do not rebase this branch to "fix" a conflict that does not exist.
CI is green on head
6c17f0a0: both required contextssuccess(2026-08-14T13:55:03Z /13:54:43Z), combined state
success.What Simon has to do: relax
protected_file_patternsonmainlong enough to merge, thenrestore it. Splitting the PR does not help here.
Generated with Claude Code