Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
192 changes: 192 additions & 0 deletions .scout/evaluations/data-query-set.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,192 @@
description = "adobe/data search quality evaluation"

# ── Identifier queries ────────────────────────────────────────────────────────

[[queries]]
id = "ident-1"
query = "createPlugin"
class = "identifier"

[judgments.ident-1]
"packages/data/src/ecs/database/create-plugin.ts" = 3
"packages/data/src/ecs/database/create-plugin.type-test.ts" = 2
"packages/data/src/ecs/database/imports-chain.type-test.ts" = 1
"packages/data/src/ecs/database/combine-plugins.type-test.ts" = 1

[[queries]]
id = "ident-2"
query = "createStructBuffer"
class = "identifier"

[judgments.ident-2]
"packages/data/src/typed-buffer/create-struct-buffer.ts" = 3
"packages/data/src/typed-buffer/typed-buffer.ts" = 2
"packages/data-gpu/src/graphics/scene/scene-uniforms/scene-uniforms-plugin.ts" = 1

[[queries]]
id = "ident-3"
query = "getStructLayout"
class = "identifier"

[judgments.ident-3]
"packages/data/src/typed-buffer/structs/get-struct-layout.ts" = 3
"packages/data/src/typed-buffer/create-struct-buffer.ts" = 2
"packages/data/src/schema/to-vertex-buffer-layout.ts" = 1

[[queries]]
id = "ident-4"
query = "ColliderShape"
class = "identifier"

[judgments.ident-4]
"packages/data-gpu/src/physics/body/collider-shape/collider-shape.ts" = 3
"packages/data-gpu/src/physics/body/collider-shape/mass-properties.ts" = 2
"packages/data-gpu/src/physics/solvers/rapier-solver-plugin.ts" = 2
"packages/data-gpu/src/physics/body/collider-shape/list.ts" = 1

[[queries]]
id = "ident-5"
query = "AnimationTrack"
class = "identifier"

[judgments.ident-5]
"packages/data-gpu/src/graphics/animation/animation-track/animation-track.ts" = 3
"packages/data-gpu/src/graphics/animation/animation-data-plugin.ts" = 2
"packages/data-gpu/src/graphics/scene/model/gltf/parse-animations.ts" = 2
"packages/data-gpu/src/graphics/animation/animation-track/sample.ts" = 1

[[queries]]
id = "ident-6"
query = "BlobStore"
class = "identifier"

[judgments.ident-6]
"packages/data/src/cache/blob-store.ts" = 3
"packages/data/src/cache/data-cache.ts" = 2

[[queries]]
id = "ident-7"
query = "Database"
class = "identifier"

[judgments.ident-7]
"packages/data/src/ecs/database/database.ts" = 3
"packages/data/src/ecs/database/public/create-database.ts" = 2
"packages/data/src/ecs/database/create-plugin.ts" = 2

# ── Natural language queries ──────────────────────────────────────────────────

[[queries]]
id = "nl-1"
query = "ECS plugin system composition and database creation"
class = "natural_language"

[judgments.nl-1]
"packages/data/src/ecs/database/create-plugin.ts" = 3
"packages/data/src/ecs/database/database.ts" = 3
"packages/data/src/ecs/database/public/create-database.ts" = 2

[[queries]]
id = "nl-2"
query = "observe reactive stream subscription and notification"
class = "natural_language"

[judgments.nl-2]
"packages/data/src/observe/index.ts" = 3
"packages/data/src/observe/create-event.ts" = 2
"packages/data/src/ecs/database/public/observe-select-deep.ts" = 2
"packages/data/src/observe/with-filter.ts" = 1
"packages/data/src/ecs/database/observed/create-observed-database.ts" = 1

[[queries]]
id = "nl-3"
query = "archetype entity storage row migration dense packing"
class = "natural_language"

[judgments.nl-3]
"packages/data/src/ecs/archetype/archetype.ts" = 3
"packages/data/src/ecs/archetype/create-archetype.ts" = 3
"packages/data/src/ecs/archetype/delete-row.ts" = 2
"packages/data/src/ecs/entity-location-table/create-entity-location-table.ts" = 1

[[queries]]
id = "nl-4"
query = "physics rigid body collider simulation rapier"
class = "natural_language"

[judgments.nl-4]
"packages/data-gpu/src/physics/body/rigid-body.ts" = 3
"packages/data-gpu/src/physics/solvers/rapier-solver-plugin.ts" = 3
"packages/data-gpu/src/physics/body/collider-shape/collider-shape.ts" = 2
"packages/data-gpu/src/physics/body/collider-mesh.ts" = 2
"packages/data-gpu/src/physics/physics-data-plugin.ts" = 1

[[queries]]
id = "nl-5"
query = "persistence incremental checkpoint journal write backend"
class = "natural_language"

[judgments.nl-5]
"packages/data-persistence/src/backend/persistence-backend.ts" = 3
"packages/data-persistence/src/journal/journal-codec.ts" = 3
"packages/data-persistence/src/encoder/journal-snapshot-codec.ts" = 2
"packages/data-persistence/src/backend/memory-backend.ts" = 2
"packages/data-persistence/src/browser/opfs-backend.ts" = 1

