chore: apply byte5ai engineering-standards (initial bootstrap) - #31
Merged
Conversation
Mark the repo as on-standards via .github/engineering-standards.yml (status: applied, source: byte5ai/engineering-standards) and bring in the missing pieces from the standards template: - .hooks/pre-push blocks direct pushes to main/master; override via ALLOW_PUSH_TO_MAIN=1 for emergencies. - script/setup wires core.hooksPath = .hooks and runs the two-workspace npm install. Mirrors the manual bootstrap in CONTRIBUTING.md. - AGENTS.md gets a "Git Workflow & Engineering Standards" section (branch naming, conventional commits, no Co-Authored-By trailers for AI agents, no force-push, no --no-verify). The stale "Git gibt es aktuell nicht" line from 2026-04-19 is corrected to reflect the public GitHub release. - CONTRIBUTING.md notes the pre-push guard in the verification block and bans Co-Authored-By trailers for AI agents in the PR workflow. Branch protection on main is set separately via the GitHub API after this PR merges, so CI status-check contexts are registered first.
This was referenced May 17, 2026
7 tasks
Weegy
added a commit
that referenced
this pull request
Aug 28, 2026
… drawer (#917) Clicking "Config" on a plugin attached to an orchestrator replaced the whole page with the route error boundary ("Etwas ist schiefgelaufen"). Root cause: since #602 (OM-17) the manifest loader normalises every setup field's `label` and `help` into a `{ <locale>: text }` map (`?? { en: key }`). PluginsDnd still rendered `field.label` straight into JSX, which is React #31 ("Objects are not valid as a React child (found: object with keys {en})"). It threw on the first render after the drawer opened, so the error propagated to app/error.tsx and took the orchestrator page down. This was not an edge case: 192 of 192 setup fields across 27 plugins in the live catalog are maps — not one ships a bare string. Every plugin with setup fields was unconfigurable from the orchestrator page. - PluginsDnd resolves label/help with `pickLocalized` (the same helper the store's setup form and credentials editor already use), falling back to the field key exactly as the loader does. - `PluginSetupFieldDto` typed `label`/`help` as plain strings, which is what let the mismatch through typecheck; both are now `LocalizedMarkdown | string`. - `pickLocalized` now returns a bare string as-is. Without that branch a payload from a pre-#602 middleware would fall through to `Object.values('abc')` and render 'a'. Regression test drives the button and asserts the map resolves, the active locale wins, a bare string still renders, and an empty map falls back to the key. Reverting the render change fails three of the four with React #31.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Bringt das Repo auf den byte5ai-Engineering-Standard. Additive Änderung — kein bestehendes Verhalten wird ersetzt.
.github/engineering-standards.yml(neu): expliziterstatus: applied-Marker, Sourcebyte5ai/engineering-standards, decided/reviewed 2026-05-17..hooks/pre-push(neu, +x): blockiert direkte Pushes aufmain/master. Override viaALLOW_PUSH_TO_MAIN=1für Notfälle.script/setup(neu, +x): One-Command-Bootstrap —core.hooksPath = .hooks,npm installinmiddleware/undweb-ui/. Spiegelt die manuellen Schritte in CONTRIBUTING.md.AGENTS.md: neue Section "Git Workflow & Engineering Standards" (Branch-Naming, Conventional Commits, Verbot vonCo-Authored-By:-Trailern für KI-Agenten, kein Force-Push, kein--no-verify). Veralteter Satz "Git gibt es aktuell nicht — Stand 2026-04-19" korrigiert (Repo ist seit2026-05öffentlich auf GitHub).CONTRIBUTING.md: Pre-Push-Guard-Hinweis im Verification-Block; Verbot vonCo-Authored-By:-Trailern im PR-Workflow.Branch Protection auf
mainwird in einem separaten Schritt nach dem Merge per GitHub-API gesetzt — danach sind die CI-Status-Check-Kontexte registriert und können als Required Checks gepinnt werden:middleware (lint + typecheck + test),web-ui (lint + typecheck + vitest),schema (migrations on pgvector),audit (high+critical block) (middleware|web-ui).Hinweis: Required Status Checks haken sich an Job-Namen. Wenn
ci.yml-Job-name:-Felder geändert werden, muss das Branch-Protection-PUT entsprechend nachgezogen werden.Test plan
refs/heads/main-Push →BLOCKED, Exit 1ALLOW_PUSH_TO_MAIN=1→ Exit 0chore/foo) → Exit 0bash script/setupläuft lokal durch (middleware-/web-ui-npm install+core.hooksPath)mainper API (separater Step)