feat(runner): DOCS_AUDIT runner-gevalideerde push (M19 Task 4.0) #47

Merged
janpeter merged 1 commit from feat/M19-docs-audit-push-guard into master 2026-07-07 20:04:19 +02:00
Owner

M19 Task 4.0 — de deterministische markdown-only-grens buiten de LLM voor de nieuwe DOCS_AUDIT-job. Vereist de gemergde mcp-PR (scrum4me-mcp #75, die applyDocsAuditTerminalUpdate exporteert) zodra de image herbouwd wordt.

Wat

De agent bewerkt markdown en commit lokaal, maar pusht niet en zet geen status. De runner doet dat:

  • lib/docs-audit-push.ts (puur, getest via een nieuwe minimale vitest-opzet):
    • isMarkdownOnlyDiff(paths) — alleen README.md + docs/**/*.md; lege lijst → false.
    • buildDocsAuditChildEnv(env) — zet FORGEJO_TOKEN op het read-only DOCS_AUDIT_READ_TOKEN en verwijdert DOCS_AUDIT_PUSH_TOKEN uit de agent-child-env.
  • bin/run-one-job.ts DOCS_AUDIT-tak: spawnt de agent met de geredigeerde child-env + REPO_PATH/RESULT_PATH. Na de agent leest de runner de handoff, resolvet de default branch (ook master-repo's), valideert git diff met isMarkdownOnlyDiff, pusht HEAD:<default> met het push-token (dat niet in de agent-env zit), en zet de terminale status via de geïmporteerde applyDocsAuditTerminalUpdate. Niet-markdown of push-fout → FAILED (non_markdown_change_blocked).

Verificatie

  • Pure helpers: 5 vitest-tests groen (markdown-only + credential-redactie incl. "geen push-secret in de child-env").
  • run-one-job.ts is integratie-glue die tsx in de container draait tegen de gemounte mcp; niet lokaal typecheckbaar. Syntax gecontroleerd; de git-clone→validate→push→terminaliseer-keten wordt end-to-end geverifieerd in fase 5 (E2E-6).

Story ST-1467 (Task 4.0). De rest van fase 4 (image-rebuild, worker-docs, repo_url-backfill, timer) is server-rollout.

🤖 Generated with Claude Code

**M19 Task 4.0** — de deterministische markdown-only-grens buiten de LLM voor de nieuwe DOCS_AUDIT-job. Vereist de gemergde mcp-PR (scrum4me-mcp #75, die `applyDocsAuditTerminalUpdate` exporteert) zodra de image herbouwd wordt. ## Wat De agent bewerkt markdown en commit lokaal, maar **pusht niet en zet geen status**. De runner doet dat: - **`lib/docs-audit-push.ts`** (puur, getest via een nieuwe minimale vitest-opzet): - `isMarkdownOnlyDiff(paths)` — alleen `README.md` + `docs/**/*.md`; lege lijst → `false`. - `buildDocsAuditChildEnv(env)` — zet `FORGEJO_TOKEN` op het **read-only** `DOCS_AUDIT_READ_TOKEN` en verwijdert `DOCS_AUDIT_PUSH_TOKEN` uit de agent-child-env. - **`bin/run-one-job.ts`** DOCS_AUDIT-tak: spawnt de agent met de geredigeerde child-env + `REPO_PATH`/`RESULT_PATH`. Na de agent leest de runner de handoff, resolvet de **default branch** (ook `master`-repo's), valideert `git diff` met `isMarkdownOnlyDiff`, pusht `HEAD:<default>` met het push-token (dat **niet** in de agent-env zit), en zet de terminale status via de geïmporteerde `applyDocsAuditTerminalUpdate`. Niet-markdown of push-fout → `FAILED (non_markdown_change_blocked)`. ## Verificatie - Pure helpers: **5 vitest-tests groen** (markdown-only + credential-redactie incl. "geen push-secret in de child-env"). - `run-one-job.ts` is integratie-glue die tsx in de container draait tegen de gemounte mcp; niet lokaal typecheckbaar. Syntax gecontroleerd; de git-clone→validate→push→terminaliseer-keten wordt end-to-end geverifieerd in **fase 5 (E2E-6)**. Story ST-1467 (Task 4.0). De rest van fase 4 (image-rebuild, worker-docs, repo_url-backfill, timer) is server-rollout. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Pure helpers (lib/docs-audit-push.ts, getest via nieuwe vitest-opzet):
- isMarkdownOnlyDiff: alleen README.md + docs/**.md; lege lijst -> false.
- buildDocsAuditChildEnv: FORGEJO_TOKEN=DOCS_AUDIT_READ_TOKEN, push-token verwijderd.

bin/run-one-job.ts DOCS_AUDIT-tak: child-env via buildDocsAuditChildEnv (read-only
token, geen push-token) + REPO_PATH/RESULT_PATH; na de agent leest de runner de
handoff, resolvet de default branch, valideert de diff (isMarkdownOnlyDiff), pusht
HEAD:<default> met het push-token (buiten de agent-env) en zet de terminale status
via de geïmporteerde applyDocsAuditTerminalUpdate. Niet-markdown/push-fout -> FAILED.
Integratie-glue verifieerbaar via fase-5 E2E (geen lokale runner-typecheck mogelijk).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
janpeter merged commit d367b9396e into master 2026-07-07 20:04:19 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
janpeter/scrum4me-docker!47
No description provided.