diff --git a/README.md b/README.md index 4c82127..7da32f5 100644 --- a/README.md +++ b/README.md @@ -38,11 +38,13 @@ For architecture decomposition, modular products and inspect/reassemble interact ## Runnable Anime.js library +Start with the [discovery guide](references/industry-catalog.md). Choose by explanatory question and technique, then read only the relevant industry registry. Version 0.6.0 adds 24 substantial conceptual scenarios across oil and gas, pharma, government, retail, logistics, manufacturing, energy, healthcare, finance, telecom, agriculture and infrastructure. Twelve sectors is this release, not a ceiling. Values are illustrative, not verified operating procedures or engineering/clinical advice. + - [Element registry](references/registry-animejs-elements.md): SVG draw, motion path and spatial stagger. - [Composition registry](references/registry-animejs-compositions.md): dependency flow and assemble/explode/reassemble. - `assets/animejs/examples.js`: editable configurations; `gallery.js`: shared renderer and lifecycle; `index.html`: local source preview. -Build with `python3 scripts/build-gallery.py` and open `dist/animejs-gallery-0.5.0/index.html`. This portable offline gallery includes Play, Replay, Settle and Seek for all five examples. `npm test` runs the deck, motion, mechanism and gallery suites. Registry coverage and source links are validated so new examples cannot silently go unlisted. Existing deck and mechanism artifact versions remain available. +Build with `python3 scripts/build-gallery.py` and open `dist/animejs-gallery-0.6.0/index.html`. This portable offline gallery includes Play, Replay, Settle and Seek for all 29 examples. `npm test` runs the deck, motion, mechanism and gallery suites. Registry coverage and source links are validated so new examples cannot silently go unlisted. Existing deck and mechanism artifact versions remain available. ## Licenses and scope @@ -50,10 +52,10 @@ Original code/documentation: MIT, RootAtSkic and Hermes Agent. Reveal.js and Ani Local Chromium verification is included; no hosted CI or cross-browser certification is claimed. No automation credentials belong in this repository. -### Gallery hierarchy (0.5.0) +### Gallery hierarchy (0.6.0) -Open `dist/animejs-gallery-0.5.0/index.html` for all five previews, or `elements/index.html` and `compositions/index.html` inside that package. Each gallery embeds `examples/.html` through relative iframe `src` and links to that same file. Each individual page is self-contained (CSS, configuration, renderer, pinned Anime.js and full license embedded), so it also plays offline by itself. Breadcrumb links require keeping the package hierarchy together. Extract the complete package before opening its index; no server is needed. Previous version artifacts are retained. +Open `dist/animejs-gallery-0.6.0/index.html` for all 29 previews, or `elements/index.html` and `compositions/index.html` inside that package. Each gallery embeds `examples/.html` through relative iframe `src` and links to that same file. Each individual page is self-contained (CSS, configuration, renderer, pinned Anime.js and full license embedded), so it also plays offline by itself. Breadcrumb links require keeping the package hierarchy together. Extract the complete package before opening its index; no server is needed. Previous version artifacts are retained. -The editable hierarchy mirrors this under `assets/animejs/`, sharing `examples.js`, `gallery.js`, `gallery.css` and `assets/vendor/`. Edit the configuration/renderer once, not the generated dist pages. Individual source documents select exactly one configuration using `body[data-example]`; unknown IDs fail explicitly, with no query-string fallback. Galleries never mount a renderer themselves. Every embedded document owns its lifecycle. +The editable hierarchy mirrors this under `assets/animejs/`, sharing generated `catalog-data.js`, `gallery.js`, `gallery.css` and `assets/vendor/`. Industry descriptors in `catalogs/*.json` and renderer registrations in `industries/*.js` are the editable sources; the builder generates all wrappers without duplicated labels. Legacy configs remain in `examples.js`. Edit the configuration/renderer once, not the generated dist pages. Individual source documents select exactly one configuration using `body[data-example]`; unknown IDs fail explicitly, with no query-string fallback. Galleries never mount a renderer themselves. Every embedded document owns its lifecycle. -`python3 scripts/build-gallery.py` inlines local dependencies and records every page hash plus source hashes in `dist/animejs-gallery-manifest.json`. `scripts/test-gallery.mjs` tests both editable and built hierarchies, iframe identity, navigation, all five examples in normal/reduced motion and deterministic hold/cleanup behavior. Screenshots and exact page hashes are recorded under `evidence/`. +`python3 scripts/build-gallery.py` inlines local dependencies and records every page hash plus source hashes in `dist/animejs-gallery-manifest.json`. `scripts/test-gallery.mjs` tests both editable and built hierarchies, iframe identity, navigation, all 29 examples in normal/reduced motion and deterministic hold/cleanup behavior. A compact representative screenshot set and exact page hashes are recorded under `evidence/`. Every normal-motion example gets actual early playback, then accelerated natural completion at engine speed 12; representative legacy/industry examples also complete at speed 1. The report explicitly distinguishes these. Default build/tests fail on missing release sectors; `--allow-partial` is development-only and reports missing coverage. The complete release has 29 individual pages, 14 registry galleries, and the overall index: 44 HTML pages. diff --git a/SKILL.md b/SKILL.md index 2c96895..716b055 100644 --- a/SKILL.md +++ b/SKILL.md @@ -1,7 +1,7 @@ --- name: presentation-html description: Build offline HTML decks with deliberate motion. -version: 0.5.0 +version: 0.6.0 author: RootAtSkic, Hermes Agent license: MIT platforms: [linux, macos, windows] @@ -32,12 +32,16 @@ Build editable, offline-first browser presentations using Reveal.js for navigati ## Read on demand: runnable Anime.js registries +Start with the [industry catalog discovery guide](references/industry-catalog.md): choose the audience’s explanatory problem, then the mechanism and only the relevant registry. The 0.6.0 library has 24 industry recipes across 12 sectors plus five foundational recipes; these sectors are release coverage, not a permanent ceiling. Do not load the whole library blindly. + Select examples by the relationship they explain, not just their visual effect: - [Element registry](references/registry-animejs-elements.md): SVG connection drawing, motion-path travel and spatial stagger. Read when choosing a single technique. - [Composition registry](references/registry-animejs-compositions.md): dependency flow and assemble/explode/reassemble. Read when explaining a multi-part mechanism. -Editable configurations, renderer and preview live in `assets/animejs/`. Build the reusable offline gallery package with `python3 scripts/build-gallery.py` through `terminal`, then open `dist/animejs-gallery-0.5.0/index.html`. `npm test` exercises every registered example. Keep the registry ID, source, parameter constraints and verification coverage aligned when adding an example; do not load all examples into context unnecessarily. Gallery controls are for inspecting recipes, not mandatory controls for client slides. Wire slide departure/teardown explicitly when reusing a recipe. +Industry registries: [oil and gas](references/registry-animejs-oil-gas.md), [pharma](references/registry-animejs-pharma.md), [government](references/registry-animejs-government.md), [retail](references/registry-animejs-retail.md), [logistics](references/registry-animejs-logistics.md), [manufacturing](references/registry-animejs-manufacturing.md), [energy](references/registry-animejs-energy.md), [healthcare](references/registry-animejs-healthcare.md), [finance](references/registry-animejs-finance.md), [telecom](references/registry-animejs-telecom.md), [agriculture](references/registry-animejs-agriculture.md), [infrastructure](references/registry-animejs-infrastructure.md). Each describes useful audiences/questions, phases, editable parameters, techniques and limits. All are conceptual illustrations with illustrative numbers, not operational or professional certifications. + +Editable configurations, renderer and preview live in `assets/animejs/`. Catalog JSON generates group/individual wrappers and `catalog-data.js`; never duplicate labels or hand-edit generated HTML. Individual pages expose use/avoid/assumptions and meaningful named beat controls. Compact iframe previews reuse the exact same document. Build the reusable offline gallery package with `python3 scripts/build-gallery.py` through `terminal`, then open `dist/animejs-gallery-0.6.0/index.html`. `npm test` exercises every registered example. Keep the registry ID, source, parameter constraints and verification coverage aligned when adding an example; do not load all examples into context unnecessarily. Gallery controls are for inspecting recipes, not mandatory controls for client slides. Wire slide departure/teardown explicitly when reusing a recipe. ## Read on demand: choreography and deterministic motion @@ -78,6 +82,8 @@ Open `dist/presentation-html-demo-0.3.0.html` directly. The six-slide demo is a ## Pitfalls +- Global `svg text` CSS font-size/fill (or font shorthand) overrides SVG presentation attributes. Inherit defaults from the SVG root; preserve per-label hierarchy and colors. Check computed styles and inspect screenshots when integrating sector renderers. + - Reveal's `.reveal-viewport` rule can override a lower-specificity `body` palette; override `body.reveal-viewport` explicitly. Assert computed colors and inspect screenshots. - Reveal hash writes are asynchronous. Wait for the expected hash before testing reload. - Current Anime v4 API differs from legacy demos; some old minified bundles carry a version banner different from their advertised download version. Inspect actual bytes. diff --git a/assets/animejs/agriculture/index.html b/assets/animejs/agriculture/index.html new file mode 100644 index 0000000..97e4ffc --- /dev/null +++ b/assets/animejs/agriculture/index.html @@ -0,0 +1,14 @@ + + +Agriculture — Motion that explains +

