docs(platforms): schema-driven platform knowledge base + 8 platform pages (#1294)#1295
docs(platforms): schema-driven platform knowledge base + 8 platform pages (#1294)#1295luffy-aiagent wants to merge 33 commits into
Conversation
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
…/platforms/wecom.md
…/platforms/discord.md
…/platforms/_template.md
…/platforms/telegram.md
…/platforms/googlechat.md
…/platforms/feishu.md
…/platforms/slack.md
…/platforms/line.md
…/platforms/teams.md
…/platforms/README.md
List the complete closed feature set as blank blocks (send_message … group_routing) so the template doubles as a fill-in form, not just one example. Clarify conformance: real schema/*.toml fully deserialize; the template is checked for section/feature-key completeness. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…numbers Line numbers go stale on any edit above the target. Switch `source` to "file.rs" or "file.rs#symbol" — a symbol name is stable (churns only on rename/delete, exactly the drift worth catching) and greppable, so conformance can actually verify it rather than trivially checking a line exists. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- quirks.kind now required, named values (intrinsic | openab_decision) not A/B - mentions: put typed `method` first for consistent fill order - attachments: keep single headline max_size_mb, require per-type/plan detail in note - Schema 1: add explicit fill guidance (note=how, source=official URL, "?" in note for unverified facts) so agents fill correctly Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This comment has been minimized.
This comment has been minimized.
Land the schema-driven side of the platform knowledge base (issue openabdev#1322): - docs/platforms/schema/{line,slack,telegram,discord,feishu,wecom, googlechat,teams}.toml — all 8 platforms converted from their md pages into the typed schema (18 capability sections, the 16-feature closed set, quirks). Every `source` is a "file.rs" / "file.rs#symbol" code-ref, verified against the tree. - crates/platform-schema — the validator + conformance tests: structural validation (required fields, closed enums, closed feature set, unknown-key rejection) + the anti-drift check that every code-ref source still exists (file present, #symbol greps). 3 unit + 5 conformance tests, all green. Uses toml_edit parse-only: no proc-macros, no build scripts, so it needs no C toolchain — runs on minimal CI images. - .github/workflows/platform-schema-conformance.yml — runs the checker on any change to the schema files, the template, or the checker. Excluded from the root workspace so it builds independently of the heavy adapter crates. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This comment has been minimized.
This comment has been minimized.
Switch the validator from toml_edit tree-walking back to serde-derive structs (the agreed design in openabdev#1322): each schema/*.toml deserializes into `Platform`, with enums as closed sets and `deny_unknown_fields` for typo rejection. Conformance tests unchanged in intent (structural validity, schema version, closed feature set, present-features-cite-a-source, and the anti-drift check that every code-ref source still exists). 4 unit + 8 conformance tests, all green. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
…rcing note Resolves the CHANGES REQUESTED findings on openabdev#1295: - F1: bump schema version 2026-07-04 → 2026-07-07 across README (current version + conformance table) and every page's `**Schema version:**` line, so it matches the TOML schema. Findings-log dates are left as-is (real dates, not the schema version). - F2: add trailing newline to the platform pages that were missing one. - F4: replace placeholder `[PR #TBD]` / `[PR: @TBD]` with `openabdev#1295`. - F3: add a "Machine-readable schema" note to the README — the `schema/*.toml` files (with `file#symbol` refs) are the machine-checked source of truth; the `.md` `file:line` refs are a point-in-time snapshot for readability. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The per-platform Markdown pages duplicated the schema/*.toml content (their
prose now lives in the toml `note` fields, their findings logs in `[[quirks]]`).
Remove them and _template.md; the TOML files + conformance crate are the sole
source of truth going forward.
- Delete docs/platforms/{line,slack,telegram,discord,feishu,wecom,googlechat,
teams}.md and _template.md.
- Rewrite README as a toml-only index + schema reference (capability sections,
the 16-feature set, quirks), pointing at schema/*.toml and _template.toml.
- Fix stale "converted from <platform>.md" provenance comments in the toml
headers now that those md files are gone.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Promote known platform quirks from prose notes to typed, comparable fields (all optional, so no forced backfill): - attachments.max_count — max attachments per message (Discord = 10) - attachments.outbound_delivery — url | upload (LINE sends media by URL) - edit_message.max_edits — edit cap per message (Feishu = 20) - delete_message.window_sec — deletion window in seconds (WeCom recall = 86400) Backfilled the platforms with known values (LINE, Discord, Feishu, WeCom); others omit them. Template + serde structs updated; 4 unit + 8 conformance tests green. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
Note LGTM ✅ — High-quality schema-driven documentation infrastructure with typed conformance enforcement; no blocking issues. What This PR DoesBootstraps How It WorksThree-layer architecture:
Findings
Observations (non-blocking)
|
openabdev#1315 landed telegram cron on main; model it in the schema. Adds cron_dispatch as the 17th closed feature across all 8 platform pages (discord/slack/telegram=implemented, others=not_implemented), the template, README, and bumps schema_version to 2026-07-08. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
Note LGTM ✅ — Schema-driven platform knowledge base with typed conformance, anti-drift CI, and 8 thoroughly sourced platform pages. What This PR DoesBootstraps How It WorksThree-layer schema (all machine-checked):
CI ( Findings
What's Good (🟢)
Baseline Check
5️⃣ Three Reasons We Might Not Need This PR
All three are acknowledged trade-offs with reasonable mitigations. The anti-drift guarantee alone justifies the maintenance cost. |
Summary
Bootstraps
docs/platforms/— an engineering/reviewer-facing knowledge base for messaging-platform behavior and how OpenAB maps it. Proposed in #1294. Not a single wide table (too many platforms) — instead the README defines three versioned schemas and each platform gets its own page filled against them.Structure
README.md— defines the 3 schemas + versioning + a conformance table (spot which page lags a schema bump at a glance)._template.md— blank page.line.md,slack.md,telegram.md,discord.md,feishu.md,wecom.md,googlechat.md,teams.md— one page per platform.The three schemas
platform-capability(v1) — fixed fields, same for every platform: the platform's intrinsic nature + what a bot can/can't do (threads, slash commands, emoji reactions, edit/delete, mentions, attachments+limits, message length, group sender-identity, reply/push model, push quota, bot-to-bot, typing). Sourced from official docs.openab-feature-support(v1) — fixed fields, derived from theChatAdaptertrait: per OpenAB feature, status (implemented/partial/workaround/not-implemented/n/a) + note +file:line. Shows where a platform is specialized, a workaround, or constrained.platform-quirks(v1) — flexible: special models (e.g. LINE reply/push) + a dated findings log.The three schemas share one date-based version (currently
2026-07-04). Each page shows its version as a single line near the top — no YAML front-matter (platform = filename, ownership tracked separately, last-touched in git). Bump the date in the README and the conformance table surfaces stale pages.How it was filled
Each page was drafted from the adapter source + verified against official platform docs, then two further passes to close gaps and enforce schema conformance. All
(A)intrinsic facts link official docs;(B)OpenAB claims carryfile:line.Known residuals (for platform maintainers)
(B)findings referencefile:linebut not a merged PR yet (this PR is the origin).?(e.g. Telegram rich-message char ceiling, Feishu attachment size tiers) — noted honestly rather than guessed.Discussion on structure/location: #1294. Ref: ADR #1291 (LINE).
Design discussion (Discord): https://discord.com/channels/1491295327620169908/1491365158868619404/1523034521807618289
🤖 Generated with Claude Code