Add comprehensive SDK contract specification at docs/notes/sdk-contract.md. This document serves as the constitutional specification for all pdftract SDK implementations across all languages. The contract defines: - Method surface (9 methods mirroring CLI/MCP tools) - Error mapping (CLI exit codes → native exceptions) - Versioning compatibility rules (MAJOR lock, MINOR flexibility) - Option-naming conventions (CLI flag → language-native case) - Native type-mapping requirements (Document, Page, Span, Block, Match, Fingerprint, Classification) - Async conventions per language - Conformance enforcement (100% pass required) - Change policy (ADR required for contract changes) Verification note: notes/pdftract-147a.md Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2.7 KiB
2.7 KiB
pdftract-147a: SDK Contract Specification
Summary
Authored the SDK contract specification at docs/notes/sdk-contract.md. This document serves as the constitutional specification for all pdftract SDK implementations across all languages.
Work completed
1. Created docs/notes/sdk-contract.md
A comprehensive 12-section contract document covering:
- Scope - Defines the document's role as the single source of truth
- Method surface - 9 methods with CLI and MCP mappings, full signatures with options honored
- Source argument types - Path, URL, Bytes with language-specific overload allowances
- Options object - BaseOptions, ExtractOptions, SearchOptions with complete type definitions
- Return types - Document, Page, Span, Block, Match, Fingerprint, Classification, Metadata with TypeScript-style definitions
- Error mapping - 8-row table mapping CLI exit codes to language-native exceptions
- Versioning compatibility - MAJOR lock, MINOR flexibility, binary resolution order
- Option-naming conventions - CLI flag to language-specific case conversion table
- Native type mapping - Requirement for language-native types, not raw JSON dicts
- Async conventions - Per-language async patterns
- Conformance - Link to conformance suite, 100% pass gating rule
- Change policy - ADR requirement, coordinated PR wave, schema_version bump
2. Key design decisions
- Method surface mirrors plan lines 3490-3500 exactly
- Error mapping matches plan lines 3504-3513 with per-language base types
- Versioning rules follow plan lines 3517-3524
- Option-naming table covers all planned SDK languages
- Return types reference
docs/schema/v1.0/(schema location, not content) - Conformance references
tests/sdk-conformance/cases.json(suite location)
Acceptance criteria
| Criterion | Status | Notes |
|---|---|---|
| docs/notes/sdk-contract.md exists with all 12 sections | PASS | All 12 sections authored |
| 9 method rows fully documented | PASS | Signatures, options, return types, error surface documented |
| 8 error rows map to per-language exception classes | PASS | Includes base exception type per language |
| Versioning compatibility is testable | PASS | Clear binary MAJOR lock rule specified |
| SDK READMEs link to contract | N/A | SDKs not yet implemented |
| Contract changes gated by ADR | PASS | Change policy section specifies ADR requirement |
Files changed
docs/notes/sdk-contract.md(created, 267 lines)
Next steps
- Each SDK README should link to this document as the canonical contract
- When
docs/schema/v1.0/is created, update return type references - When
tests/sdk-conformance/cases.jsonis created, update conformance section