Skip to content

[rig-tasks] Daily rig evaluation — 2026-08-06 — 10/10 passed #359

Description

@github-actions

Summary

Task Description Kind Typecheck Key finding
1 (reused) JSON fixture anonymizer agent ✅ pass Clean defineTool with field-name heuristics; p.writeInput + p.readInput used correctly
2 (reused) CSV to Markdown table converter agent ✅ pass parseCSVRow tool with .map() and explicit type annotation — good pattern
3 (reused) TOML config section analyzer agent ✅ pass Async tool with node:fs/promises; p.glob used correctly for discovery
4 (reused) Git checkpoint summarizer agent ✅ pass Multiple p.bash intents in one template string; s.optional(s.string) output field
5 (reused) TypeScript literal type union extractor agent ✅ pass Async tool with regex and Record accumulation; steering() addon appropriate
6 (reused) Markdown heading validator agent ✅ pass Nested s.object in s.array in s.record output — deep schema validated cleanly
7 (new) TypeScript barrel module writer agent ✅ pass (after fix) Initially had unused join import from node:path; removed and typecheck passed
8 (new) Git remote metadata inspector agent ✅ pass Enum-keyed s.record output; steering() addon correctly placed
9 (new) OS environment variable scanner agent ✅ pass (after fix) Initially had unused homedir import from node:os; removed and typecheck passed
10 (new) Sequential commit classifier workflow workflow ✅ pass (after fix) Multiple errors: call wrongly imported from "rig", missing meta field, agent input mismatch

Problems encountered

Task 7 — Unused join import

What it tried: Import join from node:path to construct the output path, but didn't use it in the tool handler.
Error: TS6133: 'join' is declared but its value is never read.
Root cause: The agent's p.writeInput handles path construction at runtime; the join call was unnecessary boilerplate.
Fix: Removed the unused import.

Task 9 — Unused homedir import

What it tried: Import homedir from node:os for environment variable classification context, but didn't use it in the tool.
Error: TS6133: 'homedir' is declared but its value is never read.
Root cause: The classification logic only needed the variable name/value, not the actual home directory value at generation time.
Fix: Removed the unused import.

Task 10 — Multiple workflow errors

What it tried: A sequential three-agent workflow using call imported from "rig".
Errors:

  1. TS2305: Module '"rig"' has no exported member 'call'call must come from the body destructure parameter, not a top-level import.
  2. 'agents' does not exist in type 'WorkflowSpec'agents: is an agent() field, not a workflow() field.
  3. meta is required in WorkflowSpec and WorkflowWithoutInputSpec.
  4. Agent input mismatch: the second agent's input was typed as s.array(...) but the coordinator called it with a raw array.
    Root cause: Confusion between agent-style coordination (uses agents: dict) and workflow-style coordination (uses TypeScript body with destructured call). Also meta is required.
    Fix: Rewrote to use workflow({ meta: {...}, body: async ({ call, phase }) => {...} }) with call(agent, input) in the body.

Improvement opportunities

Missing or undiscoverable schema helpers (s.*)

  • No issues encountered this run. All needed helpers (s.record, s.array, s.object, s.enum, s.optional, s.int, s.boolean, s.path, s.string) were used correctly after the first attempt.

Missing or undiscoverable prompt helpers (p.*)

  • p.writeInput(pathField, outputField) and p.readInput(field) are not well-surfaced. Task 7's first draft imported node:path unnecessarily because it wasn't clear that p.writeInput handles path routing automatically.

Error message quality

  • TS6133: 'X' is declared but its value is never read is perfectly clear — no improvement needed.
  • The workflow overload error is dense but accurate. A simpler error like "workflow() requires a meta field" would be faster to act on than reading the full overload diff.

API ergonomics

  • The workflow body signature is the most common source of confusion: call comes from the destructured body argument, not from an import. This is inconsistent with agent which uses agents: for subagent registration. A lint rule or clearer error would help.
  • meta being required on workflow is easy to forget; SKILL.md mentions it in examples but doesn't call it out as required in a decision table.
  • Agent input type mismatch: when an agent declares input: s.array(...), callers expect to pass an array directly, but in the coordinator we wrapped it in { commits: ... } for a cleaner schema, which worked fine once the types matched.

Candidate lint rules

  • no-unused-node-builtins: Flags import { X } from "node:*" where X is never used. This pattern appeared in tasks 7 and 9. Invalid: import { join } from "node:path" (unused). Valid: import { readFile } from "node:fs/promises" (used in tool handler). Model-confusing because the tool description mentions "node:path" or "node:os" as a feature, so the model imports the module even when the function isn't directly called. Safe autofix: remove the import.

Documentation gaps

  • SKILL.md should add a row to the High-frequency decisions table: Sequential subagents in workflowworkflow({ meta, body: async ({ call }) => ... })call comes from the body destructure, not an import. Currently workflow is only shown in the table as "Deterministic TypeScript fan-out" without clarifying the meta requirement.
  • The p.writeInput / p.readInput semantics should be more prominent in the decisions table — it's not obvious these replace explicit node:path construction.

Tasks run today

  • (reused) JSON fixture anonymizer: defineTool with heuristics, p.readInput, p.writeInput, repair(), s.object output
  • (reused) CSV to Markdown table converter: defineTool row parser, p.readInput, p.writeInput, repair(), s.boolean input field
  • (reused) TOML config section analyzer: async defineTool with node:fs/promises, p.glob, repair(), s.record output
  • (reused) Git checkpoint summarizer: multiple p.bash in template, s.enum classifier tool, s.optional, repair()
  • (reused) TypeScript literal type union extractor: async defineTool with regex accumulation, p.bash find, steering()
  • (reused) Markdown heading validator: async defineTool, p.glob, nested s.record/s.array/s.object, repair()
  • (new) TypeScript barrel module writer: defineTool identifier validator, p.writeInput, repair(), s.boolean output
  • (new) Git remote metadata inspector: defineTool URL classifier, p.bash multi-command, s.record + s.enum, steering()
  • (new) OS environment variable scanner: defineTool with node:os, p.bash env, s.record nested object, repair()
  • (new) Sequential commit classifier workflow: three-agent workflow pipeline, meta, phase(), chained call() in body

Generated by Daily Rig Task Generator · sonnet46 106.5 AIC · ⌖ 9.17 AIC · ⊞ 6.8K ·

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions