Convex control plane (Slices 1-4 prerequisites for Slice 5): - Versioned Definition/Design persistence: revisions preserve history instead of deleting prior slices/approvals - Fenced conversation turn queue: attempt-numbered leases prevent stale worker overwrites; expired turns reconciled by cron - Fenced Run/Attempt claiming: only queued attempts from running Runs can be claimed; lease expiry checks on every finish/checkpoint - Multi-slice progression: successful slice marks next slice ready instead of completing the whole Work; completed Runs blocked from retry - Typed AttemptClassification in schema and resolver decisions table - Durable resolver decisions for normal outcomes, cancellation, and lease-expiry recovery - Persistent artifacts and delivery metadata with provenance, source revision, verification status, and controlled delivery transitions - High-impact open questions block definition approval - Question submission gated to defining/awaiting-approval states only - Delivery status updates validate JSON metadata before persisting - Planner failures recorded as durable blocked events - Approval identity uses canonical tokenIdentifier Primitives: - decodeDefinition separates decode from validate - Design validation enforces 1-4 slices with unique IDs and valid deps - Artifact and delivery draft schemas with verified-revision binding - Delivery status transition table Package management: - Consolidated shared deps into single catalog (hono, valibot, streamdown, @types/react, @types/node, @tailwindcss/*, react-native) - Removed cross-version Hono boundary: flue() exported as Fetchable - Deleted bun.lock and regenerated from clean catalog resolution Lint/format: - Removed .eslintignore; oxc uses native ignorePatterns in oxlint.config.ts - Deleted redundant packages/backend/.oxlintrc.json - Added repos/** and scripts/** to ignore patterns - Convex-specific rule overrides for ES2022 target constraints - Fixed all oxc errors in fluePersistence.ts and agents/src/db.ts - Fixed all formatting across changed files
33 lines
1.0 KiB
TypeScript
33 lines
1.0 KiB
TypeScript
import { defineConfig } from "oxlint";
|
|
import core from "ultracite/oxlint/core";
|
|
import react from "ultracite/oxlint/react";
|
|
import remix from "ultracite/oxlint/remix";
|
|
|
|
export default defineConfig({
|
|
extends: [core, react, remix],
|
|
ignorePatterns: [...core.ignorePatterns, "repos/**", "scripts/**"],
|
|
overrides: [
|
|
{
|
|
files: ["**/convex/**/*.ts", "**/convex/**/*.test.ts"],
|
|
rules: {
|
|
"unicorn/filename-case": "off",
|
|
// Convex targets ES2022: no toSorted/at; sequential awaits ensure atomicity
|
|
"unicorn/no-array-sort": "off",
|
|
"no-await-in-loop": "off",
|
|
// Convex query builders use `any` in index callbacks
|
|
"@typescript-eslint/no-explicit-any": "off",
|
|
"@typescript-eslint/no-non-null-assertion": "off",
|
|
"eslint/complexity": "off",
|
|
},
|
|
},
|
|
{
|
|
files: ["**/convex/**/*.test.ts"],
|
|
rules: {
|
|
"unicorn/no-await-expression-member": "off",
|
|
"eslint/require-await": "off",
|
|
"sort-keys": "off",
|
|
},
|
|
},
|
|
],
|
|
});
|