Skip to content

[rig-tasks] Daily rig evaluation — 2026-08-23 — 10/10 passed #474

Description

@github-actions

Summary

Task Description Kind Typecheck Key finding
1 (reused) Shell shebang glob validator agent ✅ pass Clean use of p.glob + defineTool + repair(); shebangLine typed as s.optional(s.string) correctly
2 (reused) Git log graph summarizer agent ✅ pass steering()+repair() addon order correct; handler return typed with as const
3 (reused) TypeScript complexity scorer agent ✅ pass s.record + s.enum for complexity; topContributors s.array(s.string) well-formed
4 (reused) Parallel multi-tool workflow workflow ✅ pass (after fix) Initial use of call/parallel imported from "rig" — these are destructured from body args; also parallel requires homogeneous return types
5 (reused) Zlib compression analyzer agent ✅ pass node:zlib deflateSync usage correct; compressionClass s.enum with 4 values
6 (reused) File crypto hash reporter agent ✅ pass node:crypto createHash with optional algorithm input; s.record output well-formed
7 (new) Source line length auditor agent ✅ pass p.glob + defineTool; worstLineNumber s.int correctly used
8 (new) Workspace symlink inventory agent ✅ pass p.bash find -type l; readlink/realpath in tool handler; broken s.boolean
9 (new) XML attribute extractor agent ✅ pass (after fix) Unused variable tagPattern caused TS6133; removed to fix
10 (new) YAML anchor alias reporter agent ✅ pass p.glob for both .yml and .yaml; regex anchor/alias detection; steering()+repair()

Problems encountered

Task 4 — Parallel multi-tool workflow (3 failures before pass)

What it tried to do: A workflow that runs two agents (fileCountAgent, envHealthAgent) with parallel() and combines results.

Error 1: Module '"rig"' has no exported member 'call'call and parallel are not top-level "rig" exports; they are destructured from the body async function parameters.

Error 2: parallel in rig requires all thunks to return the same type (homogeneous array). Running two agents with different output schemas via parallel() causes a TypeScript error.

Fix: Switched from parallel() to sequential await call(...) calls, which avoids the type constraint and is clearer anyway.

Error 3: meta required a description field — WorkflowMeta requires both name and description.

Root cause: The call/parallel API is destructured from body parameters, and parallel is typed for homogeneous arrays. The SKILL.md mentions this but the distinction is easy to miss.

Task 9 — XML attribute extractor (1 failure before pass)

What it tried to do: An agent with a defineTool parseXmlAttributes that uses regex to scan XML.

Error: TS6133: 'tagPattern' is declared but its value is never read — a leftover regex variable was declared but superseded by another pattern.

Fix: Removed the unused tagPattern variable.


Improvement opportunities

Missing or undiscoverable schema helpers (s.*)

No missing helpers encountered. s.record, s.optional, s.enum, s.int, s.number, s.path, s.array, s.boolean, s.string all worked cleanly.

Missing or undiscoverable prompt helpers (p.*)

p.readInput was used for reading a caller-supplied file path (task 9). This is correct but easy to confuse with p.read. The SKILL.md table covers this, but a short note clarifying "use p.readInput when the file path comes from input, not a known literal" would help.

Error message quality

  • 'call' is not exported from 'rig': When a developer imports call at the top of a workflow file, the error says it's not exported but doesn't hint that it's available via body destructuring. A more helpful error: "Did you mean to destructure call from the workflow body parameters?"
  • WorkflowMeta.description missing: Reasonable error, but SKILL.md doesn't show description in the workflow example — only in the reference files.

API ergonomics

  1. parallel() homogeneous type constraint: Running two agents with different output types via parallel() fails. Developers naturally want to parallelize heterogeneous agents. A parallelAll variant or typed tuple overloads would improve ergonomics.
  2. workflow meta.description required: Having description be required is strict; it's not shown in the canonical example. Either make it optional or add it to the SKILL.md canonical workflow snippet.
  3. call in workflow body: The body-destructuring pattern for call/parallel/phase is non-obvious for developers familiar with top-level imports. A note in SKILL.md like "workflow body receives { call, parallel, phase, pipeline } — do not import these from 'rig'" would prevent repeated mistakes.

Candidate lint rules

Rule: no-top-level-workflow-call-import

  • Invalid: import { call, parallel } from "rig" inside a workflow file
  • Valid: body: async ({ call, parallel }) => { ... }
  • Why model-confusing: The rig runtime provides call/parallel via body parameters for workflow context routing; top-level imports don't exist and produce a confusing "not exported" error.
  • Autofix possible: Yes — remove the import and add destructuring to the body signature if missing.

Documentation gaps

  1. SKILL.md canonical workflow example should include description in meta since it's required.
  2. The note "do not import call/parallel from 'rig' inside workflow files" should appear in the construction rules section.
  3. parallel() type homogeneity constraint should be documented with an explicit note and a workaround (sequential calls or Promise.all with explicit typing).

Tasks run today

  • (reused) Shell script glob validator — uses p.glob for **/*.sh files, defineTool checkShebangLine, repair addon
  • (reused) Git log graph summarizer — uses p.bash git log --oneline --graph -20, defineToolparseGraphLine, steering+repair
  • (reused) TypeScript complexity scorer — uses p.glob src/**/*.ts, defineTool scoreFileComplexity, repair addon
  • (reused) Workflow parallel multi-tool tester — workflow with fileCountAgent and envHealthAgent
  • (reused) Zlib file compression analyzer — node:zlib deflateSync, compressionClass s.enum, repair addon
  • (reused) File crypto hash reporter — node:crypto createHash, s.record output, repair addon
  • (new) Source line length auditor — p.glob **/*.ts, defineTool auditFileLengths, repair addon
  • (new) Workspace symlink inventory — p.bash find -type l, defineTool resolveSymlink with readlink/realpath
  • (new) XML attribute extractor — p.readInput, defineTool parseXmlAttributes with regex
  • (new) YAML anchor and alias reporter — p.glob /*.yml+/*.yaml, defineTool scanYamlAnchors, steering+repair

Generated by Daily Rig Task Generator · sonnet46 127.3 AIC · ⌖ 9.34 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