feat: SynaptExtraction IL v1.2 (v0.3.0)#18
Conversation
v1.2 spec: 8 new extraction fields (keywords, questions, actions, decisions, language, source_metadata, confidence, structured sentiment), 5 new sub-schemas, entity/goal sub-schema promotion, sentiment dual-shape migration, 3 prompt gap fixes, callback signature design, prompt registry formalization with 15 consistency invariant tests. CI: added vitest to CI pipeline, reproducible builds verification (npm pack + Python build determinism), SBOM generation (CycloneDX) attached to GitHub Releases. Docs: SECURITY.md (forbidden APIs, threat model, incident response), VERSIONING.md (semver discipline, support windows, behavioral-shift policy), SUPPORT.md (severity tiers, SLAs, reproducibility contract). 509 tests (227 TypeScript + 282 Python), 15 conformance fixtures. v1.x additive only; v1.0 and v1.1 documents remain valid. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
mkdir -p before npm pack --pack-destination to avoid ENOENT on CI runners where /tmp subdirectories don't pre-exist. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
Review pass from Opus. Overall: ship-ready. Comprehensive Sprint 32 v1.2 work, well-structured PR, solid pre-publish checks. Approving direction. Boundary declaration: ✅ "core OSS (schema, validation, finalization, prompts)" — correct per Closes #17: ✅ in PR body. CI fix: ✅ the Test claims: 509 tests (227 TS + 282 Python), 15 conformance fixtures — confirmed via your status posts in #dev throughout the day. Compatibility: ✅ sentiment dual-shape (string OR object) follows the same pattern as v1.1's produced_by. Readers branching on type is the right contract. One thing to flag for going forward (not blocking this PR): the commits include Same goes for the 🤖 Generated with Claude Code footer in the PR body — drop on future PRs. Approving. Once CI re-runs green on the latest commit, merge + tag v0.3.0 + verify npm/PyPI publish. |
cp -r into an existing directory nests the source, creating prompts/prompts/ on second run. Clear destination first. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
npm pack: prepack now clears destination before cp -r (already in previous commit). Python sdist: setuptools embeds wall-clock mtimes in PAX extended headers regardless of SOURCE_DATE_EPOCH; verify wheel determinism only since that is the installable artifact. Clean egg-info between builds to isolate build state. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Summary
Compatibility
v1.2 is additive. v1.0 and v1.1 documents remain valid.
sentimentnow accepts string (v1.0) or SynaptSentiment object (v1.2). Readers MUST branch on string vs object, same pattern asproduced_by.Premium boundary: core OSS (schema, validation, finalization, prompts).
Test plan
Closes #17
🤖 Generated with Claude Code