hypgraph 0.7.23__tar.gz → 0.7.25__tar.gz
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.
- {hypgraph-0.7.23 → hypgraph-0.7.25}/CHANGELOG.md +60 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/PKG-INFO +1 -1
- {hypgraph-0.7.23 → hypgraph-0.7.25}/docs/PLAN.md +1 -1
- {hypgraph-0.7.23 → hypgraph-0.7.25}/docs/RELEASE-READINESS.md +35 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/src/hypgraph/__init__.py +1 -1
- {hypgraph-0.7.23 → hypgraph-0.7.25}/src/hypgraph/checks.py +357 -121
- {hypgraph-0.7.23 → hypgraph-0.7.25}/src/hypgraph/language.py +6 -3
- hypgraph-0.7.25/tests/test_counts_that_bear.py +160 -0
- hypgraph-0.7.25/tests/test_quantifiers_and_identity.py +207 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/.gitignore +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/AGENTS.md +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/CITATION.cff +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/DISCLAIMER.md +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/LICENSE +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/NOTICE +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/README.md +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/docs/decisions/ADR-001-token-bound-authors.md +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/docs/decisions/ADR-002-governance-profiles.md +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/docs/profile-workflows-plan.md +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/docs/review-2026-10-24.md +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/docs/site-plan.md +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/docs/spec.md +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/docs/ui-plan.md +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/docs/verification.md +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/docs/workflows/README.md +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/docs/workflows/knowledge.md +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/docs/workflows/optimization.md +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/docs/workflows/scientific.md +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/docs/workflows/software.md +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/docs/workflows/trading.md +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/examples/frameworks/README.md +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/pyproject.toml +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/src/hypgraph/__main__.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/src/hypgraph/blind.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/src/hypgraph/bundle.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/src/hypgraph/cli.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/src/hypgraph/coord.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/src/hypgraph/demos/__init__.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/src/hypgraph/demos/broad_street.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/src/hypgraph/demos/linked.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/src/hypgraph/derive.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/src/hypgraph/graph.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/src/hypgraph/mcp.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/src/hypgraph/plan.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/src/hypgraph/policy.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/src/hypgraph/profiles.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/src/hypgraph/references.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/src/hypgraph/refusals.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/src/hypgraph/report_check.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/src/hypgraph/schema.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/src/hypgraph/server.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/src/hypgraph/skill/SKILL.md +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/src/hypgraph/stats.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/src/hypgraph/store.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/src/hypgraph/ui/__init__.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/src/hypgraph/ui/atlas.css +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/src/hypgraph/ui/atlas.js +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/src/hypgraph/ui/hypgraph.css +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/src/hypgraph/ui/hypgraph.i18n.js +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/src/hypgraph/ui/hypgraph.js +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/src/hypgraph/ui/hypgraph.svg +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/src/hypgraph/ui/index.html +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/src/hypgraph/ui/vendor/LICENSES.md +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/src/hypgraph/ui/vendor/cose-base.js +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/src/hypgraph/ui/vendor/cytoscape-fcose.js +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/src/hypgraph/ui/vendor/cytoscape.min.js +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/src/hypgraph/ui/vendor/layout-base.js +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/src/hypgraph/workflow.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_accept_work_kind.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_anchoring.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_blind.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_blind_oracles.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_bound_support.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_bundle_telemetry.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_cancel_releases_lease.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_cited_and_failed_support.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_contradictions.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_coord.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_d10.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_direction_and_units.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_engine.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_engine_fixes.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_framework_examples.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_i18n.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_incremental.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_link_translate.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_linked_records.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_log_and_check.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_measure_questions.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_opposed_answers.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_option_lead.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_order_detail.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_profiles.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_profiles_041.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_questions_not_assertions.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_references.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_refusal_friction.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_refusal_results.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_refusals.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_relation_words.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_report_answers.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_rerunnable.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_restates_scale.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_server_auth.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_server_hosts.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_shape_refusals.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_stats_not_backtests.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_stats_values.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_surfaces.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_telemetry_stream.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_trust_boundary.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_ui_app.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_ui_engine.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_uncorrected_effect.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_unnamed_inputs.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_verify_complete.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_verify_lifecycle.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_verify_scope.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_verify_scoped_views.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_verify_trust.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_verify_views.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_versions_not_figures.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_vocabulary_friction.py +0 -0
- {hypgraph-0.7.23 → hypgraph-0.7.25}/tests/test_workflows.py +0 -0
|
@@ -1,5 +1,65 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.7.25 — 2026-11-01: which counts bear on a claim, joined comparisons, boundaries in names
|
|
4
|
+
|
|
5
|
+
Fixes from an independent audit of 0.7.24 (HG-024-01 to -04); each case below failed on 0.7.24 and is now a test
|
|
6
|
+
(`tests/test_counts_that_bear.py`).
|
|
7
|
+
|
|
8
|
+
- **A count with no comparison doesn't back one** (HG-024-01). With no comparison of its own, a count of none or all
|
|
9
|
+
was read the old way, so "3 of 3 routes processed" backed "nothing is longer than 26 km" and "every route is longer
|
|
10
|
+
than 26 km". A count that states no comparison now doesn't bear on a claim that rules one out
|
|
11
|
+
(`ABSOLUTE_WITHOUT_COUNT`). A claim with no comparison ("no route ever failed") reads a plain count as before.
|
|
12
|
+
- **A count of one kind doesn't back a claim about another** (HG-024-02). A count and a claim were matched on any shared
|
|
13
|
+
word, so none of 3 cargo routes longer than 26 km backed "no passenger route is longer than 26 km" while the passenger
|
|
14
|
+
count was 1 of 3, and backed "no route is longer" too. A count names what it counts in the plural ("cargo routes");
|
|
15
|
+
where the statement uses that word, the words right before it say which kind. A count backs a claim only if every
|
|
16
|
+
kind it names is one the statement names; a count of one kind that finds some still refutes a claim about all, and
|
|
17
|
+
two kinds named apart (cargo, passenger) are left unresolved.
|
|
18
|
+
- **Two comparisons joined in one clause** (HG-024-03). "And" ended the clause, so "no route is shorter than 20 km and
|
|
19
|
+
longer than 30 km" was refused by a route shorter than 20, and "every route is longer than 10 km and shorter than 30
|
|
20
|
+
km" went in with "shorter than 30" unread, even with the count that refutes it bound. An "and" or "or" before a
|
|
21
|
+
comparison with no subject of its own now keeps it in the clause. "No … A or B" and "every … A and B" are false if
|
|
22
|
+
either part fails; "no … A and B" and "every … A or B" rule out only what meets both, so none of one part backs them
|
|
23
|
+
and a count of each part on its own leaves them unresolved.
|
|
24
|
+
- **A count's name must say its boundary** (HG-024-04). Only a name pointing the other way was caught: a `>=` count
|
|
25
|
+
named "routes longer than 26 km", or a `>` count named "26 km or longer", went in. A name that leaves the figure out
|
|
26
|
+
where the count took it in, or the other way round, is now `MEASUREMENT_MISMATCH`.
|
|
27
|
+
|
|
28
|
+
## 0.7.24 — 2026-11-01: what a quantifier needs, where a comparison's boundary falls, one check per extreme
|
|
29
|
+
|
|
30
|
+
Fixes from an independent audit of 0.7.23 (HG-023-01 to -05); each case below failed on 0.7.23 and is now a test.
|
|
31
|
+
|
|
32
|
+
- **"Nothing" needs none, "every" needs all** (HG-023-01). Any count of none or all backed an absolute, so "nothing
|
|
33
|
+
is longer than 26 km" went in with all 3 routes longer, and "every route is longer than 26 km" with none. When a
|
|
34
|
+
count's comparison is known, the claim now needs the extreme its quantifier names; the other extreme shows it false
|
|
35
|
+
(`COUNT_CONTRADICTS`). A count of what lies outside the claim's exceptions is read as its complement: none of 3
|
|
36
|
+
longer than 26 is 3 of 3 at 26 or shorter. "Every" in a clause that states its own count ("a count of every route
|
|
37
|
+
finds 1 of 76 shorter") names the set counted and is not read as a quantifier. A count whose comparison can't be
|
|
38
|
+
told ("failures") is read as before.
|
|
39
|
+
- **"At least" is not "longer than"** (HG-023-02). Comparisons keep their boundary: `op` takes `<`, `<=`, `=`, `!=`,
|
|
40
|
+
`>=`, `>`, and names say "at least", "at most", "26 km or longer", "not / no shorter than", "no more than". A count
|
|
41
|
+
refutes a claim only if everything it found is an exception, and backs it only if it covers every exception: two
|
|
42
|
+
routes at least 26 km neither refute nor back "no route is longer than 26 km" (the routes of exactly 26 lie between),
|
|
43
|
+
and none longer than 26 doesn't back "no route is 26 km or longer". `=` and `!=` counts don't bear on a comparison.
|
|
44
|
+
"At least" used to be read as pointing down and "at most" up. "No route is 26 km or longer" and "no route is at
|
|
45
|
+
least 26 km" are absolutes too.
|
|
46
|
+
- **Two extremes are two claims** (HG-023-03). "The shortest route is 26 km; the longest route is 35 km" pooled both
|
|
47
|
+
figures and both directions, and the count of 2 longer than 26 refused the true sentence. Each extreme, and each
|
|
48
|
+
thing an absolute rules out, is now checked with its own figure and direction; the refusal names the extreme it
|
|
49
|
+
found false.
|
|
50
|
+
- **What "of" and "for" name says which thing** (HG-023-04). "Weights of cargo" and "weights of passengers" both read
|
|
51
|
+
as bare "weights", and "shipping cargo weights" met "shipping passenger weights" on one shared word. The object of
|
|
52
|
+
"of" / "for" now counts, and two subjects that each say something the other doesn't are left apart: unresolved, not
|
|
53
|
+
a contradiction. One that only adds to the other ("the recorded weights of cargo") is the same thing.
|
|
54
|
+
- **A contrast keeps the unit it asserts** (HG-023-05). "Not in pounds but in kilograms" lost its kilograms, and
|
|
55
|
+
"kilograms rather than pounds" kept both, so a claim of pounds citing either went in. A clause with no subject or
|
|
56
|
+
verb of its own takes the subject its sentence named last ("… but always in kilograms"); one that names its own
|
|
57
|
+
("and passenger weights in pounds") doesn't. What follows "rather than" / "instead of", up to its unit, is set aside.
|
|
58
|
+
- Limits: subjects, units of record, quantifiers and comparisons are still read from words, not typed (only a count's
|
|
59
|
+
`figure` and `op` are); a missed contradiction is preferred to a false one, so subjects left apart are not
|
|
60
|
+
compared; conversions aren't checked; and the replay of earlier recorded entries changes nothing, which shows no
|
|
61
|
+
regression but none of those entries tries these cases.
|
|
62
|
+
|
|
3
63
|
## 0.7.23 — 2026-11-01: a count points one way, "no route is longer", what a unit is said of
|
|
4
64
|
|
|
5
65
|
Fixes from an independent audit of 0.7.22 (HG-022-01 to -05); each case below failed on 0.7.22 and is now a test.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: hypgraph
|
|
3
|
-
Version: 0.7.
|
|
3
|
+
Version: 0.7.25
|
|
4
4
|
Summary: The evidence layer for AI research agents: a hash-chained research record that checks every claim as it is written and derives how well each is known.
|
|
5
5
|
Project-URL: Homepage, https://hypgraph.com
|
|
6
6
|
Project-URL: Documentation, https://hypgraph.com/engineers/
|
|
@@ -109,7 +109,7 @@ claim's derived standing.
|
|
|
109
109
|
Multi-writer sync between graphs (bundles cover sharing), authentication (the host's job; the HTTP server binds to
|
|
110
110
|
loopback and is read-only unless started with `--writable`), and a hosted service.
|
|
111
111
|
|
|
112
|
-
## Status at 0.7.
|
|
112
|
+
## Status at 0.7.25 (2026-11-01)
|
|
113
113
|
|
|
114
114
|
All seven phases are done: the library, bundles, the server and UI, the MCP server, the website, Pegasus running on
|
|
115
115
|
the package, and releases to PyPI from tags with trusted publishing. What came after the plan, by release, is in
|
|
@@ -131,6 +131,41 @@ was taken from a changelog without being checked against the code.*
|
|
|
131
131
|
> which unit a record uses are still read from words, not typed; a fresh independent audit should precede any claim
|
|
132
132
|
> that 0.7.23 resists these attack classes. Released as 0.7.23.
|
|
133
133
|
|
|
134
|
+
> **Audit of 0.7.23 (2026-11-01), fixed for 0.7.24.** A fourth independent audit, a code review without running the
|
|
135
|
+
> wheel, named five candidate defects; each reproduced on the PyPI 0.7.23 wheel, plus two of the same kind. A count of
|
|
136
|
+
> none or all backed any absolute, so "nothing is longer than 26 km" went in with all routes longer and "every route
|
|
137
|
+
> is longer" with none (HG-023-01). Comparisons lost their boundary, so a count at least 26 refuted the true "no route
|
|
138
|
+
> is longer than 26" and "at least" was read as pointing down (HG-023-02). Two extremes in one sentence were pooled
|
|
139
|
+
> and a true one refused (HG-023-03). "Weights of cargo" and "weights of passengers" read as one thing (HG-023-04),
|
|
140
|
+
> and "not in pounds but in kilograms" lost its kilograms (HG-023-05). A claim now needs the extreme its quantifier
|
|
141
|
+
> names; comparisons keep their boundary across six operators; each extreme is checked on its own; the object of "of"
|
|
142
|
+
> / "for" says which thing, and subjects that each say something the other doesn't are left apart, unresolved; a
|
|
143
|
+
> contrast keeps its unit. Each case is a regression test written to fail on 0.7.23. Replaying the 1,900 recorded
|
|
144
|
+
> adversarial entries changes nothing against 0.7.23 (a first version over-read "a count of every route" and named
|
|
145
|
+
> one honest party wrongly; caught by the replay, fixed and tested), but none of those entries tries these cases.
|
|
146
|
+
>
|
|
147
|
+
> **Where that stands.** #89 is merged with green CI (17 of 17 checks); from the 0.7.24 wheel in a fresh venv the
|
|
148
|
+
> suite is 549 passed, and hypswarm (118 passed) and hypmesh (37 passed) pass on it. The audit recommends a typed
|
|
149
|
+
> claim layer (subject, property, comparator, threshold, unit, quantifier) so that strong verdicts rest on typed fields
|
|
150
|
+
> rather than prose; that is not built. Released as 0.7.24.
|
|
151
|
+
|
|
152
|
+
> **Audit of 0.7.24 (2026-11-01), fixed for 0.7.25.** A fifth independent audit named four candidate defects; each
|
|
153
|
+
> reproduced on the PyPI 0.7.24 wheel, plus four of the same kind. A count with no comparison of its own ("3 of 3
|
|
154
|
+
> routes processed") backed "nothing is longer than 26 km" and "every route is longer" (HG-024-01). A count of cargo
|
|
155
|
+
> routes backed a claim about passenger routes, and about every route, because they shared the word "route"
|
|
156
|
+
> (HG-024-02). "And" ended a clause, so a true "no route is shorter than 20 km and longer than 30 km" was refused,
|
|
157
|
+
> and "every route is longer than 10 km and shorter than 30 km" went in with its second half unread, even beside the
|
|
158
|
+
> count that refutes it (HG-024-03). A `>=` count named "longer than 26 km" went in (HG-024-04). A count that states no
|
|
159
|
+
> comparison no longer bears on one; a count backs only a claim whose kinds it names, and kinds named apart are
|
|
160
|
+
> unresolved; a comparison joined by "and" / "or" stays in its clause and is read as both or either; a name must say
|
|
161
|
+
> the boundary its count used. Each case is a regression test written to fail on 0.7.24. Replaying the 1,900 recorded
|
|
162
|
+
> adversarial entries changes 7: one honest correction is no longer refused, and one correction that got in only
|
|
163
|
+
> because an unrelated zero count backed it (the HG-024-01 case) is now refused; none of the entries tries these cases.
|
|
164
|
+
>
|
|
165
|
+
> **Where that stands.** #91 is merged with green CI (17 of 17 checks); from the 0.7.25 wheel in a fresh venv the
|
|
166
|
+
> suite is 574 passed, and hypswarm (118 passed) and hypmesh (37 passed) pass on it. Kinds are read from a plural noun
|
|
167
|
+
> and the words before it, a heuristic; the typed claim layer the audits recommend is not built. Released as 0.7.25.
|
|
168
|
+
|
|
134
169
|
## Recommendation: CONDITIONAL GO
|
|
135
170
|
|
|
136
171
|
HypGraph is ready for a public developer preview once #59, #60 and #61 are merged with green CI and released as one
|
|
@@ -16,7 +16,7 @@ Standing is derived on every read, never stored; every write is an event in a SH
|
|
|
16
16
|
their numbers; reviews pin versions; independence is counted, not assumed. See https://hypgraph.com.
|
|
17
17
|
"""
|
|
18
18
|
|
|
19
|
-
__version__ = "0.7.
|
|
19
|
+
__version__ = "0.7.25"
|
|
20
20
|
|
|
21
21
|
from .bundle import anchored, verify_bundle # noqa: E402
|
|
22
22
|
from .graph import Author, Graph, GraphError, file_sha256 # noqa: E402
|