@unified-product-graph/core 0.13.1 → 0.13.2
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/dist/index.cjs +88 -88
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +88 -88
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -9749,9 +9749,9 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
9749
9749
|
method: { type: "string", enum: ["automated", "manual", "assistive_tech", "expert"], description: "How the audit was conducted" },
|
|
9750
9750
|
scope: { type: "string", description: 'What was audited (e.g. "homepage", "checkout flow")' },
|
|
9751
9751
|
conformance_result: { type: "string", enum: ["pass", "partial", "fail"], description: "Overall conformance result" },
|
|
9752
|
-
violations_count: { type: "number", description: "Number of accessibility violations found" },
|
|
9753
|
-
passes_count: { type: "number", description: "Number of checks that passed" },
|
|
9754
|
-
incomplete_count: { type: "number", description: "Number of checks that could not be completed" },
|
|
9752
|
+
violations_count: { type: "number", description: "Number of accessibility violations found", modifier: "derived" },
|
|
9753
|
+
passes_count: { type: "number", description: "Number of checks that passed", modifier: "derived" },
|
|
9754
|
+
incomplete_count: { type: "number", description: "Number of checks that could not be completed", modifier: "derived" },
|
|
9755
9755
|
score: { type: "number", description: "Aggregate accessibility score (0-100)" },
|
|
9756
9756
|
tool: { type: "string", enum: ["axe-core", "lighthouse", "wave", "manual", "other"], description: "Tool used to perform the audit" },
|
|
9757
9757
|
tool_version: { type: "string", description: "Version of the audit tool" },
|
|
@@ -9811,14 +9811,14 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
9811
9811
|
account: {
|
|
9812
9812
|
account_type: { type: "string", enum: ["prospect", "customer", "partner", "churned"], description: "Relationship status of this account" },
|
|
9813
9813
|
industry: { type: "string", description: "Industry vertical the account operates in" },
|
|
9814
|
-
employee_count: { type: "number", description: "Number of employees at the account" },
|
|
9814
|
+
employee_count: { type: "number", description: "Number of employees at the account", modifier: "snapshot" },
|
|
9815
9815
|
annual_revenue: { type: "number", description: "Annual revenue of the account" }
|
|
9816
9816
|
},
|
|
9817
9817
|
// AcquisitionChannelProperties: AcquisitionChannel entity.
|
|
9818
9818
|
acquisition_channel: {
|
|
9819
9819
|
channel_type: { type: "string", enum: ["seo", "paid", "social", "referral", "direct", "content"], description: "Category of the acquisition channel" },
|
|
9820
9820
|
customer_acquisition_cost: { type: "number", description: "Customer acquisition cost for this channel" },
|
|
9821
|
-
monthly_volume: { type: "number", description: "Monthly volume of new users from this channel" }
|
|
9821
|
+
monthly_volume: { type: "number", description: "Monthly volume of new users from this channel", modifier: "snapshot" }
|
|
9822
9822
|
},
|
|
9823
9823
|
// AdCreativeProperties: Ad creative.
|
|
9824
9824
|
ad_creative: {
|
|
@@ -9833,7 +9833,7 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
9833
9833
|
// AffinityClusterProperties: Affinity cluster grouping observations.
|
|
9834
9834
|
affinity_cluster: {
|
|
9835
9835
|
theme: { type: "string", description: "Emergent theme label" },
|
|
9836
|
-
child_observation_count: { type: "number", description: "Observations in this cluster" },
|
|
9836
|
+
child_observation_count: { type: "number", description: "Observations in this cluster", modifier: "derived" },
|
|
9837
9837
|
confidence: {
|
|
9838
9838
|
type: "assessment",
|
|
9839
9839
|
scale_id: "confidence_5",
|
|
@@ -9867,7 +9867,7 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
9867
9867
|
hook_event: { type: "string", description: "Event that triggers this hook" },
|
|
9868
9868
|
hook_action: { type: "string", description: "Action performed when the hook fires" },
|
|
9869
9869
|
hook_status: { type: "string", enum: ["active", "disabled", "error"], description: "Operational status of the hook" },
|
|
9870
|
-
execution_count: { type: "number", description: "Number of times this hook has fired" }
|
|
9870
|
+
execution_count: { type: "number", description: "Number of times this hook has fired", modifier: "snapshot" }
|
|
9871
9871
|
},
|
|
9872
9872
|
// AgentSessionProperties: Agent session.
|
|
9873
9873
|
agent_session: {
|
|
@@ -9884,7 +9884,7 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
9884
9884
|
agent_skill: {
|
|
9885
9885
|
skill_trigger: { type: "string", description: "Event or command that activates this skill" },
|
|
9886
9886
|
skill_description: { type: "string", description: "Human-readable description of what the skill does" },
|
|
9887
|
-
invocation_count: { type: "number", description: "Number of times this skill has been invoked" }
|
|
9887
|
+
invocation_count: { type: "number", description: "Number of times this skill has been invoked", modifier: "snapshot" }
|
|
9888
9888
|
},
|
|
9889
9889
|
// AgentTaskProperties: Agent task. A discrete task assigned to an agent.
|
|
9890
9890
|
agent_task: {
|
|
@@ -9916,7 +9916,7 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
9916
9916
|
ai_dataset: {
|
|
9917
9917
|
dataset_type: { type: "string", enum: ["training", "evaluation", "fine_tuning", "rlhf", "synthetic"], description: "Purpose" },
|
|
9918
9918
|
version: { type: "string", description: "Version" },
|
|
9919
|
-
record_count: { type: "number", description: "Records" },
|
|
9919
|
+
record_count: { type: "number", description: "Records", modifier: "snapshot" },
|
|
9920
9920
|
format: { type: "string", description: 'Format (e.g. "jsonl", "csv", "parquet")' },
|
|
9921
9921
|
storage_uri: { type: "string", description: "Storage URI" },
|
|
9922
9922
|
checksum: { type: "string", description: "Integrity hash" },
|
|
@@ -9941,7 +9941,7 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
9941
9941
|
ai_guardrail: {
|
|
9942
9942
|
guardrail_type: { type: "string", enum: ["content_filter", "rate_limit", "token_limit", "safety", "custom"], description: "Protection category" },
|
|
9943
9943
|
enforcement: { type: "string", enum: ["block", "warn", "log"], description: "Action when triggered" },
|
|
9944
|
-
trigger_count: { type: "number", description: "Times triggered" }
|
|
9944
|
+
trigger_count: { type: "number", description: "Times triggered", modifier: "snapshot" }
|
|
9945
9945
|
},
|
|
9946
9946
|
// AiModelProperties: AI model.
|
|
9947
9947
|
ai_model: {
|
|
@@ -9949,10 +9949,10 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
9949
9949
|
model_id: { type: "string", description: 'Unique model identifier (e.g. "claude-sonnet-4-20250514")' },
|
|
9950
9950
|
model_version: { type: "string", description: "Specific version" },
|
|
9951
9951
|
model_purpose: { type: "string", description: "Intended use case" },
|
|
9952
|
-
cost_per_1k_tokens: { type: "number", description: "Cost per 1,000 tokens" },
|
|
9952
|
+
cost_per_1k_tokens: { type: "number", description: "Cost per 1,000 tokens", modifier: "snapshot" },
|
|
9953
9953
|
context_window: { type: "number", description: "Maximum context window (tokens)" },
|
|
9954
|
-
latency_p50_ms: { type: "number", description: "Median latency (p50, ms)" },
|
|
9955
|
-
latency_p99_ms: { type: "number", description: "Tail latency (p99, ms)" },
|
|
9954
|
+
latency_p50_ms: { type: "number", description: "Median latency (p50, ms)", modifier: "snapshot" },
|
|
9955
|
+
latency_p99_ms: { type: "number", description: "Tail latency (p99, ms)", modifier: "snapshot" },
|
|
9956
9956
|
input_schema: { type: "string", description: "Expected input format or schema" },
|
|
9957
9957
|
output_schema: { type: "string", description: "Expected output format or schema" },
|
|
9958
9958
|
aliases: { type: "string[]", description: "Alternative names" },
|
|
@@ -9996,8 +9996,8 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
9996
9996
|
// ApiEcosystemProperties: API ecosystem.
|
|
9997
9997
|
api_ecosystem: {
|
|
9998
9998
|
api_style: { type: "string", enum: ["rest", "graphql", "grpc", "webhook", "mixed"], description: "Primary API architecture style" },
|
|
9999
|
-
developer_count: { type: "number", description: "Number of registered developers" },
|
|
10000
|
-
app_count: { type: "number", description: "Number of apps built on the API" }
|
|
9999
|
+
developer_count: { type: "number", description: "Number of registered developers", modifier: "snapshot" },
|
|
10000
|
+
app_count: { type: "number", description: "Number of apps built on the API", modifier: "derived" }
|
|
10001
10001
|
},
|
|
10002
10002
|
// ApiEndpointProperties: API endpoint.
|
|
10003
10003
|
api_endpoint: {
|
|
@@ -10068,7 +10068,7 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
10068
10068
|
// BetaProgramProperties: Beta program.
|
|
10069
10069
|
beta_program: {
|
|
10070
10070
|
beta_type: { type: "string", enum: ["closed", "open", "invite_only"], description: "Access model for the beta" },
|
|
10071
|
-
participant_count: { type: "number", description: "Number of users participating in the beta" }
|
|
10071
|
+
participant_count: { type: "number", description: "Number of users participating in the beta", modifier: "snapshot" }
|
|
10072
10072
|
},
|
|
10073
10073
|
// BoundedContextProperties: DDD bounded context.
|
|
10074
10074
|
bounded_context: {
|
|
@@ -10226,7 +10226,7 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
10226
10226
|
// ChurnReasonProperties: Churn reason.
|
|
10227
10227
|
churn_reason: {
|
|
10228
10228
|
category: { type: "string", description: "High-level category of the churn reason" },
|
|
10229
|
-
frequency_count: { type: "number", description: "Exact count of times this reason has been cited in `frequency_period`" },
|
|
10229
|
+
frequency_count: { type: "number", description: "Exact count of times this reason has been cited in `frequency_period`", modifier: "snapshot" },
|
|
10230
10230
|
frequency_period: { type: "string", description: "The recurrence period the count is measured over (ISO-8601 `Duration`, e.g. `'P30D'`)" },
|
|
10231
10231
|
frequency_rating: { type: "string", enum: ["constant", "regular", "occasional", "rare", "other"], description: "Qualitative frequency tier when an exact count is not known" },
|
|
10232
10232
|
contributing_factors: { type: "string[]", description: "Other factors that contributed to the churn" },
|
|
@@ -10241,8 +10241,8 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
10241
10241
|
avg_duration: { type: "string", description: 'Average run duration across recent executions. @example "4m 30s", "12 minutes"' },
|
|
10242
10242
|
last_run_status: { type: "string", enum: ["success", "failure", "cancelled", "skipped", "in_progress"], description: "Result of the most recent run. Current health indicator." },
|
|
10243
10243
|
target_branch: { type: "string", description: 'Primary branch. The branch that triggers production deployments. @example "main", "release/*"' },
|
|
10244
|
-
run_count: { type: "number", description: "Total runs since creation. Indicates activity level. @example 1452" },
|
|
10245
|
-
success_rate: { type: "number", description: "Reliability metric for the pipeline itself: % of runs that succeed. @example 94.3" }
|
|
10244
|
+
run_count: { type: "number", description: "Total runs since creation. Indicates activity level. @example 1452", modifier: "snapshot" },
|
|
10245
|
+
success_rate: { type: "number", description: "Reliability metric for the pipeline itself: % of runs that succeed. @example 94.3", modifier: "snapshot" }
|
|
10246
10246
|
},
|
|
10247
10247
|
// ClassificationAxisProperties: ClassificationAxis: a dimension along which subjects are classified.
|
|
10248
10248
|
classification_axis: {
|
|
@@ -10281,8 +10281,8 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
10281
10281
|
// CommunityInitiativeProperties: Community initiative.
|
|
10282
10282
|
community_initiative: {
|
|
10283
10283
|
initiative_type: { type: "string", enum: ["forum", "discord", "slack", "meetup", "ambassador", "other"], description: "Platform or format for the community" },
|
|
10284
|
-
member_count: { type: "number", description: "Current number of community members" },
|
|
10285
|
-
engagement_rate: { type: "number", description: "Percentage of members actively participating" }
|
|
10284
|
+
member_count: { type: "number", description: "Current number of community members", modifier: "snapshot" },
|
|
10285
|
+
engagement_rate: { type: "number", description: "Percentage of members actively participating", modifier: "snapshot" }
|
|
10286
10286
|
},
|
|
10287
10287
|
// CompetitiveAnalysisProperties: Competitive analysis exercise or snapshot.
|
|
10288
10288
|
competitive_analysis: {
|
|
@@ -10308,7 +10308,7 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
10308
10308
|
},
|
|
10309
10309
|
// CompetitiveBattleCardProperties: CompetitiveBattleCard entity.
|
|
10310
10310
|
competitive_battle_card: {
|
|
10311
|
-
win_rate: { type: "number", description: "Historical win rate against this competitor (0-100%)" },
|
|
10311
|
+
win_rate: { type: "number", description: "Historical win rate against this competitor (0-100%)", modifier: "snapshot" },
|
|
10312
10312
|
key_differentiators: { type: "string", description: "Summary of key differentiators versus this competitor" }
|
|
10313
10313
|
},
|
|
10314
10314
|
// CompetitorProperties: A product or approach competing for the same user need.
|
|
@@ -10412,7 +10412,7 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
10412
10412
|
content_calendar: {
|
|
10413
10413
|
calendar_period: { type: "string", description: 'Covered period (e.g. "Q2 2026")' },
|
|
10414
10414
|
publish_cadence: { type: "string", enum: ["continuous", "hourly", "daily", "weekly", "monthly", "quarterly", "yearly", "on_demand", "other"], description: "Publishing cadence (canonical `Cadence` since v0.4.0). Retyped from the legacy free-form `publish_cadence: string`. For exact rates (\"3 per week\"), set `frequency_count` + `frequency_period`. BREAKING in v0.4.0: previous string values like `\"3x/week\"` no longer type-check. Map to `'weekly'` + `frequency_count: 3` + `frequency_period: 'P7D'`." },
|
|
10415
|
-
frequency_count: { type: "number", description: "Exact count in the period. Pairs with `frequency_period`." },
|
|
10415
|
+
frequency_count: { type: "number", description: "Exact count in the period. Pairs with `frequency_period`.", modifier: "snapshot" },
|
|
10416
10416
|
frequency_period: { type: "string", description: "Recurrence period (ISO-8601 `Duration`, e.g. `'P7D'`)" },
|
|
10417
10417
|
frequency_rating: { type: "string", enum: ["constant", "regular", "occasional", "rare", "other"], description: "Qualitative rate tier when an exact rate is unknown" }
|
|
10418
10418
|
},
|
|
@@ -10427,7 +10427,7 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
10427
10427
|
content_types: { type: "string[]", description: "Types of content to produce" },
|
|
10428
10428
|
distribution_channels: { type: "string[]", description: "Channels where content will be distributed" },
|
|
10429
10429
|
cadence: { type: "string", enum: ["continuous", "hourly", "daily", "weekly", "monthly", "quarterly", "yearly", "on_demand", "other"], description: "Publishing cadence (canonical `Cadence` since v0.4.0). Retyped from the legacy free-form `cadence: string` (e.g. \"2x/week\"). For exact rates, set `frequency_count` + `frequency_period`. BREAKING in v0.4.0: previous string values like `\"2x/week\"` no longer type-check. Map to `'weekly'` + `frequency_count: 2` + `frequency_period: 'P7D'`." },
|
|
10430
|
-
frequency_count: { type: "number", description: "Exact count of publications in the period. Pairs with `frequency_period`." },
|
|
10430
|
+
frequency_count: { type: "number", description: "Exact count of publications in the period. Pairs with `frequency_period`.", modifier: "snapshot" },
|
|
10431
10431
|
frequency_period: { type: "string", description: "Recurrence period (ISO-8601 `Duration`, e.g. `'P7D'`)" },
|
|
10432
10432
|
frequency_rating: { type: "string", enum: ["constant", "regular", "occasional", "rare", "other"], description: "Qualitative rate tier when an exact rate is unknown" }
|
|
10433
10433
|
},
|
|
@@ -10498,7 +10498,7 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
10498
10498
|
stage_type: { type: "string", enum: ["awareness", "acquisition", "activation", "retention", "revenue", "referral"], description: "Which pirate metric (AAARRR) this stage maps to" },
|
|
10499
10499
|
stage_order: { type: "number", description: "Display order along the lifecycle timeline (0-indexed). The `*_order` convention shared with `journey_phase.phase_order` and `journey_step.step_order` (UPG-675 / CS-8), so two same-`stage_type` stages are orderable." },
|
|
10500
10500
|
avg_duration: { type: "string", description: "Average time a customer spends in this stage" },
|
|
10501
|
-
conversion_rate: { type: "number", description: "Percentage of customers who advance to the next stage" }
|
|
10501
|
+
conversion_rate: { type: "number", description: "Percentage of customers who advance to the next stage", modifier: "snapshot" }
|
|
10502
10502
|
},
|
|
10503
10503
|
// CustomerRelationshipProperties: CustomerRelationship.
|
|
10504
10504
|
customer_relationship: {
|
|
@@ -10511,9 +10511,9 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
10511
10511
|
tool: { type: "string", enum: ["looker", "amplitude", "mixpanel", "posthog", "custom"], description: "Analytics tool hosting this dashboard" },
|
|
10512
10512
|
url: { type: "string", description: "URL to the live dashboard" },
|
|
10513
10513
|
audience: { type: "string", description: "Intended audience for this dashboard" },
|
|
10514
|
-
element_count: { type: "number", description: "Number of widgets or panels on the dashboard" },
|
|
10514
|
+
element_count: { type: "number", description: "Number of widgets or panels on the dashboard", modifier: "derived" },
|
|
10515
10515
|
refresh_cadence: { type: "string", enum: ["continuous", "hourly", "daily", "weekly", "monthly", "quarterly", "yearly", "on_demand", "other"], description: "How often the dashboard data refreshes. Uses the shared `Cadence` scale." },
|
|
10516
|
-
filter_count: { type: "number", description: "Number of user-configurable filters" }
|
|
10516
|
+
filter_count: { type: "number", description: "Number of user-configurable filters", modifier: "derived" }
|
|
10517
10517
|
},
|
|
10518
10518
|
// DataClassificationProperties: Data classification.
|
|
10519
10519
|
data_classification: {
|
|
@@ -10551,9 +10551,9 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
10551
10551
|
data_model: {
|
|
10552
10552
|
schema_name: { type: "string", description: "Name of the schema this model belongs to" },
|
|
10553
10553
|
database_name: { type: "string", description: "Name of the database containing this model" },
|
|
10554
|
-
table_count: { type: "number", description: "Number of tables in the model" },
|
|
10555
|
-
column_count: { type: "number", description: "Total number of columns across all tables" },
|
|
10556
|
-
test_count: { type: "number", description: "Number of data tests defined for this model" },
|
|
10554
|
+
table_count: { type: "number", description: "Number of tables in the model", modifier: "derived" },
|
|
10555
|
+
column_count: { type: "number", description: "Total number of columns across all tables", modifier: "derived" },
|
|
10556
|
+
test_count: { type: "number", description: "Number of data tests defined for this model", modifier: "derived" },
|
|
10557
10557
|
model_type: { type: "string", enum: ["relational", "document", "graph", "time_series"], description: "Database paradigm used" },
|
|
10558
10558
|
materialization: { type: "string", enum: ["view", "table", "incremental", "ephemeral", "materialized_view"], description: "How the model is materialised in the warehouse" },
|
|
10559
10559
|
meta: { type: "object", description: "Arbitrary metadata key-value pairs" },
|
|
@@ -10565,7 +10565,7 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
10565
10565
|
schedule: { type: "string", description: "Cron or scheduling expression" },
|
|
10566
10566
|
avg_runtime: { type: "string", description: "Average wall-clock runtime per execution" },
|
|
10567
10567
|
orchestrator: { type: "string", description: 'Orchestration tool (e.g. "Airflow", "Dagster", "dbt Cloud")' },
|
|
10568
|
-
retry_count: { type: "number", description: "Number of automatic retries on failure" },
|
|
10568
|
+
retry_count: { type: "number", description: "Number of automatic retries on failure", modifier: "snapshot" },
|
|
10569
10569
|
retry_delay_seconds: { type: "number", description: "Delay between retries in seconds" },
|
|
10570
10570
|
timeout_seconds: { type: "number", description: "Maximum allowed runtime in seconds before timeout" },
|
|
10571
10571
|
trigger_rule: { type: "string", description: "Rule that determines when this pipeline triggers" },
|
|
@@ -10598,7 +10598,7 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
10598
10598
|
schema_version: { type: "string", description: "Current schema version" },
|
|
10599
10599
|
migration_status: { type: "string", enum: ["current", "pending", "failed"], description: "Pending-migration status" },
|
|
10600
10600
|
owner: { type: "string", description: "Owning person or team responsible for design and migrations. Promote to a `node_owned_by_team` edge if ownership must be queryable." },
|
|
10601
|
-
table_count: { type: "number", description: "Tables or collections in this schema. Useful for migration scope estimation." }
|
|
10601
|
+
table_count: { type: "number", description: "Tables or collections in this schema. Useful for migration scope estimation.", modifier: "derived" }
|
|
10602
10602
|
},
|
|
10603
10603
|
// DealProperties: Deal.
|
|
10604
10604
|
deal: {
|
|
@@ -10633,7 +10633,7 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
10633
10633
|
},
|
|
10634
10634
|
// DepartmentProperties: Department entity.
|
|
10635
10635
|
department: {
|
|
10636
|
-
headcount: { type: "number", description: "Total number of people in the department" },
|
|
10636
|
+
headcount: { type: "number", description: "Total number of people in the department", modifier: "snapshot" },
|
|
10637
10637
|
budget: { type: "number", description: "Annual budget allocated to the department" },
|
|
10638
10638
|
department_mission: { type: "string", description: "Charter / purpose statement for the department" },
|
|
10639
10639
|
leader: { type: "string", description: "Department leader (person or role reference). Promote to a `node_owned_by_person` edge if ownership must be queryable." },
|
|
@@ -10763,7 +10763,7 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
10763
10763
|
// DeveloperPortalProperties: Developer portal.
|
|
10764
10764
|
developer_portal: {
|
|
10765
10765
|
portal_url: { type: "string", description: "URL of the developer portal" },
|
|
10766
|
-
doc_count: { type: "number", description: "Number of documentation pages" },
|
|
10766
|
+
doc_count: { type: "number", description: "Number of documentation pages", modifier: "derived" },
|
|
10767
10767
|
sandbox_available: { type: "boolean", description: "Whether a sandbox environment is available" }
|
|
10768
10768
|
},
|
|
10769
10769
|
// DiscountStrategyProperties: Discount strategy.
|
|
@@ -10771,7 +10771,7 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
10771
10771
|
discount_type: { type: "string", enum: ["percentage", "fixed", "tiered", "bundle"], description: "How the discount is applied" },
|
|
10772
10772
|
discount_percentage: { type: "number", description: "Discount amount as a percentage (0-100)" },
|
|
10773
10773
|
valid_until: { type: "string", description: "Expiration date of the discount (ISO format)" },
|
|
10774
|
-
redemption_count: { type: "number", description: "Number of times this discount has been redeemed" }
|
|
10774
|
+
redemption_count: { type: "number", description: "Number of times this discount has been redeemed", modifier: "snapshot" }
|
|
10775
10775
|
},
|
|
10776
10776
|
// DistributionChannelProperties: DistributionChannel.
|
|
10777
10777
|
distribution_channel: {
|
|
@@ -10787,7 +10787,7 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
10787
10787
|
document_type: { type: "string", enum: ["vision", "plan", "decision", "research", "spec", "audit", "session", "feedback", "case-study", "narrative", "bug-report", "archive-collection", "rfc", "runbook", "guide", "onboarding", "brief", "report", "reference"], description: "Purpose classification" },
|
|
10788
10788
|
author: { type: "string", description: "Author (free-form: name, email, or handle). Promote to a `node_owned_by_person` edge if ownership must be queryable." },
|
|
10789
10789
|
last_updated: { type: "string", description: "ISO 8601 last-meaningful-update" },
|
|
10790
|
-
word_count: { type: "number", description: "Approximate word count. Useful for planning, indexing, summarisation." },
|
|
10790
|
+
word_count: { type: "number", description: "Approximate word count. Useful for planning, indexing, summarisation.", modifier: "snapshot" },
|
|
10791
10791
|
content_summary: { type: "string", description: "1\u20133 sentence summary. Drives previews, search snippets, embedding context." },
|
|
10792
10792
|
language: { type: "string", description: 'Primary language (BCP 47 tag, e.g. "en", "en-GB", "fr")' }
|
|
10793
10793
|
},
|
|
@@ -10815,9 +10815,9 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
10815
10815
|
// EmailSequenceProperties: Email sequence.
|
|
10816
10816
|
email_sequence: {
|
|
10817
10817
|
sequence_type: { type: "string", enum: ["onboarding", "nurture", "re_engagement", "sales", "other"], description: "Purpose of the email sequence" },
|
|
10818
|
-
email_count: { type: "number", description: "Number of emails in the sequence" },
|
|
10819
|
-
open_rate: { type: "number", description: "Average open rate across the sequence (0-1)" },
|
|
10820
|
-
click_rate: { type: "number", description: "Average click-through rate across the sequence (0-1)" }
|
|
10818
|
+
email_count: { type: "number", description: "Number of emails in the sequence", modifier: "derived" },
|
|
10819
|
+
open_rate: { type: "number", description: "Average open rate across the sequence (0-1)", modifier: "snapshot" },
|
|
10820
|
+
click_rate: { type: "number", description: "Average click-through rate across the sequence (0-1)", modifier: "snapshot" }
|
|
10821
10821
|
},
|
|
10822
10822
|
// EpicProperties: A collection of related user stories that delivers a feature or capability.
|
|
10823
10823
|
epic: {
|
|
@@ -10829,15 +10829,15 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
10829
10829
|
},
|
|
10830
10830
|
// ErrorBudgetProperties: Error budget.
|
|
10831
10831
|
error_budget: {
|
|
10832
|
-
budget_remaining: { type: "number", description: "Remaining budget percentage (0\u2013100). @example 45.2 (45.2% remaining, 54.8% used)" },
|
|
10833
|
-
burn_rate: { type: "number", description: "Consumption rate as a multiplier against sustainable burn. 1.0 = on track. 2.5 = consuming 2.5x faster than sustainable." },
|
|
10832
|
+
budget_remaining: { type: "number", description: "Remaining budget percentage (0\u2013100). @example 45.2 (45.2% remaining, 54.8% used)", modifier: "snapshot" },
|
|
10833
|
+
burn_rate: { type: "number", description: "Consumption rate as a multiplier against sustainable burn. 1.0 = on track. 2.5 = consuming 2.5x faster than sustainable.", modifier: "snapshot" },
|
|
10834
10834
|
policy: { type: "string", description: 'Policy when the budget hits 0%. @example "Freeze all non-reliability deploys", "Page engineering lead immediately"' },
|
|
10835
10835
|
budget_window: { type: "string", description: 'Budget window. Defines reset cadence. @example "30 days", "rolling 28 days"' }
|
|
10836
10836
|
},
|
|
10837
10837
|
// EvalBenchmarkProperties: Evaluation benchmark.
|
|
10838
10838
|
eval_benchmark: {
|
|
10839
10839
|
benchmark_type: { type: "string", enum: ["accuracy", "latency", "cost", "safety", "custom"], description: "Measured dimension" },
|
|
10840
|
-
test_case_count: { type: "number", description: "Test cases in the suite" },
|
|
10840
|
+
test_case_count: { type: "number", description: "Test cases in the suite", modifier: "derived" },
|
|
10841
10841
|
passing_threshold: { type: "number", description: "Minimum passing score" },
|
|
10842
10842
|
last_run: { type: "string", description: "ISO date of the most recent run" }
|
|
10843
10843
|
},
|
|
@@ -10859,7 +10859,7 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
10859
10859
|
event_type: { type: "string", enum: ["conference", "webinar", "meetup", "workshop", "trade_show", "other"], description: "Format of the event" },
|
|
10860
10860
|
event_date: { type: "string", description: "Date of the event (ISO format)" },
|
|
10861
10861
|
location: { type: "string", description: "Venue or virtual platform" },
|
|
10862
|
-
attendee_count: { type: "number", description: "Number of attendees" }
|
|
10862
|
+
attendee_count: { type: "number", description: "Number of attendees", modifier: "snapshot" }
|
|
10863
10863
|
},
|
|
10864
10864
|
// EventSchemaProperties: EventSchema entity.
|
|
10865
10865
|
event_schema: {
|
|
@@ -11022,7 +11022,7 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
11022
11022
|
feature_flag: {
|
|
11023
11023
|
key: { type: "string", description: 'Required. Stable flag key used in code (e.g. "new-checkout-flow").' },
|
|
11024
11024
|
flag_status: { type: "string", enum: ["on", "off", "rollout"], description: "Activation state. `on` = enabled for all. `off` = disabled for all. `rollout` = partial via targeting_rules." },
|
|
11025
|
-
rollout_pct: { type: "number", description: "Percentage enabled (0\u2013100). Meaningful when `flag_status === 'rollout'`." },
|
|
11025
|
+
rollout_pct: { type: "number", description: "Percentage enabled (0\u2013100). Meaningful when `flag_status === 'rollout'`.", modifier: "snapshot" },
|
|
11026
11026
|
targeting_rules: { type: "string", description: "Human-readable targeting rules. Full rule evaluation happens in the flag service." },
|
|
11027
11027
|
owner: { type: "string", description: "Owning person or team responsible for the flag's lifecycle. Promote to a `node_owned_by_person` edge if ownership must be queryable." },
|
|
11028
11028
|
flag_type: { type: "string", enum: ["temporary", "permanent", "experiment"], description: "Lifecycle classification. `temporary` = should be removed after rollout (kill switch, gradual rollout). `permanent` = long-lived feature gate (entitlement flag). `experiment` = A/B test with a defined end condition." },
|
|
@@ -11032,7 +11032,7 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
11032
11032
|
// FeatureRequestProperties: Feature request raised by customer, prospect, or internal stakeholder.
|
|
11033
11033
|
feature_request: {
|
|
11034
11034
|
request_source: { type: "string", enum: ["customer", "internal", "prospect", "support", "community"], description: "Where the request originated" },
|
|
11035
|
-
vote_count: { type: "number", description: "Number of votes or upvotes from users" },
|
|
11035
|
+
vote_count: { type: "number", description: "Number of votes or upvotes from users", modifier: "snapshot" },
|
|
11036
11036
|
signal_sentiment: { type: "string", enum: ["positive", "neutral", "negative", "mixed"], description: "Detected sentiment of the request" },
|
|
11037
11037
|
signal_channel: { type: "string", description: "Channel through which the request was received" },
|
|
11038
11038
|
signal_urgency: { type: "string", enum: ["low", "medium", "high", "critical"], description: "Perceived urgency of the request" },
|
|
@@ -11090,7 +11090,7 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
11090
11090
|
},
|
|
11091
11091
|
// FeedbackVoteProperties: Feedback vote.
|
|
11092
11092
|
feedback_vote: {
|
|
11093
|
-
vote_count: { type: "number", description: "Total number of votes cast" },
|
|
11093
|
+
vote_count: { type: "number", description: "Total number of votes cast", modifier: "snapshot" },
|
|
11094
11094
|
mrr_impact: { type: "number", description: "Combined MRR of voting accounts" }
|
|
11095
11095
|
},
|
|
11096
11096
|
// FixProperties: Specific change that resolved an issue.
|
|
@@ -11130,13 +11130,13 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
11130
11130
|
funnel: {
|
|
11131
11131
|
funnel_type: { type: "string", enum: ["acquisition", "activation", "retention", "revenue", "referral", "custom"], description: "Which stage of the customer lifecycle this funnel measures" },
|
|
11132
11132
|
step_count: { type: "number", description: "Number of steps in the funnel", modifier: "derived" },
|
|
11133
|
-
overall_conversion_rate: { type: "number", description: "End-to-end conversion rate through the funnel (0-1)" }
|
|
11133
|
+
overall_conversion_rate: { type: "number", description: "End-to-end conversion rate through the funnel (0-1)", modifier: "snapshot" }
|
|
11134
11134
|
},
|
|
11135
11135
|
// FunnelStepProperties: FunnelStep entity.
|
|
11136
11136
|
funnel_step: {
|
|
11137
11137
|
step_index: { type: "number", description: "Position of this step in the funnel (0-indexed)" },
|
|
11138
|
-
conversion_rate: { type: "number", description: "Percentage of users who advance from this step" },
|
|
11139
|
-
drop_off_rate: { type: "number", description: "Percentage of users who leave at this step" }
|
|
11138
|
+
conversion_rate: { type: "number", description: "Percentage of users who advance from this step", modifier: "snapshot" },
|
|
11139
|
+
drop_off_rate: { type: "number", description: "Percentage of users who leave at this step", modifier: "snapshot" }
|
|
11140
11140
|
},
|
|
11141
11141
|
// GlossaryTermProperties: GlossaryTerm entity.
|
|
11142
11142
|
glossary_term: {
|
|
@@ -11311,7 +11311,7 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
11311
11311
|
// InterviewGuideProperties: Interview guide document.
|
|
11312
11312
|
interview_guide: {
|
|
11313
11313
|
guide_type: { type: "string", enum: ["structured", "semi_structured", "unstructured"], description: "Format structure" },
|
|
11314
|
-
question_count: { type: "number", description: "Total questions" },
|
|
11314
|
+
question_count: { type: "number", description: "Total questions", modifier: "derived" },
|
|
11315
11315
|
duration_minutes: { type: "number", description: "Expected length (minutes)" }
|
|
11316
11316
|
},
|
|
11317
11317
|
// InvestigationProperties: Active thread of inquiry: debugging, architecture exploration, RCA.
|
|
@@ -11468,7 +11468,7 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
11468
11468
|
key_activity: {
|
|
11469
11469
|
activity_type: { type: "string", enum: ["production", "problem_solving", "platform", "network"], description: "Activity nature" },
|
|
11470
11470
|
cadence: { type: "string", enum: ["continuous", "hourly", "daily", "weekly", "monthly", "quarterly", "yearly", "on_demand", "other"], description: 'Canonical `Cadence`. Replaces the legacy free-form `frequency: string` in v0.4.0. For exact rates (e.g. "3 times per week") set `frequency_count` + `frequency_period`. For qualitative tiers ("rare" \u2192 "constant") use `frequency_rating`.' },
|
|
11471
|
-
frequency_count: { type: "number", description: "Exact count of runs in the period. Pairs with `frequency_period`." },
|
|
11471
|
+
frequency_count: { type: "number", description: "Exact count of runs in the period. Pairs with `frequency_period`.", modifier: "snapshot" },
|
|
11472
11472
|
frequency_period: { type: "string", description: "Recurrence period (ISO-8601 `Duration`, e.g. `'P7D'`)" },
|
|
11473
11473
|
frequency_rating: { type: "string", enum: ["constant", "regular", "occasional", "rare", "other"], description: "Qualitative tier. Use when an exact rate is unknown." },
|
|
11474
11474
|
operational_owner: { type: "string", description: "Operationally accountable team or individual. Promote to a `node_owned_by_team` edge if ownership must be queryable." },
|
|
@@ -11496,7 +11496,7 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
11496
11496
|
},
|
|
11497
11497
|
// KeyResultProperties: A measurable result under an objective. The KR in OKR.
|
|
11498
11498
|
key_result: {
|
|
11499
|
-
current_value: { type: "number", description: "Most recent observed value" },
|
|
11499
|
+
current_value: { type: "number", description: "Most recent observed value", modifier: "snapshot" },
|
|
11500
11500
|
target_value: { type: "number", description: "Value for full achievement" },
|
|
11501
11501
|
unit: { type: "string", description: 'Display unit (e.g. "%", "users", "\xA3")' }
|
|
11502
11502
|
},
|
|
@@ -11529,9 +11529,9 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
11529
11529
|
learning_path: {
|
|
11530
11530
|
path_order: { type: "number", description: "Display order of this path within a curriculum or program (0-indexed). The scalar ordering convention shared with `journey_step.step_order` and `journey_action.action_order` (UPG-663 / UPG-674). Makes a learning_path a deterministically orderable sequence among sibling paths rather than a star." },
|
|
11531
11531
|
path_difficulty: { type: "string", enum: ["beginner", "intermediate", "advanced"], description: "Overall difficulty level of the learning path" },
|
|
11532
|
-
item_count: { type: "number", description: "Number of items (tutorials, videos, etc.) in the path" },
|
|
11532
|
+
item_count: { type: "number", description: "Number of items (tutorials, videos, etc.) in the path", modifier: "derived" },
|
|
11533
11533
|
estimated_hours: { type: "number", description: "Estimated total hours to complete the path" },
|
|
11534
|
-
completion_rate: { type: "number", description: "Percentage of users who complete the full path" }
|
|
11534
|
+
completion_rate: { type: "number", description: "Percentage of users who complete the full path", modifier: "snapshot" }
|
|
11535
11535
|
},
|
|
11536
11536
|
// LegalEntityProperties: Legal entity.
|
|
11537
11537
|
legal_entity: {
|
|
@@ -11549,7 +11549,7 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
11549
11549
|
dep_type: { type: "string", enum: ["runtime", "dev", "peer", "optional"], description: "Dependency classification" },
|
|
11550
11550
|
license: { type: "string", description: "SPDX license identifier" },
|
|
11551
11551
|
is_outdated: { type: "boolean", description: "Whether a newer version is available" },
|
|
11552
|
-
vulnerability_count: { type: "number", description: "Known vulnerabilities in the installed version. Populated from npm audit, Snyk, etc." }
|
|
11552
|
+
vulnerability_count: { type: "number", description: "Known vulnerabilities in the installed version. Populated from npm audit, Snyk, etc.", modifier: "snapshot" }
|
|
11553
11553
|
},
|
|
11554
11554
|
// LocaleProperties: Locale.
|
|
11555
11555
|
locale: {
|
|
@@ -11569,7 +11569,7 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
11569
11569
|
// MarketSegmentProperties: MarketSegment entity.
|
|
11570
11570
|
market_segment: {
|
|
11571
11571
|
segment_size: { type: "number", description: "Potential customers in this segment" },
|
|
11572
|
-
growth_rate: { type: "number", description: "YoY growth rate as a decimal. @example 0.15 represents 15%" },
|
|
11572
|
+
growth_rate: { type: "number", description: "YoY growth rate as a decimal. @example 0.15 represents 15%", modifier: "snapshot" },
|
|
11573
11573
|
tam: { type: "number", description: "Total Addressable Market (currency units)" },
|
|
11574
11574
|
sam: { type: "number", description: "Serviceable Addressable Market (currency units)" }
|
|
11575
11575
|
},
|
|
@@ -11627,7 +11627,7 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
11627
11627
|
// MarketingChannelProperties: Marketing channel.
|
|
11628
11628
|
marketing_channel: {
|
|
11629
11629
|
channel_type: { type: "string", enum: ["social", "email", "seo", "sem", "content", "events", "other"], description: "Category of marketing channel" },
|
|
11630
|
-
monthly_budget: { type: "number", description: "Monthly spend allocated to this channel" },
|
|
11630
|
+
monthly_budget: { type: "number", description: "Monthly spend allocated to this channel", modifier: "snapshot" },
|
|
11631
11631
|
roi: { type: "number", description: "Return on investment ratio" },
|
|
11632
11632
|
channel_status: { type: "string", enum: ["active", "paused", "deprecated"], description: "Operational status of the channel" }
|
|
11633
11633
|
},
|
|
@@ -11662,7 +11662,7 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
11662
11662
|
impact_level: { type: "string", enum: ["impact", "outcome", "output"], description: "Where this metric sits in the impact hierarchy" },
|
|
11663
11663
|
indicator_direction: { type: "string", enum: ["leading", "lagging"], description: "Whether this metric leads or lags the behaviour it measures" },
|
|
11664
11664
|
metric_category: { type: "string", enum: ["acquisition", "activation", "retention", "referral", "revenue", "engagement", "happiness", "task_success", "adoption", "other"], description: "AARRR or HEART category this metric belongs to" },
|
|
11665
|
-
current_value: { type: "number", description: "Most recent observed value" },
|
|
11665
|
+
current_value: { type: "number", description: "Most recent observed value", modifier: "snapshot" },
|
|
11666
11666
|
target_value: { type: "number", description: "Value we are aiming to reach" },
|
|
11667
11667
|
unit: { type: "string", description: 'Display unit for the metric value (e.g. "%", "ms", "\xA3")' },
|
|
11668
11668
|
range_min: { type: "number", description: "Minimum expected or baseline value" },
|
|
@@ -11760,11 +11760,11 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
11760
11760
|
nps_campaign: {
|
|
11761
11761
|
campaign_type: { type: "string", enum: ["relationship", "transactional", "feature"], description: "What triggers the NPS survey" },
|
|
11762
11762
|
send_date: { type: "string", description: "Date the survey was sent (ISO format)" },
|
|
11763
|
-
response_count: { type: "number", description: "Number of responses received" },
|
|
11764
|
-
response_rate: { type: "number", description: "Percentage of recipients who responded" },
|
|
11763
|
+
response_count: { type: "number", description: "Number of responses received", modifier: "snapshot" },
|
|
11764
|
+
response_rate: { type: "number", description: "Percentage of recipients who responded", modifier: "snapshot" },
|
|
11765
11765
|
score: { type: "number", description: "Net Promoter Score (-100 to 100)" },
|
|
11766
|
-
promoters_pct: { type: "number", description: "Percentage of respondents who are promoters (9-10)" },
|
|
11767
|
-
detractors_pct: { type: "number", description: "Percentage of respondents who are detractors (0-6)" }
|
|
11766
|
+
promoters_pct: { type: "number", description: "Percentage of respondents who are promoters (9-10)", modifier: "snapshot" },
|
|
11767
|
+
detractors_pct: { type: "number", description: "Percentage of respondents who are detractors (0-6)", modifier: "snapshot" }
|
|
11768
11768
|
},
|
|
11769
11769
|
// ObjectionProperties: Objection entity.
|
|
11770
11770
|
objection: {
|
|
@@ -11921,14 +11921,14 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
11921
11921
|
paywall: {
|
|
11922
11922
|
paywall_type: { type: "string", enum: ["hard", "soft", "metered", "freemium_gate"], description: "How restrictive the paywall is" },
|
|
11923
11923
|
trigger: { type: "string", description: "User action or threshold that triggers the paywall" },
|
|
11924
|
-
conversion_rate: { type: "number", description: "Percentage of users who convert at this paywall" }
|
|
11924
|
+
conversion_rate: { type: "number", description: "Percentage of users who convert at this paywall", modifier: "snapshot" }
|
|
11925
11925
|
},
|
|
11926
11926
|
// PenetrationTestProperties: Penetration test.
|
|
11927
11927
|
penetration_test: {
|
|
11928
11928
|
category: { type: "string", enum: ["external", "internal", "web_app", "api", "mobile"], description: "Test type" },
|
|
11929
11929
|
scope: { type: "string", description: "Systems or features in scope" },
|
|
11930
|
-
findings_count: { type: "number", description: "Total findings" },
|
|
11931
|
-
critical_count: { type: "number", description: "Critical-severity findings" },
|
|
11930
|
+
findings_count: { type: "number", description: "Total findings", modifier: "derived" },
|
|
11931
|
+
critical_count: { type: "number", description: "Critical-severity findings", modifier: "derived" },
|
|
11932
11932
|
start_date: { type: "string", description: "ISO start date" },
|
|
11933
11933
|
end_date: { type: "string", description: "ISO end date" },
|
|
11934
11934
|
report_url: { type: "string", description: "Full report URL" },
|
|
@@ -11959,7 +11959,7 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
11959
11959
|
// PipelineStageProperties: Pipeline stage.
|
|
11960
11960
|
pipeline_stage: {
|
|
11961
11961
|
stage_order: { type: "number", description: "Position of this stage in the pipeline sequence" },
|
|
11962
|
-
conversion_rate: { type: "number", description: "Percentage of deals that advance from this stage" },
|
|
11962
|
+
conversion_rate: { type: "number", description: "Percentage of deals that advance from this stage", modifier: "snapshot" },
|
|
11963
11963
|
avg_days_in_stage: { type: "number", description: "Average number of days deals spend in this stage" }
|
|
11964
11964
|
},
|
|
11965
11965
|
// PlaybookProperties: Customer success playbook.
|
|
@@ -12184,7 +12184,7 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
12184
12184
|
// ResearchStudyProperties: Structured user research activity.
|
|
12185
12185
|
research_study: {
|
|
12186
12186
|
method: { type: "string", enum: ["interview", "usability", "survey", "diary", "analytics"], description: "Research method used to conduct the study" },
|
|
12187
|
-
participant_count: { type: "number", description: "Number of participants recruited or observed" },
|
|
12187
|
+
participant_count: { type: "number", description: "Number of participants recruited or observed", modifier: "snapshot" },
|
|
12188
12188
|
start_date: { type: "string", description: "ISO date when the study starts" },
|
|
12189
12189
|
end_date: { type: "string", description: "ISO date when the study ends" }
|
|
12190
12190
|
},
|
|
@@ -12208,7 +12208,7 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
12208
12208
|
recurring_revenue: { type: "number", description: "Monthly or annual recurring revenue from this stream" },
|
|
12209
12209
|
billing_model: { type: "string", enum: ["subscription", "usage", "one_time", "tiered", "freemium", "other"], description: "Billing mechanics. May differ from `stream_type`." },
|
|
12210
12210
|
recognition_basis: { type: "string", enum: ["accrual", "cash", "deferred"], description: "Accounting basis for revenue recognition" },
|
|
12211
|
-
arr_contribution_pct: { type: "number", description: "Share of total ARR contributed (0\u2013100)" },
|
|
12211
|
+
arr_contribution_pct: { type: "number", description: "Share of total ARR contributed (0\u2013100)", modifier: "snapshot" },
|
|
12212
12212
|
forecast: { type: "string", description: "Free-text forecast or projection" }
|
|
12213
12213
|
},
|
|
12214
12214
|
// ReviewGateProperties: Review gate.
|
|
@@ -12342,7 +12342,7 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
12342
12342
|
security_audit: {
|
|
12343
12343
|
audit_scope: { type: "string", description: "Systems or processes covered by the audit" },
|
|
12344
12344
|
audit_status: { type: "string", enum: ["scheduled", "in_progress", "completed"], description: "Current progress of the audit" },
|
|
12345
|
-
findings_count: { type: "number", description: "Total number of findings" },
|
|
12345
|
+
findings_count: { type: "number", description: "Total number of findings", modifier: "derived" },
|
|
12346
12346
|
critical_findings: { type: "number", description: "Number of critical-severity findings" }
|
|
12347
12347
|
},
|
|
12348
12348
|
// SecurityControlProperties: Security control.
|
|
@@ -12387,7 +12387,7 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
12387
12387
|
search_volume: { type: "number", description: "Estimated monthly search volume" },
|
|
12388
12388
|
difficulty: { type: "number", description: "Keyword difficulty score (0-100)" },
|
|
12389
12389
|
intent: { type: "string", enum: ["informational", "navigational", "commercial", "transactional"], description: "Search intent behind the keyword" },
|
|
12390
|
-
current_rank: { type: "number", description: "Current SERP ranking position" },
|
|
12390
|
+
current_rank: { type: "number", description: "Current SERP ranking position", modifier: "snapshot" },
|
|
12391
12391
|
target_rank: { type: "number", description: "Desired ranking position" }
|
|
12392
12392
|
},
|
|
12393
12393
|
// ServiceProperties: Service or microservice.
|
|
@@ -12431,7 +12431,7 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
12431
12431
|
service_level_objective: {
|
|
12432
12432
|
target_percentage: { type: "number", description: "Target percentage. The reliability commitment. @example 99.9 (three nines), 99.95, 99.99 (four nines)" },
|
|
12433
12433
|
window: { type: "string", description: 'Evaluation window. @example "30 days", "rolling 28 days", "calendar quarter"' },
|
|
12434
|
-
current_percentage: { type: "number", description: "Current achieved percentage. Compared against `target_percentage` for health. @example 99.92 (above a 99.9 target)" },
|
|
12434
|
+
current_percentage: { type: "number", description: "Current achieved percentage. Compared against `target_percentage` for health. @example 99.92 (above a 99.9 target)", modifier: "snapshot" },
|
|
12435
12435
|
slo_type: { type: "string", enum: ["metric", "monitor", "time_slice"], description: "Measurement mechanism. `metric` = ratio (good/total). `monitor` = monitor-based. `time_slice` = uptime windows." },
|
|
12436
12436
|
warning_threshold: { type: "number", description: "Soft alert threshold before the target breaches. Gives teams time to act. @example 99.95 (warn at 99.95% when target is 99.9%)" }
|
|
12437
12437
|
},
|
|
@@ -12579,7 +12579,7 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
12579
12579
|
},
|
|
12580
12580
|
// SubscriptionProperties: Subscription.
|
|
12581
12581
|
subscription: {
|
|
12582
|
-
monthly_recurring_revenue: { type: "number", description: "Monthly recurring revenue from this subscription" },
|
|
12582
|
+
monthly_recurring_revenue: { type: "number", description: "Monthly recurring revenue from this subscription", modifier: "snapshot" },
|
|
12583
12583
|
start_date: { type: "string", description: "Subscription start date (ISO format)" },
|
|
12584
12584
|
renewal_date: { type: "string", description: "Next renewal date (ISO format)" },
|
|
12585
12585
|
subscription_status: { type: "string", enum: ["active", "trialing", "past_due", "cancelled", "paused"], description: "Current status of the subscription" }
|
|
@@ -12613,8 +12613,8 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
12613
12613
|
},
|
|
12614
12614
|
// SurveyResponseProperties: Aggregated survey response data.
|
|
12615
12615
|
survey_response: {
|
|
12616
|
-
response_count: { type: "number", description: "Total responses" },
|
|
12617
|
-
completion_rate: { type: "number", description: "Completion (0\u20131)" },
|
|
12616
|
+
response_count: { type: "number", description: "Total responses", modifier: "snapshot" },
|
|
12617
|
+
completion_rate: { type: "number", description: "Completion (0\u20131)", modifier: "snapshot" },
|
|
12618
12618
|
method: { type: "string", enum: ["email", "in_app", "phone", "other"], description: "Distribution method" }
|
|
12619
12619
|
},
|
|
12620
12620
|
// SwitchingCostProperties: SwitchingCost entity.
|
|
@@ -12650,7 +12650,7 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
12650
12650
|
},
|
|
12651
12651
|
required: ["value", "label"]
|
|
12652
12652
|
},
|
|
12653
|
-
frequency_count: { type: "number", description: "Exact observation count in the period. Pairs with `frequency_period` for a precise rate." },
|
|
12653
|
+
frequency_count: { type: "number", description: "Exact observation count in the period. Pairs with `frequency_period` for a precise rate.", modifier: "snapshot" },
|
|
12654
12654
|
frequency_period: { type: "string", description: "Recurrence period (ISO-8601 `Duration`). @example 'P7D' (per week), 'P1D' (per day), 'PT1H' (per hour)" },
|
|
12655
12655
|
frequency_rating: { type: "string", enum: ["constant", "regular", "occasional", "rare", "other"], description: "Qualitative frequency tier. Canonical replacement for the legacy `'once' | 'sporadic' | 'frequent' | 'constant' | string` shape. Use when an exact rate is unknown. Migration: `once \u2192 rare`, `sporadic \u2192 occasional`, `frequent \u2192 regular`, `constant \u2192 constant`." },
|
|
12656
12656
|
affected_users_estimate: { type: "number", description: "Approximate count of users affected. Snapshot estimate." },
|
|
@@ -12774,13 +12774,13 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
12774
12774
|
// TestSuiteProperties: Test suite.
|
|
12775
12775
|
test_suite: {
|
|
12776
12776
|
suite_type: { type: "string", enum: ["unit", "integration", "e2e", "performance", "security", "accessibility"], description: "Category of test suite" },
|
|
12777
|
-
test_count: { type: "number", description: "Number of tests in the suite" },
|
|
12778
|
-
pass_rate: { type: "number", description: "Percentage of tests passing (0-100)" },
|
|
12777
|
+
test_count: { type: "number", description: "Number of tests in the suite", modifier: "derived" },
|
|
12778
|
+
pass_rate: { type: "number", description: "Percentage of tests passing (0-100)", modifier: "snapshot" },
|
|
12779
12779
|
last_run: { type: "string", description: "ISO date of last execution" },
|
|
12780
12780
|
total_duration_ms: { type: "number", description: "Total execution time for the last run, in milliseconds" },
|
|
12781
|
-
failed_count: { type: "number", description: "Number of tests that failed in the last run" },
|
|
12782
|
-
skipped_count: { type: "number", description: "Number of tests that were skipped in the last run" },
|
|
12783
|
-
flaky_count: { type: "number", description: "Number of tests that passed only on retry (flaky) in the last run" }
|
|
12781
|
+
failed_count: { type: "number", description: "Number of tests that failed in the last run", modifier: "snapshot" },
|
|
12782
|
+
skipped_count: { type: "number", description: "Number of tests that were skipped in the last run", modifier: "snapshot" },
|
|
12783
|
+
flaky_count: { type: "number", description: "Number of tests that passed only on retry (flaky) in the last run", modifier: "snapshot" }
|
|
12784
12784
|
},
|
|
12785
12785
|
// ThreatProperties: Threat.
|
|
12786
12786
|
threat: {
|
|
@@ -12820,7 +12820,7 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
12820
12820
|
scope: { type: "string", description: 'What system, feature, or data flow is being analysed. @example "user authentication", "payment processing", "admin API"' },
|
|
12821
12821
|
last_reviewed: { type: "string", description: 'ISO date last reviewed. Models become stale as systems evolve. @example "2026-03-01"' },
|
|
12822
12822
|
participants: { type: "string", description: 'Participants in the exercise. @example "Alice Chen (security lead), Bob Park (backend engineer), Carol Liu (architect)". Promote individuals to `node_owned_by_person` edges if participation must be queryable.' },
|
|
12823
|
-
threat_count: { type: "number", description: "Threats identified. Key metric for scope and completeness. @example 12" }
|
|
12823
|
+
threat_count: { type: "number", description: "Threats identified. Key metric for scope and completeness. @example 12", modifier: "derived" }
|
|
12824
12824
|
},
|
|
12825
12825
|
// TouchpointProperties: Customer touchpoint.
|
|
12826
12826
|
touchpoint: {
|
|
@@ -12844,14 +12844,14 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
12844
12844
|
trial_config: {
|
|
12845
12845
|
trial_type: { type: "string", enum: ["time_limited", "feature_limited", "usage_limited", "reverse"], description: "How the trial is limited" },
|
|
12846
12846
|
duration_days: { type: "number", description: "Length of the trial period in days" },
|
|
12847
|
-
conversion_rate: { type: "number", description: "Percentage of trial users who convert to paid" }
|
|
12847
|
+
conversion_rate: { type: "number", description: "Percentage of trial users who convert to paid", modifier: "snapshot" }
|
|
12848
12848
|
},
|
|
12849
12849
|
// TutorialProperties: Tutorial.
|
|
12850
12850
|
tutorial: {
|
|
12851
12851
|
tutorial_format: { type: "string", enum: ["written", "video", "interactive", "code_along"], description: "Delivery format of the tutorial" },
|
|
12852
12852
|
difficulty: { type: "string", enum: ["beginner", "intermediate", "advanced"], description: "Skill level required to follow the tutorial" },
|
|
12853
12853
|
duration_minutes: { type: "number", description: "Estimated time to complete in minutes" },
|
|
12854
|
-
completion_rate: { type: "number", description: "Percentage of users who complete the tutorial" }
|
|
12854
|
+
completion_rate: { type: "number", description: "Percentage of users who complete the tutorial", modifier: "snapshot" }
|
|
12855
12855
|
},
|
|
12856
12856
|
// UnitEconomicsProperties: UnitEconomics.
|
|
12857
12857
|
unit_economics: {
|
|
@@ -12862,7 +12862,7 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
12862
12862
|
},
|
|
12863
12863
|
// UserAdvisoryBoardProperties: User advisory board.
|
|
12864
12864
|
user_advisory_board: {
|
|
12865
|
-
member_count: { type: "number", description: "Number of members on the board" },
|
|
12865
|
+
member_count: { type: "number", description: "Number of members on the board", modifier: "snapshot" },
|
|
12866
12866
|
meeting_cadence: { type: "string", enum: ["continuous", "hourly", "daily", "weekly", "monthly", "quarterly", "yearly", "on_demand", "other"], description: "How often the board meets. Uses the shared `Cadence` scale." },
|
|
12867
12867
|
board_focus: { type: "string", description: "Primary topic or area the board advises on" }
|
|
12868
12868
|
},
|
|
@@ -12944,9 +12944,9 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
12944
12944
|
// WalkthroughProperties: Product walkthrough.
|
|
12945
12945
|
walkthrough: {
|
|
12946
12946
|
walkthrough_type: { type: "string", enum: ["product_tour", "feature_intro", "tooltip_sequence", "checklist"], description: "Format of the in-product walkthrough" },
|
|
12947
|
-
step_count: { type: "number", description: "Number of steps in the walkthrough" },
|
|
12947
|
+
step_count: { type: "number", description: "Number of steps in the walkthrough", modifier: "derived" },
|
|
12948
12948
|
trigger: { type: "string", description: "User action or event that starts the walkthrough" },
|
|
12949
|
-
completion_rate: { type: "number", description: "Percentage of users who complete the walkthrough" }
|
|
12949
|
+
completion_rate: { type: "number", description: "Percentage of users who complete the walkthrough", modifier: "snapshot" }
|
|
12950
12950
|
},
|
|
12951
12951
|
// WebinarProperties: Webinar.
|
|
12952
12952
|
webinar: {
|
|
@@ -12999,7 +12999,7 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
12999
12999
|
purpose: { type: "string", description: "Free-text description. Pairs with the closed-enum `workspace_purpose`." },
|
|
13000
13000
|
workspace_purpose: { type: "string", enum: ["discovery", "planning", "retrospective", "design", "research", "strategy", "general"], description: "Closed-enum classifier. Drives template suggestions and surfaces in workspace browsers. `discovery` = persona/job/opportunity exploration. `planning` = roadmap and decision sessions. `retrospective` = reflection on shipped work. `design` = experience or UI exploration. `research` = organising study data and synthesis. `strategy` = high-level direction setting. `general` = catch-all." },
|
|
13001
13001
|
owner: { type: "string", description: "Workspace owner (handle or email). Display label; canonical owner is `team_owns_workspace` or `persona_owns_workspace`." },
|
|
13002
|
-
member_count: { type: "number", description: "Snapshot count. `team_works_in_workspace` edges are the source of truth." },
|
|
13002
|
+
member_count: { type: "number", description: "Snapshot count. `team_works_in_workspace` edges are the source of truth.", modifier: "derived" },
|
|
13003
13003
|
archived: { type: "boolean", description: "Archived. Archived workspaces remain queryable but hidden from default views." },
|
|
13004
13004
|
archived_at: { type: "string", description: "ISO timestamp archived. Pairs with `archived === true`." },
|
|
13005
13005
|
icon: { type: "string", description: "Display icon (emoji or icon name)" }
|
|
@@ -29320,7 +29320,7 @@ function isCanonical(text) {
|
|
|
29320
29320
|
}
|
|
29321
29321
|
|
|
29322
29322
|
// src/index.ts
|
|
29323
|
-
var UPG_VERSION = "0.13.
|
|
29323
|
+
var UPG_VERSION = "0.13.2";
|
|
29324
29324
|
var UPG_FORMAT_VERSION = "0.4.0";
|
|
29325
29325
|
var MARKDOWN_FORMAT_VERSION = "0.1";
|
|
29326
29326
|
var UPG_TYPES = getTypes();
|