Skip to content

docs(python): complete the README, test it, and score the SDK (#1395) - #1517

Merged
yujiyokoo merged 1 commit into
feat/python-sdk-concurrencyfrom
feat/python-sdk-docs
Nov 13, 2026
Merged

yujiyokoo merged 1 commit into
feat/python-sdk-concurrencyfrom
feat/python-sdk-docs

Conversation

@yujiyokoo

Copy link
Copy Markdown
Contributor

Summary

This is the last ticket under spec #1341. It makes the Python SDK's README something a new user can follow to a found row. It also records how well the SDK keeps the shared SDK principles.

Why

  • A README that stops working gives a new user no way forward. So the README's SQL and Python blocks now run in CI, in order. They run against ZeroKMS and a PostgreSQL database. A change that breaks a step fails the live job. An offline test also checks every pull request that changes the Python tree.
  • The README left out two risks a user cannot see from the code. A printed model hides encrypted fields, but asdict, pickle, and a logged field do not. A class changed after its Cipher is made goes unchecked. The README now says both, and how to store a UUID key.
  • A user needs to know what the SDK cannot do yet, before they design around it. The README now lists it.
  • The principles are only useful if someone checks the code against them. languages/python/docs/scorecard.md marks each of the eight with evidence. Seven are held. G3 is strained, because the SDK ships no type checker or linter rules.
  • The design documents said things that were no longer true. The principles doc said no code showed its Python principles. Principle 5 promised a field and a reason on every error. The code does not do that. Python ADR-0002 still said "proposed".

Verification

  • pytest: 358 passed and 29 skipped.
  • The README test passed against a local PostgreSQL with EQL v4, on the deterministic build.
  • With the README's query cast broken, the same test failed.
  • Not run: the README test against ZeroKMS. This machine has no credentials. The live job on this PR is its first run.

Related

Closes #1395. Refs #1341.

🤖 Generated with Claude Code

@coderabbitai

coderabbitai Bot commented Nov 3, 2026 •

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

Run configuration

  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI; Enforced overrides: Organization
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: bbee22f0-cb78-45da-a7c0-bc79aaeee03f

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • Trigger review

@changeset-bot

changeset-bot Bot commented Nov 3, 2026 •

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 08a0554

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@blacksmith-sh

This comment has been minimized.

@yujiyokoo
yujiyokoo added this pull request to stack #1520 November 4, 2026 02:58
@yujiyokoo
yujiyokoo force-pushed the feat/python-sdk-docs branch from d6115f0 to 111280f Compare November 4, 2026 15:24
The README gains the topics a new user needs: what a printed model
hides and what it does not, the rule against changing a class after
its Cipher, two ways to store a UUID key, and what is not supported
yet. Its first Python block now reads DATABASE_URL, which the later
blocks used without defining.

The README now runs in CI. tests/test_readme_live.py runs its SQL and
Python blocks in order, in a schema of its own, in the live job, and
checks that the equality query finds the row. tests/test_readme.py
needs no credentials. It compiles the Python blocks, checks that
every fence is parsed and that the blocks bind the names the live
check reads, and checks that the README installs the bundle the live
task installs.

tests/_live.py now holds the credential checks, the live marks and
the child-process runner. The encrypt, concurrency and README live
tests share it.

languages/python/docs/scorecard.md marks the eight shared principles
against the code, with evidence: seven held, and G3 strained, since
the SDK ships no type checker or linter rules.

The principles doc no longer says no code shows its Python
principles. It links to the scorecard, and principle 5 now says an
error names a field and a reason where one applies. Python ADR-0002
is accepted, since query shipped in its shape. AGENTS.md names the
scorecard and the README test.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@yujiyokoo
yujiyokoo force-pushed the feat/python-sdk-docs branch from 111280f to 08a0554 Compare November 4, 2026 15:49
@yujiyokoo
yujiyokoo marked this pull request as ready for review November 10, 2026 00:41
@yujiyokoo
yujiyokoo requested a review from a team as a code owner November 10, 2026 00:41

@cipherstash-agent cipherstash-agent left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review attestation

Reviewed 08a0554 · posted from Claude Code · claude-sonnet-5-5 · effort medium
Sources: code-review · claude-sonnet-5-5
Skills: code-review, review-cross-check, review-post

No blocking findings. The README claims I spot-checked against the head tree held: __rich_repr__ redaction, the three-request batching tests, docs/gate-facts/, and the bundle path in mise.toml. The head live job and the Python 3.9 and 3.14 jobs were green at this commit.

Findings (2): 0 blocking, 2 minor, both inline.


Generated by Claude Code

Comment thread languages/python/tests/_live.py Resolved
Comment thread languages/python/docs/scorecard.md Resolved

@cipherstash-bot cipherstash-bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Recommendation: 🟢 merge as it is

No change is needed before merging. The review found six optional test and test-helper cleanups, all in the README tests. They can wait for a follow-up.

How this review was made
Agent Model Review type Result
claude claude-opus-5-5 test-gap 3 found, 3 posted
claude claude-opus-5-5 rust 0 found, 0 posted
claude claude-opus-5-5 python 3 found, 3 posted
claude claude-opus-5-5 infracode 0 found, 0 posted

Synthesis: claude-sonnet-5-5 merged the findings, removed duplicates and dropped findings it could not confirm in the code. 0 posted finding(s) were raised by two or more models.

Plain language: claude-sonnet-5-5 read every comment as a new reader would. 1 comment(s) had a problem that stopped the reader acting; it rewrote 0.

Stack: position 14 of 15 (#1405, #1406, #1414, #1415, #1433, #1437, #1453, #1499, #1509, #1510, #1511, #1513, #1516, *️⃣ #1517, #1582). *️⃣ marks this pull request.

Context loaded: the description, 2 linked issue(s) and 6 discussion entries.

Comment thread languages/python/README.md Resolved
Comment thread languages/python/README.md Resolved
Comment thread languages/python/tests/_readme.py Resolved
Comment thread languages/python/tests/_readme.py Resolved
Comment thread languages/python/tests/_readme.py Resolved
Comment thread languages/python/tests/test_readme.py Resolved
@yujiyokoo
yujiyokoo removed this pull request from stack #1520 November 12, 2026 09:12
@yujiyokoo
yujiyokoo added this pull request to stack #1634 November 12, 2026 09:13
@yujiyokoo
yujiyokoo merged commit dffd0f5 into feat/python-sdk-tracer-adr Nov 13, 2026
49 of 77 checks passed
@yujiyokoo
yujiyokoo deleted the feat/python-sdk-docs branch November 13, 2026 03:22
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.

3 participants