[[queries]]
id = "nl-6"
query = "GLTF model loading parsing scene mesh"
class = "natural_language"

[judgments.nl-6]
"packages/data-gpu/src/graphics/scene/model/gltf/gltf-schema.ts" = 3
"packages/data-gpu/src/graphics/scene/model/gltf/load-gltf-model.ts" = 3
"packages/data-gpu/src/graphics/scene/model/gltf/parse-animations.ts" = 2
"packages/data-gpu/src/graphics/scene/model/gltf/compute-world-matrices.ts" = 2
"packages/data-gpu/src/graphics/scene/model/gltf/decode-images.ts" = 1
"packages/data-gpu/src/graphics/scene/model/gltf/build-material-bind-group.ts" = 1

# ── Filtered queries ──────────────────────────────────────────────────────────

[[queries]]
id = "filt-1"
query = "createPlugin"
class = "filtered"
paths = ["packages/data/src/ecs"]

[judgments.filt-1]
"packages/data/src/ecs/database/create-plugin.ts" = 3
"packages/data/src/ecs/database/combine-plugins.ts" = 2

[[queries]]
id = "filt-2"
query = "BlobStore"
class = "filtered"
paths = ["packages/data/src/cache"]

[judgments.filt-2]
"packages/data/src/cache/blob-store.ts" = 3
"packages/data/src/cache/data-cache.ts" = 2

[[queries]]
id = "filt-3"
query = "AnimationTrack"
class = "filtered"
paths = ["packages/data-gpu/src/graphics/animation"]

[judgments.filt-3]
"packages/data-gpu/src/graphics/animation/animation-track/animation-track.ts" = 3
"packages/data-gpu/src/graphics/animation/animation-data-plugin.ts" = 2
"packages/data-gpu/src/graphics/animation/animation-track/sample.ts" = 1

[[queries]]
id = "filt-4"
query = "PersistOp"
class = "filtered"
extensions = ["ts"]
paths = ["packages/data-persistence/src/transport"]

[judgments.filt-4]
"packages/data-persistence/src/transport/transport.ts" = 3
"packages/data-persistence/src/transport/router.ts" = 2
"packages/data-persistence/src/transport/inprocess-transport.ts" = 1
84 changes: 84 additions & 0 deletions .scout/scout.config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
ignore:
- '**/CHANGELOG.md'
- '**/CHANGELOG*'
- '**/CHANGES.md'
- '**/HISTORY.md'
- pnpm-lock.yaml
- '*.png'
- '*.jpg'
- aidd-custom/
- c/
dampen:
- factor: 0.3
patterns:
- '**/package.json'
- factor: 0.5
patterns:
- '**/*.test.ts'
- '**/*.spec.ts'
- factor: 0.5
patterns:
- packages/data-lit-tictactoe/
- packages/data-lit-todo/
- packages/data-p2p-tictactoe/
- packages/data-react-hello/
- packages/data-react-pixie/
- packages/data-solid-dashboard/
- packages/data-gpu-samples/
- factor: 0.5
patterns:
- packages/data/src/old-ecs/
- factor: 0.4
patterns:
- packages/data/src/assembly-test/
- packages/data/src/perftest/
- factor: 0.6
patterns:
- packages/data/references/
boost:
- factor: 1.3
patterns:
- packages/data/src/ecs/
- factor: 1.2
patterns:
- packages/data/src/observe/
- packages/data/src/typed-buffer/
- packages/data/src/schema/
- packages/data/src/math/
- packages/data-gpu/src/
- packages/data-persistence/src/
tune:
rerank_scale: 0.0
rerank_weight_nl: 0.4
rerank_weight_ident: 0.35
rerank_weight_filtered: 0.4
rerank_candidates_nl: 20
rerank_candidates_ident: 10
rerank_confidence_threshold: 0.6
rerank_floor: 0.3
rerank_evidence_budget_nl: 600
rerank_evidence_budget_ident: 800
rrf_semantic_weight_nl: 1.5
rrf_bm25_weight_nl: 0.5
rrf_semantic_weight_ident: 0.7
rrf_bm25_weight_ident: 1.3
prf_top_k: 10
prf_confidence_threshold: 0.75
bm25_legacy_mode: false
recency_weight_nl: 0.1
recency_weight_ident: 0.05
recency_midpoint_days: 30.0
coderank_weight_nl: 0.2
coderank_weight_ident: 0.1
coderank_midpoint: 0.3
symbol_popularity_weight_nl: 0.15
symbol_popularity_weight_ident: 0.15
symbol_popularity_midpoint: 0.3
learned_ranker_model_path: bundled:v16
learned_ranker_blend: 0.5
learned_ranker_calibrated_blend: false
learned_ranker_entry_blend: 0.0
capsule_lane_weight: 1.0
capsule_identifier_dampen: 0.85
search_plan_router: true
search_plan_router_mode: deterministic_prf_only
65 changes: 65 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,71 @@ Adobe Data Oriented Programming Library

Until we reach 1.0.0, minor version changes may be API breaking.

### 0.9.70

