Skip to content

Add an API audit pilot and expose conversation tabs - #274

Draft
soxtoby wants to merge 3 commits into
masterfrom
sox/api-audit-pilot
Draft

soxtoby wants to merge 3 commits into
masterfrom
sox/api-audit-pilot

Conversation

@soxtoby

@soxtoby soxtoby commented Nov 1, 2026 •

Copy link
Copy Markdown
Owner

Summary

Slack docs + method index + optional read-only dev probes
  -> request/JSON-contract audit
  -> findings, source hashes, coverage and PR handoff

Manual pilot for users.*, conversations.* and chat.*. Includes cached replay, stable finding IDs, reasoned suppressions and a manually triggered Actions workflow. SDK/changelog snapshots are investigation signals. Scheduling and agent-created PRs remain the next stage.

Separate commits keep tooling distinct from the first candidate: Conversation.Properties, ConversationProperties.Tabs and ConversationTab. No customer-implemented interface changes.

Evidence

  • Before: $.channel.properties unmodeled in conversations.create and conversations.info; finding IDs 09b4b149440a5371 and 199c5c73e81a1c2e.
    After: both findings resolve on cached-source replay; nested canvas remains a separate candidate.
  • ./do test: 761 passed, including 16 audit test cases; package validation passed. Public audit covered 54 method references with no source/parser failures.
  • Sources: method docs (SHA-256 9743dabd57695406c2000c389807b0fbe3d0f6b4cb76432e622a1ccc8d9aa678), SDK response (SHA-256 3c28a5f9adefc0c2748800e565c5417052f23f495d582cedf428314dab2fd4d5).
  • Live verification: all five read-only probes passed (users.info, users.list, conversations.info, conversations.list, conversations.history), sampling 8 users, 2 conversations and 10 messages. Conversation tab id, label and type were observed as strings. Coverage remains one dev token/channel and one page per collection.
  • Live probing exposed a fixture-workspace mismatch: list probes now prefer the channel's context workspace, preserving an explicit --team override. Regression reproduced before the fix and passes afterward.
  • Legacy chat.delete.as_user is intentionally suppressed with a recorded reason. Other newly observed fields remain candidates; several block-field findings may represent missing polymorphic types rather than independent properties.

Merge Danger

Door: two-way

Blast Radius: maintenance

Workflow is manual, repository permissions are read-only, and live probes make no Slack writes. Live artifacts retain shapes only. See runbook for coverage limits and credential setup.

Use the fixture workspace for list probes, preserving explicit overrides. Suppress the legacy chat.delete.as_user parameter.
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