forked from sagnik/Project_Velocity
feat: Oracle Canvas Component Schema and Qwen 3.6 integration (#31)
Co-authored-by: Sagnik <sagnik7896@gmail.com> Reviewed-on: sagnik/Project_Velocity#31
This commit is contained in:
209
.Agent Context/Oracle Canvas Codebook Production Truth.md
Normal file
209
.Agent Context/Oracle Canvas Codebook Production Truth.md
Normal file
@@ -0,0 +1,209 @@
|
||||
# Oracle Canvas Codebook Production Truth
|
||||
|
||||
Date: 2026-04-19
|
||||
Repo: `Project_Velocity`
|
||||
|
||||
## Purpose
|
||||
|
||||
This document freezes the current production truth for the Oracle Canvas template/codebook system, the expanded GPT and Claude corpora, the runtime merge policy, and the current rendering limits that matter for delivery.
|
||||
|
||||
This is not a concept note. It is the implementation-facing truth for the Oracle template layer as it exists now.
|
||||
|
||||
## Current Source Of Truth
|
||||
|
||||
The Oracle template book is split across three layers:
|
||||
|
||||
1. Structural database schema
|
||||
- `backend/oracle/schema_extension_v2.sql`
|
||||
- Defines:
|
||||
- `oracle_template_chapters`
|
||||
- `oracle_template_subchapters`
|
||||
- `oracle_template_seed_examples`
|
||||
- chapter/subchapter linkage on `oracle_component_templates`
|
||||
- `oracle_synthetic_generation_jobs`
|
||||
|
||||
2. Runtime seed DB
|
||||
- `backend/oracle/oracle_template_seed_db.json`
|
||||
- This is the lightweight fallback DB shipped with the runtime.
|
||||
- It is structurally correct but incomplete relative to the intended corpus.
|
||||
|
||||
3. Expanded authoring corpora
|
||||
- GPT pack:
|
||||
- `Project_Velocity/.Agent Context/Sprint 1/Sayan Multi-Surface and Oracle Delivery Pack/Sample JSON Schema/GPT 5.4/oracle_canvas_json_expansion_pack/db/oracle_template_seed_db_expanded_v1.pretty.json`
|
||||
- Claude pack:
|
||||
- `Project_Velocity/.Agent Context/Sprint 1/Sayan Multi-Surface and Oracle Delivery Pack/Sample JSON Schema/Claude Sonnet 4.6/oracle_template_expansion/oracle_template_seed_db_expanded.json`
|
||||
|
||||
4. Frozen runtime merge artifact
|
||||
- `backend/oracle/oracle_runtime_codebook_merged.json`
|
||||
- This is the deploy-safe merged corpus generated from the GPT and Claude packs.
|
||||
- Production should prefer this file over the authoring packs whenever it is present.
|
||||
|
||||
## Corpus Status
|
||||
|
||||
The expanded corpora are materially useful and production-relevant.
|
||||
|
||||
### GPT 5.4 pack
|
||||
|
||||
- Chapters: `6`
|
||||
- Subchapters: `24`
|
||||
- Seed examples: `1200`
|
||||
- Shape: already close to runtime needs
|
||||
- Key field for examples: `seed_examples`
|
||||
|
||||
### Claude Sonnet 4.6 pack
|
||||
|
||||
- Chapters: `6`
|
||||
- Subchapters: `24`
|
||||
- Examples: `1200`
|
||||
- Key field for examples: `examples`
|
||||
- Shape: close, but requires normalization into runtime form
|
||||
|
||||
### Runtime fallback pack
|
||||
|
||||
- Chapters: `6`
|
||||
- Subchapters: `24`
|
||||
- Seed examples declared in metadata: `36`
|
||||
- Seed examples physically present: lower than metadata
|
||||
- Useful only as a fallback, not as the primary production corpus
|
||||
|
||||
## Super Codebook Policy
|
||||
|
||||
The current runtime now treats the codebook as a merged corpus rather than a single-file static DB.
|
||||
|
||||
The merge policy is:
|
||||
|
||||
1. Load GPT pack first.
|
||||
2. Load Claude pack second.
|
||||
3. Load runtime fallback pack last.
|
||||
4. Normalize all example records to one runtime contract.
|
||||
5. Deduplicate by:
|
||||
- `subchapter_id`
|
||||
- `template_name`
|
||||
- `title`
|
||||
6. Prefer in this order:
|
||||
- GPT 5.4 examples
|
||||
- canonical examples
|
||||
- fallback records only when no richer example exists
|
||||
|
||||
This behavior is implemented in:
|
||||
|
||||
- `backend/oracle/codebook_service.py`
|
||||
- `backend/scripts/build_oracle_runtime_codebook.py`
|
||||
|
||||
That file is now the effective runtime “super codebook” layer.
|
||||
|
||||
The generated runtime artifact currently contains the merged deployable corpus and is suitable for Linux-box deployment without requiring `.Agent Context` lookups at request time.
|
||||
|
||||
## What The Runtime Actually Uses
|
||||
|
||||
The runtime no longer needs to rely on hardcoded template lists in the Oracle v1 router.
|
||||
|
||||
The codebook service now provides:
|
||||
|
||||
- merged corpus loading
|
||||
- search over both corpora
|
||||
- normalized template listing
|
||||
- best-match template synthesis from a user prompt
|
||||
|
||||
Primary runtime functions:
|
||||
|
||||
- `codebook_service.stats()`
|
||||
- `codebook_service.list_templates(...)`
|
||||
- `codebook_service.search_examples(prompt, limit=...)`
|
||||
- `codebook_service.synthesize_template(prompt, data_shapes=...)`
|
||||
|
||||
## Current Supported Runtime Output Families
|
||||
|
||||
The expanded corpora include more component types than the current frontend renderer supports directly.
|
||||
|
||||
The current production-safe strategy is:
|
||||
|
||||
1. keep the full codebook corpus
|
||||
2. map high-variety codebook component families into a smaller supported runtime renderer set
|
||||
3. let Oracle render reliably today instead of failing on unsupported component types
|
||||
|
||||
### Supported runtime renderers today
|
||||
|
||||
- `textCanvas`
|
||||
- `kpiTile`
|
||||
- `barChart`
|
||||
- `lineChart`
|
||||
- `geoMap`
|
||||
- `table`
|
||||
- `pipelineBoard`
|
||||
- `timeline`
|
||||
- `activityStream`
|
||||
- `errorNotice`
|
||||
|
||||
### Codebook-to-runtime normalization policy
|
||||
|
||||
Examples:
|
||||
|
||||
- `summary_card`, `summary_strip`, `metric_card_group`, `gauge_stack`
|
||||
- mapped to `kpiTile`
|
||||
- `lead_profile_card`, `property_card`, `data_table`, `leaderboard_table`, `matrix_grid`
|
||||
- mapped to `table`
|
||||
- `interaction_timeline`, `message_thread_summary`
|
||||
- mapped to `activityStream`
|
||||
- `heatmap`
|
||||
- mapped to `geoMap`
|
||||
|
||||
This is deliberate. It keeps the UI stable while preserving the larger design vocabulary inside the template book.
|
||||
|
||||
## What Is Production-Ready Now
|
||||
|
||||
- Oracle template DB schema exists.
|
||||
- Oracle template taxonomy APIs exist.
|
||||
- Expanded GPT and Claude corpora are available locally in the repo.
|
||||
- Runtime codebook merge and retrieval is implemented in `codebook_service.py`.
|
||||
- A frozen merged runtime codebook now exists at `backend/oracle/oracle_runtime_codebook_merged.json`.
|
||||
- Oracle v1 template listing/synthesis is being moved to the codebook-backed path.
|
||||
- Oracle backend can now emit `textCanvas` planning blocks and the frontend has a renderer for them.
|
||||
|
||||
## What Is Still Constrained
|
||||
|
||||
- The runtime is not yet rendering all 47+ component families natively.
|
||||
- The current system uses safe projection into supported runtime renderers.
|
||||
- The template taxonomy routes existed, but were incorrectly using `user.role` as `tenant_id`; that has been corrected toward a fixed Oracle tenant policy.
|
||||
- The lightweight fallback JSON DB remains incomplete and should not be treated as the main corpus.
|
||||
|
||||
## What Nemoclaw / Oracle Should Use For Retrieval
|
||||
|
||||
The correct order for Oracle prompt handling is:
|
||||
|
||||
1. Parse prompt.
|
||||
2. Retrieve matching codebook examples from the merged corpus.
|
||||
3. Build a safe retrieval plan against allowed DB datasets.
|
||||
4. Query live CRM/intelligence/inventory datasets.
|
||||
5. Build Oracle Canvas JSON with supported runtime component types.
|
||||
6. Append to the existing canvas.
|
||||
|
||||
The codebook is not the final UI payload by itself.
|
||||
|
||||
It is the reference layer that guides:
|
||||
|
||||
- component family selection
|
||||
- chapter/subchapter intent
|
||||
- layout direction
|
||||
- data-shape expectations
|
||||
- policy hints
|
||||
- backend contract hints
|
||||
|
||||
## Recommended Near-Term Hardening
|
||||
|
||||
1. Materialize a generated runtime codebook file if Linux deployment should not depend on `.Agent Context`.
|
||||
2. Add explicit metadata versioning to the merged corpus.
|
||||
3. Add a small admin endpoint for codebook stats and source summary.
|
||||
4. Expand renderer coverage incrementally rather than trying to support all component families at once.
|
||||
5. Add a batch offline export path if the team wants a frozen deploy artifact.
|
||||
|
||||
## Operator Bottom Line
|
||||
|
||||
The Oracle “book with chapters and JSON schema examples” is real and already useful.
|
||||
|
||||
The correct production interpretation is:
|
||||
|
||||
- DB schema and APIs are already present
|
||||
- GPT and Claude expansion packs are the real high-value corpus
|
||||
- `backend/oracle/codebook_service.py` is the runtime super-codebook layer
|
||||
- Oracle should retrieve from this merged corpus first, then query live DB data, then render supported JSON Canvas components
|
||||
@@ -0,0 +1,382 @@
|
||||
# Oracle Canvas Runtime and Ollama Batch Architecture
|
||||
|
||||
Date: 2026-04-19
|
||||
Repo: `Project_Velocity`
|
||||
|
||||
## Purpose
|
||||
|
||||
This document defines the current production Oracle Canvas runtime path, the intended Ollama/Nemoclaw model-routing strategy, and the target batch-processing API shape the team can use if Velocity exposes Oracle or coding-agent capabilities through the local model stack.
|
||||
|
||||
This is the operator and engineering artifact. It exists to remove ambiguity.
|
||||
|
||||
## Runtime Topology
|
||||
|
||||
### Linux origin box
|
||||
|
||||
Role:
|
||||
|
||||
- hosts Velocity frontend
|
||||
- hosts FastAPI backend
|
||||
- hosts PostgreSQL and application services
|
||||
- terminates app-origin requests under the public site path
|
||||
|
||||
Primary concern:
|
||||
|
||||
- application routing
|
||||
- auth/session enforcement
|
||||
- Oracle API execution
|
||||
- CRM/intelligence/inventory data access
|
||||
|
||||
### GPU box
|
||||
|
||||
Role:
|
||||
|
||||
- hosts ComfyUI
|
||||
- hosts heavy model runtime
|
||||
- hosts Ollama / Nemoclaw execution plane
|
||||
- stores runtime/model payloads on NVMe only
|
||||
|
||||
Primary concern:
|
||||
|
||||
- inference
|
||||
- media generation
|
||||
- model serving
|
||||
- agent runtime workloads
|
||||
|
||||
### Ingress
|
||||
|
||||
Role:
|
||||
|
||||
- stable public entry for GPU-backed services
|
||||
- hides raw GPU host details from application code
|
||||
|
||||
Non-negotiable rule:
|
||||
|
||||
- never wire Oracle or frontend code to a raw GPU public IP
|
||||
|
||||
## Oracle Canvas Current Execution Path
|
||||
|
||||
The production-safe Oracle path is now:
|
||||
|
||||
1. User submits prompt from Oracle Canvas frontend.
|
||||
2. Frontend calls:
|
||||
- `/api/oracle/v1/canvas-pages/{page_id}/prompts`
|
||||
3. FastAPI Oracle orchestrator:
|
||||
- loads user context
|
||||
- retrieves best codebook matches
|
||||
- builds a safe retrieval plan
|
||||
- queries approved datasets from PostgreSQL
|
||||
- produces JSON Canvas components
|
||||
- commits a page revision
|
||||
4. Frontend reloads/reconciles the canvas state and renders the new blocks.
|
||||
|
||||
## Current Oracle Backend Families
|
||||
|
||||
### Live today
|
||||
|
||||
- `/api/oracle/v1/me`
|
||||
- `/api/oracle/v1/canvas-pages/{page_id}`
|
||||
- `/api/oracle/v1/canvas-pages/{page_id}/prompts`
|
||||
- `/api/oracle/v1/canvas-pages/{page_id}/forks`
|
||||
- `/api/oracle/v1/canvas-pages/{page_id}/rollback`
|
||||
- `/api/oracle/v1/canvas-pages/{page_id}/revisions`
|
||||
- `/api/oracle/v1/component-templates`
|
||||
- `/api/oracle/v1/component-templates/synthesize`
|
||||
- `/api/oracle/v1/merge-requests`
|
||||
- `/api/oracle/v1/merge-requests/{mr_id}/review`
|
||||
- `/ws/oracle/canvas/{page_id}`
|
||||
|
||||
### Template taxonomy routes
|
||||
|
||||
- `/api/oracle/template-chapters`
|
||||
- `/api/oracle/template-subchapters`
|
||||
- `/api/oracle/component-templates`
|
||||
- `/api/oracle/component-templates/{id}`
|
||||
- `/api/oracle/component-templates/{id}/seed`
|
||||
- `/api/oracle/component-templates/synthetic-jobs`
|
||||
|
||||
## Prompt Analysis Path
|
||||
|
||||
Oracle should not rely on one monolithic LLM call.
|
||||
|
||||
The correct production split is:
|
||||
|
||||
1. codebook retrieval
|
||||
2. safe dataset selection
|
||||
3. optional LLM planning
|
||||
4. live DB fetch
|
||||
5. JSON Canvas synthesis
|
||||
6. revision commit
|
||||
|
||||
### Why this split is correct
|
||||
|
||||
- It reduces hallucination in UI structure.
|
||||
- It keeps DB access whitelisted and auditable.
|
||||
- It allows Oracle to keep working even when the LLM runtime is degraded.
|
||||
- It keeps the Oracle Canvas deterministic enough for operational use.
|
||||
|
||||
## Current Model Routing Truth
|
||||
|
||||
### Present reality
|
||||
|
||||
The current Oracle backend has these runtime modes:
|
||||
|
||||
- `codebook_retrieval`
|
||||
- preferred when the prompt clearly matches the Oracle template corpus
|
||||
- `nemoclaw_hosted`
|
||||
- used when `NEMOCLAW_API_URL` and `NEMOCLAW_API_KEY` are configured and reachable
|
||||
- `deterministic_fallback`
|
||||
- used when the LLM planner is unavailable
|
||||
|
||||
### What Nemoclaw currently means in code
|
||||
|
||||
Current dispatch abstraction:
|
||||
|
||||
- `backend/services/nemoclaw_runtime.py`
|
||||
|
||||
This file is still a light dispatch envelope, not a fully featured provider router.
|
||||
|
||||
### Recommended production provider stack
|
||||
|
||||
Provider order:
|
||||
|
||||
1. codebook retrieval layer
|
||||
2. Nemoclaw planner endpoint
|
||||
3. local Ollama fallback
|
||||
4. deterministic fallback
|
||||
|
||||
## Recommended Ollama Model Policy
|
||||
|
||||
### Default planning / Oracle analysis model
|
||||
|
||||
Use a local reasoning-capable model behind Ollama when Nemoclaw is not available or when the team wants deterministic private execution.
|
||||
|
||||
Recommended candidate:
|
||||
|
||||
- `qwen3.6:35b-a3b`
|
||||
|
||||
Reason:
|
||||
|
||||
- strong agentic coding and structured reasoning profile
|
||||
- local execution path through Ollama
|
||||
- realistic fit for GPU-box-hosted inference
|
||||
|
||||
### Deployment command
|
||||
|
||||
Example:
|
||||
|
||||
```bash
|
||||
ollama run qwen3.6:35b-a3b
|
||||
```
|
||||
|
||||
### Routing rule
|
||||
|
||||
- Oracle prompt planning:
|
||||
- small to medium prompts: local Ollama `qwen3.6:35b-a3b`
|
||||
- larger multi-step analytical plans: Nemoclaw planner if available
|
||||
- Coding-agent batch workloads:
|
||||
- Ollama first for local/private jobs
|
||||
- Nemoclaw for heavier orchestration when the runtime is healthy
|
||||
|
||||
## Runtime LLM API
|
||||
|
||||
The backend now exposes a first-class runtime LLM family:
|
||||
|
||||
- `GET /api/runtime/llm/providers`
|
||||
- `POST /api/runtime/llm/chat`
|
||||
- `POST /api/runtime/llm/batch`
|
||||
- `GET /api/runtime/llm/jobs/{job_id}`
|
||||
- `GET /api/runtime/llm/jobs/{job_id}/results`
|
||||
|
||||
This router is mounted in:
|
||||
|
||||
- `backend/api/routes_runtime_llm.py`
|
||||
|
||||
The current persistence path uses the existing canonical table:
|
||||
|
||||
- `workflow_agent_runs`
|
||||
|
||||
That means batch jobs are now persisted against the live Velocity schema without requiring a new table family before the first production rollout.
|
||||
|
||||
## Implemented Batch Processing API
|
||||
|
||||
This is no longer only a proposal. The following contract family exists now and can be used by Oracle or future coding-agent surfaces.
|
||||
|
||||
### Single request inference
|
||||
|
||||
- `POST /api/runtime/llm/chat`
|
||||
|
||||
Payload:
|
||||
|
||||
```json
|
||||
{
|
||||
"provider": "ollama",
|
||||
"model": "qwen3.6:35b-a3b",
|
||||
"system_prompt": "You are Oracle Planner.",
|
||||
"messages": [
|
||||
{ "role": "user", "content": "Build a CRM pipeline view for high-intent NRI buyers." }
|
||||
],
|
||||
"temperature": 0.2,
|
||||
"response_format": "json"
|
||||
}
|
||||
```
|
||||
|
||||
### Batch submission
|
||||
|
||||
- `POST /api/runtime/llm/batch`
|
||||
|
||||
Payload:
|
||||
|
||||
```json
|
||||
{
|
||||
"provider": "ollama",
|
||||
"model": "qwen3.6:35b-a3b",
|
||||
"job_type": "oracle_canvas_planning",
|
||||
"items": [
|
||||
{
|
||||
"request_id": "req_001",
|
||||
"messages": [
|
||||
{ "role": "user", "content": "Show overdue high-QD follow-ups." }
|
||||
],
|
||||
"response_format": "json"
|
||||
},
|
||||
{
|
||||
"request_id": "req_002",
|
||||
"messages": [
|
||||
{ "role": "user", "content": "Build a Kolkata luxury inventory comparison block." }
|
||||
],
|
||||
"response_format": "json"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### Batch status
|
||||
|
||||
- `GET /api/runtime/llm/jobs/{job_id}`
|
||||
|
||||
Response:
|
||||
|
||||
```json
|
||||
{
|
||||
"job_id": "job_123",
|
||||
"status": "running",
|
||||
"provider": "ollama",
|
||||
"model": "qwen3.6:35b-a3b",
|
||||
"submitted_count": 2,
|
||||
"completed_count": 1,
|
||||
"failed_count": 0
|
||||
}
|
||||
```
|
||||
|
||||
### Batch results
|
||||
|
||||
- `GET /api/runtime/llm/jobs/{job_id}/results`
|
||||
|
||||
### Providers inventory
|
||||
|
||||
- `GET /api/runtime/llm/providers`
|
||||
|
||||
Example response:
|
||||
|
||||
```json
|
||||
{
|
||||
"providers": [
|
||||
{
|
||||
"id": "nemoclaw",
|
||||
"status": "online",
|
||||
"models": ["nemotron", "remote_default"]
|
||||
},
|
||||
{
|
||||
"id": "ollama",
|
||||
"status": "online",
|
||||
"models": ["qwen3.6:35b-a3b"]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## Batch Processing Design Rules
|
||||
|
||||
1. Batch jobs must be persisted.
|
||||
2. Batch items must be individually addressable by `request_id`.
|
||||
3. Every batch job must record:
|
||||
- provider
|
||||
- model
|
||||
- submitted payload hash
|
||||
- start/end timestamps
|
||||
- failure reason
|
||||
4. Oracle must not block the main request thread for large batches.
|
||||
5. Any DB writeback generated from a batch must go through approval tables, not direct execution.
|
||||
|
||||
## Oracle-Specific Runtime Policy
|
||||
|
||||
For Oracle Canvas, the LLM is not the source of truth for data.
|
||||
|
||||
The source of truth order is:
|
||||
|
||||
1. canonical DB tables
|
||||
2. approved dataset projections
|
||||
3. codebook template corpus
|
||||
4. model planner
|
||||
|
||||
The model is only allowed to:
|
||||
|
||||
- classify intent
|
||||
- choose likely component families
|
||||
- propose layout direction
|
||||
- summarize findings
|
||||
|
||||
The model is not allowed to:
|
||||
|
||||
- invent database facts
|
||||
- bypass dataset allowlists
|
||||
- emit arbitrary executable code into production rendering paths
|
||||
|
||||
## Current Production Readiness Assessment
|
||||
|
||||
### Ready now
|
||||
|
||||
- Oracle Canvas frontend-to-backend v1 route family
|
||||
- codebook-backed template retrieval path
|
||||
- safe DB execution gateway
|
||||
- merge/fork/revision path
|
||||
- deterministic fallback path
|
||||
- runtime LLM provider inventory
|
||||
- runtime single-chat execution
|
||||
- runtime persisted batch execution through `workflow_agent_runs`
|
||||
- Oracle planner fallback through the shared runtime LLM service
|
||||
|
||||
### Still needs explicit implementation if the team approves
|
||||
|
||||
- per-model selection UI in Catalyst or Oracle controls
|
||||
- dedicated `runtime_llm_jobs` / `runtime_llm_job_items` tables if the team wants stronger audit/query ergonomics than `workflow_agent_runs`
|
||||
- explicit Nemoclaw vs Ollama operator switch in a production admin surface
|
||||
- richer provider health telemetry beyond simple reachability
|
||||
|
||||
## Recommended Next Build Steps
|
||||
|
||||
1. Add a dedicated runtime router:
|
||||
- `backend/api/routes_runtime_llm.py`
|
||||
2. Add DB tables:
|
||||
- `runtime_llm_jobs`
|
||||
- `runtime_llm_job_items`
|
||||
- `runtime_llm_job_results`
|
||||
3. Implement provider adapters:
|
||||
- Nemoclaw adapter
|
||||
- Ollama adapter
|
||||
4. Expose provider status to Catalyst/Oracle settings surfaces.
|
||||
5. Keep Oracle Canvas on the current codebook-first path even after LLM batching exists.
|
||||
|
||||
## Bottom Line
|
||||
|
||||
Oracle Canvas should be treated as a codebook-guided analytical surface with optional LLM planning, not as a raw chat-to-SQL toy.
|
||||
|
||||
The production-safe architecture is:
|
||||
|
||||
- Linux origin runs the application and DB access
|
||||
- GPU box runs ComfyUI and model inference
|
||||
- Oracle retrieves from the merged codebook first
|
||||
- DB access stays whitelisted
|
||||
- Nemoclaw and Ollama sit behind a documented provider interface
|
||||
- batch processing is a separate runtime service contract, not an implicit side effect of the canvas endpoint
|
||||
@@ -0,0 +1,225 @@
|
||||
# Oracle Template Seed DB — Expanded Examples v2.0
|
||||
|
||||
**Project:** Velocity — Multi-Surface Platform and Oracle Expansion
|
||||
**Date:** 2026-04-19
|
||||
**Owner:** Sayan (generated as part of Sprint 1 Oracle Template Taxonomy deliverable)
|
||||
**Depends on:** `schema_extension_v2.sql`, `oracle_template_seed_db.json` (v1.0 canonical seeds)
|
||||
**Total Examples:** 1,200 (50 per subchapter × 24 subchapters × 6 chapters)
|
||||
|
||||
---
|
||||
|
||||
## What This Is
|
||||
|
||||
This package expands the original 8-example Oracle Template Seed DB (`oracle_template_seed_db.json`) into a full 1,200-example corpus covering every subchapter in the Oracle template taxonomy. It is the implementation artifact for Sprint 1 deliverable **§2.4 — Oracle Template Taxonomy and Seed JSON Structure**.
|
||||
|
||||
Every example conforms to the established Velocity Oracle component contract shape. They are ready to be ingested into `oracle_template_seed_examples` via the `POST /api/oracle/component-templates/seed` route and consumed by Kimi Synthetic Data expansion jobs (`oracle_synthetic_generation_jobs`).
|
||||
|
||||
---
|
||||
|
||||
## File Layout
|
||||
|
||||
```
|
||||
oracle_template_expansion/
|
||||
│
|
||||
├── README.md ← This file
|
||||
├── oracle_template_seed_db_expanded.json ← Master combined file (all 1,200 examples)
|
||||
│
|
||||
├── sub-001-01_pricing_trends.json ← 50 examples
|
||||
├── sub-001-02_demand_signals.json ← 50 examples
|
||||
├── sub-001-03_competitive_landscape.json ← 50 examples
|
||||
├── sub-001-04_location_index.json ← 50 examples
|
||||
│
|
||||
├── sub-002-01_lead_profile.json ← 50 examples
|
||||
├── sub-002-02_qd_score.json ← 50 examples
|
||||
├── sub-002-03_pipeline_health.json ← 50 examples
|
||||
├── sub-002-04_engagement_history.json ← 50 examples
|
||||
│
|
||||
├── sub-003-01_call_summary.json ← 50 examples
|
||||
├── sub-003-02_promise_tracker.json ← 50 examples
|
||||
├── sub-003-03_whatsapp_thread.json ← 50 examples
|
||||
├── sub-003-04_reminder_surface.json ← 50 examples
|
||||
│
|
||||
├── sub-004-01_property_card.json ← 50 examples
|
||||
├── sub-004-02_availability_matrix.json ← 50 examples
|
||||
├── sub-004-03_absorption_rate.json ← 50 examples
|
||||
├── sub-004-04_inventory_comparison.json ← 50 examples
|
||||
│
|
||||
├── sub-005-01_showroom_traffic.json ← 50 examples
|
||||
├── sub-005-02_team_performance.json ← 50 examples
|
||||
├── sub-005-03_campaign_metrics.json ← 50 examples
|
||||
├── sub-005-04_system_health.json ← 50 examples
|
||||
│
|
||||
├── sub-006-01_calendar_view.json ← 50 examples
|
||||
├── sub-006-02_action_queue.json ← 50 examples
|
||||
├── sub-006-03_follow-up_plan.json ← 50 examples
|
||||
└── sub-006-04_reminder_cards.json ← 50 examples
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Chapter and Subchapter Map
|
||||
|
||||
| Chapter | Name | Subchapters | Examples |
|
||||
|---------|------|-------------|----------|
|
||||
| ch-001 | Market Intelligence | Pricing Trends, Demand Signals, Competitive Landscape, Location Index | 200 |
|
||||
| ch-002 | Lead Intelligence | Lead Profile, QD Score, Pipeline Health, Engagement History | 200 |
|
||||
| ch-003 | Communication Intelligence | Call Summary, Promise Tracker, WhatsApp Thread, Reminder Surface | 200 |
|
||||
| ch-004 | Inventory Analytics | Property Card, Availability Matrix, Absorption Rate, Inventory Comparison | 200 |
|
||||
| ch-005 | Operational Metrics | Showroom Traffic, Team Performance, Campaign Metrics, System Health | 200 |
|
||||
| ch-006 | Calendar and Follow-Up | Calendar View, Action Queue, Follow-Up Plan, Reminder Cards | 200 |
|
||||
| **Total** | | **24 subchapters** | **1,200** |
|
||||
|
||||
---
|
||||
|
||||
## Component Type Coverage
|
||||
|
||||
| componentType | Subchapters Used In | Approx Count |
|
||||
|---------------|---------------------|--------------|
|
||||
| `line_chart` | sub-001-01, sub-001-02, sub-004-03, sub-005-01, sub-005-02, sub-005-03 | ~120 |
|
||||
| `bar_chart` | sub-001-02, sub-001-03, sub-004-03, sub-005-01, sub-005-02, sub-005-03 | ~100 |
|
||||
| `area_chart` | sub-001-01, sub-004-03, sub-005-01 | ~45 |
|
||||
| `heatmap` | sub-001-04, sub-005-01 | ~40 |
|
||||
| `metric_card_group` | sub-002-02, sub-005-02, sub-005-03 | ~60 |
|
||||
| `data_table` | sub-003-02 | ~50 |
|
||||
| `property_card` | sub-004-01 | ~50 |
|
||||
| `lead_profile_card` | sub-002-01 | ~50 |
|
||||
| `communication_summary` | sub-003-01 | ~50 |
|
||||
| `whatsapp_thread_viewer` | sub-003-03 | ~50 |
|
||||
| `reminder_surface` | sub-003-04 | ~50 |
|
||||
| `compact_alert_card` | sub-006-04 | ~50 |
|
||||
| `action_queue` | sub-006-02 | ~50 |
|
||||
| `calendar_view` | sub-006-01 | ~50 |
|
||||
| `follow_up_plan` | sub-006-03 | ~50 |
|
||||
| `availability_matrix` | sub-004-02 | ~50 |
|
||||
| `inventory_comparison` | sub-004-04 | ~50 |
|
||||
| `system_health_panel` | sub-005-04 | ~50 |
|
||||
| `radar_chart`, `scatter_chart`, `funnel_chart`, others | various | ~135 |
|
||||
|
||||
---
|
||||
|
||||
## Example JSON Structure
|
||||
|
||||
Every example in every subchapter file follows this envelope:
|
||||
|
||||
```json
|
||||
{
|
||||
"example_id": "ex-0009",
|
||||
"chapter_id": "ch-001",
|
||||
"subchapter_id": "sub-001-01",
|
||||
"title": "Component title string",
|
||||
"quality_notes": "Human-readable note about this variant",
|
||||
"is_canonical": true,
|
||||
"template_name": "Subchapter Name — Template N",
|
||||
"component_type": "line_chart",
|
||||
"accepted_shapes": ["time_series"],
|
||||
"example_json": {
|
||||
"componentType": "line_chart",
|
||||
"title": "...",
|
||||
"subtitle": "...",
|
||||
"dataSource": { ... },
|
||||
"visualization": { ... },
|
||||
"style": { ... },
|
||||
"surfaceTargets": [ ... ]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
The first example in each subchapter (`is_canonical: true`) is the recommended reference template for that subchapter.
|
||||
|
||||
---
|
||||
|
||||
## Design Language Compliance
|
||||
|
||||
All examples follow the established Velocity Oracle design language:
|
||||
|
||||
**Color palette** — All `accentColor` values come from the 10-color Velocity token set:
|
||||
- `#2563EB` (primary blue), `#10B981` (emerald), `#F59E0B` (amber), `#EF4444` (red)
|
||||
- `#8B5CF6` (violet), `#0EA5E9` (sky), `#EC4899` (pink), `#14B8A6` (teal)
|
||||
- `#F97316` (orange), `#6366F1` (indigo)
|
||||
|
||||
**Semantic colors** — Status colors are fixed:
|
||||
- Healthy / positive: `#10B981`
|
||||
- Warning: `#F59E0B`
|
||||
- Critical / negative: `#EF4444`
|
||||
- Neutral / muted: `#94A3B8`
|
||||
|
||||
**Data source types** — Examples use only the contracted Oracle data source types:
|
||||
- `inventory_aggregate`, `inventory_property`, `inventory_multi_property`
|
||||
- `crm_lead`, `crm_aggregate`, `crm_engagement`, `crm_pipeline`, `crm_team_performance`
|
||||
- `sentinel_qd`, `sentinel_live`, `sentinel_historical`
|
||||
- `edge_communication_event`, `edge_memory_facts`
|
||||
- `user_calendar_events`, `insight_recommendations`
|
||||
- `nemoclaw_plan`, `catalyst_campaign`, `admin_health`, `competitive_intelligence`, `location_intelligence`
|
||||
|
||||
**Template variables** — Dynamic entity references use double-brace mustache syntax: `{{lead_id}}`, `{{property_id}}`, `{{agent_id}}`, `{{event_id}}`, `{{tenant_id}}`, `{{user_id}}`.
|
||||
|
||||
**Surface targets** — Every example declares `surfaceTargets` from the set: `webos`, `ipad`, `android_tablet`, `iphone_edge`, `android_phone_edge`.
|
||||
|
||||
---
|
||||
|
||||
## Permutation Logic
|
||||
|
||||
Each subchapter's 50 examples are generated by cycling through permutation combinations of:
|
||||
|
||||
- **District / developer / lead / agent names** — drawn from real Dubai market data (districts, developer names, nationality mix aligned to UAE CRM reality)
|
||||
- **Time windows** — `7D`, `14D`, `30D`, `60D`, `90D`, `6M`, `12M`, `24M`, `YTD`, `QTD`
|
||||
- **Chart types** — 4–6 types per subchapter appropriate to the data shape
|
||||
- **Grouping dimensions** — e.g. by agent, district, property type, nationality
|
||||
- **Layout variants** — e.g. `hero_with_stats`, `compact_card`, `list_row` for property cards
|
||||
- **Action sets** — e.g. `accept / dismiss / snooze_1h` vs `call_now / send_whatsapp / dismiss`
|
||||
- **Optional fields** — annotations, benchmarks, comparisons, sparklines toggled on/off across the 50
|
||||
|
||||
This means every subchapter has diverse examples covering different use cases while staying within the correct data contract for that component family.
|
||||
|
||||
---
|
||||
|
||||
## How to Ingest Into the Database
|
||||
|
||||
### Option 1 — Per-subchapter seed via Admin Surface
|
||||
|
||||
```bash
|
||||
POST /api/oracle/component-templates/seed
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"subchapter_id": "<uuid from oracle_template_subchapters>",
|
||||
"examples": [ ... ] # paste the "examples" array from the per-subchapter file
|
||||
}
|
||||
```
|
||||
|
||||
### Option 2 — Bulk ingest via Kimi Synthetic Job
|
||||
|
||||
The master file (`oracle_template_seed_db_expanded.json`) is the correct input for `oracle_synthetic_generation_jobs`. Insert a job row referencing the template and let the background worker distribute examples into `oracle_template_seed_examples`.
|
||||
|
||||
### Option 3 — Direct SQL seed (dev/staging only)
|
||||
|
||||
```sql
|
||||
INSERT INTO oracle_template_seed_examples
|
||||
(template_id, chapter_id, subchapter_id, title, example_json, quality_notes, is_canonical)
|
||||
VALUES
|
||||
(...);
|
||||
```
|
||||
|
||||
Map string chapter/subchapter IDs from the JSON against the UUID rows you insert via the migration in `schema_extension_v2.sql`.
|
||||
|
||||
---
|
||||
|
||||
## Known Caveats and Next Steps
|
||||
|
||||
- **`_meta.total_seed_examples` in v1 seed DB** — The original `oracle_template_seed_db.json` reports `36` in `_meta.total_seed_examples` but only contains 8 examples. This mismatch was noted in `delivery_log.md`. This expansion does not patch the v1 file; correct it separately before merging both corpora.
|
||||
|
||||
- **Kimi expansion** — These 1,200 examples are the **seed corpus**, not the synthetic expansion. Run `oracle_synthetic_generation_jobs` against published templates to generate the larger training/demo sets described in `KIMI_SYNTHETIC_DATA_DOWNSTREAM_PLAN.md`.
|
||||
|
||||
- **UUID mapping** — The `chapter_id` and `subchapter_id` fields in these files use the string keys from the v1 seed DB (`ch-001`, `sub-001-01`). Your migration script must map these to the PostgreSQL UUIDs inserted by `schema_extension_v2.sql`.
|
||||
|
||||
- **Template IDs** — `example_json.template_name` is a human label. Actual `template_id` UUIDs are assigned at ingestion time against `oracle_component_templates`.
|
||||
|
||||
---
|
||||
|
||||
## Generation Script
|
||||
|
||||
The generator script is included at `generate_examples.py` in the repo root (outside this zip). It is reproducible — re-running it with the same seed logic will produce the same 1,200 examples.
|
||||
|
||||
---
|
||||
|
||||
*Generated by Project Velocity platform tooling · 2026-04-19*
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,82 @@
|
||||
# Oracle Canvas JSON Expansion Pack
|
||||
|
||||
This pack expands the current Oracle template seed library into a reviewable example set with **50 examples per subchapter** across all **24 subchapters**.
|
||||
|
||||
## What is inside
|
||||
|
||||
- `db/oracle_template_seed_db_expanded_v1.pretty.json`
|
||||
Full expanded master DB with chapter taxonomy and all **1200** examples.
|
||||
|
||||
- `db/oracle_template_seed_db_expanded_v1.min.json`
|
||||
Minified version of the same master DB.
|
||||
|
||||
- `examples/`
|
||||
Chapter-by-chapter split files. Each subchapter file contains exactly **50** examples.
|
||||
|
||||
- `manifests/template_family_catalog.json`
|
||||
Component families, accepted shapes, policy tags, and backend hints per subchapter.
|
||||
|
||||
- `manifests/subchapter_index.json`
|
||||
Index of all generated files.
|
||||
|
||||
- `manifests/validation_report.json`
|
||||
Validation summary for counts and ID uniqueness.
|
||||
|
||||
- `csv/subchapter_example_counts.csv`
|
||||
Spreadsheet-friendly count manifest.
|
||||
|
||||
## Source alignment
|
||||
|
||||
This pack was generated against the current repo direction and constraints:
|
||||
|
||||
- FastAPI backend remains canonical.
|
||||
- Oracle remains the analytical center.
|
||||
- Mobile edge surfaces remain narrow, bounded control surfaces.
|
||||
- Communication intelligence examples stay inside supported channels and provenance-aware capture modes.
|
||||
- Admin examples only model bounded and auditable actions.
|
||||
- The expanded examples follow the live-data-first / no-mock direction from the delivery log.
|
||||
|
||||
## Important correction carried forward
|
||||
|
||||
The source seed DB metadata currently reports `total_seed_examples: 36`, but the source file actually contains **8** canonical seed examples.
|
||||
This expansion pack corrects the count in its own metadata and preserves the existing canonical examples inside the 50-example-per-subchapter allocation wherever they already existed.
|
||||
|
||||
## Design language used
|
||||
|
||||
Common policy tags applied through the pack:
|
||||
|
||||
- `backend_owned`
|
||||
- `live_data_first`
|
||||
- `no_mock_fallback`
|
||||
- `surface_safe`
|
||||
|
||||
Additional policy tags appear per subchapter where relevant, including:
|
||||
|
||||
- `supported_channel_only`
|
||||
- `provider_provenance_required`
|
||||
- `bounded_admin_actions`
|
||||
- `confirmation_required_for_writeback`
|
||||
- `business_whatsapp_scope`
|
||||
- `nemoclaw_suggested`
|
||||
|
||||
## Notes on IDs
|
||||
|
||||
The source taxonomy uses symbolic IDs such as `ch-001` and `sub-001-01`.
|
||||
This pack preserves those symbolic IDs for review and lineage consistency.
|
||||
|
||||
Generated example IDs use deterministic `exg-*` identifiers. Existing canonical example IDs from the source file are preserved.
|
||||
|
||||
## Suggested use
|
||||
|
||||
1. Review examples subchapter-by-subchapter from `examples/`.
|
||||
2. Use `template_family_catalog.json` to decide which component families should become formal reusable templates.
|
||||
3. Use the master DB JSON once you are ready to merge the chosen examples into the Oracle seed library.
|
||||
4. Keep the metadata notes about symbolic taxonomy IDs in mind when preparing any DB import step against UUID-backed SQL tables.
|
||||
|
||||
## Counts
|
||||
|
||||
- Chapters: 6
|
||||
- Subchapters: 24
|
||||
- Total examples: 1200
|
||||
- Canonical carried forward: 8
|
||||
- Generated additions: 1192
|
||||
@@ -0,0 +1,25 @@
|
||||
chapter_id,chapter_name,subchapter_id,subchapter_name,example_count,file
|
||||
ch-001,Market Intelligence,sub-001-01,Pricing Trends,50,examples/ch-001_market-intelligence/sub-001-01_pricing-trends.json
|
||||
ch-001,Market Intelligence,sub-001-02,Demand Signals,50,examples/ch-001_market-intelligence/sub-001-02_demand-signals.json
|
||||
ch-001,Market Intelligence,sub-001-03,Competitive Landscape,50,examples/ch-001_market-intelligence/sub-001-03_competitive-landscape.json
|
||||
ch-001,Market Intelligence,sub-001-04,Location Index,50,examples/ch-001_market-intelligence/sub-001-04_location-index.json
|
||||
ch-002,Lead Intelligence,sub-002-01,Lead Profile,50,examples/ch-002_lead-intelligence/sub-002-01_lead-profile.json
|
||||
ch-002,Lead Intelligence,sub-002-02,QD Score,50,examples/ch-002_lead-intelligence/sub-002-02_qd-score.json
|
||||
ch-002,Lead Intelligence,sub-002-03,Pipeline Health,50,examples/ch-002_lead-intelligence/sub-002-03_pipeline-health.json
|
||||
ch-002,Lead Intelligence,sub-002-04,Engagement History,50,examples/ch-002_lead-intelligence/sub-002-04_engagement-history.json
|
||||
ch-003,Communication Intelligence,sub-003-01,Call Summary,50,examples/ch-003_communication-intelligence/sub-003-01_call-summary.json
|
||||
ch-003,Communication Intelligence,sub-003-02,Promise Tracker,50,examples/ch-003_communication-intelligence/sub-003-02_promise-tracker.json
|
||||
ch-003,Communication Intelligence,sub-003-03,WhatsApp Thread,50,examples/ch-003_communication-intelligence/sub-003-03_whatsapp-thread.json
|
||||
ch-003,Communication Intelligence,sub-003-04,Reminder Surface,50,examples/ch-003_communication-intelligence/sub-003-04_reminder-surface.json
|
||||
ch-004,Inventory Analytics,sub-004-01,Property Card,50,examples/ch-004_inventory-analytics/sub-004-01_property-card.json
|
||||
ch-004,Inventory Analytics,sub-004-02,Availability Matrix,50,examples/ch-004_inventory-analytics/sub-004-02_availability-matrix.json
|
||||
ch-004,Inventory Analytics,sub-004-03,Absorption Rate,50,examples/ch-004_inventory-analytics/sub-004-03_absorption-rate.json
|
||||
ch-004,Inventory Analytics,sub-004-04,Inventory Comparison,50,examples/ch-004_inventory-analytics/sub-004-04_inventory-comparison.json
|
||||
ch-005,Operational Metrics,sub-005-01,Showroom Traffic,50,examples/ch-005_operational-metrics/sub-005-01_showroom-traffic.json
|
||||
ch-005,Operational Metrics,sub-005-02,Team Performance,50,examples/ch-005_operational-metrics/sub-005-02_team-performance.json
|
||||
ch-005,Operational Metrics,sub-005-03,Campaign Metrics,50,examples/ch-005_operational-metrics/sub-005-03_campaign-metrics.json
|
||||
ch-005,Operational Metrics,sub-005-04,System Health,50,examples/ch-005_operational-metrics/sub-005-04_system-health.json
|
||||
ch-006,Calendar and Follow-Up,sub-006-01,Calendar View,50,examples/ch-006_calendar-and-follow-up/sub-006-01_calendar-view.json
|
||||
ch-006,Calendar and Follow-Up,sub-006-02,Action Queue,50,examples/ch-006_calendar-and-follow-up/sub-006-02_action-queue.json
|
||||
ch-006,Calendar and Follow-Up,sub-006-03,Follow-Up Plan,50,examples/ch-006_calendar-and-follow-up/sub-006-03_follow-up-plan.json
|
||||
ch-006,Calendar and Follow-Up,sub-006-04,Reminder Cards,50,examples/ch-006_calendar-and-follow-up/sub-006-04_reminder-cards.json
|
||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,194 @@
|
||||
[
|
||||
{
|
||||
"chapter_id": "ch-001",
|
||||
"chapter_name": "Market Intelligence",
|
||||
"subchapter_id": "sub-001-01",
|
||||
"subchapter_name": "Pricing Trends",
|
||||
"example_count": 50,
|
||||
"file": "examples/ch-001_market-intelligence/sub-001-01_pricing-trends.json"
|
||||
},
|
||||
{
|
||||
"chapter_id": "ch-001",
|
||||
"chapter_name": "Market Intelligence",
|
||||
"subchapter_id": "sub-001-02",
|
||||
"subchapter_name": "Demand Signals",
|
||||
"example_count": 50,
|
||||
"file": "examples/ch-001_market-intelligence/sub-001-02_demand-signals.json"
|
||||
},
|
||||
{
|
||||
"chapter_id": "ch-001",
|
||||
"chapter_name": "Market Intelligence",
|
||||
"subchapter_id": "sub-001-03",
|
||||
"subchapter_name": "Competitive Landscape",
|
||||
"example_count": 50,
|
||||
"file": "examples/ch-001_market-intelligence/sub-001-03_competitive-landscape.json"
|
||||
},
|
||||
{
|
||||
"chapter_id": "ch-001",
|
||||
"chapter_name": "Market Intelligence",
|
||||
"subchapter_id": "sub-001-04",
|
||||
"subchapter_name": "Location Index",
|
||||
"example_count": 50,
|
||||
"file": "examples/ch-001_market-intelligence/sub-001-04_location-index.json"
|
||||
},
|
||||
{
|
||||
"chapter_id": "ch-002",
|
||||
"chapter_name": "Lead Intelligence",
|
||||
"subchapter_id": "sub-002-01",
|
||||
"subchapter_name": "Lead Profile",
|
||||
"example_count": 50,
|
||||
"file": "examples/ch-002_lead-intelligence/sub-002-01_lead-profile.json"
|
||||
},
|
||||
{
|
||||
"chapter_id": "ch-002",
|
||||
"chapter_name": "Lead Intelligence",
|
||||
"subchapter_id": "sub-002-02",
|
||||
"subchapter_name": "QD Score",
|
||||
"example_count": 50,
|
||||
"file": "examples/ch-002_lead-intelligence/sub-002-02_qd-score.json"
|
||||
},
|
||||
{
|
||||
"chapter_id": "ch-002",
|
||||
"chapter_name": "Lead Intelligence",
|
||||
"subchapter_id": "sub-002-03",
|
||||
"subchapter_name": "Pipeline Health",
|
||||
"example_count": 50,
|
||||
"file": "examples/ch-002_lead-intelligence/sub-002-03_pipeline-health.json"
|
||||
},
|
||||
{
|
||||
"chapter_id": "ch-002",
|
||||
"chapter_name": "Lead Intelligence",
|
||||
"subchapter_id": "sub-002-04",
|
||||
"subchapter_name": "Engagement History",
|
||||
"example_count": 50,
|
||||
"file": "examples/ch-002_lead-intelligence/sub-002-04_engagement-history.json"
|
||||
},
|
||||
{
|
||||
"chapter_id": "ch-003",
|
||||
"chapter_name": "Communication Intelligence",
|
||||
"subchapter_id": "sub-003-01",
|
||||
"subchapter_name": "Call Summary",
|
||||
"example_count": 50,
|
||||
"file": "examples/ch-003_communication-intelligence/sub-003-01_call-summary.json"
|
||||
},
|
||||
{
|
||||
"chapter_id": "ch-003",
|
||||
"chapter_name": "Communication Intelligence",
|
||||
"subchapter_id": "sub-003-02",
|
||||
"subchapter_name": "Promise Tracker",
|
||||
"example_count": 50,
|
||||
"file": "examples/ch-003_communication-intelligence/sub-003-02_promise-tracker.json"
|
||||
},
|
||||
{
|
||||
"chapter_id": "ch-003",
|
||||
"chapter_name": "Communication Intelligence",
|
||||
"subchapter_id": "sub-003-03",
|
||||
"subchapter_name": "WhatsApp Thread",
|
||||
"example_count": 50,
|
||||
"file": "examples/ch-003_communication-intelligence/sub-003-03_whatsapp-thread.json"
|
||||
},
|
||||
{
|
||||
"chapter_id": "ch-003",
|
||||
"chapter_name": "Communication Intelligence",
|
||||
"subchapter_id": "sub-003-04",
|
||||
"subchapter_name": "Reminder Surface",
|
||||
"example_count": 50,
|
||||
"file": "examples/ch-003_communication-intelligence/sub-003-04_reminder-surface.json"
|
||||
},
|
||||
{
|
||||
"chapter_id": "ch-004",
|
||||
"chapter_name": "Inventory Analytics",
|
||||
"subchapter_id": "sub-004-01",
|
||||
"subchapter_name": "Property Card",
|
||||
"example_count": 50,
|
||||
"file": "examples/ch-004_inventory-analytics/sub-004-01_property-card.json"
|
||||
},
|
||||
{
|
||||
"chapter_id": "ch-004",
|
||||
"chapter_name": "Inventory Analytics",
|
||||
"subchapter_id": "sub-004-02",
|
||||
"subchapter_name": "Availability Matrix",
|
||||
"example_count": 50,
|
||||
"file": "examples/ch-004_inventory-analytics/sub-004-02_availability-matrix.json"
|
||||
},
|
||||
{
|
||||
"chapter_id": "ch-004",
|
||||
"chapter_name": "Inventory Analytics",
|
||||
"subchapter_id": "sub-004-03",
|
||||
"subchapter_name": "Absorption Rate",
|
||||
"example_count": 50,
|
||||
"file": "examples/ch-004_inventory-analytics/sub-004-03_absorption-rate.json"
|
||||
},
|
||||
{
|
||||
"chapter_id": "ch-004",
|
||||
"chapter_name": "Inventory Analytics",
|
||||
"subchapter_id": "sub-004-04",
|
||||
"subchapter_name": "Inventory Comparison",
|
||||
"example_count": 50,
|
||||
"file": "examples/ch-004_inventory-analytics/sub-004-04_inventory-comparison.json"
|
||||
},
|
||||
{
|
||||
"chapter_id": "ch-005",
|
||||
"chapter_name": "Operational Metrics",
|
||||
"subchapter_id": "sub-005-01",
|
||||
"subchapter_name": "Showroom Traffic",
|
||||
"example_count": 50,
|
||||
"file": "examples/ch-005_operational-metrics/sub-005-01_showroom-traffic.json"
|
||||
},
|
||||
{
|
||||
"chapter_id": "ch-005",
|
||||
"chapter_name": "Operational Metrics",
|
||||
"subchapter_id": "sub-005-02",
|
||||
"subchapter_name": "Team Performance",
|
||||
"example_count": 50,
|
||||
"file": "examples/ch-005_operational-metrics/sub-005-02_team-performance.json"
|
||||
},
|
||||
{
|
||||
"chapter_id": "ch-005",
|
||||
"chapter_name": "Operational Metrics",
|
||||
"subchapter_id": "sub-005-03",
|
||||
"subchapter_name": "Campaign Metrics",
|
||||
"example_count": 50,
|
||||
"file": "examples/ch-005_operational-metrics/sub-005-03_campaign-metrics.json"
|
||||
},
|
||||
{
|
||||
"chapter_id": "ch-005",
|
||||
"chapter_name": "Operational Metrics",
|
||||
"subchapter_id": "sub-005-04",
|
||||
"subchapter_name": "System Health",
|
||||
"example_count": 50,
|
||||
"file": "examples/ch-005_operational-metrics/sub-005-04_system-health.json"
|
||||
},
|
||||
{
|
||||
"chapter_id": "ch-006",
|
||||
"chapter_name": "Calendar and Follow-Up",
|
||||
"subchapter_id": "sub-006-01",
|
||||
"subchapter_name": "Calendar View",
|
||||
"example_count": 50,
|
||||
"file": "examples/ch-006_calendar-and-follow-up/sub-006-01_calendar-view.json"
|
||||
},
|
||||
{
|
||||
"chapter_id": "ch-006",
|
||||
"chapter_name": "Calendar and Follow-Up",
|
||||
"subchapter_id": "sub-006-02",
|
||||
"subchapter_name": "Action Queue",
|
||||
"example_count": 50,
|
||||
"file": "examples/ch-006_calendar-and-follow-up/sub-006-02_action-queue.json"
|
||||
},
|
||||
{
|
||||
"chapter_id": "ch-006",
|
||||
"chapter_name": "Calendar and Follow-Up",
|
||||
"subchapter_id": "sub-006-03",
|
||||
"subchapter_name": "Follow-Up Plan",
|
||||
"example_count": 50,
|
||||
"file": "examples/ch-006_calendar-and-follow-up/sub-006-03_follow-up-plan.json"
|
||||
},
|
||||
{
|
||||
"chapter_id": "ch-006",
|
||||
"chapter_name": "Calendar and Follow-Up",
|
||||
"subchapter_id": "sub-006-04",
|
||||
"subchapter_name": "Reminder Cards",
|
||||
"example_count": 50,
|
||||
"file": "examples/ch-006_calendar-and-follow-up/sub-006-04_reminder-cards.json"
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,931 @@
|
||||
[
|
||||
{
|
||||
"chapter_id": "ch-001",
|
||||
"chapter_name": "Market Intelligence",
|
||||
"subchapter_id": "sub-001-01",
|
||||
"subchapter_name": "Pricing Trends",
|
||||
"component_types": [
|
||||
"area_chart",
|
||||
"benchmark_band_chart",
|
||||
"dual_axis_chart",
|
||||
"line_chart",
|
||||
"sparkline_metric"
|
||||
],
|
||||
"accepted_shapes": [
|
||||
"comparative_time_series",
|
||||
"district_benchmark",
|
||||
"dual_metric_time_series",
|
||||
"segment_snapshot",
|
||||
"time_series"
|
||||
],
|
||||
"surface_targets": [
|
||||
"webos",
|
||||
"ipad",
|
||||
"android_tablet"
|
||||
],
|
||||
"policy_tags": [
|
||||
"backend_owned",
|
||||
"live_data_first",
|
||||
"no_mock_fallback",
|
||||
"surface_safe"
|
||||
],
|
||||
"route_family": "oracle",
|
||||
"primary_tables": [
|
||||
"oracle_component_templates",
|
||||
"inventory_properties"
|
||||
]
|
||||
},
|
||||
{
|
||||
"chapter_id": "ch-001",
|
||||
"chapter_name": "Market Intelligence",
|
||||
"subchapter_id": "sub-001-02",
|
||||
"subchapter_name": "Demand Signals",
|
||||
"component_types": [
|
||||
"bar_chart",
|
||||
"funnel_chart",
|
||||
"heatmap",
|
||||
"line_chart",
|
||||
"metric_card_group"
|
||||
],
|
||||
"accepted_shapes": [
|
||||
"categorical_count",
|
||||
"conversion_funnel",
|
||||
"demand_snapshot",
|
||||
"intent_time_series",
|
||||
"zone_time_matrix"
|
||||
],
|
||||
"surface_targets": [
|
||||
"webos",
|
||||
"ipad",
|
||||
"android_tablet"
|
||||
],
|
||||
"policy_tags": [
|
||||
"backend_owned",
|
||||
"live_data_first",
|
||||
"no_mock_fallback",
|
||||
"surface_safe"
|
||||
],
|
||||
"route_family": "oracle",
|
||||
"primary_tables": [
|
||||
"oracle_component_templates",
|
||||
"inventory_properties"
|
||||
]
|
||||
},
|
||||
{
|
||||
"chapter_id": "ch-001",
|
||||
"chapter_name": "Market Intelligence",
|
||||
"subchapter_id": "sub-001-03",
|
||||
"subchapter_name": "Competitive Landscape",
|
||||
"component_types": [
|
||||
"bar_chart",
|
||||
"comparison_table",
|
||||
"grouped_bar_chart",
|
||||
"matrix_grid",
|
||||
"scorecard_panel"
|
||||
],
|
||||
"accepted_shapes": [
|
||||
"competitive_matrix",
|
||||
"competitive_scorecard",
|
||||
"developer_benchmark",
|
||||
"developer_pipeline",
|
||||
"unit_mix_distribution"
|
||||
],
|
||||
"surface_targets": [
|
||||
"webos",
|
||||
"ipad",
|
||||
"android_tablet"
|
||||
],
|
||||
"policy_tags": [
|
||||
"backend_owned",
|
||||
"live_data_first",
|
||||
"no_mock_fallback",
|
||||
"surface_safe"
|
||||
],
|
||||
"route_family": "oracle",
|
||||
"primary_tables": [
|
||||
"oracle_component_templates",
|
||||
"inventory_properties"
|
||||
]
|
||||
},
|
||||
{
|
||||
"chapter_id": "ch-001",
|
||||
"chapter_name": "Market Intelligence",
|
||||
"subchapter_id": "sub-001-04",
|
||||
"subchapter_name": "Location Index",
|
||||
"component_types": [
|
||||
"data_table",
|
||||
"map_score_card",
|
||||
"radar_chart",
|
||||
"scorecard_panel",
|
||||
"timeline_chart"
|
||||
],
|
||||
"accepted_shapes": [
|
||||
"district_ranking",
|
||||
"infrastructure_readiness",
|
||||
"location_index",
|
||||
"location_map_summary",
|
||||
"proximity_profile"
|
||||
],
|
||||
"surface_targets": [
|
||||
"webos",
|
||||
"ipad",
|
||||
"android_tablet"
|
||||
],
|
||||
"policy_tags": [
|
||||
"backend_owned",
|
||||
"live_data_first",
|
||||
"no_mock_fallback",
|
||||
"surface_safe"
|
||||
],
|
||||
"route_family": "oracle",
|
||||
"primary_tables": [
|
||||
"oracle_component_templates",
|
||||
"inventory_properties"
|
||||
]
|
||||
},
|
||||
{
|
||||
"chapter_id": "ch-002",
|
||||
"chapter_name": "Lead Intelligence",
|
||||
"subchapter_id": "sub-002-01",
|
||||
"subchapter_name": "Lead Profile",
|
||||
"component_types": [
|
||||
"affinity_card",
|
||||
"cluster_card",
|
||||
"lead_profile_card",
|
||||
"metric_card_group",
|
||||
"summary_strip"
|
||||
],
|
||||
"accepted_shapes": [
|
||||
"district_affinity",
|
||||
"lead_preferences",
|
||||
"lead_profile",
|
||||
"lead_summary",
|
||||
"persona_cluster"
|
||||
],
|
||||
"surface_targets": [
|
||||
"webos",
|
||||
"ipad",
|
||||
"android_tablet",
|
||||
"iphone_edge",
|
||||
"android_phone_edge"
|
||||
],
|
||||
"policy_tags": [
|
||||
"backend_owned",
|
||||
"live_data_first",
|
||||
"no_mock_fallback",
|
||||
"surface_safe"
|
||||
],
|
||||
"route_family": "crm",
|
||||
"primary_tables": [
|
||||
"leads",
|
||||
"sentinel_scores"
|
||||
]
|
||||
},
|
||||
{
|
||||
"chapter_id": "ch-002",
|
||||
"chapter_name": "Lead Intelligence",
|
||||
"subchapter_id": "sub-002-02",
|
||||
"subchapter_name": "QD Score",
|
||||
"component_types": [
|
||||
"bar_chart",
|
||||
"gauge_stack",
|
||||
"line_chart",
|
||||
"matrix_grid",
|
||||
"metric_card_group"
|
||||
],
|
||||
"accepted_shapes": [
|
||||
"qd_matrix",
|
||||
"qd_peer_benchmark",
|
||||
"qd_score_breakdown",
|
||||
"qd_snapshot",
|
||||
"qd_trend"
|
||||
],
|
||||
"surface_targets": [
|
||||
"webos",
|
||||
"ipad",
|
||||
"android_tablet",
|
||||
"iphone_edge",
|
||||
"android_phone_edge"
|
||||
],
|
||||
"policy_tags": [
|
||||
"backend_owned",
|
||||
"live_data_first",
|
||||
"no_mock_fallback",
|
||||
"surface_safe"
|
||||
],
|
||||
"route_family": "crm",
|
||||
"primary_tables": [
|
||||
"leads",
|
||||
"sentinel_scores"
|
||||
]
|
||||
},
|
||||
{
|
||||
"chapter_id": "ch-002",
|
||||
"chapter_name": "Lead Intelligence",
|
||||
"subchapter_id": "sub-002-03",
|
||||
"subchapter_name": "Pipeline Health",
|
||||
"component_types": [
|
||||
"data_table",
|
||||
"funnel_chart",
|
||||
"heatmap",
|
||||
"metric_card_group",
|
||||
"stacked_bar_chart"
|
||||
],
|
||||
"accepted_shapes": [
|
||||
"pipeline_distribution",
|
||||
"pipeline_forecast",
|
||||
"pipeline_probability_matrix",
|
||||
"pipeline_stalls",
|
||||
"pipeline_velocity"
|
||||
],
|
||||
"surface_targets": [
|
||||
"webos",
|
||||
"ipad",
|
||||
"android_tablet"
|
||||
],
|
||||
"policy_tags": [
|
||||
"backend_owned",
|
||||
"live_data_first",
|
||||
"no_mock_fallback",
|
||||
"surface_safe"
|
||||
],
|
||||
"route_family": "crm",
|
||||
"primary_tables": [
|
||||
"leads",
|
||||
"sentinel_scores"
|
||||
]
|
||||
},
|
||||
{
|
||||
"chapter_id": "ch-002",
|
||||
"chapter_name": "Lead Intelligence",
|
||||
"subchapter_id": "sub-002-04",
|
||||
"subchapter_name": "Engagement History",
|
||||
"component_types": [
|
||||
"data_table",
|
||||
"heatmap",
|
||||
"interaction_timeline",
|
||||
"line_chart",
|
||||
"metric_card_group"
|
||||
],
|
||||
"accepted_shapes": [
|
||||
"channel_preference_trend",
|
||||
"content_interaction_log",
|
||||
"engagement_heatmap",
|
||||
"engagement_snapshot",
|
||||
"engagement_timeline"
|
||||
],
|
||||
"surface_targets": [
|
||||
"webos",
|
||||
"ipad",
|
||||
"android_tablet",
|
||||
"iphone_edge",
|
||||
"android_phone_edge"
|
||||
],
|
||||
"policy_tags": [
|
||||
"backend_owned",
|
||||
"live_data_first",
|
||||
"no_mock_fallback",
|
||||
"surface_safe"
|
||||
],
|
||||
"route_family": "crm",
|
||||
"primary_tables": [
|
||||
"leads",
|
||||
"sentinel_scores"
|
||||
]
|
||||
},
|
||||
{
|
||||
"chapter_id": "ch-003",
|
||||
"chapter_name": "Communication Intelligence",
|
||||
"subchapter_id": "sub-003-01",
|
||||
"subchapter_name": "Call Summary",
|
||||
"component_types": [
|
||||
"communication_summary",
|
||||
"data_table",
|
||||
"metric_card_group",
|
||||
"next_best_action_card",
|
||||
"transcript_highlight_card"
|
||||
],
|
||||
"accepted_shapes": [
|
||||
"call_follow_up_snapshot",
|
||||
"call_outcome_snapshot",
|
||||
"speaker_highlights",
|
||||
"transcript_segments",
|
||||
"transcript_summary"
|
||||
],
|
||||
"surface_targets": [
|
||||
"webos",
|
||||
"ipad",
|
||||
"android_tablet",
|
||||
"iphone_edge",
|
||||
"android_phone_edge"
|
||||
],
|
||||
"policy_tags": [
|
||||
"backend_owned",
|
||||
"live_data_first",
|
||||
"no_mock_fallback",
|
||||
"surface_safe",
|
||||
"provider_provenance_required",
|
||||
"supported_channel_only"
|
||||
],
|
||||
"route_family": "mobile-edge",
|
||||
"primary_tables": [
|
||||
"edge_communication_events",
|
||||
"edge_communication_memory_facts",
|
||||
"edge_transcription_jobs",
|
||||
"edge_transcript_segments"
|
||||
]
|
||||
},
|
||||
{
|
||||
"chapter_id": "ch-003",
|
||||
"chapter_name": "Communication Intelligence",
|
||||
"subchapter_id": "sub-003-02",
|
||||
"subchapter_name": "Promise Tracker",
|
||||
"component_types": [
|
||||
"checklist_board",
|
||||
"compact_alert_card",
|
||||
"data_table",
|
||||
"matrix_grid",
|
||||
"summary_card"
|
||||
],
|
||||
"accepted_shapes": [
|
||||
"communication_facts",
|
||||
"decision_maker_summary",
|
||||
"follow_up_checklist",
|
||||
"overdue_commitments",
|
||||
"promise_confidence_matrix"
|
||||
],
|
||||
"surface_targets": [
|
||||
"webos",
|
||||
"ipad",
|
||||
"android_tablet",
|
||||
"iphone_edge",
|
||||
"android_phone_edge"
|
||||
],
|
||||
"policy_tags": [
|
||||
"backend_owned",
|
||||
"live_data_first",
|
||||
"no_mock_fallback",
|
||||
"surface_safe",
|
||||
"reviewable_writebacks",
|
||||
"communication_memory"
|
||||
],
|
||||
"route_family": "mobile-edge",
|
||||
"primary_tables": [
|
||||
"edge_communication_events",
|
||||
"edge_communication_memory_facts",
|
||||
"edge_transcription_jobs",
|
||||
"edge_transcript_segments"
|
||||
]
|
||||
},
|
||||
{
|
||||
"chapter_id": "ch-003",
|
||||
"chapter_name": "Communication Intelligence",
|
||||
"subchapter_id": "sub-003-03",
|
||||
"subchapter_name": "WhatsApp Thread",
|
||||
"component_types": [
|
||||
"data_table",
|
||||
"line_chart",
|
||||
"message_thread_summary",
|
||||
"metric_card_group",
|
||||
"summary_card"
|
||||
],
|
||||
"accepted_shapes": [
|
||||
"message_action_queue",
|
||||
"message_sentiment_timeline",
|
||||
"operator_handover",
|
||||
"thread_sla_snapshot",
|
||||
"whatsapp_thread"
|
||||
],
|
||||
"surface_targets": [
|
||||
"webos",
|
||||
"ipad",
|
||||
"android_tablet",
|
||||
"iphone_edge",
|
||||
"android_phone_edge"
|
||||
],
|
||||
"policy_tags": [
|
||||
"backend_owned",
|
||||
"live_data_first",
|
||||
"no_mock_fallback",
|
||||
"surface_safe",
|
||||
"supported_channel_only",
|
||||
"business_whatsapp_scope"
|
||||
],
|
||||
"route_family": "mobile-edge",
|
||||
"primary_tables": [
|
||||
"edge_communication_events",
|
||||
"edge_communication_memory_facts",
|
||||
"edge_transcription_jobs",
|
||||
"edge_transcript_segments"
|
||||
]
|
||||
},
|
||||
{
|
||||
"chapter_id": "ch-003",
|
||||
"chapter_name": "Communication Intelligence",
|
||||
"subchapter_id": "sub-003-04",
|
||||
"subchapter_name": "Reminder Surface",
|
||||
"component_types": [
|
||||
"action_strip",
|
||||
"alert_queue",
|
||||
"compact_alert_card",
|
||||
"matrix_grid",
|
||||
"next_best_action_card"
|
||||
],
|
||||
"accepted_shapes": [
|
||||
"calendar_suggestion",
|
||||
"insight_recommendation",
|
||||
"next_best_action",
|
||||
"recommendation_confidence",
|
||||
"reminder_queue"
|
||||
],
|
||||
"surface_targets": [
|
||||
"webos",
|
||||
"ipad",
|
||||
"android_tablet",
|
||||
"iphone_edge",
|
||||
"android_phone_edge"
|
||||
],
|
||||
"policy_tags": [
|
||||
"backend_owned",
|
||||
"live_data_first",
|
||||
"no_mock_fallback",
|
||||
"surface_safe",
|
||||
"bounded_actions",
|
||||
"nemoclaw_suggested"
|
||||
],
|
||||
"route_family": "mobile-edge",
|
||||
"primary_tables": [
|
||||
"edge_communication_events",
|
||||
"edge_communication_memory_facts",
|
||||
"edge_transcription_jobs",
|
||||
"edge_transcript_segments"
|
||||
]
|
||||
},
|
||||
{
|
||||
"chapter_id": "ch-004",
|
||||
"chapter_name": "Inventory Analytics",
|
||||
"subchapter_id": "sub-004-01",
|
||||
"subchapter_name": "Property Card",
|
||||
"component_types": [
|
||||
"bar_chart",
|
||||
"cta_card",
|
||||
"metric_card_group",
|
||||
"property_card",
|
||||
"summary_card"
|
||||
],
|
||||
"accepted_shapes": [
|
||||
"inventory_property",
|
||||
"property_cta",
|
||||
"property_media_summary",
|
||||
"property_pricing_snapshot",
|
||||
"unit_mix_distribution"
|
||||
],
|
||||
"surface_targets": [
|
||||
"webos",
|
||||
"ipad",
|
||||
"android_tablet",
|
||||
"iphone_edge",
|
||||
"android_phone_edge"
|
||||
],
|
||||
"policy_tags": [
|
||||
"backend_owned",
|
||||
"live_data_first",
|
||||
"no_mock_fallback",
|
||||
"surface_safe"
|
||||
],
|
||||
"route_family": "inventory",
|
||||
"primary_tables": [
|
||||
"inventory_properties",
|
||||
"inventory_media_assets",
|
||||
"inventory_import_batches"
|
||||
]
|
||||
},
|
||||
{
|
||||
"chapter_id": "ch-004",
|
||||
"chapter_name": "Inventory Analytics",
|
||||
"subchapter_id": "sub-004-02",
|
||||
"subchapter_name": "Availability Matrix",
|
||||
"component_types": [
|
||||
"data_table",
|
||||
"heatmap",
|
||||
"matrix_grid",
|
||||
"metric_card_group",
|
||||
"stacked_bar_chart"
|
||||
],
|
||||
"accepted_shapes": [
|
||||
"availability_heatmap",
|
||||
"availability_matrix",
|
||||
"bed_type_snapshot",
|
||||
"price_band_grid",
|
||||
"release_phase_distribution"
|
||||
],
|
||||
"surface_targets": [
|
||||
"webos",
|
||||
"ipad",
|
||||
"android_tablet"
|
||||
],
|
||||
"policy_tags": [
|
||||
"backend_owned",
|
||||
"live_data_first",
|
||||
"no_mock_fallback",
|
||||
"surface_safe"
|
||||
],
|
||||
"route_family": "inventory",
|
||||
"primary_tables": [
|
||||
"inventory_properties",
|
||||
"inventory_media_assets",
|
||||
"inventory_import_batches"
|
||||
]
|
||||
},
|
||||
{
|
||||
"chapter_id": "ch-004",
|
||||
"chapter_name": "Inventory Analytics",
|
||||
"subchapter_id": "sub-004-03",
|
||||
"subchapter_name": "Absorption Rate",
|
||||
"component_types": [
|
||||
"bar_chart",
|
||||
"dual_axis_chart",
|
||||
"line_chart",
|
||||
"matrix_grid",
|
||||
"sparkline_metric"
|
||||
],
|
||||
"accepted_shapes": [
|
||||
"developer_velocity_ranking",
|
||||
"handover_absorption_matrix",
|
||||
"rolling_velocity_snapshot",
|
||||
"sales_velocity",
|
||||
"velocity_supply_overlay"
|
||||
],
|
||||
"surface_targets": [
|
||||
"webos",
|
||||
"ipad",
|
||||
"android_tablet"
|
||||
],
|
||||
"policy_tags": [
|
||||
"backend_owned",
|
||||
"live_data_first",
|
||||
"no_mock_fallback",
|
||||
"surface_safe"
|
||||
],
|
||||
"route_family": "inventory",
|
||||
"primary_tables": [
|
||||
"inventory_properties",
|
||||
"inventory_media_assets",
|
||||
"inventory_import_batches"
|
||||
]
|
||||
},
|
||||
{
|
||||
"chapter_id": "ch-004",
|
||||
"chapter_name": "Inventory Analytics",
|
||||
"subchapter_id": "sub-004-04",
|
||||
"subchapter_name": "Inventory Comparison",
|
||||
"component_types": [
|
||||
"comparison_table",
|
||||
"metric_card_group",
|
||||
"radar_chart",
|
||||
"side_by_side_comparison",
|
||||
"summary_strip"
|
||||
],
|
||||
"accepted_shapes": [
|
||||
"amenity_comparison",
|
||||
"inventory_comparison",
|
||||
"operator_choice_summary",
|
||||
"property_metric_comparison",
|
||||
"sales_readiness_comparison"
|
||||
],
|
||||
"surface_targets": [
|
||||
"webos",
|
||||
"ipad",
|
||||
"android_tablet"
|
||||
],
|
||||
"policy_tags": [
|
||||
"backend_owned",
|
||||
"live_data_first",
|
||||
"no_mock_fallback",
|
||||
"surface_safe"
|
||||
],
|
||||
"route_family": "inventory",
|
||||
"primary_tables": [
|
||||
"inventory_properties",
|
||||
"inventory_media_assets",
|
||||
"inventory_import_batches"
|
||||
]
|
||||
},
|
||||
{
|
||||
"chapter_id": "ch-005",
|
||||
"chapter_name": "Operational Metrics",
|
||||
"subchapter_id": "sub-005-01",
|
||||
"subchapter_name": "Showroom Traffic",
|
||||
"component_types": [
|
||||
"bar_chart",
|
||||
"dual_axis_chart",
|
||||
"heatmap",
|
||||
"metric_card_group",
|
||||
"summary_strip"
|
||||
],
|
||||
"accepted_shapes": [
|
||||
"live_traffic_snapshot",
|
||||
"peak_hour_distribution",
|
||||
"visitor_flow_overlay",
|
||||
"zone_summary",
|
||||
"zone_time_matrix"
|
||||
],
|
||||
"surface_targets": [
|
||||
"webos",
|
||||
"ipad",
|
||||
"android_tablet"
|
||||
],
|
||||
"policy_tags": [
|
||||
"backend_owned",
|
||||
"live_data_first",
|
||||
"no_mock_fallback",
|
||||
"surface_safe"
|
||||
],
|
||||
"route_family": "admin-surface",
|
||||
"primary_tables": [
|
||||
"surface_sessions",
|
||||
"admin_action_events",
|
||||
"oracle_synthetic_generation_jobs",
|
||||
"inventory_import_batches",
|
||||
"edge_transcription_jobs"
|
||||
]
|
||||
},
|
||||
{
|
||||
"chapter_id": "ch-005",
|
||||
"chapter_name": "Operational Metrics",
|
||||
"subchapter_id": "sub-005-02",
|
||||
"subchapter_name": "Team Performance",
|
||||
"component_types": [
|
||||
"compact_alert_card",
|
||||
"dual_axis_chart",
|
||||
"leaderboard_table",
|
||||
"matrix_grid",
|
||||
"metric_card_group"
|
||||
],
|
||||
"accepted_shapes": [
|
||||
"activity_conversion_overlay",
|
||||
"agent_leaderboard",
|
||||
"follow_up_compliance_matrix",
|
||||
"quality_drift_alert",
|
||||
"team_performance_snapshot"
|
||||
],
|
||||
"surface_targets": [
|
||||
"webos",
|
||||
"ipad",
|
||||
"android_tablet"
|
||||
],
|
||||
"policy_tags": [
|
||||
"backend_owned",
|
||||
"live_data_first",
|
||||
"no_mock_fallback",
|
||||
"surface_safe"
|
||||
],
|
||||
"route_family": "admin-surface",
|
||||
"primary_tables": [
|
||||
"surface_sessions",
|
||||
"admin_action_events",
|
||||
"oracle_synthetic_generation_jobs",
|
||||
"inventory_import_batches",
|
||||
"edge_transcription_jobs"
|
||||
]
|
||||
},
|
||||
{
|
||||
"chapter_id": "ch-005",
|
||||
"chapter_name": "Operational Metrics",
|
||||
"subchapter_id": "sub-005-03",
|
||||
"subchapter_name": "Campaign Metrics",
|
||||
"component_types": [
|
||||
"bar_chart",
|
||||
"line_chart",
|
||||
"metric_card_group",
|
||||
"scatter_plot",
|
||||
"summary_card"
|
||||
],
|
||||
"accepted_shapes": [
|
||||
"campaign_attribution",
|
||||
"campaign_efficiency",
|
||||
"campaign_roas_trend",
|
||||
"campaign_snapshot",
|
||||
"channel_comparison"
|
||||
],
|
||||
"surface_targets": [
|
||||
"webos",
|
||||
"ipad",
|
||||
"android_tablet"
|
||||
],
|
||||
"policy_tags": [
|
||||
"backend_owned",
|
||||
"live_data_first",
|
||||
"no_mock_fallback",
|
||||
"surface_safe"
|
||||
],
|
||||
"route_family": "admin-surface",
|
||||
"primary_tables": [
|
||||
"campaign_metrics",
|
||||
"lead_events"
|
||||
]
|
||||
},
|
||||
{
|
||||
"chapter_id": "ch-005",
|
||||
"chapter_name": "Operational Metrics",
|
||||
"subchapter_id": "sub-005-04",
|
||||
"subchapter_name": "System Health",
|
||||
"component_types": [
|
||||
"action_panel",
|
||||
"data_table",
|
||||
"line_chart",
|
||||
"metric_card_group",
|
||||
"system_health_panel"
|
||||
],
|
||||
"accepted_shapes": [
|
||||
"bounded_admin_actions",
|
||||
"latency_time_series",
|
||||
"queue_status",
|
||||
"surface_session_snapshot",
|
||||
"system_health_snapshot"
|
||||
],
|
||||
"surface_targets": [
|
||||
"webos"
|
||||
],
|
||||
"policy_tags": [
|
||||
"backend_owned",
|
||||
"live_data_first",
|
||||
"no_mock_fallback",
|
||||
"surface_safe",
|
||||
"bounded_admin_actions",
|
||||
"audit_ready"
|
||||
],
|
||||
"route_family": "admin-surface",
|
||||
"primary_tables": [
|
||||
"admin_action_events",
|
||||
"oracle_synthetic_generation_jobs",
|
||||
"inventory_import_batches",
|
||||
"edge_transcription_jobs",
|
||||
"surface_sessions"
|
||||
]
|
||||
},
|
||||
{
|
||||
"chapter_id": "ch-006",
|
||||
"chapter_name": "Calendar and Follow-Up",
|
||||
"subchapter_id": "sub-006-01",
|
||||
"subchapter_name": "Calendar View",
|
||||
"component_types": [
|
||||
"calendar_agenda",
|
||||
"calendar_heatmap",
|
||||
"data_table",
|
||||
"donut_chart",
|
||||
"summary_strip"
|
||||
],
|
||||
"accepted_shapes": [
|
||||
"calendar_density",
|
||||
"calendar_mix",
|
||||
"calendar_strip",
|
||||
"calendar_suggestions",
|
||||
"user_calendar_agenda"
|
||||
],
|
||||
"surface_targets": [
|
||||
"webos",
|
||||
"ipad",
|
||||
"android_tablet",
|
||||
"iphone_edge",
|
||||
"android_phone_edge"
|
||||
],
|
||||
"policy_tags": [
|
||||
"backend_owned",
|
||||
"live_data_first",
|
||||
"no_mock_fallback",
|
||||
"surface_safe",
|
||||
"user_calendar_scope",
|
||||
"confirmation_required_for_writeback"
|
||||
],
|
||||
"route_family": "mobile-edge",
|
||||
"primary_tables": [
|
||||
"user_calendar_events",
|
||||
"insight_recommendations",
|
||||
"edge_communication_events"
|
||||
]
|
||||
},
|
||||
{
|
||||
"chapter_id": "ch-006",
|
||||
"chapter_name": "Calendar and Follow-Up",
|
||||
"subchapter_id": "sub-006-02",
|
||||
"subchapter_name": "Action Queue",
|
||||
"component_types": [
|
||||
"action_strip",
|
||||
"bar_chart",
|
||||
"donut_chart",
|
||||
"matrix_grid",
|
||||
"prioritized_task_list"
|
||||
],
|
||||
"accepted_shapes": [
|
||||
"action_status_mix",
|
||||
"action_type_distribution",
|
||||
"agent_action_queue",
|
||||
"edge_action_strip",
|
||||
"queue_urgency_matrix"
|
||||
],
|
||||
"surface_targets": [
|
||||
"webos",
|
||||
"ipad",
|
||||
"android_tablet",
|
||||
"iphone_edge",
|
||||
"android_phone_edge"
|
||||
],
|
||||
"policy_tags": [
|
||||
"backend_owned",
|
||||
"live_data_first",
|
||||
"no_mock_fallback",
|
||||
"surface_safe",
|
||||
"bounded_actions",
|
||||
"operator_queue"
|
||||
],
|
||||
"route_family": "mobile-edge",
|
||||
"primary_tables": [
|
||||
"user_calendar_events",
|
||||
"insight_recommendations",
|
||||
"edge_communication_events"
|
||||
]
|
||||
},
|
||||
{
|
||||
"chapter_id": "ch-006",
|
||||
"chapter_name": "Calendar and Follow-Up",
|
||||
"subchapter_id": "sub-006-03",
|
||||
"subchapter_name": "Follow-Up Plan",
|
||||
"component_types": [
|
||||
"compact_alert_card",
|
||||
"data_table",
|
||||
"structured_plan_card",
|
||||
"summary_card",
|
||||
"timeline_chart"
|
||||
],
|
||||
"accepted_shapes": [
|
||||
"escalation_plan",
|
||||
"follow_up_cadence",
|
||||
"follow_up_edge_card",
|
||||
"follow_up_plan",
|
||||
"follow_up_timeline"
|
||||
],
|
||||
"surface_targets": [
|
||||
"webos",
|
||||
"ipad",
|
||||
"android_tablet",
|
||||
"iphone_edge",
|
||||
"android_phone_edge"
|
||||
],
|
||||
"policy_tags": [
|
||||
"backend_owned",
|
||||
"live_data_first",
|
||||
"no_mock_fallback",
|
||||
"surface_safe",
|
||||
"nemoclaw_suggested",
|
||||
"confirmation_required_for_writeback"
|
||||
],
|
||||
"route_family": "mobile-edge",
|
||||
"primary_tables": [
|
||||
"user_calendar_events",
|
||||
"insight_recommendations",
|
||||
"edge_communication_events"
|
||||
]
|
||||
},
|
||||
{
|
||||
"chapter_id": "ch-006",
|
||||
"chapter_name": "Calendar and Follow-Up",
|
||||
"subchapter_id": "sub-006-04",
|
||||
"subchapter_name": "Reminder Cards",
|
||||
"component_types": [
|
||||
"compact_alert_card",
|
||||
"kanban_board",
|
||||
"matrix_grid",
|
||||
"stacked_reminder_cards",
|
||||
"summary_strip"
|
||||
],
|
||||
"accepted_shapes": [
|
||||
"insight_recommendation",
|
||||
"reminder_priority_matrix",
|
||||
"reminder_snooze_board",
|
||||
"reminder_stack",
|
||||
"reminder_strip"
|
||||
],
|
||||
"surface_targets": [
|
||||
"webos",
|
||||
"ipad",
|
||||
"android_tablet",
|
||||
"iphone_edge",
|
||||
"android_phone_edge"
|
||||
],
|
||||
"policy_tags": [
|
||||
"backend_owned",
|
||||
"live_data_first",
|
||||
"no_mock_fallback",
|
||||
"surface_safe",
|
||||
"bounded_actions",
|
||||
"surface_agnostic"
|
||||
],
|
||||
"route_family": "mobile-edge",
|
||||
"primary_tables": [
|
||||
"user_calendar_events",
|
||||
"insight_recommendations",
|
||||
"edge_communication_events"
|
||||
]
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"status": "ok",
|
||||
"checks": {
|
||||
"total_examples": 1200,
|
||||
"unique_example_ids": 1200,
|
||||
"subchapters_with_50_examples": true,
|
||||
"chapters": 6,
|
||||
"subchapters": 24,
|
||||
"source_seed_examples_reported": 36,
|
||||
"source_seed_examples_actual": 8
|
||||
},
|
||||
"per_subchapter": {
|
||||
"sub-001-01": 50,
|
||||
"sub-001-02": 50,
|
||||
"sub-001-03": 50,
|
||||
"sub-001-04": 50,
|
||||
"sub-002-01": 50,
|
||||
"sub-002-02": 50,
|
||||
"sub-002-03": 50,
|
||||
"sub-002-04": 50,
|
||||
"sub-003-01": 50,
|
||||
"sub-003-02": 50,
|
||||
"sub-003-03": 50,
|
||||
"sub-003-04": 50,
|
||||
"sub-004-01": 50,
|
||||
"sub-004-02": 50,
|
||||
"sub-004-03": 50,
|
||||
"sub-004-04": 50,
|
||||
"sub-005-01": 50,
|
||||
"sub-005-02": 50,
|
||||
"sub-005-03": 50,
|
||||
"sub-005-04": 50,
|
||||
"sub-006-01": 50,
|
||||
"sub-006-02": 50,
|
||||
"sub-006-03": 50,
|
||||
"sub-006-04": 50
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user