equiframe 0.12.4__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- equiframe/__init__.py +832 -0
- equiframe/__main__.py +3 -0
- equiframe/_base.py +84 -0
- equiframe/_cli_support.py +125 -0
- equiframe/_comparison_io.py +161 -0
- equiframe/_dataset_provenance.py +146 -0
- equiframe/_decimal.py +22 -0
- equiframe/_diff_capture.py +433 -0
- equiframe/_doctor.py +123 -0
- equiframe/_document_io.py +61 -0
- equiframe/_documents.py +79 -0
- equiframe/_duckdb_transport.py +149 -0
- equiframe/_error_reporting.py +52 -0
- equiframe/_first_use.py +102 -0
- equiframe/_path_compat.py +26 -0
- equiframe/_physical.py +133 -0
- equiframe/_r_review.R +308 -0
- equiframe/_regular_io.py +167 -0
- equiframe/_report_format_v1.py +298 -0
- equiframe/_report_io.py +591 -0
- equiframe/_stability_inventory.py +1421 -0
- equiframe/_timezones.py +257 -0
- equiframe/_vendor/cyclonedx/LICENSE +201 -0
- equiframe/_vendor/cyclonedx/PROVENANCE.md +18 -0
- equiframe/_vendor/cyclonedx/bom-1.6.schema.json +5673 -0
- equiframe/_vendor/cyclonedx/jsf-0.82.schema.json +240 -0
- equiframe/_vendor/cyclonedx/spdx.schema.json +712 -0
- equiframe/adapters.py +454 -0
- equiframe/assertion_types.py +122 -0
- equiframe/assertions.py +271 -0
- equiframe/benchmark.py +101 -0
- equiframe/bundle.py +240 -0
- equiframe/cli.py +693 -0
- equiframe/comparison.py +937 -0
- equiframe/comparison_report.py +660 -0
- equiframe/comparison_types.py +257 -0
- equiframe/compatibility.py +546 -0
- equiframe/contracts.py +879 -0
- equiframe/datasets.py +1301 -0
- equiframe/decision.py +34 -0
- equiframe/destinations.py +295 -0
- equiframe/detector_types.py +431 -0
- equiframe/detectors.py +389 -0
- equiframe/diff.py +192 -0
- equiframe/diff_contracts.py +523 -0
- equiframe/docs/adoption.md +329 -0
- equiframe/docs/api.md +534 -0
- equiframe/docs/arquitecto.md +143 -0
- equiframe/docs/choosing-api.md +84 -0
- equiframe/docs/cientifico.md +180 -0
- equiframe/docs/compatibility.md +254 -0
- equiframe/docs/contributing.md +171 -0
- equiframe/docs/dependencies.md +237 -0
- equiframe/docs/eda.md +166 -0
- equiframe/docs/extending.md +158 -0
- equiframe/docs/fast-ci.md +52 -0
- equiframe/docs/first-use.md +78 -0
- equiframe/docs/index.md +142 -0
- equiframe/docs/ingestion.md +145 -0
- equiframe/docs/inicio.md +129 -0
- equiframe/docs/installed-private.md +97 -0
- equiframe/docs/journeys.md +362 -0
- equiframe/docs/lectura-conversion.md +211 -0
- equiframe/docs/licensing.md +17 -0
- equiframe/docs/maintenance.md +233 -0
- equiframe/docs/migration-ir.md +333 -0
- equiframe/docs/option-audit.md +45 -0
- equiframe/docs/outcome-gates.md +134 -0
- equiframe/docs/performance.md +263 -0
- equiframe/docs/piloto-simulado.md +56 -0
- equiframe/docs/quickstart.md +156 -0
- equiframe/docs/r_review.md +212 -0
- equiframe/docs/recipes.md +248 -0
- equiframe/docs/releasing.md +183 -0
- equiframe/docs/security.md +218 -0
- equiframe/docs/semantics.md +274 -0
- equiframe/docs/sqlite-snapshots.md +262 -0
- equiframe/docs/universal-sources.md +49 -0
- equiframe/docs/universalidad-cinco-pasos.md +107 -0
- equiframe/docs/upgrading.md +538 -0
- equiframe/duckdb_capture.py +410 -0
- equiframe/eda/__init__.py +36 -0
- equiframe/eda/__main__.py +3 -0
- equiframe/eda/_backend.py +612 -0
- equiframe/eda/_inventory.py +49 -0
- equiframe/eda/_paths.py +49 -0
- equiframe/eda/_report.py +291 -0
- equiframe/eda/api.py +535 -0
- equiframe/eda/cli.py +102 -0
- equiframe/eda/models.py +239 -0
- equiframe/errors.py +83 -0
- equiframe/evidence.py +375 -0
- equiframe/examples/integrations/eda_generic.py +60 -0
- equiframe/examples/integrations/outcome_gates.py +94 -0
- equiframe/examples/integrations/sqlite_snapshot.py +246 -0
- equiframe/examples/integrations/sqlite_snapshot_demo.py +226 -0
- equiframe/examples/integrations/universal_first_use.py +296 -0
- equiframe/examples/journeys/README.md +31 -0
- equiframe/examples/journeys/__init__.py +1 -0
- equiframe/examples/journeys/a_pandas_refactor.py +88 -0
- equiframe/examples/journeys/b_native_migration.py +181 -0
- equiframe/examples/journeys/c_retail_etl.py +460 -0
- equiframe/examples/journeys/common.py +136 -0
- equiframe/examples/journeys/d_financial_reconciliation.py +96 -0
- equiframe/examples/journeys/e_telemetry.py +135 -0
- equiframe/examples/journeys/f_data_science_preparation.py +84 -0
- equiframe/examples/journeys/g_external_snapshots.py +197 -0
- equiframe/examples/journeys/h_portable_ci.py +129 -0
- equiframe/examples/journeys/requirements.lock +249 -0
- equiframe/examples/journeys/verify_journeys.py +117 -0
- equiframe/examples/load_convert_compare.py +85 -0
- equiframe/execution.py +355 -0
- equiframe/execution_types.py +177 -0
- equiframe/ingestion.py +744 -0
- equiframe/local.py +126 -0
- equiframe/migration/__init__.py +94 -0
- equiframe/migration/_physical.py +8 -0
- equiframe/migration/backends/_timestamp_transport.py +109 -0
- equiframe/migration/backends/duckdb.py +651 -0
- equiframe/migration/backends/duckdb_decimal.py +125 -0
- equiframe/migration/backends/duckdb_time.py +87 -0
- equiframe/migration/backends/pandas.py +544 -0
- equiframe/migration/backends/polars.py +915 -0
- equiframe/migration/backends/polars_decimal.py +231 -0
- equiframe/migration/io.py +198 -0
- equiframe/migration/ports.py +96 -0
- equiframe/migration/runner.py +545 -0
- equiframe/migration/runner_types.py +405 -0
- equiframe/migration/types.py +354 -0
- equiframe/migration/validation.py +619 -0
- equiframe/normalization.py +358 -0
- equiframe/pipeline.py +274 -0
- equiframe/pipeline_types.py +247 -0
- equiframe/ports.py +39 -0
- equiframe/preprocessing.py +110 -0
- equiframe/profile_types.py +343 -0
- equiframe/profiles.py +447 -0
- equiframe/py.typed +0 -0
- equiframe/r_review.py +706 -0
- equiframe/reduction.py +518 -0
- equiframe/registry.py +121 -0
- equiframe/report_rendering.py +366 -0
- equiframe/report_types.py +294 -0
- equiframe/reporting.py +26 -0
- equiframe/rule_types.py +178 -0
- equiframe/rules.py +819 -0
- equiframe/schemas/r-execution-binding-1.0.schema.json +46 -0
- equiframe/schemas/r-review-binding-1.0.schema.json +28 -0
- equiframe/schemas/r-review-options-1.0.schema.json +38 -0
- equiframe/schemas/r-review-result-1.0.schema.json +207 -0
- equiframe/schemas/reviewed-decision-1.0.schema.json +3394 -0
- equiframe/serialization.py +152 -0
- equiframe/snapshot.py +296 -0
- equiframe/sources.py +283 -0
- equiframe/tables.py +459 -0
- equiframe/types.py +71 -0
- equiframe/values.py +252 -0
- equiframe/verification_request.py +35 -0
- equiframe/verify.py +799 -0
- equiframe/verify_types.py +255 -0
- equiframe/workflow.py +510 -0
- equiframe/workflow_request.py +38 -0
- equiframe-0.12.4.dist-info/METADATA +268 -0
- equiframe-0.12.4.dist-info/RECORD +170 -0
- equiframe-0.12.4.dist-info/WHEEL +4 -0
- equiframe-0.12.4.dist-info/entry_points.txt +3 -0
- equiframe-0.12.4.dist-info/licenses/LICENSE +21 -0
- equiframe-0.12.4.dist-info/licenses/THIRD_PARTY_NOTICES.md +42 -0
- equiframe-0.12.4.dist-info/licenses/tools/cyclonedx/LICENSE +201 -0
- equiframe-0.12.4.dist-info/licenses/tools/cyclonedx/PROVENANCE.md +18 -0
|
@@ -0,0 +1,329 @@
|
|
|
1
|
+
# Adoption: real projects and repeat use
|
|
2
|
+
|
|
3
|
+
[Handbook](index.md) · [Installed recipes](recipes.md) ·
|
|
4
|
+
[Maintenance and incidents](maintenance.md) · [Upgrading](upgrading.md)
|
|
5
|
+
|
|
6
|
+
## Current status and the acceptance boundary
|
|
7
|
+
|
|
8
|
+
As of **2026-10-06**, no independent human pilot, participant consent or retained
|
|
9
|
+
real-project integration is recorded. The three STEP1 pilot definitions and the
|
|
10
|
+
first-use kit provide a starting protocol and synthetic technical exercises.
|
|
11
|
+
They are not three external projects. Automated recipe execution, independent
|
|
12
|
+
artifact review and a repeated technical replay cannot establish human adoption
|
|
13
|
+
or the five-minute first-diagnosis target. Both remain **pending**.
|
|
14
|
+
|
|
15
|
+
STEP10 adoption needs **at least three independent real projects**, collectively
|
|
16
|
+
covering Python refactoring, SQL/DuckDB and CI regression checking. Each project
|
|
17
|
+
needs an independently observed initial use and retained integration through a
|
|
18
|
+
later real change. The consumers must be independent of the implementation they
|
|
19
|
+
are assessing. Review shared authorship, people, data and project ownership when
|
|
20
|
+
assessing independence; splitting one project into jobs or repeating one fixture
|
|
21
|
+
does not create independent projects. Consent, independence and outcomes require
|
|
22
|
+
human review, not a positive field in a JSON record.
|
|
23
|
+
|
|
24
|
+
The historical adoption requirements above remain unaccredited; a stable API or
|
|
25
|
+
registry publication does not count as human adoption or scientific acceptance.
|
|
26
|
+
The owner has separately authorized manual 0.12.2 TestPyPI/PyPI preparation and
|
|
27
|
+
publication subject to its technical/security/ownership gates. Project-owned
|
|
28
|
+
code is MIT and the maintainer role is assigned. Check [release status](releasing.md)
|
|
29
|
+
for completed publication facts and [security](security.md) for safe reporting.
|
|
30
|
+
|
|
31
|
+
The earlier Linux x86_64 and Python-3.12-only kit results retain their historical
|
|
32
|
+
scope. Current measured Windows/Linux ARM64 Python 3.10–3.13 implementation runs
|
|
33
|
+
are described in [compatibility](compatibility.md); interpreter-specific kits
|
|
34
|
+
need their own matching pins and artifact checks. Neither table establishes
|
|
35
|
+
human adoption, and old receipts do not validate changed wheel bytes.
|
|
36
|
+
|
|
37
|
+
## U12 acceptance for the 2026-10-07 usability plan
|
|
38
|
+
|
|
39
|
+
The three eligible first-use observations must each reach a correct first diagnosis
|
|
40
|
+
within **300 seconds**, without essential instructions outside the supplied guide.
|
|
41
|
+
This threshold is an explicit acceptance condition of that plan, not a measured
|
|
42
|
+
product property. At least one participant must perform data-architecture tasks
|
|
43
|
+
and one data-science tasks. Consent and independence require human review.
|
|
44
|
+
|
|
45
|
+
Freeze timing before observation: Python preparation and obtaining the kit are
|
|
46
|
+
recorded separately; start at the beginning of installation and stop only at the
|
|
47
|
+
first correct diagnosis. Include dependency downloads, retries, failed attempts
|
|
48
|
+
and help. Never move the starting clock after seeing a result. Keep an unfavorable
|
|
49
|
+
first-use observation; an already-practiced participant cannot produce a new
|
|
50
|
+
first-use observation. Revalidation needs new independent participants. Retained
|
|
51
|
+
integration after a later real project change is a separate necessary condition.
|
|
52
|
+
|
|
53
|
+
[Three fictional role profiles](piloto-simulado.md) may rehearse instructions.
|
|
54
|
+
They have no consent, human measurements, real projects or adoption credit.
|
|
55
|
+
The schema checker only checks record consistency; it cannot close U12.
|
|
56
|
+
|
|
57
|
+
## Before an observation
|
|
58
|
+
|
|
59
|
+
This is a protocol for an authorized pilot; it does not recruit participants,
|
|
60
|
+
contact consumers, grant repository access or authorize sharing their data.
|
|
61
|
+
|
|
62
|
+
1. Agree the real decision: which refactor, query or pipeline change must preserve
|
|
63
|
+
which meaning, and who reviews the expected result. Select the smallest useful
|
|
64
|
+
supported contract before seeing the candidate result
|
|
65
|
+
2. Obtain explicit consent for the observation and agreed use of its record.
|
|
66
|
+
State the purpose, fields collected, permitted readers, retention/review date,
|
|
67
|
+
contact for withdrawal and whether a sanitized issue may be shared. Permission
|
|
68
|
+
to observe is not permission to publish data, identify a company or send a report
|
|
69
|
+
3. Use a random project/participant alias. Keep the consent and identity mapping
|
|
70
|
+
locally, outside Git and apart from technical evidence. A hash of a consent
|
|
71
|
+
reference binds bytes; it neither anonymizes a person nor proves consent
|
|
72
|
+
4. Obtain an identified artifact and trusted hash through the reviewed registry
|
|
73
|
+
or offline channel. If a kit is provided, verify it and install outside the
|
|
74
|
+
checkout as [recipes](recipes.md) describes. Verify registry ownership rather
|
|
75
|
+
than installing an unrelated package solely by name
|
|
76
|
+
5. Agree what success and safe refusal look like, including complete differences,
|
|
77
|
+
invalid expected data and incomplete evaluation. Keep raw data local. Identify
|
|
78
|
+
a permitted minimal reproduction and an appropriate evidence retention location
|
|
79
|
+
6. Record unavailable prerequisites honestly. If consent, data rights, safe handling
|
|
80
|
+
or the required capability is missing, stop that observation and leave it pending
|
|
81
|
+
|
|
82
|
+
Use the kit's separate `OBSERVATION.md` for first-use timing and interpretation.
|
|
83
|
+
Keep the immutable kit unchanged. Record preparing Python and obtaining the kit
|
|
84
|
+
separately, then time installation through the first correct diagnosis without
|
|
85
|
+
discarding download time, unsuccessful attempts or help. Automated command duration
|
|
86
|
+
must not be reported as human diagnosis time.
|
|
87
|
+
|
|
88
|
+
## The three real-project paths
|
|
89
|
+
|
|
90
|
+
| Context | Initial real use | Later change required for repeat-use evidence |
|
|
91
|
+
|---|---|---|
|
|
92
|
+
| Python refactor | Compare the project's original and revised captured outputs under a reviewed contract; validate expected behavior independently | A subsequent real code or data revision still uses the integration and preserves the required gate and evidence |
|
|
93
|
+
| SQL/DuckDB | Use trusted explicit capture or supported native migration; preserve Decimal, NULL, keys, duplicates and the expected-output distinction | A later real query, plan or input revision is checked without silently broadening the supported subset or weakening its contract |
|
|
94
|
+
| CI regression | Integrate the explicit assertion into the project's real test workflow, retain a minimized verified report before failure and keep nonzero status | A later real change still runs the check; the consumer can locate evidence, explain the decision and update safely |
|
|
95
|
+
|
|
96
|
+
The installed recipes teach these paths with synthetic data. Replace their
|
|
97
|
+
fixture selectors with the real project's authorized candidate/reference pair;
|
|
98
|
+
do not present the tutorial's deliberate regression as a discovered production
|
|
99
|
+
defect. Local CI-style execution is not proof that a remote CI job ran. Keep the
|
|
100
|
+
exact authorized run reference if a real CI run is part of the observation.
|
|
101
|
+
|
|
102
|
+
For every path, ask the consumer to explain:
|
|
103
|
+
|
|
104
|
+
- Why `equivalent` is limited to captured data and the evaluated contract
|
|
105
|
+
- Why two native engines can share a bug, and where the independent expectation
|
|
106
|
+
came from; pandas is not an oracle
|
|
107
|
+
- Why `different` fails the gate, and why `not_evaluable` is a safe abstention
|
|
108
|
+
rather than success, even when `complete=True`
|
|
109
|
+
- Where keys/positions, types, policies and retained evidence explain the result
|
|
110
|
+
- How to report a problem and test an [upgrade or safe rollback](upgrading.md)
|
|
111
|
+
|
|
112
|
+
Preserve answers and assistance as observations, including misunderstandings.
|
|
113
|
+
Do not supply an answer and record it as an unaided explanation. A correct safe
|
|
114
|
+
refusal can be a useful pilot outcome; it is not accepted equivalence and cannot
|
|
115
|
+
by itself demonstrate a completed integration.
|
|
116
|
+
|
|
117
|
+
## Minimal local observation record
|
|
118
|
+
|
|
119
|
+
Collect only information needed to reproduce or interpret the observation:
|
|
120
|
+
|
|
121
|
+
- Pseudonymous project ID, context, participant role and independence explanation
|
|
122
|
+
- Consent status and a local reference to the separately retained permission;
|
|
123
|
+
record withdrawal and exclude withdrawn observations from adoption claims
|
|
124
|
+
- Date/time with timezone, exact commit and wheel/kit/dependency-lock hashes,
|
|
125
|
+
Python/OS/architecture, installed engine versions and selected extras
|
|
126
|
+
- The project's real revision/change, contract revision/hash, expected-output
|
|
127
|
+
provenance and any separately reviewed requirement change
|
|
128
|
+
- Installation, integration and diagnosis effort; actual help, failed attempts,
|
|
129
|
+
commands and sanitized errors. Unknown measurements remain unknown, not zero
|
|
130
|
+
- Expected versus observed state, completeness and gate decision; evidence hash,
|
|
131
|
+
missing evidence and what the consumer found useful or could not interpret
|
|
132
|
+
- A later observation's changed project revision, retained integration, outcome,
|
|
133
|
+
report/update knowledge, unresolved issues and consumer reconfirmation
|
|
134
|
+
- Maintainer effort for triage, reproduction, correction, documentation and
|
|
135
|
+
consumer follow-through, with the relevant issue/correction reference
|
|
136
|
+
|
|
137
|
+
The structured local record supplements the human observation; it is not a
|
|
138
|
+
telemetry service, a public API, a signed attestation or a scientific dataset.
|
|
139
|
+
Keep free text short and sanitized. Never collect credentials, environment dumps,
|
|
140
|
+
full SQL containing secrets, real rows, raw evidence paths, personal identifiers
|
|
141
|
+
or contact details simply because they might help later. Keep any indispensable
|
|
142
|
+
private reproduction under separately approved access rather than in this record.
|
|
143
|
+
Use opaque local references instead of private URLs with embedded tokens.
|
|
144
|
+
|
|
145
|
+
Before sharing, review metadata as well as values. Redacted reports do not remove
|
|
146
|
+
the original snapshots, spill files, exception causes or private evidence.
|
|
147
|
+
Hashing low-entropy values is not anonymization. Agree retention for the local
|
|
148
|
+
record, identity mapping and raw evidence separately; do not promise secure erasure.
|
|
149
|
+
Withdrawal stops further use outside the remaining permission and requires review
|
|
150
|
+
of retained/shared copies, not silent deletion of the historical outcome.
|
|
151
|
+
|
|
152
|
+
## Check the structured record locally
|
|
153
|
+
|
|
154
|
+
The verified source distribution carries the developer-only
|
|
155
|
+
`tools/check_adoption.py` and the intentionally empty
|
|
156
|
+
`examples/adoption/empty-registry.json`. The wheel carries this handbook, not a
|
|
157
|
+
new `equiframe` adoption command or runtime API. The existing first-use kit keeps
|
|
158
|
+
its closed inventory unchanged. To use the checker without a checkout, obtain the
|
|
159
|
+
matching verified sdist through the authorized channel and copy the checker to
|
|
160
|
+
a separate working directory if needed. Use an environment with the candidate's
|
|
161
|
+
reviewed Pydantic dependency; the checker does not install anything.
|
|
162
|
+
|
|
163
|
+
From the unpacked sdist's package directory:
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
python tools/check_adoption.py --schema
|
|
167
|
+
python tools/check_adoption.py examples/adoption/empty-registry.json
|
|
168
|
+
python tools/check_adoption.py /absolute/path/private-pilot-records.json
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
`--schema` prints the complete tool-only schema; use it for exact required fields
|
|
172
|
+
and limits. The empty registry contains only `schema="equiframe-adoption-1"`
|
|
173
|
+
and `pilots=[]`. It intentionally reports zero human observations and unknown
|
|
174
|
+
aggregate effort (`null`). Create completed records outside the kit, sdist and
|
|
175
|
+
Git; do not replace the empty example with invented people or results.
|
|
176
|
+
|
|
177
|
+
The principal field groups are:
|
|
178
|
+
|
|
179
|
+
| Group | Supplied observations |
|
|
180
|
+
|---|---|
|
|
181
|
+
| Pilot | `id`, pseudonymous `project_id`, `context` (`refactor_python`, `sql_duckdb`, `ci_regression`), `kind` (`human_pilot`, `synthetic_replay`), `independent`, `consent`, `consent_sha256`, `attempts` |
|
|
182
|
+
| Attempt identity | `id`, `phase`, timezone-aware `occurred_at`, real revision/change identity `change_sha256`, `package_version`, `wheel_sha256`, `dependency_lock_sha256`, `contract_sha256`, `contract_review_sha256` |
|
|
183
|
+
| Environment and effort | `python`, `os`, `architecture`, `engines`, `installation_seconds`, `integration_seconds`, `diagnosis_seconds`, `help_received` |
|
|
184
|
+
| Outcome and retained use | `expected` and `observed`, each with `state`, `complete`, `accepted`; `usefulness`, `integration_retained`, `knows_reporting`, `knows_upgrading`, `evidence_sha256`, `issues` |
|
|
185
|
+
| Issue observation | `id`, `category`, proposed `priority`, `false_equivalent`, reproduction/expected/observed hashes, `data_permission`, `status`, separate regression/consumer-confirmation hashes, `support_seconds` |
|
|
186
|
+
|
|
187
|
+
Use `null` where an optional observation is unknown. For an installation attempt
|
|
188
|
+
that reached no comparison, both `expected` and `observed` are `null`; do not
|
|
189
|
+
invent a semantic result. `accepted=True` requires complete equivalence, but a
|
|
190
|
+
complete equivalent result may still fail additional evidence requirements.
|
|
191
|
+
The actual assertion/report remains the source for those observations.
|
|
192
|
+
|
|
193
|
+
Human attempts require recorded consent with a separately retained receipt hash.
|
|
194
|
+
Synthetic records must use `synthetic_replay`, `independent=False` and
|
|
195
|
+
`consent="synthetic_only"`, without a human consent hash or consumer-confirmed
|
|
196
|
+
fix. They never enter the human counters. The schema has no withdrawal state:
|
|
197
|
+
record withdrawals in the separate permission ledger and exclude withdrawn
|
|
198
|
+
observations from active summaries under the agreed retention terms. Do not
|
|
199
|
+
rename a withdrawn human attempt synthetic or silently claim renewed consent.
|
|
200
|
+
|
|
201
|
+
Keep one chronological pilot history per project/context; append attempts rather
|
|
202
|
+
than creating another pilot ID that could hide an earlier failure.
|
|
203
|
+
The first attempt is `initial`; later attempts are `follow_up` in strictly
|
|
204
|
+
increasing time order. Changed established contracts require a distinct
|
|
205
|
+
`contract_review_sha256`. Retained-use counters inspect the **latest** follow-up,
|
|
206
|
+
require a changed `change_sha256` relative to the earliest useful completed
|
|
207
|
+
integration observation and check
|
|
208
|
+
the supplied usefulness, retained-integration and reporting/upgrading answers.
|
|
209
|
+
That integration baseline must contain a useful completed equivalent or different
|
|
210
|
+
comparison matching the independent expectation; preceding installation failures
|
|
211
|
+
stay in the history and effort counters. First successful installation/integration
|
|
212
|
+
is not itself retained use: a later changed observation is required. Safe
|
|
213
|
+
abstention alone cannot establish a completed integration. A
|
|
214
|
+
later useful safe abstention can show that an already established check remains
|
|
215
|
+
in use. Any P0/false-equivalence issue reported anywhere in the history blocks
|
|
216
|
+
the retained-use count until a later observation explicitly records that same
|
|
217
|
+
issue as consumer-confirmed. Omitting an issue or downgrading its priority does
|
|
218
|
+
not clear it.
|
|
219
|
+
They compare expected with observed fields instead of treating every recorded
|
|
220
|
+
outcome as success. The hashes do not establish that a real project changed or
|
|
221
|
+
that review occurred; retain the permitted supporting evidence separately.
|
|
222
|
+
|
|
223
|
+
Exit **0** means record consistency passed, including an honest empty registry;
|
|
224
|
+
exit **2** means invalid/unreadable input or invalid command use. Neither is a
|
|
225
|
+
human adoption decision. The tool reads one bounded regular JSON record, does
|
|
226
|
+
not follow the evidence references, execute a reproducer, contact anyone or
|
|
227
|
+
upload observations. It cannot authenticate consent, identity, independence,
|
|
228
|
+
semantic truth or the referenced bytes. Summary counters are **attestations**;
|
|
229
|
+
`human_adoption_verified` always remains `false`, and independent manual review
|
|
230
|
+
stays pending even if the proposed diversity target is recorded. No supplied
|
|
231
|
+
record can open the public release gate or establish a five-minute human claim.
|
|
232
|
+
|
|
233
|
+
## Synthetic repeat-use rehearsal
|
|
234
|
+
|
|
235
|
+
The sdist's `examples/adoption_replay.py` is a standalone technical check of the
|
|
236
|
+
three consumer contexts. Copy it outside the checkout and run with the exact
|
|
237
|
+
installed wheel and reviewed pandas, DuckDB and Arrow dependencies:
|
|
238
|
+
|
|
239
|
+
```bash
|
|
240
|
+
python -I adoption_replay.py --output /absolute/path/new-replay --wheel-sha256 VERIFIED_WHEEL_SHA256
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
Replace the hash placeholder with the separately verified lowercase SHA-256.
|
|
244
|
+
The script records that supplied hash but does not authenticate it or establish
|
|
245
|
+
which wheel was installed; independently check installed payload bytes and
|
|
246
|
+
import origins. The 24 observations are three contexts, two genuinely changed
|
|
247
|
+
synthetic input fixtures and four cases: equivalent, different, invalid expected
|
|
248
|
+
and resource-limited. Exact contracts remain unchanged, expectations are literal
|
|
249
|
+
fixtures, and failed assertions are preserved. SQL capture is compared after its
|
|
250
|
+
in-memory source has changed and the connection is closed.
|
|
251
|
+
|
|
252
|
+
Exit 0 means the expected technical outcomes were observed, including rejection
|
|
253
|
+
of deliberately wrong or unavailable comparisons; it does not accept those
|
|
254
|
+
outputs as equivalent. Exit 2 means setup, receipt or replay checks failed.
|
|
255
|
+
Keep the receipt and reviewed redacted report directories. Temporary raw
|
|
256
|
+
captures are removed; report integrity is not full raw-data reproduction.
|
|
257
|
+
Provenance includes local import paths, so review it before sharing. The replay
|
|
258
|
+
never fills a human registry, measures human effort, verifies reporting/upgrading
|
|
259
|
+
knowledge or claims a production CI job. It cannot close genuine repeat-use
|
|
260
|
+
acceptance or the five-minute first-use criterion.
|
|
261
|
+
|
|
262
|
+
## Classify friction without hiding safe outcomes
|
|
263
|
+
|
|
264
|
+
| Category | Useful minimal observation |
|
|
265
|
+
|---|---|
|
|
266
|
+
| Installation | Exact artifact/pins, interpreter/platform, import location and sanitized failing command |
|
|
267
|
+
| Comprehension | Task attempted, guide/version, the consumer's interpretation and assistance needed |
|
|
268
|
+
| Semantics | Small typed fixture, contract/policy, independent expected versus observed state/completeness and gate |
|
|
269
|
+
| Integration | Call site or CI step, selected API/adapter, environment boundary, evidence-before-failure and actual exit |
|
|
270
|
+
| Performance | Workload shape, exact environment/configuration, measured elapsed/resource scope, budget and final/partial status |
|
|
271
|
+
| Evidence | Missing or unreadable artifact, expected inventory/format, hashes, reader and observed verification outcome |
|
|
272
|
+
|
|
273
|
+
A problem can involve more than one category; select one primary category for
|
|
274
|
+
each structured issue observation and keep secondary context in its separate
|
|
275
|
+
triage evidence. Do not duplicate one observation to inflate category totals.
|
|
276
|
+
Separate a documented unsupported capability, a correct abstention and a defect.
|
|
277
|
+
Do not cast, round, deduplicate,
|
|
278
|
+
drop metadata, accept partial counts or relax tolerance to improve a success rate.
|
|
279
|
+
Installation failure is not a semantic pass. Zero displayed differences or a
|
|
280
|
+
successful integrity check is not an equivalence decision.
|
|
281
|
+
|
|
282
|
+
Convert a reproducible problem into an authorized, sanitized issue using the
|
|
283
|
+
[maintenance procedure](maintenance.md#report-a-problem). Preserve the original
|
|
284
|
+
attempt and connect the correction to a new exact artifact. Maintainer tests
|
|
285
|
+
are technical verification; only the affected consumer can reconfirm their own
|
|
286
|
+
integration. Keep that confirmation pending until it actually happens.
|
|
287
|
+
|
|
288
|
+
## Repeat use and useful indicators
|
|
289
|
+
|
|
290
|
+
A later timestamp alone is insufficient. Observe a subsequent real project
|
|
291
|
+
revision or workload change after initial integration, and establish that the
|
|
292
|
+
consumer retained the check and its evidence. Replaying the same fixture, a
|
|
293
|
+
second installation or a changed run ID is only technical repeatability.
|
|
294
|
+
|
|
295
|
+
If a genuine requirement changed, retain the old contract, failed result and
|
|
296
|
+
reference. Record the rationale and responsible review; create a new contract
|
|
297
|
+
revision and independently reviewed expected output. Keep that event distinct
|
|
298
|
+
from unchanged-contract regression checking. A copied candidate baseline or
|
|
299
|
+
silent policy relaxation invalidates an adoption success claim.
|
|
300
|
+
|
|
301
|
+
Report small-sample observations directly, with denominators and exclusions:
|
|
302
|
+
|
|
303
|
+
- Consented, independently reviewed real projects started and completed by context
|
|
304
|
+
- Projects observed after a later real change, and those retaining a working
|
|
305
|
+
integration; show projects awaiting follow-through or withdrawing separately
|
|
306
|
+
- Consumer-confirmed useful differences, with the decision they helped make;
|
|
307
|
+
tutorial mutations and merely emitted diagnostics are not confirmed benefits
|
|
308
|
+
- Safe abstentions, failed/abandoned attempts and unresolved blockers by category
|
|
309
|
+
- Observed installation/integration/diagnosis effort and help; show the individual
|
|
310
|
+
observations rather than a universal five-minute claim
|
|
311
|
+
- Reproductions, verified corrections, consumer-reconfirmed fixes and unresolved
|
|
312
|
+
incidents; a maintainer-only fix is not a consumer-confirmed resolution
|
|
313
|
+
- Actual maintenance effort and recurring burdens, with unknown effort explicit
|
|
314
|
+
|
|
315
|
+
At present the real-project count is **0** and the required minimum remains
|
|
316
|
+
**3**; repeat-use and consumer-confirmed-correction evidence are absent.
|
|
317
|
+
Rates with no eligible observations are **not available**, not 0% success or
|
|
318
|
+
failure. Downloads, stars, synthetic fixtures and repeated automated test runs
|
|
319
|
+
may describe activity but do not prove professional adoption.
|
|
320
|
+
|
|
321
|
+
## Review before declaring adoption
|
|
322
|
+
|
|
323
|
+
A responsible human reviews consent scope, project independence, original
|
|
324
|
+
evidence, interpretation, the real later change, retained integration, reporting
|
|
325
|
+
and upgrade knowledge, unresolved risks and sustainable maintenance ownership.
|
|
326
|
+
All three contexts need independent real projects. False-equivalence incidents
|
|
327
|
+
need the containment and correction process in [maintenance](maintenance.md),
|
|
328
|
+
not an optimistic aggregate metric. Technical validation never signs off these
|
|
329
|
+
human facts or opens the [public release gate](releasing.md).
|