moooon
Motir
Vibe the project. Bring an idea — Motir's three AI layers plan it, track it, and ship it, end to end. You're looking at Motir, built in Motir.
- Vibe Project
- Open Source
- AI Agent
- AI Loop
- 6
- 需求
- 4
- 贊同
- 531
- 已規劃
- 4,962
- 已發布
- (motir-core) Created vs Resolved as bars with series switches — a line/bars switch drawing grouped bars per period, Created and Resolved each switchable off with the last one locked on, both in the URL through `buildReportHref` beside `period` / `daysBack` / `cumulative` / `savedFilterId`
- (motir-core) The Workload page over a period — Period + Days-back controls in the URL beside `savedFilterId` / `measure`, each bar split into an Assigned and an "Unassigned — reported by" segment with a legend, a no-reporter Unassigned bar, and the empty-window state
- (motir-core) Each report explains itself — a per-report "what this shows / how to read it" text behind one show/hide toggle, remembered for the reader in the browser across every report and visit, shown by default the first time, with the en copy for all eight reports
- (motir-core) Every report page fills the content width — `ReportPageChrome` drops its `max-w-[48rem]` cap, the Sprint report page adopts the same chrome, and each page chart renders at the bounded page height so the x axis stays above the fold at 1440 and 1920 px
- (motir-core) The chart primitives take a bounded page height and never overlap x labels — `ChartFrame` height held independent of width, `LineChart` / `DifferenceAreaChart` / `BarChart` thin (every n-th) and angle ticks to fit, every value still on hover and in the data table, widget tiles unchanged
- (motir-core) `reportsService.getWorkload` over a window — work open at any point in the last Days back, an unassigned item counted on its reporter as a separate segment (no reporter → Unassigned), with the dashboard gadget's open-now snapshot left unchanged
- validate_work_item: an UNDER-AUTHORED shape family — a leaf with no criteria and no sizing, which every detector is blind to
- The motir plugin's heartbeat hook runs on every tool use outside a run, and prints "MCP server 'plugin:motir:motir' not connected" twice per call when its server is hidden
- cli-rate-limit-story case 2 fails in the merge queue: the "waits Retry-After" check picks a concurrent request, not the retry
- Capacity alerts replace the 3-day alerts: queue-wait and queue-age alerts per pool, and read-latency and memory alerts for the graph servicePlanning capacity follows demand — a conversation turn never waits behind a planning run, the planning machines and the graph service grow and shrink on their own, and a load-tested cost ceiling is the only fixed limit
- Story integration test against the real database: once-per-episode across passes and evaluators, new episode after clearing, pool kind isolation, queue age with no worker, no 3-day alert, no fly scale textPlanning capacity follows demand — a conversation turn never waits behind a planning run, the planning machines and the graph service grow and shrink on their own, and a load-tested cost ceiling is the only fixed limit
- Rewrite docs/graph-service-api.md around the four capacity alerts: names, tags, config names of thresholds and windows, what each means, and no 3-day alert or scale commandPlanning capacity follows demand — a conversation turn never waits behind a planning run, the planning machines and the graph service grow and shrink on their own, and a load-tested cost ceiling is the only fixed limit
- Retire the 3-day "graph service: add a machine" alert: evaluateCapacity stops raising it, capacity samples still written, the alert table left unwrittenPlanning capacity follows demand — a conversation turn never waits behind a planning run, the planning machines and the graph service grow and shrink on their own, and a load-tested cost ceiling is the only fixed limit
- Run the queue-age check at every submit, every scale-out check and on the always-on graph service hosts, so a pool with all machines suspended is still watchedPlanning capacity follows demand — a conversation turn never waits behind a planning run, the planning machines and the graph service grow and shrink on their own, and a load-tested cost ceiling is the only fixed limit
- Graph read-latency and graph memory alerts from the capacity samples: one alert per episode naming the service or machine, the value and the thresholdPlanning capacity follows demand — a conversation turn never waits behind a planning run, the planning machines and the graph service grow and shrink on their own, and a load-tested cost ceiling is the only fixed limit
- Queue-wait and queue-age alerts per pool: evaluate each pool's measurements against its thresholds and raise one operator alert per episode with pool, value, threshold, window, machine count and free slotsPlanning capacity follows demand — a conversation turn never waits behind a planning run, the planning machines and the graph service grow and shrink on their own, and a load-tested cost ceiling is the only fixed limit
- Queue measurements per pool: p95 of startedAt minus createdAt over a window and age of the oldest queued job, by the decision's kind-to-pool tablePlanning capacity follows demand — a conversation turn never waits behind a planning run, the planning machines and the graph service grow and shrink on their own, and a load-tested cost ceiling is the only fixed limit
- Alert settings from config: every threshold and window read with the decision's placeholder as fallback, unusable values logged, and a test pinning each alert window above its scaler's windowPlanning capacity follows demand — a conversation turn never waits behind a planning run, the planning machines and the graph service grow and shrink on their own, and a load-tested cost ceiling is the only fixed limit
- Alert episodes in the database: a table and repository that open an episode once across evaluators and close it when the condition stopsPlanning capacity follows demand — a conversation turn never waits behind a planning run, the planning machines and the graph service grow and shrink on their own, and a load-tested cost ceiling is the only fixed limit
- Vitest (11/20): projectSquareDirectory cursor-pagination test times out at 15s under CI load and trips the in-flight probe