@unified-product-graph/core 0.9.10 → 0.9.11
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.
- package/CHANGELOG.md +16 -1
- package/dist/index.cjs +3 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +9 -1
- package/dist/index.d.ts +9 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,12 +7,27 @@ This project uses [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
7
7
|
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
+
## [0.9.11] - 2026-06-10
|
|
11
|
+
|
|
12
|
+
**Tooling DX (batch 6, part 2): status pre-flight + anti-pattern visibility.** Two discoverability fixes from the same real portfolio session, plus a self-trip fix.
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
- **`list_status_values(entity_type)`** (tools 118 to 119, on both the local and cloud servers): the valid `status` values a type can hold, as a focused pre-flight lookup so an author no longer learns the set only from a rejected write. Returns lifecycle phases as `{ status, label, terminal }` plus `initial_status` / `terminal_statuses`, or `lifecycle_free: true` with empty `values`. Sourced from `UPG_LIFECYCLES` (exactly what the write validator checks): the low-token sibling of `get_lifecycle`.
|
|
16
|
+
- **Anti-pattern version tracking.** `UPGCuratedAntiPattern` gains an optional `since` field, and `get_spec_version` now reports `anti_patterns: { total, versioned }`. A consumer can see which validators are newer than the version a graph was authored under, so a spec upgrade no longer silently flips a clean graph invalid with no heads-up.
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
- **A drafted hypothesis is auto-promoted to `active`** when it gains a `hypothesis_requires_experiment_plan` edge (via `create_edge` / `batch_create_edges`). Pairing a hypothesis with a plan is what activates it; this stops the documented structural-spine recipe (hypotheses paired with plans) from self-tripping the `untested-hypothesis-pile-up` anti-pattern. Best-effort: a promotion failure never fails the edge.
|
|
20
|
+
|
|
21
|
+
No entity, domain, or edge-catalogue count change (tool count 118 to 119).
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
10
25
|
## [0.9.10] - 2026-06-10
|
|
11
26
|
|
|
12
27
|
**Tooling DX + a born-valid product (batch 6, part 1) + a release-test gate.** Polish from a real multi-graph portfolio session: parity and discoverability fixes, one model correction, and — the headline — the release train now runs the unit suites, after they were found to have been silently red across a release.
|
|
13
28
|
|
|
14
29
|
### Changed
|
|
15
|
-
- **Product `properties.stage` is canonical.** The stale `UPG_PROPERTY_MIGRATIONS['0.2.13']` lift of a product node's `properties.stage` to top-level `status` is retired: it contradicted the
|
|
30
|
+
- **Product `properties.stage` is canonical.** The stale `UPG_PROPERTY_MIGRATIONS['0.2.13']` lift of a product node's `properties.stage` to top-level `status` is retired: it contradicted the current convention the whole runtime uses (a product node's lifecycle stage lives in `properties.stage`), so a freshly-created product read as `property_drift` against its own validator. A new product is now born valid. Legacy values are still normalised on read by `coerceProductStage`. Decision: `2026-06-10-product-stage-properties-canonical.md`.
|
|
16
31
|
- **`get_nodes` resolves cross-product ids.** A qualified `{product_id}/{node_id}` (the form `list_registry` / `export_edges` / cross-edges return) now reads that product's graph (read-only for non-active products), so a connective pass fetches node content across the portfolio without a `switch_product` sweep. Results carry a `product_id`.
|
|
17
32
|
- **`create_edge` / `batch_create_edges` accept the `p_` product-header** where the in-graph product node is expected, resolving it to the `type:"product"` node (older graphs carry a distinct `n_…` product node).
|
|
18
33
|
- **`did_you_mean` for a mistyped edge type** now falls back to the closest catalogue key by name (edit distance) when the endpoints don't resolve to a canonical pair — so a typo always gets a concrete suggestion.
|
package/dist/index.cjs
CHANGED
|
@@ -24093,6 +24093,7 @@ var UPG_ANTI_PATTERNS = [
|
|
|
24093
24093
|
// RelationshipCheck (edge presence/absence) and are promoted here.
|
|
24094
24094
|
{
|
|
24095
24095
|
id: "insights-without-evidence",
|
|
24096
|
+
since: "0.9.7",
|
|
24096
24097
|
name: "Insights without evidence",
|
|
24097
24098
|
description: "The graph has insight entities but none are backed by a primary-evidence link: no observation yields them (`observation_yields_insight`), no survey response evidences them (`survey_response_evidences_insight`), and no quote is attached (`insight_evidenced_by_quote`). An insight with no evidence behind it is an opinion wearing a research label.",
|
|
24098
24099
|
structured_condition: {
|
|
@@ -24136,6 +24137,7 @@ var UPG_ANTI_PATTERNS = [
|
|
|
24136
24137
|
},
|
|
24137
24138
|
{
|
|
24138
24139
|
id: "feature-requests-without-provenance",
|
|
24140
|
+
since: "0.9.7",
|
|
24139
24141
|
name: "Feature requests without provenance",
|
|
24140
24142
|
description: "The graph has feature_request entities but none trace back to a source: no feedback program collects them (`feedback_program_collects_feature_request`), no customer feedback becomes one (`customer_feedback_becomes_feature_request`), and none originate from a behavioural segment (`feature_request_from_behavioral_segment`). A request with no provenance cannot be weighed against who asked or how many.",
|
|
24141
24143
|
structured_condition: {
|
|
@@ -27196,7 +27198,7 @@ function isCanonical(text) {
|
|
|
27196
27198
|
}
|
|
27197
27199
|
|
|
27198
27200
|
// src/index.ts
|
|
27199
|
-
var UPG_VERSION = "0.9.
|
|
27201
|
+
var UPG_VERSION = "0.9.11";
|
|
27200
27202
|
var UPG_FORMAT_VERSION = "0.4.0";
|
|
27201
27203
|
var MARKDOWN_FORMAT_VERSION = "0.1";
|
|
27202
27204
|
var UPG_TYPES = getTypes();
|