docs(flow): dogfood classify flow docs on 3.25.0 - #885
Closed
RapidPoseidon wants to merge 1 commit into
Closed
RapidPoseidon wants to merge 1 commit into
RapidPoseidon wants to merge 1 commit into
Conversation
LucStr
marked this pull request as ready for review
September 19, 2026 22:29
Dogfooded the classify flow feature (rapidata 3.25.0) against production as a brand-new customer, docs-only first, then the SDK. Rebased onto the ranking/classify split (#889), which already fixed two of the original five findings. The remaining gaps between the guides and real behaviour: get_response_count() waits for the flow item to finish (undocumented), data_type/private_metadata/accept_failed_uploads on create_new_flow_batch (undocumented on both flow types), update_config()'s starting_elo/ min_responses/max_responses (only instruction was shown), and the max/min responses-per-datapoint bounds. No code or docstring changes. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Co-Authored-By: karl@rapidata.ai <198642422+Karl-The-Man@users.noreply.github.com>
RapidPoseidon
force-pushed
the
docs(flow)/dogfood-classify-flow-3-25-0
branch
from
September 21, 2026 10:19
1fd30a8 to
7b08414
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this is
A from-scratch dogfood of the classify flow feature (
rapidata==3.25.0, released 2026-09-19 21:28 UTC, docs republished 21:30 UTC) against production, as a brand-new customer would experience it: freshuv venv, docs.rapidata.ai only (no repo code) for every claim, then the installed SDK against real credentials, then the repo for fixes. Full method:create_classify_flowwith defaults and with explicitmin/max/time_to_live, bothcreate_new_flow_batchshapes (plain andcontexts=),get_status()while running,get_response_count()timed,get_results()blocked to completion, every result field,get_flow_by_id,find_flows,get_flow_items,update_config(ranking and classify),preheat(), and every documented validation/error path (category bounds, duplicate values, TTL bounds, min-above-max,context_assetsbounds, batch-levelcontext/context_assetson a classify flow).Rebased onto #889 (the ranking/classify class split, merged 2026-09-21 10:09 UTC), which moved the guides to
docs/flows/classify.mdanddocs/flows/ranking.mdand independently resolved two of the original five findings. Everything below was re-verified against the new classes and pages before re-applying.Mismatches fixed here
get_response_count()is documented as a plain getter next to the non-blockingget_status(), with no mention it can block (both guides).rapidata_flow_item.pyis untouched by #889; its docstring already says "Either way this waits for the flow item to finish."get_results()does".data_type,private_metadataandaccept_failed_uploadsappear in neither guide nor the overview.RapidataClassifyFlow.create_new_flow_batchandRapidataRankingFlow.create_new_flow_batchstill take all three with identical semantics.accept_failed_uploads=False(the default) raisesFailedUploadExceptionif any datapoint fails to upload instead of continuing.docs/flows.md), since the three are common to both flow types.instruction=.RapidataRankingFlow.update_configalso takesstarting_elo,min_responses,max_responses— confirmed in source and ran without error live against a real ranking flow.max_responses_per_datapoint/min_responses_per_datapointbullets state their defaults but not their bounds.max < minandmin < 1both raiseValueErrorclient-side, before any network call. Validation unchanged onmain.min_responses_per_datapoint)" / "(at least1)" to the two bullets.No code or docstring changes — every docstring I checked already matches real behavior; only the guides were out of sync.
Found on 3.25.0, already resolved on
main— no action taken here"yes"/"no"keys againstcategories=["Yes", "No"]. Real behavior preserves the exact string given (confirmed live:{"Yes": 4, "No": 0}). fix(flow)!: separate ranking and classify flows #889's newdocs/flows/classify.mdalready shows"Yes"/"No".context_assetswas undocumented. fix(flow)!: separate ranking and classify flows #889 documents it on both guides, including the ranking 1–10 bound and the per-datapointlist[list[str]]shape on classify.time_to_liveand a 2–10 category bound oncreate_classify_flow. My run (installed3.25.0) used both successfully against production (flowflw_1VdliMPVSM7Ihk,time_to_live=timedelta(seconds=60)at creation, overridden per-batch to 45s). refactor(flow): trim create_classify_flow parameters #883 (merged 22:01:55 UTC the same evening) deliberately trimmed both to match the deployed backend feature: flow-leveltime_to_liveremoved (batch-level untouched), categories back to 2–8. Noted for the record as real production behavior that has since been intentionally superseded.Confirmed working exactly as documented (on 3.25.0)
(label, value)forms.time_to_livebounds (45s–3600s) rejected client-side at the batch level, both directions.context_assetsoutside 1–10 on a ranking batch raised the documentedValueErrorbefore any upload. On 3.25.0, batch-levelcontext/context_assetson a classify flow raisedValueError; after fix(flow)!: separate ranking and classify flows #889 the classify class simply does not take a batch-levelcontext(itscontext_assetsis per-datapoint), so that error path no longer exists.get_win_loss_matrix()on a classify item raisesValueErrorimmediately (no wait) — still true onmain.update_config(): on 3.25.0 it raisedValueErroron a classify flow and ran without error on a ranking flow; after fix(flow)!: separate ranking and classify flows #889 it only exists onRapidataRankingFlow, which the new classify guide already states.get_status()states and non-blocking behavior;Incomplete-vs-Completedformula confirmed on a real Incomplete item (153/240) and a real Completed item (15/12).majority_valueisNoneon an exact tie — observed live (a real 1-1 split).distributionincludes every category with0for ones nobody chose, in the flow's category order.get_flow_by_id,find_flows,get_flow_items,preheat()all round-tripped correctly.RAPIDATA_CLIENT_ID/RAPIDATA_CLIENT_SECRETworked immediately as documented.Known incident — hotfix confirmed live
Per the brief:
GET /flow/simple/item/{flowItemId}/resultshad been returning 400 ('Size' must be less than or equal to '100') for every classify item, hotfix pending. Both myget_results()calls succeeded on the first try (no 400 observed), and zero-vote categories came back correctly (e.g.{"Yes": 4, "No": 0}) — consistent with the parent-reported hotfix (flow spec2026.09.19.2134-9bb4c01) being live. This is my own independent confirmation, on my own flow items, not a copy of the example the parent verified against.Not fixed — already flagged by predecessors, still open
create_classify_flowalso acceptsvalidation_set_idandsettings— still in the signature onmain, still absent from the classify guide. Flagged as a known, deliberately-deferred gap in docs(flow): dogfood classify flow docs on 3.24.1 #881; I didn't exercise either param live, so I'm not adding unverified prose.categoriesalso accepts(label, value)tuples — fully documented in the docstring/reference, deliberately excluded from the guide per an explicit reviewer decision in docs(flow): dogfood classify flow docs on 3.24.1 #881. Not re-adding.docs/flows/classify.mdvs. the separateexamples/classify_job.md(older Likert-scale job API) document two different, both-supported APIs with no cross-link — flagged in docs(flow): dogfood classify flow docs on 3.24.1 #881 as a product/IA call, not a docs bug.Production run: ids and scripts
Account:
poseidon@rapidata.ai. Fresh venv:uv venv && uv pip install rapidata==3.25.0(installed clean on the first try, no PyPI lag). Images: 88 uniquehttps://assets.rapidata.ai/*.webpURLs flattened fromasset_a_uri/asset_b_uriindatasets/ai-faces/datapoints.csvofrapidata-rapids-ab-tests.flw_1Vdkfb2qBLhaCW→ itemfli_1VdkgusOFWdM3Y(24 images, plain batch, default TTL, endedIncompleteat 153/240 responses).flw_1VdliMPVSM7Ihk→ itemfli_1VdljSXR2SpkCF(6 images,contexts=, batch TTL override 45s, endedCompletedat 15/12 responses, one exact tie).create_new_flow_batchguard clauses (zero spend — all raise before any upload), soft-deleted after:flw_1VdkfIY9A7XlF8(classify),flw_1VdkfRfDwn1IS8(ranking).dogfood_classify_flow.py— full script run against production (3.25.0)Local checks (after the rebase onto #889)
uv run --frozen --group docs mkdocs build— succeeds; only the pre-existingmri.md/box.pywarnings, none from the flow pages.uv run --frozen pyright src/rapidata/rapidata_client— 0 errors, 0 warnings (no code changed by this PR).uv run --frozen pytest tests/rapidata_client/flow/— 50 passed.tests/test_docs_site.pyfails to collect (ImportError while importing test module '/data/workspace/rapidata-python-sdk/tests/test_docs_site.py'.) exactly as on unchangedmain— pre-existing, also noted in docs(flow): dogfood classify flow docs on 3.24.1 #881; not touched here.uv.lockuntouched (--frozen). It still reads3.25.0onmainafter the 3.25.2 bump — pre-existing; deliberately not re-synced here to keep this PR docs-only and conflict-free.Session: https://poseidon.rapidata.internal/chat/node-28d94ad0
🤖 Generated with Claude Code