**`TransactionResult.ephemeral` → `TransactionResult.persistent` (inverted)**

The boolean is now `true` when at least one changed entity is persistent (id ≥ 0), rather than `true` when all changed entities are non-persistent.

```ts
// before
if (!result.ephemeral) save(result);
// after
if (result.persistent) save(result);
```

**`TransactionResult.transient` → `TransactionResult.intermediate`**

Renamed to remove the false antonym relationship with `persistent`. Both are orthogonal: `intermediate` = preview step (will be rolled back), `persistent` = touches saved entities.

```ts
// before
if (!result.transient && !result.ephemeral) save(result);
// after
if (!result.intermediate && result.persistent) save(result);
```

**`TransactionOptions.transient` → `TransactionOptions.intermediate`**

```ts
// before
db.execute(fn, { transient: true });
// after
db.execute(fn, { intermediate: true });
```

**`TransactionIntent "transient"` → `"intermediate"` (sync wire protocol)**

Affects `observe.envelopes` intent values and `ClientMessage` kind strings in `@adobe/data-sync`.

```ts
// before
db.observe.envelopes(({ intent }) => {
if (intent === "transient") { ... }
});
transport.send({ kind: "transient", envelope });
// after
db.observe.envelopes(({ intent }) => {
if (intent === "intermediate") { ... }
});
transport.send({ kind: "intermediate", envelope });
```

**`SyncServiceOptions.maxTransientsPerSecond` → `maxIntermediatesPerSecond`**

**`Schema.ephemeral` deprecated → use `Schema.nonPersistent`**

The `"ephemeral"` component string still works at runtime with a `console.warn`; update to `"nonPersistent"`.

```ts
// before
{ ..., ephemeral: true }
ensureArchetype(["id", "cursor", "ephemeral"])
// after
{ ..., nonPersistent: true }
ensureArchetype(["id", "cursor", "nonPersistent"])
```

## Data Oriented Programming

This library is built using a data oriented and functional programming paradigm.
Expand Down
16 changes: 8 additions & 8 deletions packages/data-gpu-samples/src/samples/boids/boids-service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -140,17 +140,17 @@ interface BoidGpu {
export const boidsPlugin = Database.Plugin.create({
extends: Database.Plugin.combine(graphics, SceneUniforms.plugin, Orbit.plugin),
resources: {
boidsCount: { default: DEFAULT_BOIDS as number, transient: true },
boidsGpu: { default: null as BoidGpu | null, transient: true },
boidsPingFrame: { default: 0 as number, transient: true },
boidsSceneBG: { default: null as GPUBindGroup | null, transient: true },
boidsSceneBuffer: { default: null as GPUBuffer | null, transient: true },
boidsCount: { default: DEFAULT_BOIDS as number, nonPersistent: true },
boidsGpu: { default: null as BoidGpu | null, nonPersistent: true },
boidsPingFrame: { default: 0 as number, nonPersistent: true },
boidsSceneBG: { default: null as GPUBindGroup | null, nonPersistent: true },
boidsSceneBuffer: { default: null as GPUBuffer | null, nonPersistent: true },
// Cursor scare ray. Origin is the camera eye; dir is the unit vector
// from the eye through the cursor toward the far plane. Boids near
// this line are pushed perpendicular to it.
boidsScareOrigin: { default: [0, 0, 0] as Vec3, transient: true },
boidsScareDir: { default: [0, 0, 1] as Vec3, transient: true },
boidsScareActive: { default: 0 as F32, transient: true },
boidsScareOrigin: { default: [0, 0, 0] as Vec3, nonPersistent: true },
boidsScareDir: { default: [0, 0, 1] as Vec3, nonPersistent: true },
boidsScareActive: { default: 0 as F32, nonPersistent: true },
},
transactions: {
setBoidsCount(t, count: number) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ const RENDER_COMPONENTS = ["position", "rotation", "halfExtents", "colliderShape
export const rigidStackDebugRender = Database.Plugin.create({
extends: Database.Plugin.combine(graphics, physicsData, SceneUniforms.plugin),
resources: {
rigidGpu: { default: null as RigidGpu | null, transient: true },
rigidGpu: { default: null as RigidGpu | null, nonPersistent: true },
},
systems: {
rigidRenderInit: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,10 +88,10 @@ const DROPS: Drop[] = (() => {
const rigidStackScene = Database.Plugin.create({
extends: Database.Plugin.combine(pbrRender, shapeGeometry, physicsRenderBridge, modelCollider, jointData, Orbit.plugin),
resources: {
_spawnAccum: { default: 0 as number, transient: true },
_spawnElapsed: { default: 0 as number, transient: true },
_spawnedDynamic: { default: 0 as number, transient: true },
_sweeper: { default: 0 as Entity, transient: true }, // the kinematic bar
_spawnAccum: { default: 0 as number, nonPersistent: true },
_spawnElapsed: { default: 0 as number, nonPersistent: true },
_spawnedDynamic: { default: 0 as number, nonPersistent: true },
_sweeper: { default: 0 as Entity, nonPersistent: true }, // the kinematic bar
},
transactions: {
initializeScene(t) {
Expand Down
Loading