Agriculture

Open an example for use/avoid guidance, assumptions and named timeline beats.

Original conceptual examples · Anime.js 4.5.0 · Offline library 0.6.0. Not operational, clinical or engineering advice.

Anime.js license
The MIT License
+
+Copyright (c) 2025 Julian Garnier
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ diff --git a/assets/animejs/catalog-data.js b/assets/animejs/catalog-data.js new file mode 100644 index 0000000..76b7a6c --- /dev/null +++ b/assets/animejs/catalog-data.js @@ -0,0 +1,1072 @@ +/* Generated by scripts/build-gallery.py; edit catalogs or examples.js. */ +window.animeExamples = [ + { + "id": "svg-draw", + "kind": "element", + "title": "Draw a connection", + "description": "A trace reveals a directed connection; labels remain readable.", + "duration": 900, + "path": "M 55 110 C 140 20 240 200 345 110", + "start": "Source", + "end": "Destination", + "group": "elements", + "groupTitle": "Elements", + "beatSource": "runtime", + "useWhen": "Explain a trace reveals a directed connection; labels remain readable.", + "avoid": "Avoid decorative motion or treating illustrative timing and geometry as measured performance.", + "assumptions": "Original conceptual example; all timing and geometry are illustrative. Retest edited parameters." + }, + { + "id": "motion-path", + "kind": "element", + "title": "Follow a route", + "description": "A packet follows the same coordinate space as its route.", + "duration": 1200, + "path": "M 55 110 C 140 20 240 200 345 110", + "start": "Send", + "end": "Receive", + "group": "elements", + "groupTitle": "Elements", + "beatSource": "runtime", + "useWhen": "Explain a packet follows the same coordinate space as its route.", + "avoid": "Avoid decorative motion or treating illustrative timing and geometry as measured performance.", + "assumptions": "Original conceptual example; all timing and geometry are illustrative. Retest edited parameters." + }, + { + "id": "spatial-stagger", + "kind": "element", + "title": "Propagate from the center", + "description": "Row-major cells activate outward from the center of a grid.", + "duration": 350, + "delay": 100, + "columns": 5, + "rows": 3, + "group": "elements", + "groupTitle": "Elements", + "beatSource": "runtime", + "useWhen": "Explain row-major cells activate outward from the center of a grid.", + "avoid": "Avoid decorative motion or treating illustrative timing and geometry as measured performance.", + "assumptions": "Original conceptual example; all timing and geometry are illustrative. Retest edited parameters." + }, + { + "id": "dependency-flow", + "kind": "composition", + "title": "Explain a dependency", + "description": "Input connects to a check, then the checked result reaches output.", + "duration": 600, + "labels": [ + "Input", + "Check", + "Output" + ], + "group": "compositions", + "groupTitle": "Compositions", + "beatSource": "runtime", + "useWhen": "Explain input connects to a check, then the checked result reaches output.", + "avoid": "Avoid decorative motion or treating illustrative timing and geometry as measured performance.", + "assumptions": "Original conceptual example; all timing and geometry are illustrative. Retest edited parameters." + }, + { + "id": "assemble-explode", + "kind": "composition", + "title": "Separate, inspect, reassemble", + "description": "Stable parts separate to expose their relationship, then return to one assembly.", + "duration": 700, + "distance": 105, + "labels": [ + "Interface", + "Compute", + "Storage" + ], + "group": "compositions", + "groupTitle": "Compositions", + "beatSource": "runtime", + "useWhen": "Explain stable parts separate to expose their relationship, then return to one assembly.", + "avoid": "Avoid decorative motion or treating illustrative timing and geometry as measured performance.", + "assumptions": "Original conceptual example; all timing and geometry are illustrative. Retest edited parameters." + }, + { + "id": "oil-gas-separator-upset", + "group": "oil-gas", + "groupTitle": "Oil & gas", + "title": "Separator train: contain an upset", + "description": "Separate the streams; isolate one train without hiding the recovery route.", + "useWhen": "Use with operations educators to explain how separation, upset containment and alternate train availability differ. Ask which paths must stop before recovery.", + "avoid": "Do not use as a live control display, regulatory assurance, numerical model or a substitute for locally approved procedures.", + "assumptions": "Original conceptual model. All timings, quantities, rates and capacities are illustrative. Geometry shows relationships, not physical scale. No clinical, compliance or engineering certification claims.", + "config": { + "phaseMs": 1200, + "feedLevel": 26 + }, + "beats": [ + { + "at": 0, + "label": "Feed split" + }, + { + "at": 1200, + "label": "Separation" + }, + { + "at": 2400, + "label": "Upset held" + }, + { + "at": 3600, + "label": "Train isolated" + }, + { + "at": 4800, + "label": "Stable route" + }, + { + "at": 6000, + "label": "Settled outcome" + } + ], + "kind": "industry" + }, + { + "id": "oil-gas-pipeline-reroute", + "group": "oil-gas", + "groupTitle": "Oil & gas", + "title": "Pipeline leak: isolate and bypass", + "description": "Two boundary valves contain the suspect segment before bypass flow resumes.", + "useWhen": "Use in resilience workshops to distinguish detection, boundary isolation and alternate delivery. Ask whether a bypass exists before promising restored supply.", + "avoid": "Do not use as a live control display, regulatory assurance, numerical model or a substitute for locally approved procedures.", + "assumptions": "Original conceptual model. All timings, quantities, rates and capacities are illustrative. Geometry shows relationships, not physical scale. No clinical, compliance or engineering certification claims.", + "config": { + "phaseMs": 1200, + "bypassY": 365 + }, + "beats": [ + { + "at": 0, + "label": "Normal flow" + }, + { + "at": 1200, + "label": "Leak alarm" + }, + { + "at": 2400, + "label": "Close bounds" + }, + { + "at": 3600, + "label": "Open bypass" + }, + { + "at": 4800, + "label": "Supply restored" + }, + { + "at": 6000, + "label": "Settled outcome" + } + ], + "kind": "industry" + }, + { + "id": "pharma-batch-genealogy", + "group": "pharma", + "groupTitle": "Pharma", + "title": "Batch genealogy: hold, then release", + "description": "A quality hold propagates to descendants; disposition restores only the accepted branch.", + "useWhen": "Use with manufacturing quality and data-lineage teams to explain why a hold follows descendants while release requires branch-specific evidence.", + "avoid": "Do not use as a live control display, regulatory assurance, numerical model or a substitute for locally approved procedures.", + "assumptions": "Original conceptual model. All timings, quantities, rates and capacities are illustrative. Geometry shows relationships, not physical scale. No clinical, compliance or engineering certification claims.", + "config": { + "phaseMs": 1200, + "packCount": 3 + }, + "beats": [ + { + "at": 0, + "label": "Trace inputs" + }, + { + "at": 1200, + "label": "Blend batch" + }, + { + "at": 2400, + "label": "Hold lineage" + }, + { + "at": 3600, + "label": "Review evidence" + }, + { + "at": 4800, + "label": "Release branch" + }, + { + "at": 6000, + "label": "Settled outcome" + } + ], + "kind": "industry" + }, + { + "id": "pharma-cold-chain-quarantine", + "group": "pharma", + "groupTitle": "Pharma", + "title": "Cold chain: excursion to quarantine", + "description": "A recorded excursion changes custody status, not the historical temperature trace.", + "useWhen": "Use with distribution and quality teams to explain why a logger excursion changes custody disposition without erasing the temperature history.", + "avoid": "Do not use as a live control display, regulatory assurance, numerical model or a substitute for locally approved procedures.", + "assumptions": "Original conceptual model. All timings, quantities, rates and capacities are illustrative. Geometry shows relationships, not physical scale. No clinical, compliance or engineering certification claims.", + "config": { + "phaseMs": 1200, + "excursionRise": 48 + }, + "beats": [ + { + "at": 0, + "label": "Pack & record" + }, + { + "at": 1200, + "label": "Transport" + }, + { + "at": 2400, + "label": "Excursion" + }, + { + "at": 3600, + "label": "Quarantine" + }, + { + "at": 4800, + "label": "Disposition" + }, + { + "at": 6000, + "label": "Settled outcome" + } + ], + "kind": "industry" + }, + { + "id": "government-permit-review-loop", + "group": "government", + "groupTitle": "Government", + "title": "Permit review: parallel checks & correction", + "description": "Independent reviews converge; a missing exhibit returns to the applicant before decision.", + "useWhen": "Use with public-service designers to distinguish parallel review from a decision gate and show how missing exhibits create an applicant correction loop.", + "avoid": "Do not use as a live control display, regulatory assurance, numerical model or a substitute for locally approved procedures.", + "assumptions": "Original conceptual model. All timings, quantities, rates and capacities are illustrative. Geometry shows relationships, not physical scale. No clinical, compliance or engineering certification claims.", + "config": { + "phaseMs": 1200, + "exhibitPages": 3 + }, + "beats": [ + { + "at": 0, + "label": "Application" + }, + { + "at": 1200, + "label": "Parallel review" + }, + { + "at": 2400, + "label": "Missing exhibit" + }, + { + "at": 3600, + "label": "Correction" + }, + { + "at": 4800, + "label": "Decision gate" + }, + { + "at": 6000, + "label": "Settled outcome" + } + ], + "kind": "industry" + }, + { + "id": "government-budget-execution", + "group": "government", + "groupTitle": "Government", + "title": "Budget allocation: authority before spend", + "description": "Approved envelopes become commitments; expenditure follows a separate execution gate.", + "useWhen": "Use with public-finance educators to separate allocation, authority, commitment and expenditure; ask why an unspent envelope is not automatically reusable.", + "avoid": "Do not use as a live control display, regulatory assurance, numerical model or a substitute for locally approved procedures.", + "assumptions": "Original conceptual model. All timings, quantities, rates and capacities are illustrative. Geometry shows relationships, not physical scale. No clinical, compliance or engineering certification claims.", + "config": { + "phaseMs": 1200, + "allocationScale": 0.85 + }, + "beats": [ + { + "at": 0, + "label": "Allocate" + }, + { + "at": 1200, + "label": "Authorize" + }, + { + "at": 2400, + "label": "Commit" + }, + { + "at": 3600, + "label": "Verify delivery" + }, + { + "at": 4800, + "label": "Record spend" + }, + { + "at": 6000, + "label": "Settled outcome" + } + ], + "kind": "industry" + }, + { + "id": "retail-inventory-reservation", + "group": "retail", + "groupTitle": "Retail", + "title": "Omnichannel: reserve before promising", + "description": "Two demand channels compete for one pickable unit; the second order gets an honest alternative.", + "useWhen": "Use with commerce product and store operations teams to expose the race between web and store demand and prevent a second promise on one unit.", + "avoid": "Do not use as a live control display, regulatory assurance, numerical model or a substitute for locally approved procedures.", + "assumptions": "Original conceptual model. All timings, quantities, rates and capacities are illustrative. Geometry shows relationships, not physical scale. No clinical, compliance or engineering certification claims.", + "config": { + "phaseMs": 1200, + "parcelSize": 34 + }, + "beats": [ + { + "at": 0, + "label": "Count stock" + }, + { + "at": 1200, + "label": "Web reserves" + }, + { + "at": 2400, + "label": "Store competes" + }, + { + "at": 3600, + "label": "Offer alternate" + }, + { + "at": 4800, + "label": "Fulfil promise" + }, + { + "at": 6000, + "label": "Settled outcome" + } + ], + "kind": "industry" + }, + { + "id": "retail-return-disposition", + "group": "retail", + "groupTitle": "Retail", + "title": "Returns: inspect before restocking", + "description": "Refund and inventory disposition are separate branches; damaged goods stay out of sellable stock.", + "useWhen": "Use with returns, finance and inventory teams to separate refund eligibility from physical restock eligibility and retain the rejected-goods branch.", + "avoid": "Do not use as a live control display, regulatory assurance, numerical model or a substitute for locally approved procedures.", + "assumptions": "Original conceptual model. All timings, quantities, rates and capacities are illustrative. Geometry shows relationships, not physical scale. No clinical, compliance or engineering certification claims.", + "config": { + "phaseMs": 1200, + "restockUnits": 2 + }, + "beats": [ + { + "at": 0, + "label": "Receive return" + }, + { + "at": 1200, + "label": "Inspect condition" + }, + { + "at": 2400, + "label": "Route disposition" + }, + { + "at": 3600, + "label": "Refund record" + }, + { + "at": 4800, + "label": "Restock accepted" + }, + { + "at": 6000, + "label": "Settled outcome" + } + ], + "kind": "industry" + }, + { + "id": "logistics-hub-connection-recovery", + "group": "logistics", + "groupTitle": "Logistics", + "title": "Hub sorting: recover a missed connection", + "description": "Follow a late parcel from induction through sorting, a missed departure, exception staging and a later connection.", + "useWhen": "Explain why physical sorting and departure cutoffs are separate dependencies; useful for hub planning and service design.", + "avoid": "Do not present this as a route optimizer, carrier SLA, throughput benchmark or promise of delivery.", + "assumptions": "Original conceptual hub. All timings, positions, capacities and departure windows are illustrative; one parcel represents a tracked consignment.", + "config": { + "duration": 6000, + "recoveryConnection": "Later connection" + }, + "beats": [ + { + "at": 0, + "label": "Induct" + }, + { + "at": 1200, + "label": "Read & sort" + }, + { + "at": 2400, + "label": "Cutoff missed" + }, + { + "at": 3600, + "label": "Stage safely" + }, + { + "at": 4800, + "label": "Reconnect" + }, + { + "at": 6000, + "label": "Resolved overview" + } + ], + "kind": "industry" + }, + { + "id": "logistics-port-crane-yard", + "group": "logistics", + "groupTitle": "Logistics", + "title": "Port coordination: berth, crane and yard", + "description": "A container moves only after berth access, crane clearance and a yard slot align; a blocked lane prompts reassignment.", + "useWhen": "Explain interdependent marine and landside work to planners; show that crane motion alone does not complete a transfer.", + "avoid": "Avoid crane operating instruction, nautical guidance, capacity forecasts or safety clearance claims.", + "assumptions": "All geometry, timing and resource counts are illustrative. Original conceptual port; not an equipment or safety simulation.", + "config": { + "duration": 6000, + "yardSlot": "B" + }, + "beats": [ + { + "at": 0, + "label": "Berth ready" + }, + { + "at": 1200, + "label": "Lift approved" + }, + { + "at": 2400, + "label": "Lane blocked" + }, + { + "at": 3600, + "label": "Reassign slot" + }, + { + "at": 4800, + "label": "Yard receipt" + }, + { + "at": 6000, + "label": "Resolved overview" + } + ], + "kind": "industry" + }, + { + "id": "manufacturing-takt-buffer", + "group": "manufacturing", + "groupTitle": "Manufacturing", + "title": "Assembly flow: bottleneck and buffer", + "description": "Three assembly stations expose an uneven cycle; a small buffer absorbs the mismatch while work is rebalanced.", + "useWhen": "Explain work-in-progress and local bottlenecks to operations teams without implying that a buffer creates capacity.", + "avoid": "Avoid production forecasting, exact takt design or claims that one buffer universally solves a bottleneck.", + "assumptions": "All cycles, buffer sizes, positions and timings are illustrative. Single-piece tokens simplify an original conceptual assembly line.", + "config": { + "duration": 6000, + "bufferSlots": 2 + }, + "beats": [ + { + "at": 0, + "label": "Feed chassis" + }, + { + "at": 1200, + "label": "Assemble" + }, + { + "at": 2400, + "label": "Queue grows" + }, + { + "at": 3600, + "label": "Rebalance" + }, + { + "at": 4800, + "label": "Release units" + }, + { + "at": 6000, + "label": "Resolved overview" + } + ], + "kind": "industry" + }, + { + "id": "manufacturing-fault-rework", + "group": "manufacturing", + "groupTitle": "Manufacturing", + "title": "Machine fault: isolate, inspect and rework", + "description": "A machining fault stops the affected cell; a suspect part leaves the main line for inspection, rework and verification.", + "useWhen": "Explain containment boundaries, part identity and the difference between repair of a machine and release of a product.", + "avoid": "Not lockout/tagout instructions, machine-safety validation or a quality-release standard.", + "assumptions": "Conceptual original cell; all timings and counts are illustrative. Animated isolation is a process state, not a certified safety procedure.", + "config": { + "duration": 6000, + "lotId": "LOT A" + }, + "beats": [ + { + "at": 0, + "label": "Machine part" + }, + { + "at": 1200, + "label": "Detect fault" + }, + { + "at": 2400, + "label": "Contain lot" + }, + { + "at": 3600, + "label": "Rework" + }, + { + "at": 4800, + "label": "Verify release" + }, + { + "at": 6000, + "label": "Resolved overview" + } + ], + "kind": "industry" + }, + { + "id": "energy-microgrid-storage", + "group": "energy", + "groupTitle": "Energy", + "title": "Microgrid: balance generation with storage", + "description": "Solar and wind feed a common bus; a renewable dip triggers storage dispatch before a flexible load rejoins.", + "useWhen": "Explain the distinct roles of generation, storage and flexible demand to a general energy audience.", + "avoid": "Not electrical design, dispatch optimization, grid-code compliance or battery-sizing advice.", + "assumptions": "All power, storage and time relationships are qualitative and illustrative; original topology omits protection and power electronics.", + "config": { + "duration": 6000, + "storageBars": 3 + }, + "beats": [ + { + "at": 0, + "label": "Renewables" + }, + { + "at": 1200, + "label": "Serve load" + }, + { + "at": 2400, + "label": "Output dips" + }, + { + "at": 3600, + "label": "Discharge" + }, + { + "at": 4800, + "label": "Load rejoins" + }, + { + "at": 6000, + "label": "Resolved overview" + } + ], + "kind": "industry" + }, + { + "id": "energy-feeder-restoration", + "group": "energy", + "groupTitle": "Energy", + "title": "Feeder fault: isolate and restore service", + "description": "A faulted feeder section is opened at both ends; a normally open tie restores healthy downstream service.", + "useWhen": "Explain sectional isolation versus whole-feeder outage with an accessible single-line conceptual topology.", + "avoid": "Never use as switching instructions, protection coordination, load-flow analysis or an operator procedure.", + "assumptions": "Original conceptual topology. Switch states and all timings are illustrative; alternate source capacity and safe isolation are assumed, not calculated.", + "config": { + "duration": 6000, + "tieAvailable": 1 + }, + "beats": [ + { + "at": 0, + "label": "Normal supply" + }, + { + "at": 1200, + "label": "Fault appears" + }, + { + "at": 2400, + "label": "Open section" + }, + { + "at": 3600, + "label": "Close tie" + }, + { + "at": 4800, + "label": "Restore branch" + }, + { + "at": 6000, + "label": "Resolved overview" + } + ], + "kind": "industry" + }, + { + "id": "healthcare-care-handoffs", + "group": "healthcare", + "groupTitle": "Healthcare", + "title": "Care coordination: triage and handoffs", + "description": "Follow registration, triage review, care-team handoff and discharge coordination, with an information gap resolved.", + "useWhen": "Explain administrative handoff ownership and missing-information recovery to nonclinical service-design audiences.", + "avoid": "Not clinical triage criteria, treatment recommendations, staffing models or emergency-care instructions.", + "assumptions": "Nonclinical original process illustration. No patient data. All times and resource counts are illustrative; clinical decisions are intentionally excluded.", + "config": { + "duration": 6000, + "handoffRole": "Care coordinator" + }, + "beats": [ + { + "at": 0, + "label": "Register" + }, + { + "at": 1200, + "label": "Triage review" + }, + { + "at": 2400, + "label": "Resolve gap" + }, + { + "at": 3600, + "label": "Team accepts" + }, + { + "at": 4800, + "label": "Coordinate exit" + }, + { + "at": 6000, + "label": "Resolved overview" + } + ], + "kind": "industry" + }, + { + "id": "healthcare-sample-rejection", + "group": "healthcare", + "groupTitle": "Healthcare", + "title": "Diagnostic sample chain: reject and recollect", + "description": "A labeled tube passes accession and inspection; an unsuitable specimen is held while a linked replacement reaches analysis.", + "useWhen": "Explain specimen identity and rejection recovery as a nonclinical laboratory coordination illustration.", + "avoid": "Not diagnostic interpretation, collection instructions, rejection criteria, patient advice or laboratory accreditation guidance.", + "assumptions": "Nonclinical conceptual workflow with invented sample identifiers. All counts and timings are illustrative; suitability is a generic process state.", + "config": { + "duration": 6000, + "sampleId": "S-042" + }, + "beats": [ + { + "at": 0, + "label": "Label & send" + }, + { + "at": 1200, + "label": "Accession" + }, + { + "at": 2400, + "label": "Reject & hold" + }, + { + "at": 3600, + "label": "Recollect" + }, + { + "at": 4800, + "label": "Analyze & report" + }, + { + "at": 6000, + "label": "Resolved overview" + } + ], + "kind": "industry" + }, + { + "id": "finance-payment-reconciliation", + "group": "finance", + "groupTitle": "Finance", + "title": "Payment: authorization is not settlement", + "description": "Follow one payment from card authorization through clearing, settlement and an exception-ledger reconciliation.", + "useWhen": "Explain to product and finance teams why an approved payment can still be unsettled or unreconciled.", + "avoid": "Do not use to specify payment-network messages, double-entry postings, dispute rights or accounting policy.", + "assumptions": "Original conceptual flow; card, merchant and issuer roles are simplified. All timings and entry labels are illustrative; no monetary rates or compliance claims.", + "config": { + "duration": 6000, + "reference": "A" + }, + "beats": [ + { + "at": 0, + "label": "Authorize" + }, + { + "at": 1000, + "label": "Capture" + }, + { + "at": 2000, + "label": "Clear" + }, + { + "at": 3000, + "label": "Settle" + }, + { + "at": 4000, + "label": "Reconcile" + }, + { + "at": 6000, + "label": "Complete" + } + ], + "kind": "industry" + }, + { + "id": "finance-insurance-evidence", + "group": "finance", + "groupTitle": "Finance", + "title": "Insurance: evidence before settlement", + "description": "A claim file combines photos, policy context and assessment; a missing item returns for review before payout.", + "useWhen": "Use for claims operations audiences discussing evidence completeness, traceability and review handoffs.", + "avoid": "Not a coverage determination, fraud score, legal timetable, automated approval policy or claim valuation model.", + "assumptions": "All time values are illustrative. The claim and damaged property are fictional; settlement presumes a separate valid coverage and terms decision.", + "config": { + "duration": 6000, + "missingItem": "Signature" + }, + "beats": [ + { + "at": 0, + "label": "Intake" + }, + { + "at": 1000, + "label": "Assemble" + }, + { + "at": 2000, + "label": "Review gap" + }, + { + "at": 3000, + "label": "Resolve" + }, + { + "at": 4000, + "label": "Settle" + }, + { + "at": 6000, + "label": "Complete" + } + ], + "kind": "industry" + }, + { + "id": "telecom-congestion-reroute", + "group": "telecom", + "groupTitle": "Telecommunications", + "title": "Packet network: congestion and rerouting", + "description": "A saturated transit link queues traffic; an alternate path carries later packets to the same destination.", + "useWhen": "Explain topology resilience, queue pressure and alternate-path selection to a non-protocol-specific networking audience.", + "avoid": "Not a routing-protocol implementation, QoS SLA, traffic simulator or evidence that rerouting always preserves ordering.", + "assumptions": "Packets, queue slots and timings are illustrative. Alternate capacity and route availability are assumed; convergence, loss and retransmission are omitted.", + "config": { + "duration": 6000, + "queuePackets": 4 + }, + "beats": [ + { + "at": 0, + "label": "Forward" + }, + { + "at": 1000, + "label": "Queue" + }, + { + "at": 2000, + "label": "Detect" + }, + { + "at": 3000, + "label": "Reroute" + }, + { + "at": 4000, + "label": "Deliver" + }, + { + "at": 6000, + "label": "Complete" + } + ], + "kind": "industry" + }, + { + "id": "telecom-cell-handover", + "group": "telecom", + "groupTitle": "Telecommunications", + "title": "Cell handover: preserving a session", + "description": "A moving handset crosses coverage, prepares a target radio link and switches access while its session remains anchored.", + "useWhen": "Use to explain the distinction between radio access and persistent session identity during mobility.", + "avoid": "Not a 3GPP message flow, radio-planning calculation, coverage map or promise of zero interruption.", + "assumptions": "Coverage ellipses, travel distance and times are illustrative. Target admission and a shared session anchor are assumed; technology-specific procedures are intentionally omitted.", + "config": { + "duration": 6000, + "travelPx": 286 + }, + "beats": [ + { + "at": 0, + "label": "Serve A" + }, + { + "at": 1000, + "label": "Measure" + }, + { + "at": 2000, + "label": "Prepare B" + }, + { + "at": 3000, + "label": "Switch" + }, + { + "at": 4000, + "label": "Release A" + }, + { + "at": 6000, + "label": "Complete" + } + ], + "kind": "industry" + }, + { + "id": "agriculture-irrigation-zones", + "group": "agriculture", + "groupTitle": "Agriculture", + "title": "Irrigation: measure, open, soak, close", + "description": "A water header feeds three field zones in sequence; moisture indications rise and a wet zone stays bypassed.", + "useWhen": "Explain feedback-based irrigation zoning and why neighboring strips need not receive identical watering.", + "avoid": "Not irrigation design, sensor calibration, crop-specific moisture advice, water-rights guidance or pump sizing.", + "assumptions": "All phase times and moisture-gauge levels are illustrative without physical units. Soil response is compressed and no weather, runoff or hydraulic model is included.", + "config": { + "duration": 6000, + "wetZone": 1 + }, + "beats": [ + { + "at": 0, + "label": "Read soil" + }, + { + "at": 1000, + "label": "Open north" + }, + { + "at": 2000, + "label": "Soak north" + }, + { + "at": 3000, + "label": "Open south" + }, + { + "at": 4000, + "label": "Close valves" + }, + { + "at": 6000, + "label": "Complete" + } + ], + "kind": "industry" + }, + { + "id": "agriculture-harvest-grading", + "group": "agriculture", + "groupTitle": "Agriculture", + "title": "Harvest: grade, store and distribute", + "description": "A crop lot passes an inspection belt, splits into fresh and processing channels and reaches distinct storage routes.", + "useWhen": "Use with supply-chain audiences to explain grade-dependent destinations without losing harvest-lot traceability.", + "avoid": "Not a food-safety process, storage-temperature prescription, yield forecast or grading standard.", + "assumptions": "All timing and illustrated produce are conceptual. Two quality destinations are simplified; disposal, pathogen checks and detailed cold-chain controls are outside scope.", + "config": { + "duration": 6000, + "freshCount": 3 + }, + "beats": [ + { + "at": 0, + "label": "Receive lot" + }, + { + "at": 1000, + "label": "Inspect" + }, + { + "at": 2000, + "label": "Separate" + }, + { + "at": 3000, + "label": "Store" + }, + { + "at": 4000, + "label": "Dispatch" + }, + { + "at": 6000, + "label": "Complete" + } + ], + "kind": "industry" + }, + { + "id": "infrastructure-bridge-inspection", + "group": "infrastructure", + "groupTitle": "Infrastructure", + "title": "Bridge: load paths and inspection closure", + "description": "A conceptual bridge shows load transfer to supports, an inspection finding and a local lane closure for review.", + "useWhen": "Use only to introduce the relationship between visible bridge components, conceptual load transfer and controlled access during review.", + "avoid": "Never use as structural engineering analysis, load capacity, safety assurance, inspection checklist, repair selection or reopening authorization.", + "assumptions": "Original schematic, not a bridge design. Geometry, vehicle load, paths and timing are unscaled illustrations. A qualified professional must determine actual structural behavior and access decisions.", + "config": { + "duration": 6000, + "loadX": 385 + }, + "beats": [ + { + "at": 0, + "label": "Apply load" + }, + { + "at": 1000, + "label": "Trace path" + }, + { + "at": 2000, + "label": "Inspect" + }, + { + "at": 3000, + "label": "Close lane" + }, + { + "at": 4000, + "label": "Review repair" + }, + { + "at": 6000, + "label": "Complete" + } + ], + "kind": "industry" + }, + { + "id": "infrastructure-construction-resequence", + "group": "infrastructure", + "groupTitle": "Infrastructure", + "title": "Construction: dependency and resequencing", + "description": "A permit hold blocks a lift; off-site assembly advances without pretending to remove the critical dependency.", + "useWhen": "Help project teams distinguish work that can be resequenced from a critical prerequisite that cannot be bypassed.", + "avoid": "Not a computed critical-path schedule, construction-method statement, permit prediction, resource model or lift plan.", + "assumptions": "All axis values and timings are illustrative without calendar units. Fabrication is assumed independent and resources available; the permit gate remains unresolved rather than implying authorization.", + "config": { + "duration": 6000, + "advanceSlots": 1.5 + }, + "beats": [ + { + "at": 0, + "label": "Baseline" + }, + { + "at": 1000, + "label": "Permit hold" + }, + { + "at": 2000, + "label": "Identify float" + }, + { + "at": 3000, + "label": "Resequence" + }, + { + "at": 4000, + "label": "Gate lift" + }, + { + "at": 6000, + "label": "Complete" + } + ], + "kind": "industry" + } +]; diff --git a/assets/animejs/catalogs/agriculture.json b/assets/animejs/catalogs/agriculture.json new file mode 100644 index 0000000..3bd249a --- /dev/null +++ b/assets/animejs/catalogs/agriculture.json @@ -0,0 +1,82 @@ +[ + { + "id": "agriculture-irrigation-zones", + "group": "agriculture", + "groupTitle": "Agriculture", + "title": "Irrigation: measure, open, soak, close", + "description": "A water header feeds three field zones in sequence; moisture indications rise and a wet zone stays bypassed.", + "useWhen": "Explain feedback-based irrigation zoning and why neighboring strips need not receive identical watering.", + "avoid": "Not irrigation design, sensor calibration, crop-specific moisture advice, water-rights guidance or pump sizing.", + "assumptions": "All phase times and moisture-gauge levels are illustrative without physical units. Soil response is compressed and no weather, runoff or hydraulic model is included.", + "config": { + "duration": 6000, + "wetZone": 1 + }, + "beats": [ + { + "at": 0, + "label": "Read soil" + }, + { + "at": 1000, + "label": "Open north" + }, + { + "at": 2000, + "label": "Soak north" + }, + { + "at": 3000, + "label": "Open south" + }, + { + "at": 4000, + "label": "Close valves" + }, + { + "at": 6000, + "label": "Complete" + } + ] + }, + { + "id": "agriculture-harvest-grading", + "group": "agriculture", + "groupTitle": "Agriculture", + "title": "Harvest: grade, store and distribute", + "description": "A crop lot passes an inspection belt, splits into fresh and processing channels and reaches distinct storage routes.", + "useWhen": "Use with supply-chain audiences to explain grade-dependent destinations without losing harvest-lot traceability.", + "avoid": "Not a food-safety process, storage-temperature prescription, yield forecast or grading standard.", + "assumptions": "All timing and illustrated produce are conceptual. Two quality destinations are simplified; disposal, pathogen checks and detailed cold-chain controls are outside scope.", + "config": { + "duration": 6000, + "freshCount": 3 + }, + "beats": [ + { + "at": 0, + "label": "Receive lot" + }, + { + "at": 1000, + "label": "Inspect" + }, + { + "at": 2000, + "label": "Separate" + }, + { + "at": 3000, + "label": "Store" + }, + { + "at": 4000, + "label": "Dispatch" + }, + { + "at": 6000, + "label": "Complete" + } + ] + } +] diff --git a/assets/animejs/catalogs/energy.json b/assets/animejs/catalogs/energy.json new file mode 100644 index 0000000..993ec71 --- /dev/null +++ b/assets/animejs/catalogs/energy.json @@ -0,0 +1,82 @@ +[ + { + "id": "energy-microgrid-storage", + "group": "energy", + "groupTitle": "Energy", + "title": "Microgrid: balance generation with storage", + "description": "Solar and wind feed a common bus; a renewable dip triggers storage dispatch before a flexible load rejoins.", + "useWhen": "Explain the distinct roles of generation, storage and flexible demand to a general energy audience.", + "avoid": "Not electrical design, dispatch optimization, grid-code compliance or battery-sizing advice.", + "assumptions": "All power, storage and time relationships are qualitative and illustrative; original topology omits protection and power electronics.", + "config": { + "duration": 6000, + "storageBars": 3 + }, + "beats": [ + { + "at": 0, + "label": "Renewables" + }, + { + "at": 1200, + "label": "Serve load" + }, + { + "at": 2400, + "label": "Output dips" + }, + { + "at": 3600, + "label": "Discharge" + }, + { + "at": 4800, + "label": "Load rejoins" + }, + { + "at": 6000, + "label": "Resolved overview" + } + ] + }, + { + "id": "energy-feeder-restoration", + "group": "energy", + "groupTitle": "Energy", + "title": "Feeder fault: isolate and restore service", + "description": "A faulted feeder section is opened at both ends; a normally open tie restores healthy downstream service.", + "useWhen": "Explain sectional isolation versus whole-feeder outage with an accessible single-line conceptual topology.", + "avoid": "Never use as switching instructions, protection coordination, load-flow analysis or an operator procedure.", + "assumptions": "Original conceptual topology. Switch states and all timings are illustrative; alternate source capacity and safe isolation are assumed, not calculated.", + "config": { + "duration": 6000, + "tieAvailable": 1 + }, + "beats": [ + { + "at": 0, + "label": "Normal supply" + }, + { + "at": 1200, + "label": "Fault appears" + }, + { + "at": 2400, + "label": "Open section" + }, + { + "at": 3600, + "label": "Close tie" + }, + { + "at": 4800, + "label": "Restore branch" + }, + { + "at": 6000, + "label": "Resolved overview" + } + ] + } +] diff --git a/assets/animejs/catalogs/finance.json b/assets/animejs/catalogs/finance.json new file mode 100644 index 0000000..15e5c4c --- /dev/null +++ b/assets/animejs/catalogs/finance.json @@ -0,0 +1,82 @@ +[ + { + "id": "finance-payment-reconciliation", + "group": "finance", + "groupTitle": "Finance", + "title": "Payment: authorization is not settlement", + "description": "Follow one payment from card authorization through clearing, settlement and an exception-ledger reconciliation.", + "useWhen": "Explain to product and finance teams why an approved payment can still be unsettled or unreconciled.", + "avoid": "Do not use to specify payment-network messages, double-entry postings, dispute rights or accounting policy.", + "assumptions": "Original conceptual flow; card, merchant and issuer roles are simplified. All timings and entry labels are illustrative; no monetary rates or compliance claims.", + "config": { + "duration": 6000, + "reference": "A" + }, + "beats": [ + { + "at": 0, + "label": "Authorize" + }, + { + "at": 1000, + "label": "Capture" + }, + { + "at": 2000, + "label": "Clear" + }, + { + "at": 3000, + "label": "Settle" + }, + { + "at": 4000, + "label": "Reconcile" + }, + { + "at": 6000, + "label": "Complete" + } + ] + }, + { + "id": "finance-insurance-evidence", + "group": "finance", + "groupTitle": "Finance", + "title": "Insurance: evidence before settlement", + "description": "A claim file combines photos, policy context and assessment; a missing item returns for review before payout.", + "useWhen": "Use for claims operations audiences discussing evidence completeness, traceability and review handoffs.", + "avoid": "Not a coverage determination, fraud score, legal timetable, automated approval policy or claim valuation model.", + "assumptions": "All time values are illustrative. The claim and damaged property are fictional; settlement presumes a separate valid coverage and terms decision.", + "config": { + "duration": 6000, + "missingItem": "Signature" + }, + "beats": [ + { + "at": 0, + "label": "Intake" + }, + { + "at": 1000, + "label": "Assemble" + }, + { + "at": 2000, + "label": "Review gap" + }, + { + "at": 3000, + "label": "Resolve" + }, + { + "at": 4000, + "label": "Settle" + }, + { + "at": 6000, + "label": "Complete" + } + ] + } +] diff --git a/assets/animejs/catalogs/government.json b/assets/animejs/catalogs/government.json new file mode 100644 index 0000000..20e8109 --- /dev/null +++ b/assets/animejs/catalogs/government.json @@ -0,0 +1,82 @@ +[ + { + "id": "government-permit-review-loop", + "group": "government", + "groupTitle": "Government", + "title": "Permit review: parallel checks & correction", + "description": "Independent reviews converge; a missing exhibit returns to the applicant before decision.", + "useWhen": "Use with public-service designers to distinguish parallel review from a decision gate and show how missing exhibits create an applicant correction loop.", + "avoid": "Do not use as a live control display, regulatory assurance, numerical model or a substitute for locally approved procedures.", + "assumptions": "Original conceptual model. All timings, quantities, rates and capacities are illustrative. Geometry shows relationships, not physical scale. No clinical, compliance or engineering certification claims.", + "config": { + "phaseMs": 1200, + "exhibitPages": 3 + }, + "beats": [ + { + "at": 0, + "label": "Application" + }, + { + "at": 1200, + "label": "Parallel review" + }, + { + "at": 2400, + "label": "Missing exhibit" + }, + { + "at": 3600, + "label": "Correction" + }, + { + "at": 4800, + "label": "Decision gate" + }, + { + "at": 6000, + "label": "Settled outcome" + } + ] + }, + { + "id": "government-budget-execution", + "group": "government", + "groupTitle": "Government", + "title": "Budget allocation: authority before spend", + "description": "Approved envelopes become commitments; expenditure follows a separate execution gate.", + "useWhen": "Use with public-finance educators to separate allocation, authority, commitment and expenditure; ask why an unspent envelope is not automatically reusable.", + "avoid": "Do not use as a live control display, regulatory assurance, numerical model or a substitute for locally approved procedures.", + "assumptions": "Original conceptual model. All timings, quantities, rates and capacities are illustrative. Geometry shows relationships, not physical scale. No clinical, compliance or engineering certification claims.", + "config": { + "phaseMs": 1200, + "allocationScale": 0.85 + }, + "beats": [ + { + "at": 0, + "label": "Allocate" + }, + { + "at": 1200, + "label": "Authorize" + }, + { + "at": 2400, + "label": "Commit" + }, + { + "at": 3600, + "label": "Verify delivery" + }, + { + "at": 4800, + "label": "Record spend" + }, + { + "at": 6000, + "label": "Settled outcome" + } + ] + } +] diff --git a/assets/animejs/catalogs/healthcare.json b/assets/animejs/catalogs/healthcare.json new file mode 100644 index 0000000..ef9c786 --- /dev/null +++ b/assets/animejs/catalogs/healthcare.json @@ -0,0 +1,82 @@ +[ + { + "id": "healthcare-care-handoffs", + "group": "healthcare", + "groupTitle": "Healthcare", + "title": "Care coordination: triage and handoffs", + "description": "Follow registration, triage review, care-team handoff and discharge coordination, with an information gap resolved.", + "useWhen": "Explain administrative handoff ownership and missing-information recovery to nonclinical service-design audiences.", + "avoid": "Not clinical triage criteria, treatment recommendations, staffing models or emergency-care instructions.", + "assumptions": "Nonclinical original process illustration. No patient data. All times and resource counts are illustrative; clinical decisions are intentionally excluded.", + "config": { + "duration": 6000, + "handoffRole": "Care coordinator" + }, + "beats": [ + { + "at": 0, + "label": "Register" + }, + { + "at": 1200, + "label": "Triage review" + }, + { + "at": 2400, + "label": "Resolve gap" + }, + { + "at": 3600, + "label": "Team accepts" + }, + { + "at": 4800, + "label": "Coordinate exit" + }, + { + "at": 6000, + "label": "Resolved overview" + } + ] + }, + { + "id": "healthcare-sample-rejection", + "group": "healthcare", + "groupTitle": "Healthcare", + "title": "Diagnostic sample chain: reject and recollect", + "description": "A labeled tube passes accession and inspection; an unsuitable specimen is held while a linked replacement reaches analysis.", + "useWhen": "Explain specimen identity and rejection recovery as a nonclinical laboratory coordination illustration.", + "avoid": "Not diagnostic interpretation, collection instructions, rejection criteria, patient advice or laboratory accreditation guidance.", + "assumptions": "Nonclinical conceptual workflow with invented sample identifiers. All counts and timings are illustrative; suitability is a generic process state.", + "config": { + "duration": 6000, + "sampleId": "S-042" + }, + "beats": [ + { + "at": 0, + "label": "Label & send" + }, + { + "at": 1200, + "label": "Accession" + }, + { + "at": 2400, + "label": "Reject & hold" + }, + { + "at": 3600, + "label": "Recollect" + }, + { + "at": 4800, + "label": "Analyze & report" + }, + { + "at": 6000, + "label": "Resolved overview" + } + ] + } +] diff --git a/assets/animejs/catalogs/infrastructure.json b/assets/animejs/catalogs/infrastructure.json new file mode 100644 index 0000000..a32b8ec --- /dev/null +++ b/assets/animejs/catalogs/infrastructure.json @@ -0,0 +1,82 @@ +[ + { + "id": "infrastructure-bridge-inspection", + "group": "infrastructure", + "groupTitle": "Infrastructure", + "title": "Bridge: load paths and inspection closure", + "description": "A conceptual bridge shows load transfer to supports, an inspection finding and a local lane closure for review.", + "useWhen": "Use only to introduce the relationship between visible bridge components, conceptual load transfer and controlled access during review.", + "avoid": "Never use as structural engineering analysis, load capacity, safety assurance, inspection checklist, repair selection or reopening authorization.", + "assumptions": "Original schematic, not a bridge design. Geometry, vehicle load, paths and timing are unscaled illustrations. A qualified professional must determine actual structural behavior and access decisions.", + "config": { + "duration": 6000, + "loadX": 385 + }, + "beats": [ + { + "at": 0, + "label": "Apply load" + }, + { + "at": 1000, + "label": "Trace path" + }, + { + "at": 2000, + "label": "Inspect" + }, + { + "at": 3000, + "label": "Close lane" + }, + { + "at": 4000, + "label": "Review repair" + }, + { + "at": 6000, + "label": "Complete" + } + ] + }, + { + "id": "infrastructure-construction-resequence", + "group": "infrastructure", + "groupTitle": "Infrastructure", + "title": "Construction: dependency and resequencing", + "description": "A permit hold blocks a lift; off-site assembly advances without pretending to remove the critical dependency.", + "useWhen": "Help project teams distinguish work that can be resequenced from a critical prerequisite that cannot be bypassed.", + "avoid": "Not a computed critical-path schedule, construction-method statement, permit prediction, resource model or lift plan.", + "assumptions": "All axis values and timings are illustrative without calendar units. Fabrication is assumed independent and resources available; the permit gate remains unresolved rather than implying authorization.", + "config": { + "duration": 6000, + "advanceSlots": 1.5 + }, + "beats": [ + { + "at": 0, + "label": "Baseline" + }, + { + "at": 1000, + "label": "Permit hold" + }, + { + "at": 2000, + "label": "Identify float" + }, + { + "at": 3000, + "label": "Resequence" + }, + { + "at": 4000, + "label": "Gate lift" + }, + { + "at": 6000, + "label": "Complete" + } + ] + } +] diff --git a/assets/animejs/catalogs/logistics.json b/assets/animejs/catalogs/logistics.json new file mode 100644 index 0000000..e6c9054 --- /dev/null +++ b/assets/animejs/catalogs/logistics.json @@ -0,0 +1,82 @@ +[ + { + "id": "logistics-hub-connection-recovery", + "group": "logistics", + "groupTitle": "Logistics", + "title": "Hub sorting: recover a missed connection", + "description": "Follow a late parcel from induction through sorting, a missed departure, exception staging and a later connection.", + "useWhen": "Explain why physical sorting and departure cutoffs are separate dependencies; useful for hub planning and service design.", + "avoid": "Do not present this as a route optimizer, carrier SLA, throughput benchmark or promise of delivery.", + "assumptions": "Original conceptual hub. All timings, positions, capacities and departure windows are illustrative; one parcel represents a tracked consignment.", + "config": { + "duration": 6000, + "recoveryConnection": "Later connection" + }, + "beats": [ + { + "at": 0, + "label": "Induct" + }, + { + "at": 1200, + "label": "Read & sort" + }, + { + "at": 2400, + "label": "Cutoff missed" + }, + { + "at": 3600, + "label": "Stage safely" + }, + { + "at": 4800, + "label": "Reconnect" + }, + { + "at": 6000, + "label": "Resolved overview" + } + ] + }, + { + "id": "logistics-port-crane-yard", + "group": "logistics", + "groupTitle": "Logistics", + "title": "Port coordination: berth, crane and yard", + "description": "A container moves only after berth access, crane clearance and a yard slot align; a blocked lane prompts reassignment.", + "useWhen": "Explain interdependent marine and landside work to planners; show that crane motion alone does not complete a transfer.", + "avoid": "Avoid crane operating instruction, nautical guidance, capacity forecasts or safety clearance claims.", + "assumptions": "All geometry, timing and resource counts are illustrative. Original conceptual port; not an equipment or safety simulation.", + "config": { + "duration": 6000, + "yardSlot": "B" + }, + "beats": [ + { + "at": 0, + "label": "Berth ready" + }, + { + "at": 1200, + "label": "Lift approved" + }, + { + "at": 2400, + "label": "Lane blocked" + }, + { + "at": 3600, + "label": "Reassign slot" + }, + { + "at": 4800, + "label": "Yard receipt" + }, + { + "at": 6000, + "label": "Resolved overview" + } + ] + } +] diff --git a/assets/animejs/catalogs/manufacturing.json b/assets/animejs/catalogs/manufacturing.json new file mode 100644 index 0000000..4bbec41 --- /dev/null +++ b/assets/animejs/catalogs/manufacturing.json @@ -0,0 +1,82 @@ +[ + { + "id": "manufacturing-takt-buffer", + "group": "manufacturing", + "groupTitle": "Manufacturing", + "title": "Assembly flow: bottleneck and buffer", + "description": "Three assembly stations expose an uneven cycle; a small buffer absorbs the mismatch while work is rebalanced.", + "useWhen": "Explain work-in-progress and local bottlenecks to operations teams without implying that a buffer creates capacity.", + "avoid": "Avoid production forecasting, exact takt design or claims that one buffer universally solves a bottleneck.", + "assumptions": "All cycles, buffer sizes, positions and timings are illustrative. Single-piece tokens simplify an original conceptual assembly line.", + "config": { + "duration": 6000, + "bufferSlots": 2 + }, + "beats": [ + { + "at": 0, + "label": "Feed chassis" + }, + { + "at": 1200, + "label": "Assemble" + }, + { + "at": 2400, + "label": "Queue grows" + }, + { + "at": 3600, + "label": "Rebalance" + }, + { + "at": 4800, + "label": "Release units" + }, + { + "at": 6000, + "label": "Resolved overview" + } + ] + }, + { + "id": "manufacturing-fault-rework", + "group": "manufacturing", + "groupTitle": "Manufacturing", + "title": "Machine fault: isolate, inspect and rework", + "description": "A machining fault stops the affected cell; a suspect part leaves the main line for inspection, rework and verification.", + "useWhen": "Explain containment boundaries, part identity and the difference between repair of a machine and release of a product.", + "avoid": "Not lockout/tagout instructions, machine-safety validation or a quality-release standard.", + "assumptions": "Conceptual original cell; all timings and counts are illustrative. Animated isolation is a process state, not a certified safety procedure.", + "config": { + "duration": 6000, + "lotId": "LOT A" + }, + "beats": [ + { + "at": 0, + "label": "Machine part" + }, + { + "at": 1200, + "label": "Detect fault" + }, + { + "at": 2400, + "label": "Contain lot" + }, + { + "at": 3600, + "label": "Rework" + }, + { + "at": 4800, + "label": "Verify release" + }, + { + "at": 6000, + "label": "Resolved overview" + } + ] + } +] diff --git a/assets/animejs/catalogs/oil-gas.json b/assets/animejs/catalogs/oil-gas.json new file mode 100644 index 0000000..736797f --- /dev/null +++ b/assets/animejs/catalogs/oil-gas.json @@ -0,0 +1,82 @@ +[ + { + "id": "oil-gas-separator-upset", + "group": "oil-gas", + "groupTitle": "Oil & gas", + "title": "Separator train: contain an upset", + "description": "Separate the streams; isolate one train without hiding the recovery route.", + "useWhen": "Use with operations educators to explain how separation, upset containment and alternate train availability differ. Ask which paths must stop before recovery.", + "avoid": "Do not use as a live control display, regulatory assurance, numerical model or a substitute for locally approved procedures.", + "assumptions": "Original conceptual model. All timings, quantities, rates and capacities are illustrative. Geometry shows relationships, not physical scale. No clinical, compliance or engineering certification claims.", + "config": { + "phaseMs": 1200, + "feedLevel": 26 + }, + "beats": [ + { + "at": 0, + "label": "Feed split" + }, + { + "at": 1200, + "label": "Separation" + }, + { + "at": 2400, + "label": "Upset held" + }, + { + "at": 3600, + "label": "Train isolated" + }, + { + "at": 4800, + "label": "Stable route" + }, + { + "at": 6000, + "label": "Settled outcome" + } + ] + }, + { + "id": "oil-gas-pipeline-reroute", + "group": "oil-gas", + "groupTitle": "Oil & gas", + "title": "Pipeline leak: isolate and bypass", + "description": "Two boundary valves contain the suspect segment before bypass flow resumes.", + "useWhen": "Use in resilience workshops to distinguish detection, boundary isolation and alternate delivery. Ask whether a bypass exists before promising restored supply.", + "avoid": "Do not use as a live control display, regulatory assurance, numerical model or a substitute for locally approved procedures.", + "assumptions": "Original conceptual model. All timings, quantities, rates and capacities are illustrative. Geometry shows relationships, not physical scale. No clinical, compliance or engineering certification claims.", + "config": { + "phaseMs": 1200, + "bypassY": 365 + }, + "beats": [ + { + "at": 0, + "label": "Normal flow" + }, + { + "at": 1200, + "label": "Leak alarm" + }, + { + "at": 2400, + "label": "Close bounds" + }, + { + "at": 3600, + "label": "Open bypass" + }, + { + "at": 4800, + "label": "Supply restored" + }, + { + "at": 6000, + "label": "Settled outcome" + } + ] + } +] diff --git a/assets/animejs/catalogs/pharma.json b/assets/animejs/catalogs/pharma.json new file mode 100644 index 0000000..c73355a --- /dev/null +++ b/assets/animejs/catalogs/pharma.json @@ -0,0 +1,82 @@ +[ + { + "id": "pharma-batch-genealogy", + "group": "pharma", + "groupTitle": "Pharma", + "title": "Batch genealogy: hold, then release", + "description": "A quality hold propagates to descendants; disposition restores only the accepted branch.", + "useWhen": "Use with manufacturing quality and data-lineage teams to explain why a hold follows descendants while release requires branch-specific evidence.", + "avoid": "Do not use as a live control display, regulatory assurance, numerical model or a substitute for locally approved procedures.", + "assumptions": "Original conceptual model. All timings, quantities, rates and capacities are illustrative. Geometry shows relationships, not physical scale. No clinical, compliance or engineering certification claims.", + "config": { + "phaseMs": 1200, + "packCount": 3 + }, + "beats": [ + { + "at": 0, + "label": "Trace inputs" + }, + { + "at": 1200, + "label": "Blend batch" + }, + { + "at": 2400, + "label": "Hold lineage" + }, + { + "at": 3600, + "label": "Review evidence" + }, + { + "at": 4800, + "label": "Release branch" + }, + { + "at": 6000, + "label": "Settled outcome" + } + ] + }, + { + "id": "pharma-cold-chain-quarantine", + "group": "pharma", + "groupTitle": "Pharma", + "title": "Cold chain: excursion to quarantine", + "description": "A recorded excursion changes custody status, not the historical temperature trace.", + "useWhen": "Use with distribution and quality teams to explain why a logger excursion changes custody disposition without erasing the temperature history.", + "avoid": "Do not use as a live control display, regulatory assurance, numerical model or a substitute for locally approved procedures.", + "assumptions": "Original conceptual model. All timings, quantities, rates and capacities are illustrative. Geometry shows relationships, not physical scale. No clinical, compliance or engineering certification claims.", + "config": { + "phaseMs": 1200, + "excursionRise": 48 + }, + "beats": [ + { + "at": 0, + "label": "Pack & record" + }, + { + "at": 1200, + "label": "Transport" + }, + { + "at": 2400, + "label": "Excursion" + }, + { + "at": 3600, + "label": "Quarantine" + }, + { + "at": 4800, + "label": "Disposition" + }, + { + "at": 6000, + "label": "Settled outcome" + } + ] + } +] diff --git a/assets/animejs/catalogs/retail.json b/assets/animejs/catalogs/retail.json new file mode 100644 index 0000000..893cd91 --- /dev/null +++ b/assets/animejs/catalogs/retail.json @@ -0,0 +1,82 @@ +[ + { + "id": "retail-inventory-reservation", + "group": "retail", + "groupTitle": "Retail", + "title": "Omnichannel: reserve before promising", + "description": "Two demand channels compete for one pickable unit; the second order gets an honest alternative.", + "useWhen": "Use with commerce product and store operations teams to expose the race between web and store demand and prevent a second promise on one unit.", + "avoid": "Do not use as a live control display, regulatory assurance, numerical model or a substitute for locally approved procedures.", + "assumptions": "Original conceptual model. All timings, quantities, rates and capacities are illustrative. Geometry shows relationships, not physical scale. No clinical, compliance or engineering certification claims.", + "config": { + "phaseMs": 1200, + "parcelSize": 34 + }, + "beats": [ + { + "at": 0, + "label": "Count stock" + }, + { + "at": 1200, + "label": "Web reserves" + }, + { + "at": 2400, + "label": "Store competes" + }, + { + "at": 3600, + "label": "Offer alternate" + }, + { + "at": 4800, + "label": "Fulfil promise" + }, + { + "at": 6000, + "label": "Settled outcome" + } + ] + }, + { + "id": "retail-return-disposition", + "group": "retail", + "groupTitle": "Retail", + "title": "Returns: inspect before restocking", + "description": "Refund and inventory disposition are separate branches; damaged goods stay out of sellable stock.", + "useWhen": "Use with returns, finance and inventory teams to separate refund eligibility from physical restock eligibility and retain the rejected-goods branch.", + "avoid": "Do not use as a live control display, regulatory assurance, numerical model or a substitute for locally approved procedures.", + "assumptions": "Original conceptual model. All timings, quantities, rates and capacities are illustrative. Geometry shows relationships, not physical scale. No clinical, compliance or engineering certification claims.", + "config": { + "phaseMs": 1200, + "restockUnits": 2 + }, + "beats": [ + { + "at": 0, + "label": "Receive return" + }, + { + "at": 1200, + "label": "Inspect condition" + }, + { + "at": 2400, + "label": "Route disposition" + }, + { + "at": 3600, + "label": "Refund record" + }, + { + "at": 4800, + "label": "Restock accepted" + }, + { + "at": 6000, + "label": "Settled outcome" + } + ] + } +] diff --git a/assets/animejs/catalogs/telecom.json b/assets/animejs/catalogs/telecom.json new file mode 100644 index 0000000..6fb1b1b --- /dev/null +++ b/assets/animejs/catalogs/telecom.json @@ -0,0 +1,82 @@ +[ + { + "id": "telecom-congestion-reroute", + "group": "telecom", + "groupTitle": "Telecommunications", + "title": "Packet network: congestion and rerouting", + "description": "A saturated transit link queues traffic; an alternate path carries later packets to the same destination.", + "useWhen": "Explain topology resilience, queue pressure and alternate-path selection to a non-protocol-specific networking audience.", + "avoid": "Not a routing-protocol implementation, QoS SLA, traffic simulator or evidence that rerouting always preserves ordering.", + "assumptions": "Packets, queue slots and timings are illustrative. Alternate capacity and route availability are assumed; convergence, loss and retransmission are omitted.", + "config": { + "duration": 6000, + "queuePackets": 4 + }, + "beats": [ + { + "at": 0, + "label": "Forward" + }, + { + "at": 1000, + "label": "Queue" + }, + { + "at": 2000, + "label": "Detect" + }, + { + "at": 3000, + "label": "Reroute" + }, + { + "at": 4000, + "label": "Deliver" + }, + { + "at": 6000, + "label": "Complete" + } + ] + }, + { + "id": "telecom-cell-handover", + "group": "telecom", + "groupTitle": "Telecommunications", + "title": "Cell handover: preserving a session", + "description": "A moving handset crosses coverage, prepares a target radio link and switches access while its session remains anchored.", + "useWhen": "Use to explain the distinction between radio access and persistent session identity during mobility.", + "avoid": "Not a 3GPP message flow, radio-planning calculation, coverage map or promise of zero interruption.", + "assumptions": "Coverage ellipses, travel distance and times are illustrative. Target admission and a shared session anchor are assumed; technology-specific procedures are intentionally omitted.", + "config": { + "duration": 6000, + "travelPx": 286 + }, + "beats": [ + { + "at": 0, + "label": "Serve A" + }, + { + "at": 1000, + "label": "Measure" + }, + { + "at": 2000, + "label": "Prepare B" + }, + { + "at": 3000, + "label": "Switch" + }, + { + "at": 4000, + "label": "Release A" + }, + { + "at": 6000, + "label": "Complete" + } + ] + } +] diff --git a/assets/animejs/compositions/index.html b/assets/animejs/compositions/index.html index 105c549..c8a30ff 100644 --- a/assets/animejs/compositions/index.html +++ b/assets/animejs/compositions/index.html @@ -1,6 +1,7 @@ + Compositions — Motion that explains -

Compositions

The same individual examples, collected by registry.