chore: initialize project foundation - #20
Conversation
RequestFlow starts as a customer-style engagement (reference project, synthetic data only). Before any product code, the repository needs the enforced workflow of fluory-system 2.1 so that every following issue lands through the same guards: project card, profile (P1 + add-ons), guard hooks, path-scoped rules adapted to this layout, core skills, docs and PR guards, and a CI that reports the foundation phase honestly instead of faking green tests. The discovery results travel with the foundation: PROJECT-START (approved 2026-09-22), the customer request, the pilot proposal, the project brief, roadmap and ADR-0001 with all eleven architecture decisions confirmed. Deviations from the templates, each for a concrete reason: - scripts and hooks converted to LF + .gitattributes: the templates arrive as CRLF on Windows checkouts and bash aborts on \r - CI uses pnpm, Node 24, a path-targeted uv job and current action majors (v7); the template pins npm, Node 22 and v4 actions Refs #1 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
GitHub resolves every action reference at job setup, including steps that are skipped by their condition. astral-sh/setup-uv publishes no floating v10 tag (only v10.2.0), so the whole check job failed before any step ran. Refs #1 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The foundation commit claimed bash aborts on CRLF scripts. Tested on Git Bash 5.2 (MSYS): a CRLF copy of guard-git.sh still blocks a push to main correctly. LF normalisation stays as a portability precaution for Linux shells (WSL2, containers on a Windows checkout), which is untested here. Refs #1 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The independent review requested changes before merge, because accepted ADRs are immutable and contradictions would need a superseding ADR later: - verify levels: integration tests against Postgres + S3 belong to verify, so tenant-isolation and exactly-once proofs gate every PR; the eval gate runs path-targeted on services/ai changes as promised to the customer - CI reacts to ready_for_review and edited, otherwise the PR guard's "ready needs green verify" branch never runs - security rule also covers the two untrusted inputs: intake uploads and AI-service document parsing - .eml files keep their CRLF bytes: duplicate fingerprints hash raw mails - ADR points to the real exceptions register and cites the Better Auth source; PROJECT-START has no template placeholders or dead references - recht add-on is marked for activation with the public showcase Refs #1 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Frischer Review (Reviewer-Rolle, unabhängige Session) – 2026-09-22Urteil: REQUEST CHANGES – kein Blocker. Alle sechs Akzeptanzkriterien von #1 sind erfüllt und selbst nachgeprüft: Dateien byte-identisch zu den Vorlagen 2.1, LF, Modus 100755; Wächter-Skripte grün; Hook-Smoke-Test; CI-Lauf grün; Branch Protection; Labels; keine Secrets; Stack, Stufe, Add-ons, Budget und 13,25 Tage konsistent.
Für den Orchestrator zu bestätigen: Der einzige echte Personenname im öffentlichen Repo ist der Vorname des Autors (Signatur im Vorschlag, Anrede in der Kundenanfrage). Außerdem fehlt noch das GitHub-Project-Board, weil dem Token der Branch Protection nach dem Fix ( |
Warum
Fixes #1
Arbeitsstand
project-Scope). Erledigt: frischer Review (8 Befunde, alle aufgelöst, chore: initialize project foundation #20 (comment)), Branch Protection inkl.enforce_admins.Was ist passiert (Klartext)
RequestFlow bekommt sein Fundament, bevor die erste Zeile Produktcode entsteht. Im Repo liegen jetzt die Spielregeln, und sie werden technisch erzwungen: Ein Push direkt auf
mainwird blockiert, Secrets sind für Agents nicht lesbar, und jede PR-Beschreibung sowie der Doku-Stand werden automatisch geprüft. Außerdem liegt hier alles, was in der Discovery entschieden wurde: die Kundenanfrage, der Vorschlag an den Kunden, der Projektsteckbrief, die Meilensteine und die Architekturentscheidung ADR-0001 mit allen elf Einzelentscheidungen. Der erste Arbeitsschritt ist als Issue #3 vorbereitet. Beim Einrichten sind Lücken in den Vorlagen aufgefallen: Die CI-Vorlage nutzt veraltete Action-Versionen, und eine Action ließ sich nicht auflösen, was die CI anfangs rot machte. Die Befunde stehen gesammelt in Fluory/Entwicklungsplan#27. Eine eigene Fehlannahme wurde dabei korrigiert: Windows-Zeilenenden brechen die Hooks unter Git Bash nicht (getestet). Die LF-Normalisierung ist nur eine Vorsorge für Linux-Shells.Plan-Pflicht (SYSTEM.md §4)
Impact Manifest
docs/technical/architecture.mdfestgelegt (13 TS-Module + AI-Service + Contracts, alle Statusplanned).contracts/ai-service.openapi.yamlundcontracts/erp-export.openapi.yaml(ADR-0001 D8, D9)..claude/komplett, Wächter-Skripte grün, CI mit Fundament-Phase, aufgefächerte Doku, Branch Protection.bash scripts/doku-check.shlokal und in der CI;scripts/pr-check.shin der CI; Smoke-Test der Hooks (Push aufmain→ exit 2,.envlesen → exit 2, Session-Karte rendert).eu-SDK-Konfiguration, R2 EU auf Free, Showcase-Host des AI-Service).Geändert
AGENTS.md,CLAUDE.md,project-profile.yml,CHANGELOG.md,README.md: Projektkarte (89 Zeilen), Profil P1 mit Add-ons und Budget, öffentliches README.claude/: Settings mit Read-Sperren, 7 Hooks (LF, ausführbar), 7 Rules mit ansrc/features/,services/ai/undcontracts/angepasstenpaths:, 4 Kern-Skillsscripts/:doku-check.sh,pr-check.sh,quiet-run.sh(unverändert, LF, ausführbar).github/: CI (pnpm, Node 24, pfadgezielter uv-Job, aktuelle Action-Majors;setup-uvaufv10.2.0gepinnt, weil der Tagv10nicht existiert), PR- und Issue-Vorlagendocs/:input/(Kundenanfrage),product/(Brief, Roadmap, Pilot-Vorschlag),technical/architecture.md(Karte + Ausnahmen-Register),decisions/(ADR-0001 + Index)PROJECT-START.md: Discovery, Freigabe vom 2026-09-22, echte Issue-Nummern.gitattributes: LF-Normalisierung (bereits im Initial-Commit)Nachweis (SYSTEM.md §11)
verify:changed: nicht anwendbar – Fundament-Phase ohne Produktcodeverify: grün – Fundament-Phase:bash scripts/doku-check.sh→ „Docs guard: green (0 WARN)“;pr-check.shlokal grünverify:full/ E2E-Spec: nicht betroffenguard-git.shmitgit push origin main→ exit 2 (blockiert);guard-read.shmit.env→ exit 2;session-start.shrendert die Karte mit Profil P1/2.1checkgrün (Run 35779566855 vor den Review-Fixes; der Lauf zum aktuellen Commit ist an diesem PR sichtbar){"checks":["check"],"strict":true,"pr_required":true,"enforce_admins":true,"force_push":false,"deletions":false}Doku-Entscheidung (genau eine)
README.md,docs/product/docs/technical/architecture.mddocs/technical/architecture.mddocs/decisions/ADR-0001-pilot-architecture.md[Unreleased](sichtbares Feature oder Verhalten – im selben PR, nie „später")Entferntes oder Umbenanntes:
docs/+ README gegrept, Treffer bereinigt: ja –KUNDENANFRAGE.md→docs/input/2026-09-22-kundenanfrage.md, alle Verweise angepasstDateigrößen und neue Bausteine (SYSTEM.md §7)
Dateien über 500 Zeilen im Diff (Ausnahmen: generierter Code, Lockfiles, Fixtures, Migrationen, Schemas, Ressourcen, Doku, Konfiguration):
Über 800 Zeilen mit neuer Fachlogik oder über 1000 Zeilen (P1/P2): nicht betroffen
Neue Shared-Komponente, Utility-Datei, Adapter oder fachlicher Service:
Subagent-Einsätze
Risiken / offene Punkte
LICENSEbedeutet „alle Rechte vorbehalten“. Das ist bewusst offen gelassen.gh-Token hat keinenproject-Scope → einmalgh auth refresh -s projectausführen, danach wird das Board angelegt.setup-uvund die Reihenfolge Initial-Commit ↔ Push-Wächter. Der Eintrag inPROJEKTE.mdkommt als separater PR im Entwicklungsplan..gitattributessind korrigiert.🤖 Generated with Claude Code