schematex 0.9.3 → 0.9.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +47 -2
- package/README.zh-CN.md +2 -2
- package/dist/ai/ai-sdk.cjs +23 -23
- package/dist/ai/ai-sdk.d.cts +3 -3
- package/dist/ai/ai-sdk.d.ts +3 -3
- package/dist/ai/ai-sdk.js +18 -18
- package/dist/ai/index.cjs +32 -32
- package/dist/ai/index.d.cts +4 -4
- package/dist/ai/index.d.ts +4 -4
- package/dist/ai/index.js +19 -19
- package/dist/{api-B7C7qGiG.d.cts → api-BOJJlNb1.d.ts} +2 -2
- package/dist/{api-DXOhuK3e.d.ts → api-v9t1T1v6.d.cts} +2 -2
- package/dist/browser.cjs +24 -24
- package/dist/browser.d.cts +3 -3
- package/dist/browser.d.ts +3 -3
- package/dist/browser.js +18 -18
- package/dist/{chunk-C2BNO3CI.cjs → chunk-35NGXDT2.cjs} +12 -12
- package/dist/{chunk-C2BNO3CI.cjs.map → chunk-35NGXDT2.cjs.map} +1 -1
- package/dist/{chunk-ZUK4BY55.js → chunk-3J4DZPZC.js} +3 -3
- package/dist/{chunk-ZUK4BY55.js.map → chunk-3J4DZPZC.js.map} +1 -1
- package/dist/{chunk-JEQGWH5N.js → chunk-3PH2MQGN.js} +3 -3
- package/dist/{chunk-JEQGWH5N.js.map → chunk-3PH2MQGN.js.map} +1 -1
- package/dist/{chunk-ZQECHIBI.js → chunk-3WX24RCH.js} +3 -3
- package/dist/{chunk-ZQECHIBI.js.map → chunk-3WX24RCH.js.map} +1 -1
- package/dist/{chunk-ATE7LD6I.cjs → chunk-4AC6I7KJ.cjs} +4 -4
- package/dist/{chunk-ATE7LD6I.cjs.map → chunk-4AC6I7KJ.cjs.map} +1 -1
- package/dist/{chunk-D4QZ6UDO.js → chunk-4MRVJI7G.js} +110 -3
- package/dist/chunk-4MRVJI7G.js.map +1 -0
- package/dist/{chunk-VOFND6ZQ.cjs → chunk-4OC3CTGE.cjs} +4 -4
- package/dist/{chunk-VOFND6ZQ.cjs.map → chunk-4OC3CTGE.cjs.map} +1 -1
- package/dist/{chunk-VG5LP5A4.cjs → chunk-5ZQRHDMQ.cjs} +4 -4
- package/dist/{chunk-VG5LP5A4.cjs.map → chunk-5ZQRHDMQ.cjs.map} +1 -1
- package/dist/{chunk-6W6RFZND.cjs → chunk-627GHE2N.cjs} +5 -5
- package/dist/{chunk-6W6RFZND.cjs.map → chunk-627GHE2N.cjs.map} +1 -1
- package/dist/{chunk-TDSGQT7R.js → chunk-64LABNTF.js} +3 -3
- package/dist/{chunk-TDSGQT7R.js.map → chunk-64LABNTF.js.map} +1 -1
- package/dist/{chunk-AEZVCGH4.cjs → chunk-6QZQTASC.cjs} +12 -12
- package/dist/{chunk-AEZVCGH4.cjs.map → chunk-6QZQTASC.cjs.map} +1 -1
- package/dist/{chunk-FFAJQ36U.cjs → chunk-6ZD7TCWO.cjs} +15 -15
- package/dist/{chunk-FFAJQ36U.cjs.map → chunk-6ZD7TCWO.cjs.map} +1 -1
- package/dist/{chunk-LFJE64RD.cjs → chunk-7EWP4OD7.cjs} +508 -6
- package/dist/chunk-7EWP4OD7.cjs.map +1 -0
- package/dist/{chunk-PUD7PIY5.js → chunk-AXMBXAEA.js} +3 -3
- package/dist/{chunk-PUD7PIY5.js.map → chunk-AXMBXAEA.js.map} +1 -1
- package/dist/{chunk-X3GEGVW2.js → chunk-B4CMWA6Y.js} +3 -3
- package/dist/{chunk-X3GEGVW2.js.map → chunk-B4CMWA6Y.js.map} +1 -1
- package/dist/{chunk-O6A2GJLI.cjs → chunk-C4Y24X3U.cjs} +4 -4
- package/dist/{chunk-O6A2GJLI.cjs.map → chunk-C4Y24X3U.cjs.map} +1 -1
- package/dist/{chunk-CAAMBDEN.cjs → chunk-ENUM7GMZ.cjs} +110 -2
- package/dist/chunk-ENUM7GMZ.cjs.map +1 -0
- package/dist/{chunk-IOD2EFMX.cjs → chunk-GAQ36VFD.cjs} +4 -4
- package/dist/{chunk-IOD2EFMX.cjs.map → chunk-GAQ36VFD.cjs.map} +1 -1
- package/dist/{chunk-6GHXO3WQ.js → chunk-GYYYULBL.js} +3 -3
- package/dist/{chunk-6GHXO3WQ.js.map → chunk-GYYYULBL.js.map} +1 -1
- package/dist/{chunk-7P4C5DMD.js → chunk-II4GLKGF.js} +3 -3
- package/dist/chunk-II4GLKGF.js.map +1 -0
- package/dist/{chunk-IU26USXA.cjs → chunk-INVLJYAE.cjs} +4 -4
- package/dist/{chunk-IU26USXA.cjs.map → chunk-INVLJYAE.cjs.map} +1 -1
- package/dist/{chunk-BXS53MLV.cjs → chunk-ITI3STJ6.cjs} +4 -4
- package/dist/{chunk-BXS53MLV.cjs.map → chunk-ITI3STJ6.cjs.map} +1 -1
- package/dist/{chunk-XAYD5NVJ.js → chunk-JEMAOC2D.js} +3 -3
- package/dist/{chunk-XAYD5NVJ.js.map → chunk-JEMAOC2D.js.map} +1 -1
- package/dist/{chunk-BP6MLXJU.js → chunk-LMNWUZMD.js} +2785 -611
- package/dist/chunk-LMNWUZMD.js.map +1 -0
- package/dist/{chunk-PZCYFT2A.js → chunk-M26ORU4P.js} +3 -3
- package/dist/{chunk-PZCYFT2A.js.map → chunk-M26ORU4P.js.map} +1 -1
- package/dist/{chunk-JYAL26WQ.cjs → chunk-N3HU635X.cjs} +4 -4
- package/dist/chunk-N3HU635X.cjs.map +1 -0
- package/dist/{chunk-JCJWSW5Y.js → chunk-N524SY5D.js} +506 -4
- package/dist/chunk-N524SY5D.js.map +1 -0
- package/dist/{chunk-U4AJLMHC.js → chunk-NKYR4PAS.js} +3 -3
- package/dist/{chunk-U4AJLMHC.js.map → chunk-NKYR4PAS.js.map} +1 -1
- package/dist/{chunk-TFNH2NLJ.cjs → chunk-OJ3P4IC4.cjs} +4 -4
- package/dist/{chunk-TFNH2NLJ.cjs.map → chunk-OJ3P4IC4.cjs.map} +1 -1
- package/dist/{chunk-AHSSFGDJ.cjs → chunk-Q7CWX6HA.cjs} +2971 -796
- package/dist/chunk-Q7CWX6HA.cjs.map +1 -0
- package/dist/{chunk-QHZEGWE7.js → chunk-RDYACU2G.js} +3 -3
- package/dist/{chunk-QHZEGWE7.js.map → chunk-RDYACU2G.js.map} +1 -1
- package/dist/{chunk-UNLLWCQK.js → chunk-SXOAAQNY.js} +3 -3
- package/dist/{chunk-UNLLWCQK.js.map → chunk-SXOAAQNY.js.map} +1 -1
- package/dist/{chunk-MZWVJFTV.cjs → chunk-VY6UZYYL.cjs} +15 -15
- package/dist/{chunk-MZWVJFTV.cjs.map → chunk-VY6UZYYL.cjs.map} +1 -1
- package/dist/{chunk-Y4OBXYGW.cjs → chunk-VYQXB2RC.cjs} +12 -12
- package/dist/{chunk-Y4OBXYGW.cjs.map → chunk-VYQXB2RC.cjs.map} +1 -1
- package/dist/{chunk-OND4N5ZZ.js → chunk-XCCXG6RR.js} +3 -3
- package/dist/{chunk-OND4N5ZZ.js.map → chunk-XCCXG6RR.js.map} +1 -1
- package/dist/{chunk-4CLAD7VZ.js → chunk-ZCHGIWJK.js} +3 -3
- package/dist/{chunk-4CLAD7VZ.js.map → chunk-ZCHGIWJK.js.map} +1 -1
- package/dist/{diagnostics-fyjWjeDa.d.ts → diagnostics-5bVLlGNj.d.cts} +1 -1
- package/dist/{diagnostics-fyjWjeDa.d.cts → diagnostics-5bVLlGNj.d.ts} +1 -1
- package/dist/diagrams/blockdiagram/index.cjs +6 -6
- package/dist/diagrams/blockdiagram/index.d.cts +1 -1
- package/dist/diagrams/blockdiagram/index.d.ts +1 -1
- package/dist/diagrams/blockdiagram/index.js +2 -2
- package/dist/diagrams/circuit/index.cjs +9 -9
- package/dist/diagrams/circuit/index.d.cts +1 -1
- package/dist/diagrams/circuit/index.d.ts +1 -1
- package/dist/diagrams/circuit/index.js +2 -2
- package/dist/diagrams/ecomap/index.cjs +7 -7
- package/dist/diagrams/ecomap/index.d.cts +1 -1
- package/dist/diagrams/ecomap/index.d.ts +1 -1
- package/dist/diagrams/ecomap/index.js +2 -2
- package/dist/diagrams/entity/index.cjs +6 -6
- package/dist/diagrams/entity/index.d.cts +1 -1
- package/dist/diagrams/entity/index.d.ts +1 -1
- package/dist/diagrams/entity/index.js +2 -2
- package/dist/diagrams/fishbone/index.cjs +8 -8
- package/dist/diagrams/fishbone/index.d.cts +1 -1
- package/dist/diagrams/fishbone/index.d.ts +1 -1
- package/dist/diagrams/fishbone/index.js +2 -2
- package/dist/diagrams/flowchart/index.cjs +8 -8
- package/dist/diagrams/flowchart/index.d.cts +2 -2
- package/dist/diagrams/flowchart/index.d.ts +2 -2
- package/dist/diagrams/flowchart/index.js +2 -2
- package/dist/diagrams/genogram/index.cjs +9 -9
- package/dist/diagrams/genogram/index.d.cts +1 -1
- package/dist/diagrams/genogram/index.d.ts +1 -1
- package/dist/diagrams/genogram/index.js +2 -2
- package/dist/diagrams/ladder/index.cjs +6 -6
- package/dist/diagrams/ladder/index.d.cts +1 -1
- package/dist/diagrams/ladder/index.d.ts +1 -1
- package/dist/diagrams/ladder/index.js +2 -2
- package/dist/diagrams/logic/index.cjs +8 -8
- package/dist/diagrams/logic/index.d.cts +1 -1
- package/dist/diagrams/logic/index.d.ts +1 -1
- package/dist/diagrams/logic/index.js +2 -2
- package/dist/diagrams/orgchart/index.cjs +8 -8
- package/dist/diagrams/orgchart/index.d.cts +1 -1
- package/dist/diagrams/orgchart/index.d.ts +1 -1
- package/dist/diagrams/orgchart/index.js +2 -2
- package/dist/diagrams/pedigree/index.cjs +7 -7
- package/dist/diagrams/pedigree/index.d.cts +1 -1
- package/dist/diagrams/pedigree/index.d.ts +1 -1
- package/dist/diagrams/pedigree/index.js +2 -2
- package/dist/diagrams/phylo/index.cjs +7 -7
- package/dist/diagrams/phylo/index.d.cts +1 -1
- package/dist/diagrams/phylo/index.d.ts +1 -1
- package/dist/diagrams/phylo/index.js +2 -2
- package/dist/diagrams/sld/index.cjs +8 -8
- package/dist/diagrams/sld/index.d.cts +1 -1
- package/dist/diagrams/sld/index.d.ts +1 -1
- package/dist/diagrams/sld/index.js +2 -2
- package/dist/diagrams/sociogram/index.cjs +6 -6
- package/dist/diagrams/sociogram/index.d.cts +1 -1
- package/dist/diagrams/sociogram/index.d.ts +1 -1
- package/dist/diagrams/sociogram/index.js +2 -2
- package/dist/diagrams/timing/index.d.cts +1 -1
- package/dist/diagrams/timing/index.d.ts +1 -1
- package/dist/diagrams/venn/index.cjs +9 -9
- package/dist/diagrams/venn/index.d.cts +1 -1
- package/dist/diagrams/venn/index.d.ts +1 -1
- package/dist/diagrams/venn/index.js +2 -2
- package/dist/{index-DZNmJWGg.d.cts → index-Cmf4Rcve.d.cts} +1 -1
- package/dist/{index-CFaKjWPy.d.ts → index-syc0E5Ss.d.ts} +1 -1
- package/dist/index.cjs +90 -86
- package/dist/index.d.cts +7 -5
- package/dist/index.d.ts +7 -5
- package/dist/index.js +22 -22
- package/dist/react.cjs +18 -18
- package/dist/react.d.cts +2 -2
- package/dist/react.d.ts +2 -2
- package/dist/react.js +17 -17
- package/dist/{tools-C23t_WeN.d.cts → tools-B98iarLm.d.cts} +3 -3
- package/dist/{tools-BDNih0Mb.d.ts → tools-CCZ1IcIN.d.ts} +3 -3
- package/package.json +1 -1
- package/dist/chunk-7P4C5DMD.js.map +0 -1
- package/dist/chunk-AHSSFGDJ.cjs.map +0 -1
- package/dist/chunk-BP6MLXJU.js.map +0 -1
- package/dist/chunk-CAAMBDEN.cjs.map +0 -1
- package/dist/chunk-D4QZ6UDO.js.map +0 -1
- package/dist/chunk-JCJWSW5Y.js.map +0 -1
- package/dist/chunk-JYAL26WQ.cjs.map +0 -1
- package/dist/chunk-LFJE64RD.cjs.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { parseResult, renderResult } from './chunk-
|
|
1
|
+
import { parseResult, renderResult } from './chunk-LMNWUZMD.js';
|
|
2
2
|
|
|
3
3
|
// src/ai/registry.ts
|
|
4
4
|
var DIAGRAM_REGISTRY = [
|
|
@@ -387,6 +387,34 @@ var DIAGRAM_REGISTRY = [
|
|
|
387
387
|
"IEC 60812"
|
|
388
388
|
]
|
|
389
389
|
},
|
|
390
|
+
{
|
|
391
|
+
type: "rbd",
|
|
392
|
+
name: "Reliability Block Diagram (RBD)",
|
|
393
|
+
tagline: "The success-logic diagram that computes its own system reliability \u2014 series/parallel/k-of-n reduction, Birnbaum importance, and single-point-of-failure detection.",
|
|
394
|
+
useWhen: 'Use to model whether a system *works* from the reliability of its components, and to compute the overall figure \u2014 RAMS analysis, redundancy/high-availability design, fault-tolerance trade studies. Header `rbd`; nest `series { \u2026 }`, `parallel { \u2026 }`, and `kofn k/n { \u2026 }` success-logic groups around `block ID "Label" R=0.99` leaves (`p=0.01` failure prob or `R=99%` also accepted). The engine computes system reliability (\u220F for series, 1\u2212\u220F(1\u2212R\u1D62) for parallel, exact k-of-n), the Birnbaum reliability-importance of every block, and flags blocks whose failure alone fails the system (SPOF, drawn in red). Sibling of fault tree (\xA737) in the risk-reliability cluster.',
|
|
395
|
+
cluster: "risk-reliability",
|
|
396
|
+
standard: "IEC 61078:2016 \xB7 MIL-HDBK-338B; see 50-RBD-STANDARD.md",
|
|
397
|
+
syntaxKey: "rbd",
|
|
398
|
+
aliases: [
|
|
399
|
+
"RBD",
|
|
400
|
+
"Reliability Block Diagram",
|
|
401
|
+
"reliability diagram",
|
|
402
|
+
"availability block diagram",
|
|
403
|
+
"\u53EF\u9760\u6027\u6846\u56FE"
|
|
404
|
+
],
|
|
405
|
+
keywords: [
|
|
406
|
+
"IEC 61078",
|
|
407
|
+
"system reliability",
|
|
408
|
+
"redundancy",
|
|
409
|
+
"series parallel",
|
|
410
|
+
"k-out-of-n",
|
|
411
|
+
"high availability",
|
|
412
|
+
"RAMS",
|
|
413
|
+
"Birnbaum importance",
|
|
414
|
+
"single point of failure",
|
|
415
|
+
"fault tolerance"
|
|
416
|
+
]
|
|
417
|
+
},
|
|
390
418
|
// ── Systems thinking / stochastic ────────────────────────────
|
|
391
419
|
{
|
|
392
420
|
type: "causalloop",
|
|
@@ -595,6 +623,36 @@ var DIAGRAM_REGISTRY = [
|
|
|
595
623
|
"furniture placement",
|
|
596
624
|
"space planning"
|
|
597
625
|
]
|
|
626
|
+
},
|
|
627
|
+
{
|
|
628
|
+
type: "playbook",
|
|
629
|
+
name: "Sports playbook",
|
|
630
|
+
tagline: "Multi-sport tactics boards from one paragraph of text \u2014 American football X&O, basketball half-court sets, and soccer team shapes drawn in coaching-standard notation, each sport on its own correctly-scaled field/court/pitch.",
|
|
631
|
+
useWhen: 'Use to diagram a single play, set, or team shape for American football, basketball, or soccer. Header `playbook "Title" sport football|basketball|soccer`. Place players by formation (football `formation i-form|spread|trips|...`, basketball `set horns|spread-pnr|5-out|...`, soccer `formation 4-3-3|4-4-2|...`) or individually with `player`. Draw assignments with movement verbs whose line style is coaching-correct per sport: football `route X go` / `run RB power right` / `block` / `pull` / `handoff` (solid routes, arrowheads, block T-bars) on a yard-scaled field with LOS, hashes, end zone and goalposts; basketball `pass` (dashed) / `cut` (solid) / `dribble` (wavy) / `screen` (T-bar) to named landmarks (rim, elbow, wing, corner) on an NBA half-court; soccer `pass` (solid) / `run` (dashed) / `dribble` (wavy) / `shot` on an IFAB pitch. Optional `defense` overlays man/zone shells. The engine resolves formations, named routes, and landmarks, and renders each sport in its own coordinate model. Not for play-by-play game film, statistics, or league-table graphics.',
|
|
632
|
+
cluster: "sports",
|
|
633
|
+
standard: "American Football Coaches Association X&O convention \xB7 FIBA/NBA half-court markings \xB7 IFAB Laws of the Game pitch (Law 1); see 49-SPORTS-PLAYBOOK-STANDARD.md",
|
|
634
|
+
syntaxKey: "playbook",
|
|
635
|
+
aliases: [
|
|
636
|
+
"Sports playbook",
|
|
637
|
+
"playbook",
|
|
638
|
+
"football play",
|
|
639
|
+
"X and O diagram",
|
|
640
|
+
"basketball play",
|
|
641
|
+
"soccer tactics",
|
|
642
|
+
"\u6218\u672F\u677F",
|
|
643
|
+
"\u6218\u672F\u56FE"
|
|
644
|
+
],
|
|
645
|
+
keywords: [
|
|
646
|
+
"playbook",
|
|
647
|
+
"football play",
|
|
648
|
+
"X's and O's",
|
|
649
|
+
"basketball play",
|
|
650
|
+
"pick and roll",
|
|
651
|
+
"soccer formation",
|
|
652
|
+
"tactics board",
|
|
653
|
+
"route tree",
|
|
654
|
+
"coaching diagram"
|
|
655
|
+
]
|
|
598
656
|
}
|
|
599
657
|
];
|
|
600
658
|
var DIAGRAM_SINCE = {
|
|
@@ -658,7 +716,11 @@ var DIAGRAM_SINCE = {
|
|
|
658
716
|
// 0.8.1 — welding symbols (AWS A2.4 / ISO 2553)
|
|
659
717
|
welding: "0.8.1",
|
|
660
718
|
// 0.9.3
|
|
661
|
-
floorplan: "0.9.3"
|
|
719
|
+
floorplan: "0.9.3",
|
|
720
|
+
// 0.9.4 — multi-sport playbook (football X&O / basketball / soccer)
|
|
721
|
+
playbook: "0.9.4",
|
|
722
|
+
// 0.9.5 — reliability block diagram (IEC 61078)
|
|
723
|
+
rbd: "0.9.5"
|
|
662
724
|
};
|
|
663
725
|
function getDiagramSince(type) {
|
|
664
726
|
const resolved = resolveDiagramType(type);
|
|
@@ -3126,6 +3188,261 @@ If the LED doesn't light up, three things to check, in order: LED polarity (the
|
|
|
3126
3188
|
|
|
3127
3189
|
**Why P&ID, not PFD.** A process flow diagram (PFD) shows the same equipment but only the major process streams, mass balances, and operating conditions. A P&ID adds every instrument, every valve, every signal line, and every utility connection \u2014 it is the engineering document used by instrument engineers to write I/O lists, by safety engineers to perform HAZOP, and by construction teams to verify field installation. The DSL lets you build this level of detail from text, making it tractable for AI-assisted first drafts and version-controlled review cycles.`
|
|
3128
3190
|
},
|
|
3191
|
+
{
|
|
3192
|
+
"slug": "playbook-basketball-backdoor",
|
|
3193
|
+
"diagram": "playbook",
|
|
3194
|
+
"title": "Backdoor Cut",
|
|
3195
|
+
"description": "When the defender overplays the passing lane, cut behind him to the rim.",
|
|
3196
|
+
"standard": "FIBA/NBA half-court markings \xB7 coaching legend",
|
|
3197
|
+
"tags": [
|
|
3198
|
+
"basketball",
|
|
3199
|
+
"backdoor",
|
|
3200
|
+
"cutting",
|
|
3201
|
+
"Princeton"
|
|
3202
|
+
],
|
|
3203
|
+
"complexity": 1,
|
|
3204
|
+
"featured": false,
|
|
3205
|
+
"dsl": 'playbook "Backdoor Cut" sport basketball\nset 5-out\ncut 3 rim\npass 1 to 4,6',
|
|
3206
|
+
"notes": "The **backdoor** punishes a defender who denies the wing too aggressively: the wing `cut`s behind him to the `rim` and the top passes to the cutter (`pass 1 to 4,6`) for an easy finish. A staple of Princeton and motion offense."
|
|
3207
|
+
},
|
|
3208
|
+
{
|
|
3209
|
+
"slug": "playbook-basketball-floppy",
|
|
3210
|
+
"diagram": "playbook",
|
|
3211
|
+
"title": "Floppy Action",
|
|
3212
|
+
"description": "A shooter chooses a single or double screen off the baseline to get open on the wing.",
|
|
3213
|
+
"standard": "FIBA/NBA half-court markings \xB7 coaching legend",
|
|
3214
|
+
"tags": [
|
|
3215
|
+
"basketball",
|
|
3216
|
+
"floppy",
|
|
3217
|
+
"off-ball-screens",
|
|
3218
|
+
"shooting"
|
|
3219
|
+
],
|
|
3220
|
+
"complexity": 3,
|
|
3221
|
+
"featured": false,
|
|
3222
|
+
"dsl": 'playbook "Floppy Action" sport basketball\nset 1-4-low\nscreen 4 2\nscreen 5 3\ncut 2 lwing\npass 1 2',
|
|
3223
|
+
"notes": "**Floppy** starts a shooter under the basket with a single screen on one side and a double on the other. Reading the defense, the shooter curls off a screen (`screen 4 2`) up to the wing (`cut 2 lwing`) for a catch-and-shoot \u2014 `pass 1 2`."
|
|
3224
|
+
},
|
|
3225
|
+
{
|
|
3226
|
+
"slug": "playbook-basketball-give-and-go",
|
|
3227
|
+
"diagram": "playbook",
|
|
3228
|
+
"title": "Give & Go",
|
|
3229
|
+
"description": "The oldest play in basketball \u2014 pass, cut to the basket, get it back.",
|
|
3230
|
+
"standard": "FIBA/NBA half-court markings \xB7 coaching legend",
|
|
3231
|
+
"tags": [
|
|
3232
|
+
"basketball",
|
|
3233
|
+
"give-and-go",
|
|
3234
|
+
"cutting",
|
|
3235
|
+
"fundamentals"
|
|
3236
|
+
],
|
|
3237
|
+
"complexity": 1,
|
|
3238
|
+
"featured": false,
|
|
3239
|
+
"dsl": 'playbook "Give & Go" sport basketball\nset 5-out\npass 1 2\ncut 1 rim\npass 2 1',
|
|
3240
|
+
"notes": "The **give & go** is the first play every player learns: `pass` to a teammate, `cut` hard to the `rim`, and receive the return `pass` for a layup. Shown from a `5-out` alignment so the lane is empty for the cut."
|
|
3241
|
+
},
|
|
3242
|
+
{
|
|
3243
|
+
"slug": "playbook-basketball-horns",
|
|
3244
|
+
"diagram": "playbook",
|
|
3245
|
+
"title": "Horns Twist",
|
|
3246
|
+
"description": "A two-big set at the elbows that creates a ball screen with a re-screen counter.",
|
|
3247
|
+
"standard": "FIBA/NBA half-court markings \xB7 coaching legend",
|
|
3248
|
+
"tags": [
|
|
3249
|
+
"basketball",
|
|
3250
|
+
"horns",
|
|
3251
|
+
"ball-screen",
|
|
3252
|
+
"set-play"
|
|
3253
|
+
],
|
|
3254
|
+
"complexity": 3,
|
|
3255
|
+
"featured": false,
|
|
3256
|
+
"dsl": 'playbook "Horns Twist" sport basketball\nset horns\nscreen 5 1\ndribble 1 to 11,16\ncut 5 rim\ncut 4 to 0,26\npass 1 3',
|
|
3257
|
+
"notes": "**Horns** places two bigs at the elbows and two shooters in the corners. One big screens for the ball (`screen 5 1`) and rolls to the `rim` while the second pops to the top (`cut 4`), giving the ball-handler a roll-or-pop read plus a corner skip (`pass 1 3`)."
|
|
3258
|
+
},
|
|
3259
|
+
{
|
|
3260
|
+
"slug": "playbook-basketball-pick-and-roll",
|
|
3261
|
+
"diagram": "playbook",
|
|
3262
|
+
"title": "Spread Pick & Roll",
|
|
3263
|
+
"description": "The defining action of modern basketball \u2014 a ball screen with four shooters spacing the floor.",
|
|
3264
|
+
"standard": "FIBA/NBA half-court markings \xB7 coaching legend",
|
|
3265
|
+
"tags": [
|
|
3266
|
+
"basketball",
|
|
3267
|
+
"pick-and-roll",
|
|
3268
|
+
"spacing",
|
|
3269
|
+
"half-court"
|
|
3270
|
+
],
|
|
3271
|
+
"complexity": 2,
|
|
3272
|
+
"featured": true,
|
|
3273
|
+
"dsl": 'playbook "Spread Pick & Roll" sport basketball\nset spread-pnr\nscreen 5 1\ndribble 1 to 11,17\ncut 5 rim\npass 1 2',
|
|
3274
|
+
"notes": "The **pick & roll** is the most-run action in the sport. The big (`screen 5 1`) sets a ball screen, the guard `dribble`s off it, and the screener `cut`s (rolls) to the `rim`. With the other three players spaced behind the arc, help defense leaves a shooter open \u2014 `pass 1 2`. Note the basketball legend: dashed = pass, solid = cut, wavy = dribble."
|
|
3275
|
+
},
|
|
3276
|
+
{
|
|
3277
|
+
"slug": "playbook-football-four-verticals",
|
|
3278
|
+
"diagram": "playbook",
|
|
3279
|
+
"title": "Four Verticals (vs Cover 2)",
|
|
3280
|
+
"description": "The Air Raid staple \u2014 four receivers run vertical, stretching a two-deep shell until a seam opens.",
|
|
3281
|
+
"standard": "AFCA X&O convention \xB7 NFL/NCAA Rule 1 field",
|
|
3282
|
+
"tags": [
|
|
3283
|
+
"football",
|
|
3284
|
+
"passing",
|
|
3285
|
+
"air-raid",
|
|
3286
|
+
"cover-2"
|
|
3287
|
+
],
|
|
3288
|
+
"complexity": 2,
|
|
3289
|
+
"featured": true,
|
|
3290
|
+
"dsl": 'playbook "Four Verticals" sport football\nfield down 2 distance 7 los 40\nformation spread\ndefense cover-2\nroute X go\nroute H seam\nroute Y seam\nroute Z go\nroute RB flat right',
|
|
3291
|
+
"notes": "**Four Verticals** floods a two-deep coverage with four vertical threats: the outside receivers run `go` routes up the sidelines while the inner two bend to the `seam`, forcing the two deep safeties to choose. The back leaks to the `flat` as a checkdown. Drawn out of `spread` against `cover-2`, with each route on the football route tree."
|
|
3292
|
+
},
|
|
3293
|
+
{
|
|
3294
|
+
"slug": "playbook-football-mesh",
|
|
3295
|
+
"diagram": "playbook",
|
|
3296
|
+
"title": "Mesh Concept",
|
|
3297
|
+
"description": "Two shallow crossers rub underneath while a corner route clears the top \u2014 the classic man-and-zone beater.",
|
|
3298
|
+
"standard": "AFCA X&O convention \xB7 NFL/NCAA Rule 1 field",
|
|
3299
|
+
"tags": [
|
|
3300
|
+
"football",
|
|
3301
|
+
"passing",
|
|
3302
|
+
"mesh",
|
|
3303
|
+
"crossers"
|
|
3304
|
+
],
|
|
3305
|
+
"complexity": 3,
|
|
3306
|
+
"featured": false,
|
|
3307
|
+
"dsl": 'playbook "Mesh Concept" sport football\nfield down 1 distance 10 los 35\nformation spread\ndefense cover-3\nroute Y drag\nroute H cross\nroute Z corner 12\nroute X hitch\nroute RB flat right',
|
|
3308
|
+
"notes": "**Mesh** sends two receivers on shallow crossing routes (`drag` and `cross`) that brush past each other just over the ball, creating a natural rub against man coverage and a moving window against zone. The `corner` route clears the deep defender and the `hitch` plus `flat` give quick outlets."
|
|
3309
|
+
},
|
|
3310
|
+
{
|
|
3311
|
+
"slug": "playbook-football-power-o",
|
|
3312
|
+
"diagram": "playbook",
|
|
3313
|
+
"title": "Power O",
|
|
3314
|
+
"description": "The most-installed gap run in football \u2014 backside guard pulls to lead through the hole.",
|
|
3315
|
+
"standard": "AFCA X&O convention \xB7 NFL/NCAA Rule 1 field",
|
|
3316
|
+
"tags": [
|
|
3317
|
+
"football",
|
|
3318
|
+
"run",
|
|
3319
|
+
"power",
|
|
3320
|
+
"gap-scheme"
|
|
3321
|
+
],
|
|
3322
|
+
"complexity": 3,
|
|
3323
|
+
"featured": false,
|
|
3324
|
+
"dsl": 'playbook "Power O" sport football\nfield down 1 distance 10 los 35\nformation i-form right\ndefense 4-3\nhandoff QB RB\nrun RB power right\npull LG right\nblock FB DE_S\nroute Z go',
|
|
3325
|
+
"notes": "**Power O** is the foundational gap run: the play-side blocks down, the fullback kicks out the edge, and the backside guard (`pull LG`) wraps through the hole to lead for the back. Drawn from `i-form` against a `4-3` front with the handoff and pulling lineman shown."
|
|
3326
|
+
},
|
|
3327
|
+
{
|
|
3328
|
+
"slug": "playbook-football-red-zone-fade",
|
|
3329
|
+
"diagram": "playbook",
|
|
3330
|
+
"title": "Red Zone \u2014 Play-Action Fade",
|
|
3331
|
+
"description": "A goal-line play-action shot showing the end zone, goal line, and goalposts.",
|
|
3332
|
+
"standard": "AFCA X&O convention \xB7 NFL/NCAA Rule 1 field",
|
|
3333
|
+
"tags": [
|
|
3334
|
+
"football",
|
|
3335
|
+
"red-zone",
|
|
3336
|
+
"play-action",
|
|
3337
|
+
"fade"
|
|
3338
|
+
],
|
|
3339
|
+
"complexity": 2,
|
|
3340
|
+
"featured": false,
|
|
3341
|
+
"dsl": 'playbook "Red Zone \u2014 Play-Action Fade" sport football\nfield down 1 distance 5 los 5 goal 5 hash nfl\nformation i-form right\ndefense cover-1\nhandoff QB RB\nroute Z corner 4\nroute X slant\nroute Y out 3\nrun RB dive right',
|
|
3342
|
+
"notes": "Inside the 5-yard line the field changes: `goal 5` draws the end zone band, gold goal line, and goalposts. The play fakes the `dive` (`handoff` + `run`) to freeze the linebackers, then throws the back-corner `fade` with a `slant` and `out` as alternatives against `cover-1`."
|
|
3343
|
+
},
|
|
3344
|
+
{
|
|
3345
|
+
"slug": "playbook-football-smash",
|
|
3346
|
+
"diagram": "playbook",
|
|
3347
|
+
"title": "Smash Concept",
|
|
3348
|
+
"description": "A corner-over-hitch high-low that puts the cornerback in a bind \u2014 the textbook Cover 2 beater.",
|
|
3349
|
+
"standard": "AFCA X&O convention \xB7 NFL/NCAA Rule 1 field",
|
|
3350
|
+
"tags": [
|
|
3351
|
+
"football",
|
|
3352
|
+
"passing",
|
|
3353
|
+
"smash",
|
|
3354
|
+
"cover-2"
|
|
3355
|
+
],
|
|
3356
|
+
"complexity": 2,
|
|
3357
|
+
"featured": false,
|
|
3358
|
+
"dsl": 'playbook "Smash Concept" sport football\nfield down 3 distance 6 los 45\nformation trips right\ndefense cover-2\nroute Z hitch\nroute Y corner 12\nroute X slant\nroute H flat right',
|
|
3359
|
+
"notes": "**Smash** pairs a `hitch` underneath with a `corner` route over the top on the same side. The flat defender can cover one but not both: jump the hitch and the corner is open behind him; sink to the corner and the hitch sits down in front. Shown from `trips right` against `cover-2`."
|
|
3360
|
+
},
|
|
3361
|
+
{
|
|
3362
|
+
"slug": "playbook-soccer-4-3-3-shape",
|
|
3363
|
+
"diagram": "playbook",
|
|
3364
|
+
"title": "4-3-3 Team Shape",
|
|
3365
|
+
"description": "The default possession shape \u2014 a back four, a midfield three, and a front three.",
|
|
3366
|
+
"standard": "IFAB Laws of the Game, Law 1 (pitch)",
|
|
3367
|
+
"tags": [
|
|
3368
|
+
"soccer",
|
|
3369
|
+
"formation",
|
|
3370
|
+
"4-3-3",
|
|
3371
|
+
"shape"
|
|
3372
|
+
],
|
|
3373
|
+
"complexity": 1,
|
|
3374
|
+
"featured": true,
|
|
3375
|
+
"dsl": 'playbook "4-3-3 Team Shape" sport soccer\nformation 4-3-3',
|
|
3376
|
+
"notes": "A formation on its own draws the **team shape**. The **4-3-3** \u2014 four defenders, three midfielders, three forwards \u2014 is the modern possession default, giving width through the wingers and a passing triangle in midfield. Players are numbered by position on a full IFAB pitch."
|
|
3377
|
+
},
|
|
3378
|
+
{
|
|
3379
|
+
"slug": "playbook-soccer-build-up",
|
|
3380
|
+
"diagram": "playbook",
|
|
3381
|
+
"title": "Build-Up From the Back",
|
|
3382
|
+
"description": "Playing out of the defensive third \u2014 split the centre-backs, invite pressure, pass through the lines.",
|
|
3383
|
+
"standard": "IFAB Laws of the Game, Law 1 (pitch)",
|
|
3384
|
+
"tags": [
|
|
3385
|
+
"soccer",
|
|
3386
|
+
"build-up",
|
|
3387
|
+
"possession",
|
|
3388
|
+
"passing"
|
|
3389
|
+
],
|
|
3390
|
+
"complexity": 2,
|
|
3391
|
+
"featured": false,
|
|
3392
|
+
"dsl": 'playbook "Build-Up From the Back" sport soccer\nformation 4-3-3\npass 1 4\npass 4 2\nrun 2 to 40,10\npass 4 6\nrun 6 to 62,24',
|
|
3393
|
+
"notes": "**Building from the back** starts with the keeper (`pass 1 4`) and works the ball through the centre-back and full-back while the pivot drops to receive. Soccer draws passes **solid** and runs **dashed** \u2014 note the full-back's overlapping `run` and the pivot turning forward."
|
|
3394
|
+
},
|
|
3395
|
+
{
|
|
3396
|
+
"slug": "playbook-soccer-counter-attack",
|
|
3397
|
+
"diagram": "playbook",
|
|
3398
|
+
"title": "Counter-Attack",
|
|
3399
|
+
"description": "Win it in midfield and go \u2014 a vertical pass, a driving carry, and three forwards sprinting in behind.",
|
|
3400
|
+
"standard": "IFAB Laws of the Game, Law 1 (pitch)",
|
|
3401
|
+
"tags": [
|
|
3402
|
+
"soccer",
|
|
3403
|
+
"counter-attack",
|
|
3404
|
+
"transition",
|
|
3405
|
+
"through-ball"
|
|
3406
|
+
],
|
|
3407
|
+
"complexity": 3,
|
|
3408
|
+
"featured": false,
|
|
3409
|
+
"dsl": 'playbook "Counter-Attack" sport soccer\nformation 4-3-3\npass 6 8\ndribble 8 to 66,28\npass 8 to 96,18\nrun 7 to 99,20\nrun 9 to 94,36\nrun 11 to 95,52',
|
|
3410
|
+
"notes": "On the **counter**, speed beats numbers. The pivot wins it and finds a midfielder (`pass 6 8`) who carries into space (`dribble`), then releases a `pass` through ball as all three forwards sprint in behind (`run`). The solid pass + dashed runs read instantly as a transition moment."
|
|
3411
|
+
},
|
|
3412
|
+
{
|
|
3413
|
+
"slug": "playbook-soccer-high-press",
|
|
3414
|
+
"diagram": "playbook",
|
|
3415
|
+
"title": "High Press 4-3-3",
|
|
3416
|
+
"description": "Coordinated forward pressure \u2014 the front three and a midfielder hunt the ball in the opponent's half.",
|
|
3417
|
+
"standard": "IFAB Laws of the Game, Law 1 (pitch)",
|
|
3418
|
+
"tags": [
|
|
3419
|
+
"soccer",
|
|
3420
|
+
"high-press",
|
|
3421
|
+
"gegenpress",
|
|
3422
|
+
"defending"
|
|
3423
|
+
],
|
|
3424
|
+
"complexity": 2,
|
|
3425
|
+
"featured": false,
|
|
3426
|
+
"dsl": 'playbook "High Press 4-3-3" sport soccer\nformation 4-3-3\nrun 9 to 98,34\nrun 7 to 94,20\nrun 11 to 94,48\nrun 8 to 76,40',
|
|
3427
|
+
"notes": "A **high press** wins the ball back near the opponent's goal. The striker leads the press onto the centre-backs while the wingers curve their `run`s to cut the passing lanes to the full-backs, and a midfielder steps up to support \u2014 the coordinated forward movement that defines the gegenpress."
|
|
3428
|
+
},
|
|
3429
|
+
{
|
|
3430
|
+
"slug": "playbook-soccer-overlap",
|
|
3431
|
+
"diagram": "playbook",
|
|
3432
|
+
"title": "Overlap & Cross",
|
|
3433
|
+
"description": "The full-back overlaps the winger to get to the byline and deliver a cross into the box.",
|
|
3434
|
+
"standard": "IFAB Laws of the Game, Law 1 (pitch)",
|
|
3435
|
+
"tags": [
|
|
3436
|
+
"soccer",
|
|
3437
|
+
"overlap",
|
|
3438
|
+
"cross",
|
|
3439
|
+
"wide-play"
|
|
3440
|
+
],
|
|
3441
|
+
"complexity": 3,
|
|
3442
|
+
"featured": false,
|
|
3443
|
+
"dsl": 'playbook "Overlap & Cross" sport soccer\nview half\nplayer 7 o at 75,12 label 7\nplayer 2 o at 60,15 label 2\nplayer 9 o at 88,30 label 9\nplayer 11 o at 85,52 label 11\nplayer 10 o at 80,38 label 10\ndribble 7 to 82,20\nrun 2 to 90,8\npass 7 to 90,8\npass 2 to 102,34\nrun 9 to 101,31\nrun 11 to 101,40',
|
|
3444
|
+
"notes": "The **overlap** combines the winger and full-back: the winger drives inside (`dribble`) to fix the defender while the full-back `run`s outside and overlaps. The release pass down the line (`pass 7 to 90,8`) sets up a byline cross to the strikers attacking the box. Drawn with `view half` and explicit players for full control."
|
|
3445
|
+
},
|
|
3129
3446
|
{
|
|
3130
3447
|
"slug": "prisma-dual-pipeline",
|
|
3131
3448
|
"diagram": "prisma",
|
|
@@ -3164,6 +3481,114 @@ If the LED doesn't light up, three things to check, in order: LED polarity (the
|
|
|
3164
3481
|
"dsl": "prisma\nmode: 2020-single\ntitle: Effect of exercise on chronic low-back pain \u2014 SR\n\nidentification:\n databases:\n n: 1418\n sources: PubMed=600, Embase=450, Cochrane=184, Web of Science=184\n duplicates-removed: 318\n\nscreening:\n records-screened: 1100\n excluded:\n n: 870\n reasons: irrelevant title=750, non-English=120\n\neligibility:\n full-text-assessed: 230\n excluded:\n n: 195\n reasons: wrong population=80, wrong intervention=60, wrong outcome=55\n\nincluded:\n studies: 35\n reports: 38",
|
|
3165
3482
|
"notes": '## Scenario\n\nA research librarian produces the PRISMA 2020 flow diagram for a Cochrane review submission. The journal **requires** the diagram in the exact four-row structure \u2014 Identification \u2192 Screening \u2192 Eligibility \u2192 Included \u2014 with the count `(n = \u2026)` shown in every box and the excluded boxes itemizing reasons. With the dedicated `prisma` engine the librarian writes only counts and reasons; the rigid layout, the "Records removed before screening" side-box, and the exclusion side-boxes are produced automatically and are correct by construction.\n\n## Annotation key\n\n- **`mode: 2020-single`** \u2014 one Identification column (databases & registers). Use `mode: 2020-dual` to add the "other methods" column.\n- **`identification.databases`** \u2014 `n:` is the mandatory total; `sources:` renders the per-database breakdown; `duplicates-removed:` splits out into the right-column "Records removed before screening" box automatically.\n- **`screening` / `eligibility` `excluded:` blocks** \u2014 each has its own `n:` total and an optional `reasons:` breakdown rendered in a side-box to the right, connected by a horizontal arrow.\n- **`included.studies` / `reports`** \u2014 one study can yield several reports, so both counts render.\n\n## How to read\n\nTop to bottom mirrors the PRISMA 2020 template exactly. The left capsule bands label the three canonical stages; the orange bar spans the Identification column group. Counts reconcile across stages (1418 \u2212 318 = 1100 screened; 1100 \u2212 870 = 230 assessed; 230 \u2212 195 = 35 included) \u2014 the engine warns if they don\'t.\n\n## Standard reference\n\nPage MJ, McKenzie JE, Bossuyt PM, et al. *The PRISMA 2020 statement: an updated guideline for reporting systematic reviews.* BMJ 2021;372:n71. Template: [prisma-statement.org/prisma-2020-flow-diagram](https://www.prisma-statement.org/prisma-2020-flow-diagram).'
|
|
3166
3483
|
},
|
|
3484
|
+
{
|
|
3485
|
+
"slug": "rbd-data-center-tier-iii",
|
|
3486
|
+
"diagram": "rbd",
|
|
3487
|
+
"title": "Data-center availability (Tier III power, cooling, network, storage)",
|
|
3488
|
+
"description": "A four-stage reliability block diagram for a Tier III data center \u2014 dual-source power (utility in parallel with a generator-plus-ATS chain), N+1 (2-of-3) CRAC cooling, dual core switches, and mirrored storage. The engine reduces the whole nested structure to one availability figure.",
|
|
3489
|
+
"standard": "IEC 61078 / Uptime Institute Tier III",
|
|
3490
|
+
"tags": [
|
|
3491
|
+
"rbd",
|
|
3492
|
+
"reliability",
|
|
3493
|
+
"availability",
|
|
3494
|
+
"data-center",
|
|
3495
|
+
"redundancy",
|
|
3496
|
+
"n-plus-1",
|
|
3497
|
+
"k-of-n",
|
|
3498
|
+
"series-parallel"
|
|
3499
|
+
],
|
|
3500
|
+
"complexity": 4,
|
|
3501
|
+
"featured": true,
|
|
3502
|
+
"dsl": 'rbd "Data Center Tier III Availability"\n series {\n parallel {\n block UTIL "Utility feed" R=0.999\n series {\n block GEN "Diesel generator" R=0.98\n block ATS "Transfer switch" R=0.995\n }\n }\n kofn 2/3 {\n block CRAC1 "CRAC unit 1" R=0.97\n block CRAC2 "CRAC unit 2" R=0.97\n block CRAC3 "CRAC unit 3" R=0.97\n }\n parallel {\n block SW1 "Core switch A" R=0.995\n block SW2 "Core switch B" R=0.995\n }\n parallel {\n block ST1 "Storage node A" R=0.99\n block ST2 "Storage node B" R=0.99\n }\n }',
|
|
3503
|
+
"notes": "## What this shows\n\nA realistic Tier III topology where the whole facility is a **series** of four subsystems, each internally redundant. The **power** stage is the interesting one: the utility feed runs in **parallel** with a backup *chain* \u2014 a generator that only helps if its transfer switch also works (a nested `series`). Cooling is **N+1** (`2-of-3` CRAC units), and both the network and storage tiers are mirrored pairs.\n\n**The engine reduces the nesting to one number.** It rolls the generator chain (`0.98 \xB7 0.995`) into the power parallel, evaluates the 2-of-3 cooling exactly, and multiplies the four series stages to a **facility availability of \u2248 0.9972**. No single point of failure survives \u2014 every stage has redundancy \u2014 and the Birnbaum importance ranks which subsystem to harden first. This is the kind of nested success logic a generic diagram tool draws but never computes."
|
|
3504
|
+
},
|
|
3505
|
+
{
|
|
3506
|
+
"slug": "rbd-dual-channel-safety",
|
|
3507
|
+
"diagram": "rbd",
|
|
3508
|
+
"title": "Dual-channel safety system (redundant chains)",
|
|
3509
|
+
"description": "A reliability block diagram of a 1-out-of-2 safety instrumented function \u2014 two independent sensor\u2192logic\u2192actuator channels in parallel, each a series chain. Shows how a parallel of series strings removes every single point of failure.",
|
|
3510
|
+
"standard": "IEC 61078",
|
|
3511
|
+
"tags": [
|
|
3512
|
+
"rbd",
|
|
3513
|
+
"reliability",
|
|
3514
|
+
"safety",
|
|
3515
|
+
"redundancy",
|
|
3516
|
+
"1oo2",
|
|
3517
|
+
"series-parallel"
|
|
3518
|
+
],
|
|
3519
|
+
"complexity": 2,
|
|
3520
|
+
"featured": false,
|
|
3521
|
+
"dsl": 'rbd "Dual-channel trip (1oo2)"\n parallel {\n series {\n block S1 "Sensor A" R=0.97\n block L1 "Logic A" R=0.995\n block V1 "Valve A" R=0.98\n }\n series {\n block S2 "Sensor B" R=0.97\n block L2 "Logic B" R=0.995\n block V2 "Valve B" R=0.98\n }\n }',
|
|
3522
|
+
"notes": "## What this shows\n\nA **1-out-of-2 (1oo2)** safety architecture: two complete sensor\u2192logic\u2192valve channels run in parallel, so the trip still fires if either channel works end-to-end. Each channel is itself a **series** chain \u2014 a channel needs all three of its elements.\n\n**Redundancy removes the single points of failure.** Each channel alone has reliability `0.97\xB70.995\xB70.98 \u2248 0.946`; in parallel the system reaches `1 \u2212 (1\u22120.946)\xB2 \u2248 0.997`. Because no single block's failure drops the system to zero, the engine reports **no single point of failure** \u2014 the structural goal of a redundant safety function, proven by computation rather than asserted."
|
|
3523
|
+
},
|
|
3524
|
+
{
|
|
3525
|
+
"slug": "rbd-flight-control",
|
|
3526
|
+
"diagram": "rbd",
|
|
3527
|
+
"title": "Fly-by-wire flight control (triple-redundant)",
|
|
3528
|
+
"description": "A reliability block diagram of a fly-by-wire flight-control system \u2014 2-of-3 voting flight-control computers, triple-redundant hydraulics, and dual electrical buses, all in series. The engine computes the six-nines-class system reliability the architecture is designed to hit.",
|
|
3529
|
+
"standard": "IEC 61078 / ARP4761",
|
|
3530
|
+
"tags": [
|
|
3531
|
+
"rbd",
|
|
3532
|
+
"reliability",
|
|
3533
|
+
"aerospace",
|
|
3534
|
+
"fly-by-wire",
|
|
3535
|
+
"redundancy",
|
|
3536
|
+
"k-of-n",
|
|
3537
|
+
"2oo3",
|
|
3538
|
+
"triple-redundant"
|
|
3539
|
+
],
|
|
3540
|
+
"complexity": 3,
|
|
3541
|
+
"featured": false,
|
|
3542
|
+
"dsl": 'rbd "Fly-by-wire Flight Control"\n series {\n kofn 2/3 {\n block FCC1 "Flight computer 1" R=0.9995\n block FCC2 "Flight computer 2" R=0.9995\n block FCC3 "Flight computer 3" R=0.9995\n }\n parallel {\n block HYDG "Hydraulics green" R=0.998\n block HYDB "Hydraulics blue" R=0.998\n block HYDY "Hydraulics yellow" R=0.998\n }\n parallel {\n block AC1 "AC bus 1" R=0.999\n block AC2 "AC bus 2" R=0.999\n }\n }',
|
|
3543
|
+
"notes": `## What this shows
|
|
3544
|
+
|
|
3545
|
+
A textbook fly-by-wire architecture, the kind certified under ARP4761: **2-out-of-3** voting flight-control computers (a single computer can fail or disagree without losing control), **three independent hydraulic systems** (the green/blue/yellow split of a modern airliner), and **dual electrical buses** \u2014 all in **series** because the aircraft needs computing, hydraulics, and power simultaneously.
|
|
3546
|
+
|
|
3547
|
+
**The architecture's whole point is a number, and the engine computes it.** Each subsystem is driven so close to 1 that the product still lands at a system reliability of **\u2248 0.999998** \u2014 and Schematex prints the nines rather than rounding to "1", because in this domain the nines *are* the answer. No single point of failure remains, which is exactly the design intent the diagram now proves rather than merely asserts.`
|
|
3548
|
+
},
|
|
3549
|
+
{
|
|
3550
|
+
"slug": "rbd-redundant-server",
|
|
3551
|
+
"diagram": "rbd",
|
|
3552
|
+
"title": "Redundant server reliability (series + parallel + k-of-n)",
|
|
3553
|
+
"description": "A computed reliability block diagram for a server \u2014 a single power supply in series with a redundant fan pair and a 2-of-3 disk array. The engine reduces the success logic to one system-reliability figure and flags the power supply as the single point of failure.",
|
|
3554
|
+
"standard": "IEC 61078",
|
|
3555
|
+
"tags": [
|
|
3556
|
+
"rbd",
|
|
3557
|
+
"reliability",
|
|
3558
|
+
"redundancy",
|
|
3559
|
+
"series-parallel",
|
|
3560
|
+
"k-of-n",
|
|
3561
|
+
"spof",
|
|
3562
|
+
"availability"
|
|
3563
|
+
],
|
|
3564
|
+
"complexity": 2,
|
|
3565
|
+
"featured": true,
|
|
3566
|
+
"dsl": 'rbd "Redundant Server"\n series {\n block PSU "Power Supply" R=0.99\n parallel {\n block FAN1 "Fan A" R=0.95\n block FAN2 "Fan B" R=0.95\n }\n kofn 2/3 {\n block D1 "Disk 1" R=0.97\n block D2 "Disk 2" R=0.97\n block D3 "Disk 3" R=0.97\n }\n }',
|
|
3567
|
+
"notes": "## What this shows\n\nThe three building blocks of reliability success logic in one diagram. The **single power supply** sits in series \u2014 everything depends on it. The **two fans** are in parallel, so the cooling subsystem survives either one failing. The **three disks** form a **2-of-3** array that tolerates one loss.\n\n**The number is computed, not drawn.** The engine reduces each group \u2014 fans to `1 \u2212 0.05\xB2 = 0.9975`, the disk array to `3\xB70.97\xB2\xB70.03 + 0.97\xB3 = 0.99735`, then multiplies the series chain \u2014 to a **system reliability of \u2248 0.9849**. It also derives each block's Birnbaum importance and flags the **power supply as the single point of failure** (red border): with no redundancy in series, its failure alone takes down the whole system, and it carries the highest importance \u2014 the first place to add redundancy."
|
|
3568
|
+
},
|
|
3569
|
+
{
|
|
3570
|
+
"slug": "rbd-sif-emergency-shutdown",
|
|
3571
|
+
"diagram": "rbd",
|
|
3572
|
+
"title": "Safety instrumented function (SIF) \u2014 emergency shutdown",
|
|
3573
|
+
"description": "A reliability block diagram of an IEC 61511 emergency-shutdown loop \u2014 2-of-3 voting pressure transmitters, a redundant logic solver, and 1-out-of-2 shutdown valves. The classic sensor \u2192 logic \u2192 final-element SIF architecture, with the engine computing the loop reliability.",
|
|
3574
|
+
"standard": "IEC 61078 / IEC 61511 (SIF)",
|
|
3575
|
+
"tags": [
|
|
3576
|
+
"rbd",
|
|
3577
|
+
"reliability",
|
|
3578
|
+
"safety",
|
|
3579
|
+
"sif",
|
|
3580
|
+
"sil",
|
|
3581
|
+
"iec-61511",
|
|
3582
|
+
"k-of-n",
|
|
3583
|
+
"2oo3",
|
|
3584
|
+
"1oo2",
|
|
3585
|
+
"redundancy"
|
|
3586
|
+
],
|
|
3587
|
+
"complexity": 3,
|
|
3588
|
+
"featured": false,
|
|
3589
|
+
"dsl": 'rbd "Emergency Shutdown SIF (SIL 2)"\n series {\n kofn 2/3 {\n block PT1 "Pressure Tx 1" R=0.98\n block PT2 "Pressure Tx 2" R=0.98\n block PT3 "Pressure Tx 3" R=0.98\n }\n parallel {\n block LS1 "Logic solver A" R=0.999\n block LS2 "Logic solver B" R=0.999\n }\n parallel {\n block SDV1 "Shutdown valve A" R=0.96\n block SDV2 "Shutdown valve B" R=0.96\n }\n }',
|
|
3590
|
+
"notes": "## What this shows\n\nThe canonical safety-instrumented-function architecture from IEC 61511, laid out as a **series** of three subsystems: **sensing**, **logic**, and **final elements**. Sensing uses **2-out-of-3** voting transmitters (tolerates one failure *and* rejects one spurious trip); the **logic solver** is a redundant pair; the **final elements** are two shutdown valves in a **1-out-of-2** (parallel) arrangement so either can close the line.\n\n**The reliability is computed across the loop.** The engine evaluates the 2oo3 sensor group exactly, the two parallel pairs as `1 \u2212 (1\u2212R)\xB2`, and the series chain \u2014 giving a loop reliability of **\u2248 0.9972**. Because every subsystem is redundant, there's **no single point of failure**, and the importance ranking points at the valves (the lowest-reliability stage) as the place a SIL upgrade buys the most. The success-space companion to the fault tree a safety case also needs."
|
|
3591
|
+
},
|
|
3167
3592
|
{
|
|
3168
3593
|
"slug": "sequence-combined-fragments-gallery",
|
|
3169
3594
|
"diagram": "sequence",
|
|
@@ -4093,6 +4518,14 @@ var SYNTAX = {
|
|
|
4093
4518
|
"floorplan": {
|
|
4094
4519
|
"title": "Floor plan",
|
|
4095
4520
|
"content": '## 1. Your first floor plan\n\nA header, one room, a door, and a window:\n\n```\nfloorplan "Studio"\nroom main "Studio" at 0,0 size 4x3\ndoor main south at 20%\nwindow main north at 50%\n```\n\nThree rules cover most usage:\n\n1. Start with `floorplan`, an optional quoted title, and `unit m` (default) or `unit ft`. **All numbers are in this unit.**\n2. Rooms are rectangles: `room id "Label" at x,y size WxH`. The label and computed area render centered in the room.\n3. Openings hang on walls: a wall reference (`main south`) positions along that wall at a percentage; `between A B` finds the shared wall automatically.\n\n---\n\n## 2. Rooms and placement\n\nPlace the first room at `0,0` and chain the rest relatively \u2014 adjacent rooms share an edge exactly, and their walls merge into a single band:\n\n```\nroom living "Living Room" at 0,0 size 5.2x4.2\nroom kitchen "Kitchen" right-of living size 3.0x4.2\nroom hall "Hallway" below living size 2.0x2.6\nroom bed1 "Bedroom 1" right-of hall size 3.2x2.6\n```\n\n- `right-of` / `left-of` / `above` / `below` snap to the reference room\'s edge.\n- `align start|center|end` aligns the cross axis (default `start` = top/left edges flush); `offset n` shifts it.\n- `fill #e0f2fe` tints the floor; `nolabel` suppresses the name + area label (single-space plans like classrooms).\n- Coordinates are y-down: `at 0,0` is the top-left corner.\n\n**L/T/U-shaped rooms** use `extend` \u2014 declare the main rectangle, then grow it with edge-sharing rectangles. The walls merge along the seam, the area is summed into one number (exactly how professionals measure L-rooms), and the label centers on the largest part:\n\n```\nroom living "Living Room" at 0,0 size 5x4\nextend living at 5,2 size 2x2 # L-shape: notch at top-right\n```\n\nAn extension that doesn\'t touch the room, or overlaps it, is rejected with a quantified error. `north` (optionally `north 30` for rotated plans) adds the compass at the top right.\n\n---\n\n## 3. Doors, windows, openings\n\n```\ndoor hall west at 50% width 1.0 swing in # exterior door on a wall\ndoor between hall bed1 at 50% hinge right # interior door on the shared wall\ndoor between bed1 bath at 30% type sliding # sliding door \u2014 no arc\nopening between living kitchen at 35% width 1.2 # archway, no leaf\nwindow living north at 30% width 1.8\n```\n\n- `between A B` resolves the shared wall segment and positions at the percentage **along the overlap** \u2014 no coordinates needed. Non-adjacent rooms are rejected with the measured gap.\n- Doors default to 0.9 m wide on exterior walls, 0.8 m on `between` walls; windows default to 1.2 m.\n- `hinge left|right` picks the jamb; `swing in|out` flips the quarter-arc (default swings into the owning room \u2014 the first room named).\n- Door `type single|double|sliding|pocket|bifold`: double draws two mirrored arcs; sliding/pocket draw offset leaf lines without an arc; bifold draws the two closet-door tent peaks.\n- Window `type fixed|sliding|casement|bay`: sliding = two offset panels, casement adds the outward swing arc, bay projects a splayed trapezoid outside the wall.\n- Openings clamp to fit their wall segment (with a warning) rather than overflowing.\n\n---\n\n## 4. Furniture\n\nFurniture is placed **relative to its room\'s interior top-left corner**, with optional `size`, `rotate`, and a label:\n\n```\nfurniture sofa in living at 0.25,2.9\nfurniture desk "Teacher" in class at 2,1.5 size 5x2.5 rotate 20\nfurniture counter "Cubbies" in class at 6,24.4 size 10x1.2\n```\n\nThe catalog spans residential, commercial, and site work (sizes default to industry-standard footprints):\n\n| Cluster | Types |\n| --- | --- |\n| Residential | `bed-double` `bed-single` `bed-queen` `bed-king` `bunk-bed` `crib` `sofa` `loveseat` `sectional` `armchair` `ottoman` `coffee-table` `side-table` `tv` `tv-stand` `fireplace` `floor-lamp` `rug` `wardrobe` `dresser` `nightstand` `bookshelf` `plant` `piano` `piano-upright` `pool-table` `ceiling-fan` `dining-table` |\n| Kitchen / bath | `counter` `wall-cabinet` `kitchen-sink` `stove` `range-hood` `fridge` `dishwasher` `island` `bar-stool` `toilet` `sink` `vanity` `bidet` `urinal` `bathtub` `shower` `washer` `dryer` |\n| Classroom / office | `desk-chair` `desk` `desk-l` `chair` `whiteboard` `smartboard` `bookcase` `cubbies` `filing-cabinet` `lockers` `kidney-table` `round-table-4/6/8/10` `conference-table` |\n| Event / banquet | `banquet-table` `head-table` `stage` `dance-floor` `bar` `dj-booth` `cocktail-table` `podium` `row-chairs` |\n| Retail / warehouse | `shelving` `checkout` `clothing-rack` `fitting-room` `pallet-rack` `loading-dock` `forklift` |\n| Salon / gym | `salon-chair` `shampoo-bowl` `manicure-table` `treadmill` `weight-bench` `power-rack` `yoga-mat` |\n| Stairs / structural | `stairs` `stairs-l` `stairs-u` `spiral-stairs` `elevator` `column` |\n| Site / outdoor | `tree` `car` |\n\n**Auto-seating** is built in: `round-table-8` draws 8 chairs on its circumference (60\u2033 top; `round-table-10` uses 72\u2033), `dining-table` / `banquet-table` / `conference-table` seat both long edges at one chair per 0.65 m, `head-table` seats one side facing the room, `manicure-table` seats a client and technician chair, and `row-chairs` places a theater strip at 0.55 m pitch. `rug`, `dance-floor`, `yoga-mat`, `counter`, `island`, `wall-cabinet`, `range-hood`, and `ceiling-fan` are underlays/overheads \u2014 other furniture can overlap them without a collision warning.\n\n`tree` and `car` are sized for the outdoors (canopy disc, parking-stall footprint), so a **site plan** is just zones tiled as adjacent rooms \u2014 front yard, house footprint, driveway, back yard \u2014 with trees and parked cars placed on top.\n\n**Stairs** follow the drafting conventions: tread lines at 0.28 m (11\u2033), a direction arrow starting at the lowest tread labeled `UP` (give the item a `"DN"` label for a descending run), and the 45\xB0 zigzag break line at the imaginary 4-ft cut plane, with dashed treads beyond. `stairs` is a straight run (orient with `size`/`rotate`), `stairs-l` turns 90\xB0 over a landing, `stairs-u` switches back 180\xB0, `spiral-stairs` is a circle with radial treads and a center pole.\n\n---\n\n## 5. Arrays \u2014 grid, row, arc\n\nRepeated furniture is one statement, not thirty:\n\n```\ngrid desk-chair in class rows 5 cols 6 count 27 area 5,8 25,24 itemsize 2x2.5\nrow round-table-8 in hall cols 3 area 8.8,13.4 15.2,13.4 itemsize 2.3x2.3\narc chair in hall count 13 center 12,8 radius 5 from 200 to 340\n```\n\n- `area x1,y1 x2,y2` gives the first and last item **centers**; items spread evenly between them.\n- `count` truncates **row-major** \u2014 27 desks in a 5\xD76 grid drops the last row\'s tail, exactly like a real classroom.\n- `arc` places items on a circular arc facing the center \u2014 semicircle classrooms, ceremony seating.\n\n---\n\n## 6. Units, areas, dimension lines\n\n- `unit ft` makes every number feet; dimension lines format as `32\'` / `15\'1"` and areas as `sq ft`. Internally everything is metric (1 ft = 0.3048 m).\n- Room areas are **computed by the engine** from the declared geometry, never typed by hand.\n- Dimension lines render outside the plan with architectural slash ticks: overall width + height always, plus per-room segments along the top and left exteriors.\n\n---\n\n## 7. Validation\n\nThe engine validates what LLMs (and humans) actually get wrong, with errors that name the offending elements and a fix direction:\n\n**Errors** (block rendering, shown in an error panel):\n\n- Room overlap \u2014 `rooms "bed1" and "bath" overlap by 0.40\xD72.60 m \u2014 move "bath" right-of "bed1" or shrink size`\n- Door between non-adjacent rooms \u2014 `door between "kitchen" and "bed2": rooms share no wall (gap 2 m on x-axis)`\n- Furniture outside its room \u2014 `furniture sofa #1 extends 1.7 m outside room "c" \u2014 move it or shrink size`\n\n**Warnings** (render anyway, listed under the plan):\n\n- Furniture collision \u2014 bounding boxes including **chair-ring envelopes**, so two banquet rounds whose chairs touch get flagged even when the table tops don\'t.\n- Opening clamped to fit its wall segment.\n\n---\n\n## 8. Grammar (EBNF)\n\n```text\nplan ::= "floorplan" string? ("unit" ("m"|"ft"))? NL statement*\nstatement ::= room | extend | north | door | window | opening | furniture | array\nroom ::= "room" id string? placement "size" dims ("fill" color)? ("nolabel")?\nextend ::= "extend" id placement "size" dims\nnorth ::= "north" num?\nplacement ::= "at" coord\n | ("right-of"|"left-of"|"above"|"below") id ("offset" num)?\n ("align" ("start"|"center"|"end"))?\ndoor ::= "door" (wallref | "between" id id) "at" pct\n ("width" num)? ("hinge" ("left"|"right"))? ("swing" ("in"|"out"))?\n ("type" ("single"|"double"|"sliding"|"pocket"|"bifold"))?\nwindow ::= "window" wallref "at" pct ("width" num)?\n ("type" ("fixed"|"sliding"|"casement"|"bay"))?\nopening ::= "opening" (wallref | "between" id id) "at" pct ("width" num)?\nfurniture ::= "furniture" type ("in" id) "at" coord ("size" dims)? ("rotate" num)? string?\narray ::= ("grid"|"row"|"arc") type "in" id\n ("rows" int)? ("cols" int)? ("count" int)?\n ("area" coord coord)? ("itemsize" dims)? ("rotate" num)?\n ("center" coord)? ("radius" num)? ("from" num "to" num)?\nwallref ::= id ("north"|"south"|"east"|"west")\ncoord ::= num "," num dims ::= num "x" num pct ::= num "%"?\n```\n\nComments run from `#` to end of line. CJK quotes (`\u201C\u201D`) are accepted as ASCII quotes.\n\n---\n\n## Related examples\n\n- [Two-bedroom apartment](/examples#floorplan) \u2014 relative placement, 7 doors, full furnishing\n- [27-desk classroom](/examples#floorplan) \u2014 `grid \u2026 count` truncation, `unit ft`\n- [Wedding reception for 120](/examples#floorplan) \u2014 auto-seated banquet rounds, dance floor'
|
|
4521
|
+
},
|
|
4522
|
+
"playbook": {
|
|
4523
|
+
"title": "Sports playbook",
|
|
4524
|
+
"content": '## 1. Your first play\n\nEvery diagram starts with a header naming the **sport**, then a **formation** (which places the players), then **assignments**:\n\n```\nplaybook "Give & Go" sport basketball\nset 5-out\npass 1 2\ncut 1 rim\npass 2 1\n```\n\n`pass 1 2` draws a pass from player 1 to player 2; `cut 1 rim` sends player 1 to the rim. Basketball draws passes **dashed** and cuts **solid** \u2014 the convention on every coaching whiteboard.\n\n---\n\n## 2. The three sports\n\nPick the sport in the header (`sport football|basketball|soccer`). Each uses its real unit and the conventional coaching viewpoint:\n\n| Sport | Unit | View | Surface |\n|---|---|---|---|\n| `football` | yards | offense at the bottom attacking **up**; downfield = up | green field with yard lines, hashes, end zone |\n| `basketball` | feet | NBA **half-court**; baseline + hoop at the top | light maple hardwood |\n| `soccer` | metres | full **105 \xD7 68 m** pitch (attack toward the right); or `view half` | green pitch with IFAB markings |\n\n---\n\n## 3. Players & formations\n\nThe fastest way to place players is a **formation** (football/soccer) or **set** (basketball):\n\n- **Football** \u2014 `formation i-form | shotgun | singleback | pistol | spread | trips | empty | goal-line | wishbone` with optional strength `left`/`right`. Receivers are `X Z H Y` (Y = tight end), backs `QB RB FB`, line `LT LG C RG RT`.\n- **Basketball** \u2014 `set horns | 1-4-high | 1-4-low | box | spread-pnr | 4-out | 5-out`. Players are numbered `1`\u2013`5`.\n- **Soccer** \u2014 `formation 4-3-3 | 4-4-2 | 4-2-3-1 | 4-5-1 | 4-4-1-1 | 3-5-2 | 3-4-3`. Players are numbered `1` (GK) \u2026 `11`.\n\nFor set-pieces or free-form diagrams, place players individually and crop to a half:\n\n```\nplaybook "Overlap & Cross" sport soccer\nview half\nplayer 7 o at 75,12 label 7\nplayer 2 o at 60,15 label 2\nplayer 9 o at 88,30 label 9\nplayer 11 o at 85,52 label 11\nplayer 10 o at 80,38 label 10\ndribble 7 to 82,20\nrun 2 to 90,8\npass 7 to 90,8\npass 2 to 102,34\nrun 9 to 101,31\nrun 11 to 101,40\n```\n\n---\n\n## 4. Movement verbs & line styles\n\nThe same line style means different things in different sports \u2014 Schematex draws each sport\'s own convention, and the legend always matches:\n\n| Verb | Football | Basketball | Soccer |\n|---|---|---|---|\n| `pass` | dashed (throw) | **dashed** | **solid** |\n| `run` / `cut` | solid | **solid** (cut) | **dashed** (run) |\n| `dribble` | \u2014 | wavy | wavy |\n| `screen` / `block` | T-bar \u22A5 | T-bar \u22A5 (screen) | T-bar \u22A5 |\n| `shot` | \u2014 | solid | double line |\n\n**Note the inversion:** basketball draws a pass *dashed* and a cut *solid*; soccer draws a pass *solid* and a run *dashed*. That is how the two coaching communities actually diagram \u2014 Schematex honours each.\n\nMove targets can be a **player id**, a **landmark** name, or explicit **coordinates** (`to x,y`).\n\n---\n\n## 5. Football \u2014 routes, runs, defense\n\nPass routes use the **route tree**: `go fly streak slant flat hitch out in dig curl comeback corner post wheel cross drag seam`. Run concepts: `dive iso power counter sweep toss draw trap`. Blocking uses `block`, `pull`, and `handoff`. Set `goal N` to draw the end zone and goalposts:\n\n```\nplaybook "Red Zone \u2014 Play-Action Fade" sport football\nfield down 1 distance 5 los 5 goal 5 hash nfl\nformation i-form right\ndefense cover-1\nhandoff QB RB\nroute Z corner 4\nroute X slant\nroute Y out 3\nrun RB dive right\n```\n\n`defense cover-0/1/2/3/4/6` draws the coverage shell; `defense 4-3 | 3-4 | nickel | dime` sets the front. `hash nfl|college|none` controls the hash marks.\n\n---\n\n## 6. Basketball \u2014 sets, landmarks, screens\n\nCuts and passes target **named landmarks** \u2014 `rim elbow wing corner short-corner block slot top high-post dunker` (prefix `l`/`r` for left/right). `screen A B` draws a ball-screen (T-bar) for player B; `dribble` is a wavy line:\n\n```\nplaybook "Spread Pick & Roll" sport basketball\nset spread-pnr\nscreen 5 1\ndribble 1 to 11,17\ncut 5 rim\npass 1 2\n```\n\n`defense man` matches each defender to a man; `defense zone-2-3 | zone-3-2 | zone-1-3-1` draws a zone front.\n\n---\n\n## 7. Soccer \u2014 shapes, runs, build-up\n\nA formation alone draws the team shape. Add `pass` (solid), `run` (dashed), and `dribble` (wavy) to show a phase of play:\n\n```\nplaybook "Build-Up From the Back" sport soccer\nformation 4-3-3\npass 1 4\npass 4 2\nrun 2 to 40,10\npass 4 6\nrun 6 to 62,24\n```\n\nLandmarks include `box top-box d penalty-spot near-post far-post six-yard center`. `defense low-block | mid-block | high-press` overlays the opponent\'s shape. Soccer renders daylight-only \u2014 `theme: dark` falls back to the default pitch.\n\n---\n\n## 8. Validation\n\nThe engine rejects the mistakes models actually make and lists the valid options:\n\n- unknown `sport`, `formation` / `set`, `defense`, or named route;\n- a move referencing an undeclared player id;\n- a malformed coordinate or a missing `to` target.\n\nSofter issues (e.g. a zero-length move) render with a warning rather than failing.\n\n---\n\n## 9. Grammar (EBNF)\n\n```text\nplaybook = "playbook" string "sport" sport NL { stmt NL } ;\nsport = "football" | "basketball" | "soccer" ;\nstmt = field | formation | defense | player | move | zone | "view" view ;\nfield = "field" { "down" num | "distance" num | "los" num\n | "goal" num | "hash" hash | "view" view } ;\nformation = ( "formation" | "set" ) name [ "left" | "right" ] ;\ndefense = "defense" scheme ;\nplayer = "player" id pos "at" coord "label" text ;\nmove = route | run | pass | cut | dribble | screen\n | shot | motion | handoff | pull | block ;\nroute = "route" id namedRoute [ num ] [ "left" | "right" ] ;\nrun = "run" id ( concept [ "left" | "right" ] | "to" coord ) ;\npass = "pass" id ( id | landmark | "to" coord ) ;\ncut = "cut" id ( landmark | "to" coord ) ;\ndribble = "dribble" id "to" coord ;\nscreen = "screen" id id ;\nshot = "shot" id [ "to" coord ] ;\nzone = "zone" coord coord string ;\ncoord = num "," num ;\nview = "full" | "half" ;\nhash = "nfl" | "college" | "none" ;\n```\n\n---\n\n## Related examples\n\nFive canonical plays per sport ship as examples \u2014 Four Verticals, Mesh, Smash, Power O, and a Red-Zone fade for football; Pick & Roll, Horns, Give & Go, Floppy, and a Backdoor cut for basketball; 4-3-3 shape, Build-Up, Overlap, High Press, and Counter-Attack for soccer.'
|
|
4525
|
+
},
|
|
4526
|
+
"rbd": {
|
|
4527
|
+
"title": "Reliability Block Diagram",
|
|
4528
|
+
"content": '## 1. Your first diagram\n\nEvery document starts with the `rbd` keyword (alias `reliability`), an optional title, then nested success-logic groups around `block` leaves:\n\n```\nrbd "Two redundant pumps"\n parallel {\n block A "Pump A" R=0.9\n block B "Pump B" R=0.9\n }\n```\n\nThe engine draws the two pumps on parallel rails between a split node and a join node, computes the system reliability `1 \u2212 (1\u22120.9)(1\u22120.9) = 0.99`, and prints it as the headline. A bare top-level list of blocks (no outer group) is treated as a **series** chain.\n\n## 2. Blocks\n\nA `block` is one component on a success path:\n\n```\nblock ID "Label" R=0.99\n```\n\n- `ID` \u2014 a short identifier (shown when no label is given).\n- `"Label"` \u2014 an optional display name (CJK quotes welcome).\n- Reliability is given as **`R=0.99`** (reliability/availability), **`p=0.01`** (probability of *failure*, \u2192 R = 1\u2212p), or a percentage **`R=99%`**. A block with no reliability leaves the system figure symbolic (`n/a`).\n\n## 3. Success-logic groups\n\nGroups nest freely, so you can model redundant chains, voting banks, and standby pairs:\n\n| Group | Succeeds when | Reliability |\n|-------|---------------|-------------|\n| `series { \u2026 }` | **every** child works | \u220F R\u1D62 |\n| `parallel { \u2026 }` | **any** child works | 1 \u2212 \u220F(1 \u2212 R\u1D62) |\n| `kofn k/n { \u2026 }` | **\u2265 k of n** children work | exact state enumeration |\n\n```\nseries {\n block CTRL "Controller" R=0.995\n parallel {\n series { block P1 "Path 1 sensor" R=0.97\n block A1 "Path 1 actuator" R=0.98 }\n series { block P2 "Path 2 sensor" R=0.97\n block A2 "Path 2 actuator" R=0.98 }\n }\n}\n```\n\n## 4. Computed reliability, importance & SPOF\n\nAfter parsing, the engine computes:\n\n- **System reliability** \u2014 the headline figure, by recursive series/parallel/k-of-n reduction.\n- **Birnbaum importance** `I\u1D2E(i) = R_sys(R\u1D62=1) \u2212 R_sys(R\u1D62=0)` for every block; the highest-importance block (the improvement target) is accented.\n- **Single points of failure** \u2014 any block where `R_sys(R\u1D62=0) = 0` (its failure alone fails the system) is drawn with a red border. A non-redundant block in series is always a SPOF.\n\n## 5. Validation\n\nThe parser reports non-fatal warnings rather than failing:\n\n- a `kofn k/n` threshold with `k > n` is clamped to `n` (and `k < 1` to `1`);\n- a reliability outside `0..1` is clamped;\n- a duplicate block id is flagged.\n\n## 6. Theming\n\n`theme: default` uses the shared risk-reliability palette (neutral blocks, blue reliability numerals, red single-point-of-failure borders). `theme: monochrome` renders a black-and-white print version (SPOF by border weight); `theme: dark` is the Catppuccin dark variant.'
|
|
4096
4529
|
}
|
|
4097
4530
|
};
|
|
4098
4531
|
|
|
@@ -5352,6 +5785,44 @@ var PROFILES = {
|
|
|
5352
5785
|
"'has no effect/cause' -> every failure mode needs at least one effect and one cause."
|
|
5353
5786
|
]
|
|
5354
5787
|
},
|
|
5788
|
+
rbd: {
|
|
5789
|
+
type: "rbd",
|
|
5790
|
+
header: 'rbd "Title"',
|
|
5791
|
+
mode: "brace-nested success logic: series/parallel/kofn groups wrapping `block` leaves",
|
|
5792
|
+
keywords: 'header: rbd | reliability \xB7 groups: series { \u2026 } | parallel { \u2026 } | kofn k/n { \u2026 } (nestable) \xB7 leaf: block ID "Label" R=0.99 (also p=0.01 failure prob, or R=99%) \xB7 engine computes system reliability + Birnbaum importance + SPOF',
|
|
5793
|
+
forms: [
|
|
5794
|
+
'rbd "Redundant Server"',
|
|
5795
|
+
"series {",
|
|
5796
|
+
' block PSU "Power Supply" R=0.99',
|
|
5797
|
+
" parallel {",
|
|
5798
|
+
' block FAN1 "Fan A" R=0.95',
|
|
5799
|
+
' block FAN2 "Fan B" R=0.95',
|
|
5800
|
+
" }",
|
|
5801
|
+
" kofn 2/3 {",
|
|
5802
|
+
' block D1 "Disk 1" R=0.97',
|
|
5803
|
+
' block D2 "Disk 2" R=0.97',
|
|
5804
|
+
' block D3 "Disk 3" R=0.97',
|
|
5805
|
+
" }",
|
|
5806
|
+
"}"
|
|
5807
|
+
],
|
|
5808
|
+
prefer: [
|
|
5809
|
+
"Single-word keyword is `rbd` (alias `reliability`). Nest `series`/`parallel`/`kofn k/n` groups with braces around `block` leaves.",
|
|
5810
|
+
"Give every block a reliability: `R=0.99` (or failure prob `p=0.01`, or `R=99%`); the engine then computes system reliability.",
|
|
5811
|
+
"Use `parallel { \u2026 }` for full redundancy and `kofn 2/3 { \u2026 }` for k-out-of-n voting redundancy.",
|
|
5812
|
+
"Groups nest freely \u2014 e.g. a `parallel` of two `series` strings models redundant chains.",
|
|
5813
|
+
"A bare top-level list of blocks (no outer group) is treated as a series chain."
|
|
5814
|
+
],
|
|
5815
|
+
avoid: [
|
|
5816
|
+
"Don't omit the `block` keyword's reliability if you want a number \u2014 a block with no R leaves the system reliability symbolic.",
|
|
5817
|
+
"Don't forget to close every `{` with a `}` \u2014 groups are brace-delimited, not indentation-driven.",
|
|
5818
|
+
"Don't write `kofn` without a `k/n` threshold (e.g. `kofn 2/3 { \u2026 }`)."
|
|
5819
|
+
],
|
|
5820
|
+
repair: [
|
|
5821
|
+
"'needs a k/n threshold' -> write `kofn 2/3 { \u2026 }` with the threshold before the brace.",
|
|
5822
|
+
"'Unclosed group' -> add the missing `}`.",
|
|
5823
|
+
"If system reliability shows 'n/a', a block is missing its `R=`/`p=`."
|
|
5824
|
+
]
|
|
5825
|
+
},
|
|
5355
5826
|
causalloop: {
|
|
5356
5827
|
type: "causalloop",
|
|
5357
5828
|
header: 'causalloop "Title"',
|
|
@@ -5626,6 +6097,37 @@ var PROFILES = {
|
|
|
5626
6097
|
"'extends \u2026 outside room' -> reduce the furniture x,y or size; coordinates start at the room's top-left interior corner.",
|
|
5627
6098
|
"'overlaps \u2026 by \u2026 m' (warning) -> spread the grid `area` corners or reduce rows/cols; remember chair rings extend ~0.45 m beyond a table edge."
|
|
5628
6099
|
]
|
|
6100
|
+
},
|
|
6101
|
+
playbook: {
|
|
6102
|
+
type: "playbook",
|
|
6103
|
+
header: 'playbook "Play Name" [sport football]',
|
|
6104
|
+
mode: "formation preset + named routes off the route tree; coordinates in yards (x lateral from ball, y depth off LOS)",
|
|
6105
|
+
keywords: 'field down N distance M los YARD hash nfl|college|none \xB7 formation i-form|shotgun|singleback|pistol|trips-right|trips-left|spread|empty|pistol|goal-line|wishbone [left|right] \xB7 defense 4-3|3-4|nickel|dime|cover-0|cover-1|cover-2|cover-3|cover-4|cover-6 \xB7 player id pos[o|c|ol|qb|rb|wr|te|x|dl|lb|db|s] [label "L"] [at x,y] \xB7 route PLAYER NAMED [depth] [left|right] \xB7 run PLAYER CONCEPT [left|right] \xB7 block BLOCKER TARGET \xB7 pull LINEMAN left|right \xB7 handoff QB BACK \xB7 motion PLAYER left|right [yards] \xB7 zone at x,y size rxXry "label" \xB7 route tree: go/fly/streak slant flat hitch out in/dig curl comeback corner/flag post wheel cross/drag seam screen \xB7 run concepts: dive iso power counter sweep toss draw trap \xB7 players from a formation use ids QB RB FB C LG RG LT RT Y(TE) X Z H',
|
|
6106
|
+
forms: [
|
|
6107
|
+
'playbook "Slant-Flat" sport football',
|
|
6108
|
+
"field down 1 distance 10 los 35 hash nfl",
|
|
6109
|
+
"formation trips-right",
|
|
6110
|
+
"defense cover-2",
|
|
6111
|
+
"route Z slant",
|
|
6112
|
+
"route H flat",
|
|
6113
|
+
"route X slant",
|
|
6114
|
+
"run RB dive right"
|
|
6115
|
+
],
|
|
6116
|
+
prefer: [
|
|
6117
|
+
"Start from a `formation` preset \u2014 it places all 11 offensive players with standard ids (QB RB FB C LG RG LT RT, TE=Y, receivers X/Z/H). Then assign routes by id.",
|
|
6118
|
+
"Use named routes from the tree (`route Z post`, `route H out 12`) \u2014 the optional number is the stem depth in yards off the LOS; an explicit `left`/`right` overrides the natural break side.",
|
|
6119
|
+
"Use `run RB power right` for the ball carrier, `pull LG right` for a pulling lineman, `block FB DE_S` for a key block (T-bar drawn on the target), `handoff QB RB` for the mesh.",
|
|
6120
|
+
"Add `defense cover-2` (or 4-3 / cover-3 \u2026) to drop in 11 defenders + coverage zone bubbles automatically.",
|
|
6121
|
+
"Use `field down 1 distance 10 los 35` for the down-and-distance banner; `hash nfl|college` sets the hash-mark width."
|
|
6122
|
+
],
|
|
6123
|
+
avoid: [
|
|
6124
|
+
"Don't hand-place all 22 players with `at` unless you need a non-standard look \u2014 the formation/defense presets are far less error-prone.",
|
|
6125
|
+
"Don't invent route names \u2014 stick to the tree (go/slant/out/in/curl/comeback/corner/post/flat/hitch/wheel/cross/seam/screen) and run concepts (dive/power/counter/sweep/toss/draw/iso/trap)."
|
|
6126
|
+
],
|
|
6127
|
+
repair: [
|
|
6128
|
+
"'route on unknown player \u2026' (warning) -> the player id isn't in the formation; check the roster ids (QB RB FB C LG RG LT RT Y X Z H) or add a `player` statement.",
|
|
6129
|
+
"'block \u2026 on unknown target \u2026' (warning) -> the block target must be a declared defender id (e.g. DE_S, MLB) \u2014 add `defense \u2026` so the defenders exist."
|
|
6130
|
+
]
|
|
5629
6131
|
}
|
|
5630
6132
|
};
|
|
5631
6133
|
function getGenerationProfile(type) {
|
|
@@ -5790,5 +6292,5 @@ function matchRepair(repairs, message) {
|
|
|
5790
6292
|
}
|
|
5791
6293
|
|
|
5792
6294
|
export { DIAGRAM_REGISTRY, DIAGRAM_SINCE, getAllDiagramTypes, getDiagramMeta, getDiagramSince, getExamples, getSyntax, listDiagrams, renderDsl, resolveDiagramType, validateDsl };
|
|
5793
|
-
//# sourceMappingURL=chunk-
|
|
5794
|
-
//# sourceMappingURL=chunk-
|
|
6295
|
+
//# sourceMappingURL=chunk-N524SY5D.js.map
|
|
6296
|
+
//# sourceMappingURL=chunk-N524SY5D.js.map
|