Skip to content

[rig-tasks] Daily rig evaluation — 2026-09-01 — 10/10 passed #522

Description

@github-actions

Summary

Task Description Kind Typecheck Key finding
1 (reused) Dockerfile ENV inspector agent ✅ pass Clean use of async defineTool + node:fs/promises readFile with dual regex for KEY=VALUE and KEY VALUE forms
2 (reused) NPM script prefix analyzer agent ✅ pass as const on return values correctly preserves literal types for s.enum comparison
3 (reused) INI config file parser agent ✅ pass p.readInput correctly used with caller-supplied s.object input; tool parses sections/key-value cleanly
4 (reused) Git reflog inspector agent ✅ pass steering() addon appropriate for classification task; fallback `
5 (reused) Source line length auditor agent ✅ pass Good use of find with p.bash + async defineTool; s.optional(s.string) for mostVerboseFile is correct
6 (reused) NPM script dep workflow workflow ✅ pass Initial errors: call incorrectly imported from "rig" (not exported), meta missing description, call(agent, undefined) not valid — all fixed
7 (new) HTML form field extractor agent ✅ pass Initial error: exactOptionalPropertyTypes requires explicit conditional assignment for optional fields rather than assigning undefined; fixed with guarded push pattern
8 (new) Dotenv template validator agent ✅ pass p.readOptional with empty string fallback is idiomatic; steering() appropriate for comparison/decision tasks
9 (new) TypeScript namespace usage reporter agent ✅ pass p.glob + per-file async defineTool is the correct fan-out pattern; augmentation detection via declare module/namespace regex is precise
10 (new) Multi-stage artifact pipeline workflow ✅ pass Initial errors: same call import issue + missing meta.description as task 6; fixed using body: async ({ call }) => destructuring and TypeScript-owned result assembly

Problems encountered

Task 6 — NPM script dep workflow (initial failures)

What the code tried to do: A workflow() with two sequential agent calls passing structured output from scriptGraphBuilder to cycleDetector.

Errors:

error TS2305: Module '"rig"' has no exported member 'call'.
error TS2769: Property 'description' is missing in type '{ name: string; }' but required in type 'WorkflowMeta'.
error TS2345: Argument of type 'undefined' is not assignable to parameter of type 'string | PromptIntent | PromptBuilder'.

Root cause: Three distinct mistakes:

  1. call is not exported from "rig" — it is destructured from the body({ call }) parameter or imported from "rig/globals".
  2. workflow({ meta: { name } }) requires a description field in WorkflowMeta.
  3. call(agent, undefined) is not valid — agents always receive a string prompt or typed input.

Fix: Used body: async ({ call }) => destructuring, added description to meta, passed a string prompt to agents.

Task 7 — HTML form field extractor (initial failure)

What the code tried to do: Push objects with optional name/id fields by assigning undefined values.

Errors:

error TS2379: exactOptionalPropertyTypes: 'string | undefined' is not assignable to type 'string'.

Root cause: With exactOptionalPropertyTypes: true, assigning undefined to an optional field that expects only string is rejected. The fix is to conditionally include the property only when the value is defined.

Fix: Build the entry object without optional fields, then conditionally assign them.

Task 10 — Multi-stage artifact pipeline (initial failures)

Same call import and meta.description errors as task 6. Fixed identically.


Improvement opportunities

Missing or undiscoverable schema helpers (s.*)

No missing helpers this run. The existing set (s.object, s.record, s.array, s.enum, s.optional, s.path, s.int, s.number, s.boolean, s.string) covered all needs.

Missing or undiscoverable prompt helpers (p.*)

p.readOptional with an empty-string fallback (task 8) is not clearly documented in SKILL.md's quick reference table. Consider adding it as a distinct row: p.readOptional(path, fallback?) — currently documented only in the focused reference.

Error message quality

The exactOptionalPropertyTypes error (TS2379) is confusing because it mentions a parameter type mismatch rather than naming the root cause directly. The fix (conditional assignment) is non-obvious from the error text alone.

The call import error (TS2305: Module '"rig"' has no exported member 'call') is clear, but nothing in the error guides toward the correct body({ call }) destructuring pattern. A short comment in SKILL.md would prevent this.

API ergonomics

  1. call discoverability: The most common workflow mistake is import { call } from "rig". SKILL.md's composition rule could add a note: "call is available via body({ call }) destructuring — do not import it from "rig"."
  2. workflow meta requirement: description being required in WorkflowMeta is not called out in the high-frequency decisions table. A brief reminder alongside the workflow() row would prevent the error.
  3. call(agent, undefined) vs call(agent, string): It is unclear from the table that agents always require a non-null prompt. Noting "pass a string prompt or typed input; never undefined" would help.

Candidate lint rules

Rule: no-rig-call-import

  • Invalid: import { agent, call } from "rig";
  • Valid: body: async ({ call }) => { ... } or import { call } from "rig/globals";
  • Why model-confusing: call looks like a plain function export given how agent and workflow are imported. The destructuring pattern is non-obvious without reading the full reference.
  • Safe autofix: possible — remove call from the "rig" import and add import { call } from "rig/globals" as a fallback (with a comment to prefer destructuring inside body).

Documentation gaps

  • SKILL.md high-frequency decisions table should add: workflow meta → must include both name and description.
  • SKILL.md should note that call inside workflow.body is always obtained via destructuring, not via import.
  • p.readOptional deserves a row in the quick-reference table with an example fallback value.

Tasks run today

  • (reused) Dockerfile ENV instruction parser
  • (reused) NPM script command prefix analyzer
  • (reused) INI config file parser
  • (reused) Git reflog inspector
  • (reused) Source file line length auditor
  • (reused) NPM script dependency workflow
  • (new) HTML form field extractor
  • (new) Dotenv template validator
  • (new) TypeScript namespace usage reporter
  • (new) Multi-stage build artifact pipeline

Generated by Daily Rig Task Generator · sonnet46 164.3 AIC · ⌖ 9.36 AIC · ⊞ 6.8K ·

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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