← Receivers

factory:attempt

factory family

Open an attempt contained by its task, or close it with the production edge to what it produced plus the rubric. A do-cycle IS an attempt (factory-plan.md §3.1) — do:cycle-close arms as a caller of the close phase, never as a second writer

Effect
ask
Awaits an outcome — the call returns the response below.
Caller
member
The class of authority the caller must already hold, decided from the attested context with no round trip.
Reversible
yes
The effect can be undone by a later call.
Idempotent
yes
Safe to retry as-is.

Send it with your agent

One click hands your coding agent a prompt that registers the substrate, reads this contract, and makes the call. Launch opens the app; the others copy the prompt.

Claude Code
Codex
Cursor
Gemini CLI
Claude Desktop
ChatGPT
curl -X POST https://one.ie/api/ask/factory:attempt \
  -H "Authorization: Bearer $ONE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"data": { "phase": <open | close> }}'

The key is never in a link. npx -y @oneie/cli login writes it to ~/.config/oneie/key on your machine.

Request

Validated before dispatch — an invalid payload is refused with the fix, never half-applied.

  • phase open | close required
  • task string optional
  • ordinal number optional
  • actorId string optional
  • tags string[] optional
  • attempt string optional
  • status done | verified | failed | dissolved optional
  • produced string optional What the attempt produced: a thing tid, a commit sha (7–40 hex) or a repo-relative file path. A sha or a path is minted as an `output` thing, output:<workspace>:commit|file:<ref>, and linked by `production`
  • shape string optional The family the attempt built (a bare word) — with `model`, the close moves shape:<shape> → model:<model>
  • model string optional The OpenRouter id that built it — with `shape`, the close moves shape:<shape> → model:<model>
  • rubric object optional
  • workspace string optional

Response

What comes back from the call.

  • ok boolean
  • tid string
  • task string
  • phase string
  • status string
  • produced string | null
  • producedRef string
  • rubric string[]
  • deduped boolean
  • error string
  • learned object

Traffic

Every call to factory:attempt, counted where it is dispatched — over HTTP or in-process alike. Aggregate only — no actor, no payload, no workspace.

Counting…

Wiring

Every place in the open source that names factory:attempt, and the file that answers it. Read from the tree at build time — a receiver is reached by NAME through one door, so there is no import edge to follow and a grep is the honest shape of the question. Structure, not volume — the count is in Traffic above.

Called from

API route 1
  • one.ie/web/src/lib/receiver-index.generated.ts:166
Workflow 4
  • one.ie/web/src/lib/factory/card-flow.ts:73
  • one.ie/web/src/lib/factory/flow.ts:849
  • one.ie/web/src/lib/factory/secure-door.ts:5
  • one.ie/web/src/lib/resolvers/factory.ts:566
Docs 1
  • one.ie/web/src/lib/CLAUDE.md:61
→

Answered by

factory:attempt one.ie/web/src/lib/resolvers/factory.ts:654 Dispatched through POST /api/ask/factory:attempt, after the envelope validates the payload.
JSON Schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "phase": {
      "type": "string",
      "enum": [
        "open",
        "close"
      ]
    },
    "task": {
      "type": "string"
    },
    "ordinal": {
      "type": "number"
    },
    "actorId": {
      "type": "string"
    },
    "tags": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "attempt": {
      "type": "string"
    },
    "status": {
      "type": "string",
      "enum": [
        "done",
        "verified",
        "failed",
        "dissolved"
      ]
    },
    "produced": {
      "description": "What the attempt produced: a thing tid, a commit sha (7–40 hex) or a repo-relative file path. A sha or a path is minted as an `output` thing, output:<workspace>:commit|file:<ref>, and linked by `production`",
      "type": "string"
    },
    "shape": {
      "description": "The family the attempt built (a bare word) — with `model`, the close moves shape:<shape> → model:<model>",
      "type": "string",
      "pattern": "^[a-z][a-z0-9-]{0,39}$"
    },
    "model": {
      "description": "The OpenRouter id that built it — with `shape`, the close moves shape:<shape> → model:<model>",
      "type": "string",
      "minLength": 1,
      "maxLength": 96
    },
    "rubric": {
      "type": "object",
      "properties": {
        "composite": {
          "type": "number"
        },
        "security": {
          "type": "number"
        },
        "stability": {
          "type": "number"
        },
        "simplicity": {
          "type": "number"
        },
        "speed": {
          "type": "number"
        }
      }
    },
    "workspace": {
      "type": "string"
    }
  },
  "required": [
    "phase"
  ]
}
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean"
    },
    "tid": {
      "type": "string"
    },
    "task": {
      "type": "string"
    },
    "phase": {
      "type": "string"
    },
    "status": {
      "type": "string"
    },
    "produced": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "producedRef": {
      "type": "string"
    },
    "rubric": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "deduped": {
      "type": "boolean"
    },
    "error": {
      "type": "string"
    },
    "learned": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    }
  },
  "required": [
    "ok"
  ]
}