Skip to content

docs(publishers-guide): fix apps/agents doc drift against actual platform behavior - #41

Merged
localrivet merged 4 commits into
mainfrom
claude/apps-docs-review-qu4e3k
Aug 1, 2026
Merged

docs(publishers-guide): fix apps/agents doc drift against actual platform behavior#41
localrivet merged 4 commits into
mainfrom
claude/apps-docs-review-qu4e3k

Conversation

@localrivet

Copy link
Copy Markdown
Contributor

Corrects the public publishers-guide where it had drifted from the shipped platform: delegation semantics, install cascade, watcher behavior, validation rules, agent.json memory/tools fields, and dev paths in the apps doc.

Docs-only — no runtime changes.

🤖 Generated with Claude Code

https://claude.ai/code/session_015oqdbhhgyktgKu9iqKb3V2

claude added 3 commits August 1, 2026 18:59
…havior

Corrections verified against the code:
- Tool discovery: tools are declared in agent.json, not discovered via
  GET /_tools (which the sidecar proxy actively blocks). Rewrote the
  section and the scope/tips references to match.
- Session key for nebo.agents.invoke() is app:{id}:api, not agent:{id}:api.
- Permissions: document the enforced forms — network:{domain} (with
  network:* wildcard) and subagent:{agentId} — instead of the unenforced
  network:outbound / subagent:invoke spellings; note token gating for
  storage/agents/janus endpoints.
- manifest.json: the runtime parser reads "type", not "artifact_type";
  updated examples and field table (legacy spelling noted).
- Env vars: NEBO_API_URL uses the running server's port (not 8420);
  NEBO_DATA_DIR resolves under Nebo's appdata (plugins/{slug}), not
  ~/.nebo/appdata/agents/{id} — same fix for the sidecar.log path.
- Crash recovery: first restart is immediate; backoff gates are
  20s/40s/80s/160s capped at 5min (was documented as starting at 10s).
- Removed dead reference to docs/sme/APPS.md (file does not exist).
- Fixed core-tool collision list to the actual domain tool names.

Also corrected the supervisor backoff comment, which described a 10s
first wait the code never performs.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WrKTd3yCXjE69efvvpwUd3
…pps doc

Corrections verified against the code:
- Memory: the inherit_user flag no longer exists — owner identity
  inheritance (tacit/preferences, tacit/personality, read-only) is
  always on. Removed the flag from the table, example, and scoping
  matrix, and documented the actual resolution rules including the
  fail-closed behavior: context_isolated with no derivable context
  refuses memory writes instead of leaking into the shared scope.
- Context isolation: contexts derive from the embed contextId or the
  session's active chat; only the agent-wide tacit/ namespace is
  inherited into isolated contexts.
- Sidecar tools: removed the claim that GET /_tools discovery exists —
  agent.json is the only source of tool definitions.
- Input fields: note that `name` is accepted as an alias for `key`.
- apps.md: dev-workflow paths now use the platform-native user/agents/
  root (matching the agents doc), replacing stale ~/.nebo examples.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WrKTd3yCXjE69efvvpwUd3
…ation

Traced every runtime claim in the agent guide against the code.

Delegation (most publisher-visible errors):
- The tool call form was wrong. There is no `agents` tool — delegation is
  `agent(resource: "registry", action: "delegate", ...)`. The old form
  survives only in an orphaned strap prompt file that is never included.
- "There is no built-in depth limit" is false: delegation chains are
  capped at 2 levels (MAX_SUBAGENT_DEPTH) and the third is refused.
  Distinguished this from the separate channel handoff cap.
- Auto-activation is in-memory only (no is_enabled flip, no trigger
  registration), and drops the target's soul/rules — documented both.
- Scoped the "returns a text result" claim to wait: true.

Removed the Followup Suggestions section entirely — the feature does not
exist: no generator, no frontend chips, and no such hub broadcast event.

Auto-install cascade: rewrote to match deps.rs. Install order is not
plugins-first on all paths, non-marketplace skill refs are silently
skipped, optional deps are skipped, failures are partial with no rollback
(the agent stays installed and may auto-activate), and triggers/persona
are not cascade steps.

Filesystem watcher: documented that manifest.json edits are not detected,
that sub-1s successive saves are discarded rather than deferred, and that
edits inside a symlinked directory do not reliably propagate (the same
overstated symlink claim is corrected in apps.md).

Validation rules: split into hard errors vs silently-skipped bindings —
an invalid workflow binding is dropped with a log warning while the agent
loads normally, which the doc previously described as a load failure.

Also documented the memory.topics feature (implemented, validated, and
entirely absent from the guide), requires.interfaces, folder-path input
substitution, string-only input defaults, and loader identity behavior;
marked `defaults` as parsed-but-not-yet-enforced.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WrKTd3yCXjE69efvvpwUd3
@localrivet

Copy link
Copy Markdown
Contributor Author

Reviewed with claims verified against code. Everything checks out (backoff seeding, depth cap = 2, NEBO_DATA_DIR per-slug, no /_tools, memory/isolation section, port 27895) except one factual regression:

apps.md — tool-name collision list: changed FROM the correct current names (agent, skill, event, message, web, os) TO the pre-rename names (system, bot, loop, desktop, organizer, …). Actual registered names: bot_tool.rs:2024"agent", os_tool.rs:325"os", event_tool.rs:32"event". This also contradicts agents.md in this same PR ("the agent domain tool's registry resource"). The stale list appears to have been copied from CLAUDE.md, which still carries pre-rename STRAP names — worth a separate cleanup.

One-line fix, then LGTM. (Hold merge — release coordination in progress.)

agent (bot_tool.rs:2024), os (os_tool.rs:325), event, web, skill,
message, loop, work — verified against each DynTool name() impl.
The previous edit had reverted to pre-rename names.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015oqdbhhgyktgKu9iqKb3V2
@localrivet
localrivet merged commit bd8c314 into main Aug 1, 2026
2 checks passed
@localrivet
localrivet deleted the claude/apps-docs-review-qu4e3k branch August 1, 2026 22:33
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.

2 participants