Skip to content

docs: fix agent guide gaps from the evaluations - #66

Merged
cardmagic merged 4 commits into
mainfrom
docs/agent-guide-fixes
Oct 8, 2026
Merged

cardmagic merged 4 commits into
mainfrom
docs/agent-guide-fixes

Conversation

@cardmagic

@cardmagic cardmagic commented Oct 8, 2026 •

Copy link
Copy Markdown
Owner

Why

The Track B (installed skill) and Track C (implementation) agent evaluations found answers and code that docs/agents.md did not prevent, and one error in the guide itself.

What changes

  • Wrong reject form: the guide said this.reject(code, message). The method is reject(code: string, options: { message: string; details? }). The guide now shows this.reject("room_full", { message: "The room is full" }).
  • Worker registration: a worker process runs only the actor classes it knows. Against the published 0.17.1 package, a worker without runtime.register reported solid_objects.activation.failed with UnknownActorType (6 times in 4 seconds, visible only through an instrumentation callback) and left the message in ready_messages with 0 counted attempts. With runtime.register(Counter), the same worker completed it. Step 7 now registers the class before runtime.run(signal) and explains that ref() also registers it.
  • API mistakes: agent code called schedule() without an operation and named the effect handler arguments in the wrong order. A table lists these mistakes with the correct form.
  • Install step: it says to take the current release, and points to step 5 because every authorization callback denies by default.

Validation

  • pnpm exec prettier --check and node scripts/check-documentation.mjs pass.
  • The registration behavior was reproduced in a clean project with solid-objects@0.17.1 from npm, by inspecting the SQLite tables after each worker run.

The Track B and Track C agent evaluations found code and answers that
the guide did not prevent:

- The guide said this.reject(code, message). The method takes a code
  and an options object: this.reject(code, { message }).
- A worker process runs only the actor classes that it knows. Run
  against the published 0.17.1 package, a worker without
  runtime.register left an enqueued message in ready_messages with 0
  attempts and no error; with runtime.register it completed. Step 7 now
  says to register each class before runtime.run(signal).
- Agent code called schedule() without an operation and named the
  effect handler arguments in the wrong order. The guide lists these
  mistakes with the correct form.
- The install step now says to take the current release and points to
  step 5, because every authorization callback denies by default.
@greptile-apps

greptile-apps Bot commented Oct 8, 2026 •

Copy link
Copy Markdown

RetriggerConfidence Score: 5/5

[Low risk] Documentation and version bump for a release.

The latest release changes appear safe to merge; the earlier documentation issue remains non-blocking.

Findings

  1. P2 Manual runners appear unsupported ▶
Fix with agent prompt
### Issue 1
docs/agents.md:201-203
The statement that reminders run only under `runtime.run(signal)` excludes supported manual runners. Hosts and tests can use `ReminderScheduler.runOnce()`, `runUntilIdle()`, or `run(signal)` without calling `runtime.run()`, as `docs/api.md` explains. Agents following this guide may wrongly reject those valid options.

Say that a reminder changes state only when a reminder runner executes it, normally through `runtime.run(signal)`. Update the matching wording in `CHANGELOG.md` too.

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

Summary

The latest commit prepares version 0.17.2.

  • Updates package.json and src/version.ts together.
  • Dates the changelog section and updates the Ruby reference in docs/parity.md.
  • No new actionable issues were found.

Reviews (4) · Last reviewed commit: "chore: prepare version 0.17.2" · Reviewed by Greptile

Comment thread docs/agents.md Outdated
Comment thread docs/agents.md Outdated
Review feedback on #66. The guide said that a message for an
unregistered actor class waits with no error. That was wrong. Rerun
against solid-objects 0.17.1 with an instrumentation callback, the
worker reported solid_objects.activation.failed six times in four
seconds with errorName UnknownActorType, and returned the message to
the queue each time without a counted attempt. Nothing printed
without the callback, which is why the first run looked silent.

The guide and the changelog now describe that failure. The step 7
note also points to the direct ref() call above instead of the step 6
class definition, which registers nothing.
@cardmagic

Copy link
Copy Markdown
Owner Author

@greptileai Please review the latest commit f518f1c. It answers both findings: the guide and CHANGELOG now describe the UnknownActorType setup failure and the activation.failed events (reproduced against 0.17.1 with an instrumentation callback), and the step 7 note points to the direct ref() call above.

@context7

context7 Bot commented Oct 8, 2026 •

Copy link
Copy Markdown

Docs7 for cardmagic/solid-objects-js

Result Status Action
Deployment ➖ Not used —
Content review ✅ Passed. No problems found. View findings

Commit 0815c5e

Track C finished: 13 of 16 implementation attempts passed. Its report
proposed three more changes, applied here:

- Codex opened the agent guide in 1 of 8 attempts. The README now
  names the agent guide at the start of Installation.
- One attempt computed expiry from the clock in a query, so a hold
  read as released before the reminder ran. The agent guide now says
  that a reminder changes state only when it runs and that a query
  must read the committed state.
- The current-release note now also appears where Track C pointed.
@cardmagic

Copy link
Copy Markdown
Owner Author

@greptileai Please review the latest commit 9a54ff6. It adds the Track C findings: the README names the agent guide at the start of Installation, the agent guide says a reminder changes state only when it runs under runtime.run(signal), and docs/virtual-actors.md explains that the example's work branch registers TicketSale through ref().

Comment thread docs/agents.md
Comment on lines +201 to +203
- A reminder changes state only when it runs, and it runs only while a process
calls `runtime.run(signal)`. Do not compute expiry from the clock in a query;
read the state that the reminder committed.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Manual runners appear unsupported

The statement that reminders run only under runtime.run(signal) excludes supported manual runners. Hosts and tests can use ReminderScheduler.runOnce(), runUntilIdle(), or run(signal) without calling runtime.run(), as docs/api.md explains. Agents following this guide may wrongly reject those valid options.

Say that a reminder changes state only when a reminder runner executes it, normally through runtime.run(signal). Update the matching wording in CHANGELOG.md too.

Prompt To Fix With AI
This is a comment left during a code review.
Path: docs/agents.md
Line: 201-203

Comment:
**Manual runners appear unsupported**

The statement that reminders run only under `runtime.run(signal)` excludes supported manual runners. Hosts and tests can use `ReminderScheduler.runOnce()`, `runUntilIdle()`, or `run(signal)` without calling `runtime.run()`, as `docs/api.md` explains. Agents following this guide may wrongly reject those valid options.

Say that a reminder changes state only when a reminder runner executes it, normally through `runtime.run(signal)`. Update the matching wording in `CHANGELOG.md` too.

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

@cardmagic

Copy link
Copy Markdown
Owner Author

@greptileai Please review the latest commit 0815c5e. It prepares 0.17.2: package.json, src/version.ts, the dated CHANGELOG section, and the parity ledger's Ruby reference. No other change.

@cardmagic
cardmagic merged commit a390026 into main Oct 8, 2026
20 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant