[rig-decomposition-bench] Daily rig decomposition benchmark — 2026-10-30 — single-call
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Anfängerfreundlichkeit
- 25/100
- Issue-Typ
- Feature
- Klarheit
- Muss geklärt werden
- Aktivitätsstatus
- Aktiv
- Tech-Stack
- python, typescript
- Bereich
- ai-infra-agents, testing-qa
Rechercherichtung
The issue includes a Rig workflow source, but does not name a repository file or state a specific change to make. Start by locating the benchmark harness and reading how it runs and grades decomposition tasks; the issue's rationale says the expected formulary data was missing. Done would need a clearly stated repository change and a way to verify it, neither of which this issue specifies.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Task
Title: Hospital Pharmacy Formulary Consolidation: Merge, Dedupe, Risk-Check and Report
Domain: Healthcare operations / data transformation pipeline
Description: A regional health system is merging the drug formularies of three hospitals, each supplied as inline CSV-style data embedded in the prompt (about 40 rows each). The columns differ across hospitals and include drug name (brand or generic), strength, dosage form, unit cost in different currencies or units, and a therapeutic class code. The work should be split across sub-agents running different models. (1) A data-normalization agent writes a Python script that standardizes column names, units (mg vs g, per-vial vs per-mL pricing) and currency to USD, and maps brand names to generic names using a provided lookup table. The script produces a single merged table and flags duplicate entries. (2) An independent analysis agent computes per-class cost savings if all three hospitals adopt the lowest-cost equivalent product, and lists the top 5 savings opportunities. (3) A clinical-safety review agent checks the merged list against an inline table of 12 known interaction and look-alike/sound-alike drug pairs, and flags any pair where both drugs would now coexist in the same unified formulary. (4) A synthesis agent combines the three outputs into a one-page executive memo with a recommendations section and a short list of data-quality caveats. The deliverables are the script, the merged table, and the memo. The task is self-contained, because all input data and lookup tables are provided inline in the prompt.
Success criteria:
- The script runs without errors on the provided inline data and outputs one merged table in which every cost is in USD and every strength uses the same unit (mg).
- No duplicate generic name + strength + dosage form combination remains in the merged table, and each removed duplicate is logged with its source hospitals.
- The savings analysis lists exactly 5 top opportunities, with a per-class total and a dollar figure that can be recomputed from the merged table.
- Every look-alike/sound-alike or interaction pair from the 12-pair list that has both drugs present in the merged formulary is flagged, and no pair with a missing drug is flagged.
- The executive memo fits on one page (about 400 words or fewer), cites the savings figures and safety flags consistent with the underlying outputs, and includes at least 3 data-quality caveats.
Timing comparison
| Approach | Duration (ms) |
|---|---|
| Single-call | 17857 |
| Decomposed | 34745 |
Decomposed program final status: pass
Decomposition attempts
- Attempt 1 — source generation: ok; typecheck: pass; execute: pass. No error text. Nothing to fix in a next attempt.
Grading
- Single-call score: 6
- Decomposed score: 3
- Winner: single-call
Rationale (verbatim): The prompt supplied no inline data, so neither solution could meet the success criteria on actual data. Both correctly refused to invent figures. Solution A still gives the most useful output. It delivers a complete, parameterized Python pipeline with unit and FX normalization, brand-to-generic mapping, duplicate logging with source hospitals, savings by class with a top 5, and a safety flag that fires only when both drugs are present. It also supplies a memo template with five caveats. Its weaknesses are that the script cannot run until the data is pasted in. The duplicate dedup keeps the cheapest row. The top-5 savings come from a sum of differences across hospitals. Solution B has no script, no tables and empty sections. Its memo only reports that inputs are missing, and it is a degenerate output of the decomposition. A is clearly more complete.
(Note: the task picker's description said data is "inline in the prompt" but the picked task contained none, so both solvers lacked data.)
Single-call solution
Single-call solution
The prompt says the data is inline, but it contains no formulary rows, brand-to-generic lookup table, currency rates or 12 interaction and look-alike pairs. I have not invented any figures. There is no merged table, savings numbers or memo below. This is a data-driven pipeline that produces all three deliverables once the data is supplied.
**Needed from you:** the three hospital CSVs, the brand-to-generic lookup, FX rates, and the 12 pairs.
## Agent 1: normalization script (`formulary.py`)
```python
import csv, io, json, sys
from collections import defaultdict
FX = {'USD': 1.0} # add rates from the provided data, e.g. 'EUR': x
UNIT_MG = {'mg': 1.0, 'g': 1000.0, 'mcg': 0.001}
BRAND2GENERIC = {} # paste the provided lookup (lowercase brand -> generic)
PAIRS = [] # paste the 12 pairs as ('drugA', 'drugB', 'type')
COLMAP = { # one entry per hospital: source column -> standard column
'H1': {'drug': 'drug', 'strength': 'strength', 'unit': 'unit', 'form': 'form',
'cost': 'cost', 'currency': 'currency', 'cost_basis': 'cost_basis',
'units_per_pack': 'units_per_pack', 'class': 'class'},
'H2': {}, 'H3': {}}
RAW = {'H1': '', 'H2': '', 'H3': ''} # paste inline CSV text per hospital
def load():
rows = []
for h, text in RAW.items():
for r in csv.DictReader(io.StringIO(text.strip())):
m = {std: r[src].strip() for std, src in COLMAP[h].items() if src in r}
m['hospital'] = h
rows.append(m)
return rows
def normalize(r):
name = r['drug'].lower()
r['generic'] = BRAND2GENERIC.get(name, name)
r['strength_mg'] = float(r['strength']) * UNIT_MG[r['unit'].lower()]
cost = float(r['cost']) * FX[r['currency'].upper()]
# per-vial pricing is the base; per-mL pricing is converted with units_per_pack (mL per vial)
if r.get('cost_basis', 'per_unit') == 'per_ml':
cost *= float(r['units_per_pack'])
r['cost_usd'] = round(cost, 4)
r['form'] = r['form'].lower()
return r
def main():
rows = [normalize(r) for r in load()]
groups = defaultdict(list)
for r in rows:
groups[(r['generic'], r['strength_mg'], r['form'])].append(r)
merged, dup_log = [], []
for k, g in groups.items():
g.sort(key=lambda x: x['cost_usd'])
keep = dict(g[0])
keep['source_hospitals'] = sorted({x['hospital'] for x in g})
merged.append(keep)
for d in g[1:]:
dup_log.append({'key': k, 'removed_from': d['hospital'],
'kept_from': g[0]['hospital'], 'all_sources': keep['source_hospitals']})
assert all(r['cost_usd'] >= 0 for r in merged)
assert len({(r['generic'], r['strength_mg'], r['form']) for r in merged}) == len(merged)
# Agent 2: savings if every hospital buys the lowest-cost equivalent
by_key = defaultdict(list)
for r in rows:
by_key[(r['generic'], r['strength_mg'], r['form'])].append(r)
cls, opps = defaultdict(float), []
for k, g in by_key.items():
low = min(x['cost_usd'] for x in g)
s = sum(x['cost_usd'] - low for x in g)
cls[g[0]['class']] += s
opps.append({'product': k, 'class': g[0]['class'], 'savings_usd': round(s, 2)})
top5 = sorted(opps, key=lambda o: -o['savings_usd'])[:5]
# Agent 3: flag only pairs where both drugs are present
present = {r['generic'] for r in merged}
flags = [p for p in PAIRS if p[0] in present and p[1] in present]
json.dump({'merged': merged, 'duplicates': dup_log,
'class_savings': {c: round(v, 2) for c, v in cls.items()},
'top5': top5, 'safety_flags': flags},
sys.stdout, indent=2, default=str)
main()
```
## Agent 4: memo template (about 300 words, filled from the JSON output)
**Memo: Unified Formulary Consolidation**
- **Summary:** N unique products after removing D duplicates. All costs are in USD and all strengths in mg.
- **Savings:** Adopting the lowest-cost equivalent saves $X in total. Per-class totals are in `class_savings`. The top 5 opportunities are listed from `top5`.
- **Safety:** F of the 12 pairs have both drugs present and need pharmacy and therapeutics review: [list]. Pairs with a missing drug are not flagged.
- **Recommendations:** (1) Adopt the lowest-cost products for the top 5 opportunities. (2) Apply look-alike/sound-alike controls such as tall-man lettering and separate storage to the flagged pairs. (3) Review interaction alerts in the electronic health record for the flagged pairs. (4) Phase the rollout by class.
- **Data-quality caveats:** (1) FX rates are a static snapshot. (2) Per-mL to per-vial conversion depends on the stated pack size. (3) Brand-to-generic mapping covers only the provided lookup, so unmapped brands remain separate. (4) Equivalence is judged by name, strength and form only, with no bioequivalence check. (5) Savings assume equal usage volumes, which the data does not give.
Decomposed rig program source
import { agent, workflow, s } from "rig";
// Agent role: data-normalization engineer who writes the Python merge script and the merged table
const normalize = agent({
model: "large",
instructions:
"You are a data engineer. Given three inline hospital formulary CSV blocks and a brand-to-generic lookup table, write ONE complete Python script (stdlib only) that: standardizes column names; converts strengths to mg (g*1000); converts per-vial and per-mL prices to a comparable unit cost; converts every currency to USD using the provided rates; maps brand names to generics via the lookup; merges all rows into one table; removes duplicates on (generic name, strength_mg, dosage form) while logging each removed duplicate with its source hospitals; and prints the merged table as CSV plus the duplicate log. Embed all inline data in the script so it runs without errors. After the script, include the resulting merged table as CSV text. Output plain text: the script, then a line '=== MERGED TABLE ===', then the table, then '=== DUPLICATE LOG ==='.",
output: s.string,
});
// Agent role: cost analyst who computes per-class savings from the merged table
const analyze = agent({
model: "medium",
instructions:
"You are a pharmacy cost analyst. Using the merged formulary table provided, compute per-class cost savings if all three hospitals adopt the lowest-cost equivalent product (same generic, strength, dosage form). Show per-class totals in USD with the arithmetic so the figures can be recomputed from the table. List EXACTLY 5 top savings opportunities ranked by dollars saved. Be precise and state assumptions such as volumes.",
output: s.string,
});
// Agent role: clinical safety reviewer checking interaction and look-alike/sound-alike pairs
const safety = agent({
model: "medium",
instructions:
"You are a clinical pharmacist. Given the merged formulary table and the inline list of 12 interaction and look-alike/sound-alike drug pairs, flag every pair where BOTH drugs are present in the merged formulary. Do NOT flag any pair where a drug is missing. Output a list of flagged pairs with type and a mitigation, then a list of the unflagged pairs with the missing drug named.",
output: s.string,
});
// Agent role: executive writer who synthesizes the memo
const synthesize = agent({
model: "large",
instructions:
"You are a healthcare operations writer. Combine the savings analysis and safety review into a one-page executive memo of 400 words or fewer, with: summary, key savings figures (exactly the numbers given, including the top 5), safety flags consistent with the review, a recommendations section, and at least 3 data-quality caveats. Do not invent figures that are not in the inputs.",
output: s.string,
});
// Agent role: cheap extractor that pulls the merged table out of the normalization output
const extractTable = agent({
model: "small",
instructions:
"Extract only the merged table CSV (between the '=== MERGED TABLE ===' and '=== DUPLICATE LOG ===' markers) from the text given. Output just the CSV.",
output: s.string,
});
// Workflow role: runs normalization, then analysis and safety in parallel, then synthesizes the final deliverables
export default workflow({
meta: {
name: "formulary-consolidation",
description:
"Merge three hospital formularies, analyze savings, check safety pairs, and write an executive memo.",
},
body: async ({ call }) => {
const dataNote =
"The input data (three hospital CSV blocks, brand-to-generic lookup, currency rates, and 12 drug-pair list) is supplied inline in the task prompt by the user; use it as given.";
const norm = await call(
normalize,
dataNote + " Produce the normalization script, merged table, and duplicate log."
);
const normText = norm ?? "";
const table = (await call(extractTable, normText)) ?? normText;
const [savings, flags] = await Promise.all([
call(analyze, "Merged table:\n" + table + "\n" + dataNote),
call(safety, "Merged table:\n" + table + "\n" + dataNote),
]);
const memo = await call(
synthesize,
"SAVINGS ANALYSIS:\n" + (savings ?? "") + "\n\nSAFETY REVIEW:\n" + (flags ?? "")
);
const solution =
"## Deliverable 1: Script and duplicate log\n" + normText +
"\n\n## Deliverable 2: Merged table\n" + table +
"\n\n## Savings analysis\n" + (savings ?? "") +
"\n\n## Safety review\n" + (flags ?? "") +
"\n\n## Deliverable 3: Executive memo\n" + (memo ?? "");
return { solution };
},
});
Decomposed solution
Decomposed solution
## Deliverable 1: Script and duplicate log
The task input did not include the data needed to produce the script, merged table, or duplicate log. The three hospital CSV blocks, the brand-to-generic lookup, the currency rates and the 12 drug-pair list were all missing. I did not invent any, because the merged table and duplicate log would be fabricated. I have logged the missing data. Please resend the inline data and I will produce the script, then '=== MERGED TABLE ===' and '=== DUPLICATE LOG ==='.
## Deliverable 2: Merged table
## Savings analysis
## Safety review
## Deliverable 3: Executive memo
EXECUTIVE MEMO
SUMMARY
This memo was meant to combine the savings analysis and the safety review into one page. Both inputs arrived empty. The savings analysis section and the safety review section contain no content. I cannot responsibly report savings or safety findings. Any figures I gave would be invented, which the brief prohibits.
KEY SAVINGS FIGURES
None available. No total savings, no top 5 savings opportunities and no per-item amounts were provided. Once the savings analysis is supplied, I will report its numbers exactly as given, including the top 5.
SAFETY FLAGS
None available. The safety review contained no findings, ratings or flagged items. I cannot confirm that any savings opportunity is free of patient-safety risk. Until the review is received, treat every savings initiative as not yet cleared for safety.
RECOMMENDATIONS
1. Resend both inputs: the full savings analysis (total and top 5 opportunities) and the complete safety review.
2. Hold all decisions on cost-reduction initiatives until the savings and safety findings can be read side by side.
3. Once the inputs arrive, check each top-5 savings item against the safety flags. Prioritize items with no safety concerns, and send any flagged item for clinical review before approval.
4. Have the analysis owner and the safety reviewer confirm their outputs before the memo is circulated.
DATA-QUALITY CAVEATS
1. Missing source data: both the savings analysis and the safety review were empty, so no figure or finding in this memo is verified.
2. No methodology: without the analysis, I cannot say how savings were calculated, over what period, or against what baseline.
3. No linkage between sources: it is unknown whether the savings items and safety flags use the same identifiers or categories. This could prevent reliable cross-referencing.
4. Possible transmission error: the empty inputs may reflect a formatting or export failure rather than a true absence of findings. An empty safety review should not be read as "no safety concerns."
NEXT STEP
On receipt of the complete inputs, a final one-page memo will be issued within the 400-word limit.
Benchmark program (Step 1)
bench.ts
import { agent, workflow, s, repair, configureAgent, copilotEngine } from "rig";
configureAgent(copilotEngine({ server: true }));
const DEADLINE = Date.now() + 25 * 60_000;
const remaining = () => DEADLINE - Date.now();
const SKELETON = `import { agent, workflow, s } from "rig";
// Agent role: <role>
const analyze = agent({ model: "small", instructions: "...", output: s.string });
// Workflow role: combines the agents' outputs into the final solution
export default workflow({
meta: { name: "decomposed-solution", description: "..." },
body: async ({ call }) => {
const analysis = await call(analyze, "...");
return { solution: analysis ?? "" };
},
});`;
const CONTRACT = `Write a complete, self-contained rig TypeScript program. Rules:
- Import only from "rig" (agent, workflow, s).
- Use at least two agents, each preceded by a "// Agent role: ..." comment; use model "small" for simple sub-steps and "medium" or "large" for harder ones. The final answer must combine their outputs.
- The root must take no required input and be exported with "export default" without being invoked.
- A workflow() spec accepts only meta, an optional input, and body. It has no output or execute field; the final { solution } object is simply what body returns. An agent() root instead declares output: s.object({ solution: s.string }).
- Use output: s.string for every agent producing source text or free-form solution text; never wrap large text in an object schema.
- call(agent, "prompt string") returns string or null.
- Do not use console.log. Return ONLY the TypeScript source, no Markdown fences.
Required shape (abridged to one agent; yours needs at least two):
${SKELETON}`;
// Agent role: pick a benchmark task
const picker = agent({
model: "small",
maxTurns: 2,
addons: repair(),
instructions: `Pick one concrete, complicated task a person or team might face in a single day that would naturally benefit from being split across sub-agents running different models: multi-source research and synthesis, a multi-file coding task with design/implementation/review phases, a structured report combining independent analyses, or a multi-step data transformation pipeline. It must be self-contained (no external files or live web access) and concrete enough to grade. Vary the domain randomly (today is ${new Date().toISOString()}). Return title, domain, description, and 3-6 concrete checkable success criteria.`,
output: s.object({
title: s.string,
domain: s.string,
description: s.string,
criteria: s.array(s.string),
}),
});
// Agent role: solve the whole task alone in one call
const solver = agent({
model: "medium",
maxTurns: 1,
instructions: "Solve the entire task yourself in one response, addressing every success criterion. No delegation, no tools. Return the full solution (Markdown and code fences allowed).",
output: s.string,
});
// Agent role: write the decomposed rig program
const writer = agent({
model: "medium",
maxTurns: 1,
instructions: CONTRACT,
output: s.string,
});
// Agent role: fix or regenerate the decomposed rig program from an error
const fixer = agent({
model: "medium",
maxTurns: 1,
instructions: CONTRACT + "\nYou fix rig programs given the exact error output, changing precisely what the error names and preserving what already worked. If told there is no source, generate the full program from scratch.",
output: s.string,
});
// Agent role: grade both solutions
const grader = agent({
model: "large",
maxTurns: 1,
addons: repair(),
instructions: "Score each solution 0-10 on how completely and correctly it satisfies the success criteria. Judge only correctness and completeness of content, not length and not which approach produced it. Pick winner: single-call, decomposed, or tie, and explain the comparison.",
output: s.object({
singleScore: s.number,
decomposedScore: s.number,
winner: s.enum("single-call", "decomposed", "tie"),
rationale: s.string,
}),
});
type Attempt = { attempt: number; generation: string; typecheck: string; execute: string; error: string; note: string };
async function runCli(args: string[], source: string, timeoutMs: number): Promise<{ ok: boolean; stdout: string; output: string }> {
const { spawn } = await import("node:child_process");
return new Promise((resolve) => {
const child = spawn("node", ["rig.ts", ...args], { cwd: process.cwd() });
let out = "";
let err = "";
let timedOut = false;
const timer = setTimeout(() => { timedOut = true; child.kill("SIGKILL"); }, Math.max(1000, timeoutMs));
child.stdout.on("data", (d: Buffer) => { out += d.toString(); });
child.stderr.on("data", (d: Buffer) => { err += d.toString(); });
child.on("error", (e: Error) => { clearTimeout(timer); resolve({ ok: false, stdout: out, output: `spawn error: ${e.message}` }); });
child.on("close", (code: number | null) => {
clearTimeout(timer);
const output = (err + (code === 0 ? "" : out)).trim() + (timedOut ? "\n[timed out]" : "");
resolve({ ok: code === 0 && !timedOut, stdout: out, output });
});
child.stdin.end(source);
});
}
function stripFences(src: string): string {
const m = src.match(/```(?:ts|typescript)?\n([\s\S]*?)```/);
return (m ? m[1] : src).trim();
}
// Workflow role: run the benchmark end to end and return the report
export default workflow({
meta: { name: "decomposition-benchmark", description: "Compare single-call vs decomposed solutions" },
body: async ({ call }) => {
const task = await call(picker, "Pick the task now.");
if (!task) return { status: "fail", error: "task picker returned null" };
const taskText = `Title: ${task.title}\nDomain: ${task.domain}\nDescription: ${task.description}\nSuccess criteria:\n${task.criteria.map((c: string) => `- ${c}`).join("\n")}`;
const t0 = Date.now();
const single = (await call(solver, taskText)) ?? "";
const singleMs = Date.now() - t0;
const t1 = Date.now();
const attempts: Attempt[] = [];
let source = "";
let decomposed = "";
let status = "fail";
let prev = { source: "", error: "" };
for (let n = 1; n <= 2; n++) {
if (remaining() < 3 * 60_000) break;
const rec: Attempt = { attempt: n, generation: "", typecheck: "skipped", execute: "skipped", error: "", note: "" };
let gen: string | null;
if (n === 1) {
gen = await call(writer, `Task:\n${taskText}\n\nWrite the rig program that solves this task by decomposition.`);
} else if (prev.source.trim()) {
gen = await call(fixer, `Task:\n${taskText}\n\nCurrent source:\n${prev.source}\n\nExact captured error:\n${prev.error}\n\nFix precisely what the error names, preserving what already worked.`);
} else {
gen = await call(fixer, `Task:\n${taskText}\n\nThere is no source to fix: the previous attempt produced nothing. Generate the complete program from the task and the skeleton.`);
}
const src = stripFences(gen ?? "");
if (!src) {
rec.generation = "empty";
rec.error = "writer returned null/empty source";
rec.note = n === 1 ? "second attempt regenerates from scratch" : "";
attempts.push(rec);
prev = { source: "", error: rec.error };
continue;
}
rec.generation = "ok";
source = src;
const tc = await runCli(["--typecheck"], src, Math.min(2 * 60_000, remaining()));
if (!tc.ok) {
rec.typecheck = "fail";
rec.error = tc.output;
rec.note = n === 1 ? "next attempt fixes the typecheck error" : "";
attempts.push(rec);
prev = { source: src, error: tc.output };
continue;
}
rec.typecheck = "pass";
if (remaining() < 60_000) { rec.execute = "skipped (budget)"; attempts.push(rec); break; }
const ex = await runCli(["--server"], src, Math.min(5 * 60_000, remaining()));
if (!ex.ok) {
rec.execute = "fail";
rec.error = ex.output;
rec.note = n === 1 ? "next attempt fixes the execution error" : "";
attempts.push(rec);
prev = { source: src, error: ex.output };
continue;
}
rec.execute = "pass";
try {
const parsed = JSON.parse(ex.stdout);
decomposed = typeof parsed?.solution === "string" ? parsed.solution : typeof parsed === "string" ? parsed : JSON.stringify(parsed);
} catch {
decomposed = ex.stdout.trim();
}
status = decomposed.trim() ? "pass" : "fail";
attempts.push(rec);
break;
}
const decomposedMs = Date.now() - t1;
const graded = await call(grader, `${taskText}\n\n=== SOLUTION A (single-call) ===\n${single || "(empty)"}\n\n=== SOLUTION B (decomposed) ===\n${decomposed.trim() || "(decomposition produced no solution)"}`);
return { status, task, singleMs, decomposedMs, single, decomposed, attempts, source, grading: graded };
},
});
Verdict: single-call wins (6 vs 3) — neither solution had real input data, but the single call delivered a complete parameterized pipeline and memo template while the decomposed run passed empty intermediate outputs downstream and produced only a "data missing" memo.
Generated by Daily Rig Decomposition Benchmark · copilot · auto · ~72 AIC · ⌖ ~1 AIC · ⊞ 4K · ◷
- expires on Nov 6, 2026, 1:03 PM UTC
- Vorherrschende Sprache
- TypeScript
- Sterne
- 14
- Forks
- 0
- Ø Merge
- 9 Std. 27 Min.
- Gemergte PRs (30 T.)
- 34
Entwicklungsumgebung
Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus githubnext/rig
-
ai-agent automation
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 45/100
githubnext/rig#759 ·
Maintainer antworten meist innerhalb von 1 Tag
-
agentic-workflows
Schwierigkeit 4/5 1-2 Tage Anfängerfreundlichkeit 35/100
githubnext/rig#758 ·
Maintainer antworten meist innerhalb von 1 Tag
-
ai-agent automation
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 15/100
githubnext/rig#757 ·
Maintainer antworten meist innerhalb von 1 Tag
-
agentic-workflows
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 52/100
githubnext/rig#756 ·
Maintainer antworten meist innerhalb von 1 Tag
-
agentic-workflows
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 35/100
githubnext/rig#753 ·
Maintainer antworten meist innerhalb von 1 Tag
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
Northeastern-Electric-Racing/FinishLine#4660 ·
Maintainer antworten meist innerhalb von 2 Tagen
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 86/100
excaliburjs/Excalibur#3895 ·
Maintainer antworten meist innerhalb von 3 Tagen
-
infer_audio_type only recognises one MPEG Layer III frame header, so most MP3 files are rejectedEvtl. vergeben @Steve-20-ai hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
Maintainer antworten meist innerhalb von 1 Tag
-
Earn report crashes with "RangeError: Invalid time value" when a report row has an unparsable timestampEvtl. vergeben @Gurkaran18 hat das heute übernommen. Offenbug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
joinmarket-webui/jam#1588 ·
Maintainer antworten meist innerhalb von 3 Tagen
-
BeOS .json missingOffen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
mihaip/infinite-mac#475 ·