Skip to content

docs(automation,releases,plugins): back-fill the accuracy audit #4161 never got - #4219

Draft
os-zhuang wants to merge 1 commit into
mainfrom
claude/docs-drift-mapper-nesting-bug-v56kpb
Draft

docs(automation,releases,plugins): back-fill the accuracy audit #4161 never got#4219
os-zhuang wants to merge 1 commit into
mainfrom
claude/docs-drift-mapper-nesting-bug-v56kpb

Conversation

@os-zhuang

Copy link
Copy Markdown
Contributor

Follow-up to #4206 (which fixed #4162). That PR fixed the mapper; this one pays the debt the mapper's bug left behind on #4161.

Why these four docs

#4161's drift comment was computed by the broken mapper: the change to packages/services/service-automation collapsed into the container directory, so the docs were attributed to packages/services rather than the package. Re-derived with the fixed mapper, the change maps to four docs via @objectstack/service-automation — and on a service-automation-only diff the old mapper would have reported none of them:

content/docs/automation/flows.mdx
content/docs/plugins/packages.mdx
content/docs/releases/implementation-status.mdx
content/docs/releases/v9.mdx

Audited with the docs-accuracy-audit workflow (8 agents: one auditor + one adversarial verifier per doc). 44 evidence-backed fixes, 5 repaired by the verifier.

What changed

automation/flows.mdx (11 fixes, 2 verifier repairs) — carries the #4161 axis itself: runAs now states that a 'user' run which resolved no trigger user has its data operations refused, and that schedule / time-relative / API triggers need 'system'. Also: node.type documented as an open string checked against the live action registry at registerFlow() (ADR-0018) rather than a closed enum; the script executor described as naming a callable, with 'email' / 'slack' called out as logger-backed markers that record intent without delivering anything; the .strict() flow/node/edge/variable shells; and six previously undocumented node keys (timeoutMs, inputSchema, waitEventConfig, boundaryConfig, successMessage, errorMessage).

releases/implementation-status.mdx (19 fixes, 2 verifier repairs) — every REST row carries its real /api/v1 prefix; the memory-driver capability list replaced with what InMemoryDriver.supports actually declares; Cache / Encryption / Dataset / Sorting statuses corrected; the msw column dropped (not a workspace package); RolePosition per ADR-0090 D3.

plugins/packages.mdx (13 fixes, 1 verifier repair) — package inventory corrected, and the claim that plugins are never exported as create* factories removed (contradicted by createRestApiPlugin, createDispatcherPlugin, createPlatformObjectsPlugin and ~8 more).

releases/v9.mdx (1 fix) — notes that os package publish --visibility has since shipped (private / org / marketplace, default org).

scripts/role-word-baseline.json — not an unrelated edit: the RolePosition rename removes the file's last "role" occurrence, and check-role-word is a ratchet that fails on a decrease too, requiring the baseline to be updated and committed.

Verification beyond the workflow

The verifier on implementation-status.mdx only reviewed 4 of 19 fixes (its input fix-log was truncated), so I re-checked that file's claims myself and found one error the workflow missed: the doc cited InMemoryDriver.capabilities, but the real property is InMemoryDriver.supports (memory-driver.ts:153 — the test name says "capabilities" while asserting driver.supports.transactions). Fixed in this PR. The substantive capability list checks out line-by-line against supports. Independently confirmed as well: CoreServiceName has no permission entry, field.zod.ts has no checkbox / array types, the four .strict() shells, rest-route-ledger.ts, and the --visibility options and default in publish.ts:170-174.

Gates run locally, all green: pnpm --filter @objectstack/docs build (410+ pages), check:doc-authoring, check:role-word, check:nul-bytes, check:release-notes, and check:skill-examples (198 prose examples type-check).

Residual — reported, not guessed at

18 items the agents could not resolve without a code-owner decision are recorded in the changeset rather than edited. Two look like genuine code/doc contradictions worth their own issues:

  • Artifact API loaderimplementation-status.mdx calls it "Future" and artifactSource: { mode: 'artifact-api' } "reserved", faithfully mirroring the comment at packages/metadata/src/plugin.ts:145-148. But _loadFromArtifactApi() exists at plugin.ts:723-752 and is dispatched from the bootstrap switch. The code is self-contradictory; the doc is only echoing it.
  • maxRetries defaultFlowSchema sets .default(0) while the engine reads errorHandling.maxRetries ?? 3 (engine.ts:3500). Which wins depends on whether the flow was parsed through the schema first.

🤖 Generated with Claude Code

https://claude.ai/code/session_01J2x8Tie9WT1VgWFifqMKrR


Generated by Claude Code

…never got

The drift comment on #4161 was computed by the mapper bug #4206 fixed: the
service-automation change collapsed to `packages/services`, so these four
docs were attributed to the wrong package — and a service-automation-only
diff would have reported none of them. Re-derived with the fixed mapper and
audited against the implementation.

flows.mdx carries the #4161 axis itself: a `runAs:'user'` run that resolved
no trigger user has its data operations refused. Also documents `node.type`
as an open string checked against the live registry (ADR-0018), the script
executor as naming a callable with logger-backed `email`/`slack` markers,
the `.strict()` shells, and six previously undocumented node keys.

implementation-status.mdx gains the real `/api/v1` route prefixes, the
memory driver's actual `InMemoryDriver.supports` matrix, and the ADR-0090 D3
`Role` -> `Position` rename — which ratchets the role-word baseline down by
one, so that gate-mandated update ships here too.

Gates: docs build, check:doc-authoring, check:role-word, check:nul-bytes,
check:release-notes, check:skill-examples (198 prose examples).

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

vercel Bot commented Jul 30, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
objectstack Ignored Ignored Jul 30, 2026 4:20pm

Request Review

@github-actions github-actions Bot added documentation Improvements or additions to documentation tooling size/m labels Jul 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation size/m tooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

docs-drift mapper 把 30 个嵌套包全部塌成父目录:只特判了 plugins,导致真实漏报(automation/flows.mdx 就是其中一个)

2 participants