Build the minimum working web-first loop on feat/projects-backend. Reuse projectIssues and projectWorkRuns. Target flow: connected project -> Signal or user request creates issue -> AgentOS clones repository -> coding agent changes code and verifies -> branch pushed -> Gitea PR created -> web displays run and PR status. Merge remains human-controlled. Use apps/web/design as the visual source. Avoid new generalized platform layers unless required by this exact loop.
Build the minimum working web-first loop on feat/projects-backend. Reuse projectIssues and projectWorkRuns. Target flow: connected project -> Signal or user request creates issue -> AgentOS clones repository -> coding agent changes code and verifies -> branch pushed -> Gitea PR created -> web displays run and PR status. Merge remains human-controlled. Use apps/web/design as the visual source. Avoid new generalized platform layers unless required by this exact loop.
Architecture constraint: every new domain rule, validated input/result, state transition, and meaningful error must be implemented first as a small Effect v4 primitive under @code/primitives. Convex/backend, Flue agents, AgentOS/Rivet, Gitea adapters, scripts, and web hooks consume those primitives instead of duplicating business logic. Keep the primitives limited to the minimum required for this MVP.
Architecture constraint: every new domain rule, validated input/result, state transition, and meaningful error must be implemented first as a small Effect v4 primitive under `@code/primitives`. Convex/backend, Flue agents, AgentOS/Rivet, Gitea adapters, scripts, and web hooks consume those primitives instead of duplicating business logic. Keep the primitives limited to the minimum required for this MVP.
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.
Build the minimum working web-first loop on feat/projects-backend. Reuse projectIssues and projectWorkRuns. Target flow: connected project -> Signal or user request creates issue -> AgentOS clones repository -> coding agent changes code and verifies -> branch pushed -> Gitea PR created -> web displays run and PR status. Merge remains human-controlled. Use apps/web/design as the visual source. Avoid new generalized platform layers unless required by this exact loop.
Architecture constraint: every new domain rule, validated input/result, state transition, and meaningful error must be implemented first as a small Effect v4 primitive under
@code/primitives. Convex/backend, Flue agents, AgentOS/Rivet, Gitea adapters, scripts, and web hooks consume those primitives instead of duplicating business logic. Keep the primitives limited to the minimum required for this MVP.