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

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion blog/deciding-well-solved/og.sha
Original file line number Diff line number Diff line change
@@ -1 +1 @@
31822d50f0f211896bf967d08e76e9ec0616d164badc62057eb12106e5be434b
6535f8b21c3602a1b317ff70b6fa4e7f43b5fd622aca9e0c0e04c78851336d80
2 changes: 1 addition & 1 deletion blog/og.sha
Original file line number Diff line number Diff line change
@@ -1 +1 @@
5401b30118574120ec7e075c9da15f75e70798127fa715d4be56c4dc7b6f2d16
b276dbe150c4de571fe6437f09b4f3e32e9061e804bd02fbe81f6a27f72d8816
2 changes: 1 addition & 1 deletion blog/one-question-answered/og.sha
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2eb8fcd132c2d3a1f4187d7a147f70dc204e623f8c3cf865bec5e369fbf57e98
a2110254675a84d80f24d22812f89551827e0c180e3162110164be92d72137c9
5 changes: 4 additions & 1 deletion chat.css
Original file line number Diff line number Diff line change
Expand Up @@ -213,12 +213,15 @@ html[data-chat-waiting]::after{content:"ask \00b7 " attr(data-chat-waiting);pos
sized to the text; a person's mark is the firm brightness and an agent's the mid, as the
Processes page draws them, and both beat the linked label's own color; a system's element mark
is the firm brightness too, since a system is a thing and not an agent. An open position is a
dashed box with no fill, and the frame the agents of a group stand in is shaded. */
dashed box with no fill, as is a scenario's extension, and the frame the agents of a group
stand in is shaded. */
.rbchat-diagram-box svg .label-icon{width:1.15em;height:1.15em;vertical-align:-.2em;margin-right:.3em}
.rbchat-diagram-box svg .rbchat-mark.human{color:var(--c-firm,var(--ink))!important}
.rbchat-diagram-box svg .rbchat-mark.agent{color:var(--c-mid)!important}
.rbchat-diagram-box svg .rbchat-mark.actor{color:var(--c-firm,var(--ink))!important}
.rbchat-diagram-box svg .rbchat-mark.element{color:var(--c-firm,var(--ink))!important}
.rbchat-diagram-box svg .node.open rect{fill:none!important}
.rbchat-diagram-box svg .node.ext rect{fill:none!important}
.rbchat-diagram-box svg .cluster.agents rect{fill:var(--press)!important}
.rbchat-diagram-reading{margin:.35rem .1rem 0;font-size:.8rem;line-height:1.4;color:var(--dim)}
/* A page's own picture is a preview: fitted to the column, never past its own size, and
Expand Down
12 changes: 7 additions & 5 deletions chat.js
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@
github: "{title} on GitHub", commit: "commit {sha}",
modalClose: "Close \u00b7 Esc",
ask: { from: "The link you opened asks:", label: "A question from the link you opened", send: "Send", edit: "Edit", discard: "Discard" },
diagram: { concepts: "Concepts", process: "Process", neighborhood: "Connections", schema: "Meta-model", context: "Context map", aggregate: "Aggregate", flow: "Flow", lifecycle: "Lifecycle", organization: "Organization", system: "Landscape", holds: "Data held", reading: { context: "One-way arrows run from upstream to downstream; each arrow names the pattern between the two contexts.", aggregate: "The root holds what the diamonds join; the dashed arrows are the events it emits.", flow: "Solid arrows are commands sent to the aggregate, dashed arrows the events it emits; a box names the condition of each branch.", lifecycle: "Each arrow is a step from one state to the next, labeled with the command that takes it where there is one.", organization: "Solid arrows run from a lead to the leads below; a dashed line joins staff to the head they serve; a dashed box is an open position, beside a lead the search for a successor; agents stand in the shaded frame, and a dotted arrow from a person to an agent says who directs it, where an agent with no arrow is directed by everyone in the frame.", system: "Solid arrows run from the system the data comes from to the one that takes it, labeled with the interface, what is carried and how; a dotted line joins a system to what it runs on; a rounded box is a service the system provides; a cylinder is data it holds, by a heavy arrow where its copy leads, a solid one where it writes and a dotted one where it only reads.", holds: "Each cylinder is data kept of the concept named under it; a heavy arrow marks the system whose copy leads, a solid one a system that writes a copy of its own, a dotted one a system that only reads." }, expand: "Open full screen", shut: "Close full screen", zoomIn: "Zoom in", zoomOut: "Zoom out", fit: "Fit", fitTip: "Fit to the screen", failed: "The diagram could not be drawn; this is its source." },
diagram: { concepts: "Concepts", process: "Process", neighborhood: "Connections", schema: "Meta-model", context: "Context map", aggregate: "Aggregate", flow: "Flow", lifecycle: "Lifecycle", organization: "Organization", system: "Landscape", holds: "Data held", usecase: "Use case", scenario: "Scenario", requirements: "Requirements", reading: { context: "One-way arrows run from upstream to downstream; each arrow names the pattern between the two contexts.", aggregate: "The root holds what the diamonds join; the dashed arrows are the events it emits.", flow: "Solid arrows are commands sent to the aggregate, dashed arrows the events it emits; a box names the condition of each branch.", lifecycle: "Each arrow is a step from one state to the next, labeled with the command that takes it where there is one.", organization: "Solid arrows run from a lead to the leads below; a dashed line joins staff to the head they serve; a dashed box is an open position, beside a lead the search for a successor; agents stand in the shaded frame, and a dotted arrow from a person to an agent says who directs it, where an agent with no arrow is directed by everyone in the frame.", system: "Solid arrows run from the system the data comes from to the one that takes it, labeled with the interface, what is carried and how; a dotted line joins a system to what it runs on; a rounded box is a service the system provides; a cylinder is data it holds, by a heavy arrow where its copy leads, a solid one where it writes and a dotted one where it only reads.", holds: "Each cylinder is data kept of the concept named under it; a heavy arrow marks the system whose copy leads, a solid one a system that writes a copy of its own, a dotted one a system that only reads.", usecase: "The actor stands outside the frame, which is the use case's scope; a dashed arrow runs from a use case to one its steps include, a solid one to a feature it asks something of; a hexagon is a requirement it is held to, with a heavy border where it must and a dashed one where it may.", scenario: "The rounded box is the trigger; each box is a step, in order, with who acts; a dashed box is an extension, the condition first and what happens then.", requirements: "A hexagon is a requirement, with a heavy border where it must and a dashed one where it may, in a frame for its kind; an arrow runs to what it applies to, a dotted one to a rule it follows." }, expand: "Open full screen", shut: "Close full screen", zoomIn: "Zoom in", zoomOut: "Zoom out", fit: "Fit", fitTip: "Fit to the screen", failed: "The diagram could not be drawn; this is its source." },
refusal: {
too_long: "That message is over 1,000 characters.",
too_much: "The conversation has grown too long to send; start a new one.",
Expand Down Expand Up @@ -177,7 +177,7 @@
github: "{title} auf GitHub", commit: "Commit {sha}",
modalClose: "Schliessen \u00b7 Esc",
ask: { from: "Der Link, den Sie geöffnet haben, enthält diese Frage:", label: "Eine Frage aus dem Link, den Sie geöffnet haben", send: "Senden", edit: "Bearbeiten", discard: "Verwerfen" },
diagram: { concepts: "Konzepte", process: "Prozess", neighborhood: "Verbindungen", schema: "Meta-Modell", context: "Context Map", aggregate: "Aggregat", flow: "Ablauf", lifecycle: "Lebenszyklus", organization: "Organisation", system: "Landschaft", holds: "Datenbestand", reading: { context: "Einfache Pfeile laufen vom Upstream- zum Downstream-Kontext; jeder Pfeil nennt das Muster zwischen den beiden Kontexten.", aggregate: "Die Wurzel des Aggregats hält, was die Rauten verbinden; die gestrichelten Pfeile sind die Ereignisse, die sie auslöst.", flow: "Durchgezogene Pfeile sind Befehle an das Aggregat, gestrichelte die Ereignisse, die es auslöst; ein Kasten nennt die Bedingung jedes Zweigs.", lifecycle: "Jeder Pfeil ist ein Schritt von einem Zustand zum nächsten, beschriftet mit dem Befehl, der ihn auslöst, wo es einen gibt.", organization: "Durchgezogene Pfeile laufen von einer Führungskraft zu den Führungskräften darunter; eine gestrichelte Linie verbindet eine Stabsstelle mit der Leitung, der sie zuarbeitet; ein gestrichelter Kasten ist eine offene Stelle, neben einer Führungskraft die Suche nach ihrer Nachfolge; Software-Agenten stehen im farbig hinterlegten Rahmen, und ein gepunkteter Pfeil von einer Person zu einem Agenten sagt, wer ihn steuert; ein Agent ohne Pfeil wird von allen im Rahmen gesteuert.", system: "Durchgezogene Pfeile laufen vom System, aus dem die Daten stammen, zum System, das sie übernimmt, beschriftet mit der Schnittstelle und mit dem, was übertragen wird und wie; eine gepunktete Linie verbindet ein System mit dem, worauf es läuft; ein abgerundeter Kasten ist ein Service, den das System bereitstellt; ein Zylinder ist ein Datenbestand, den es hält – mit einem dicken Pfeil, wo seine Kopie führend ist, einem durchgezogenen, wo es schreibt, und einem gepunkteten, wo es nur liest.", holds: "Jeder Zylinder ist ein Datenbestand zum darunter genannten Konzept; ein dicker Pfeil markiert das System, dessen Kopie führend ist, ein durchgezogener ein System, das eine eigene Kopie schreibt, ein gepunkteter ein System, das nur liest." }, expand: "Im Vollbild öffnen", shut: "Vollbild schliessen", zoomIn: "Vergrössern", zoomOut: "Verkleinern", fit: "Einpassen", fitTip: "Auf den Bildschirm einpassen", failed: "Das Diagramm konnte nicht gezeichnet werden; dies ist seine Quelle." },
diagram: { concepts: "Konzepte", process: "Prozess", neighborhood: "Verbindungen", schema: "Meta-Modell", context: "Context Map", aggregate: "Aggregat", flow: "Ablauf", lifecycle: "Lebenszyklus", organization: "Organisation", system: "Landschaft", holds: "Datenbestand", usecase: "Anwendungsfall", scenario: "Szenario", requirements: "Anforderungen", reading: { context: "Einfache Pfeile laufen vom Upstream- zum Downstream-Kontext; jeder Pfeil nennt das Muster zwischen den beiden Kontexten.", aggregate: "Die Wurzel des Aggregats hält, was die Rauten verbinden; die gestrichelten Pfeile sind die Ereignisse, die sie auslöst.", flow: "Durchgezogene Pfeile sind Befehle an das Aggregat, gestrichelte die Ereignisse, die es auslöst; ein Kasten nennt die Bedingung jedes Zweigs.", lifecycle: "Jeder Pfeil ist ein Schritt von einem Zustand zum nächsten, beschriftet mit dem Befehl, der ihn auslöst, wo es einen gibt.", organization: "Durchgezogene Pfeile laufen von einer Führungskraft zu den Führungskräften darunter; eine gestrichelte Linie verbindet eine Stabsstelle mit der Leitung, der sie zuarbeitet; ein gestrichelter Kasten ist eine offene Stelle, neben einer Führungskraft die Suche nach ihrer Nachfolge; Software-Agenten stehen im farbig hinterlegten Rahmen, und ein gepunkteter Pfeil von einer Person zu einem Agenten sagt, wer ihn steuert; ein Agent ohne Pfeil wird von allen im Rahmen gesteuert.", system: "Durchgezogene Pfeile laufen vom System, aus dem die Daten stammen, zum System, das sie übernimmt, beschriftet mit der Schnittstelle und mit dem, was übertragen wird und wie; eine gepunktete Linie verbindet ein System mit dem, worauf es läuft; ein abgerundeter Kasten ist ein Service, den das System bereitstellt; ein Zylinder ist ein Datenbestand, den es hält – mit einem dicken Pfeil, wo seine Kopie führend ist, einem durchgezogenen, wo es schreibt, und einem gepunkteten, wo es nur liest.", holds: "Jeder Zylinder ist ein Datenbestand zum darunter genannten Konzept; ein dicker Pfeil markiert das System, dessen Kopie führend ist, ein durchgezogener ein System, das eine eigene Kopie schreibt, ein gepunkteter ein System, das nur liest.", usecase: "Der Rahmen ist der Geltungsbereich des Anwendungsfalls, und der Akteur steht ausserhalb; ein gestrichelter Pfeil läuft von einem Anwendungsfall zu einem anderen, den seine Schritte einbinden, ein durchgezogener zu einem Feature, von dem er etwas verlangt; ein Sechseck ist eine Anforderung, die für den Anwendungsfall gilt, mit dickem Rand, wo sie «muss» sagt, und gestricheltem, wo sie «darf» sagt.", scenario: "Der abgerundete Kasten ist der Auslöser; die Kästen sind die Schritte in ihrer Reihenfolge, und jeder nennt, wer handelt; ein gestrichelter Kasten ist eine Erweiterung: zuerst die Bedingung, dann, was geschieht.", requirements: "Ein Sechseck ist eine Anforderung, mit dickem Rand, wo sie «muss» sagt, und gestricheltem, wo sie «darf» sagt; der Rahmen um sie nennt ihre Art; ein Pfeil läuft zu dem, wofür sie gilt, ein gepunkteter zu einer Regel, der sie folgt." }, expand: "Im Vollbild öffnen", shut: "Vollbild schliessen", zoomIn: "Vergrössern", zoomOut: "Verkleinern", fit: "Einpassen", fitTip: "Auf den Bildschirm einpassen", failed: "Das Diagramm konnte nicht gezeichnet werden; dies ist seine Quelle." },
refusal: {
too_long: "Diese Nachricht ist länger als 1’000 Zeichen.",
too_much: "Das Gespräch ist zu lang geworden, um es zu senden; beginnen Sie ein neues.",
Expand Down Expand Up @@ -787,10 +787,11 @@
};
}
// Where Mermaid put a node in its SVG: a group whose id ends in the node's name and a number,
// after `classId` in a class diagram and `flowchart` in a flowchart. The one place that knows
// after `classId` in a class diagram and `flowchart` in a flowchart; a scenario's step is `s0`
// and on and is listed where its actor is a seat. The one place that knows
// it, so a Mermaid release that names them otherwise is fixed here and nowhere else.
function nodeElement(svg, node){
if (!svg || !/^n\d+$/.test(String(node))) return null;
if (!svg || !/^[ns]\d+$/.test(String(node))) return null;
var re = new RegExp("-(?:classId|flowchart)-" + node + "-\\d+$"), all = svg.querySelectorAll("g[id]");
for (var i = 0; i < all.length; i++) if (re.test(all[i].id)) return all[i];
return null;
Expand Down Expand Up @@ -926,6 +927,7 @@
var MARKS = {
human: '<circle cx="8" cy="4.6" r="3.1" fill="currentColor"/><path d="M1.6 15.4a6.4 6.4 0 0 1 12.8 0z" fill="currentColor"/>',
agent: '<g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linejoin="round"><rect x="2" y="5.4" width="12" height="8.6" rx="2.6"/><path d="M8 5.4V3.2"/></g><circle cx="8" cy="2.1" r="1.1" fill="currentColor"/><circle cx="5.7" cy="9.6" r="1.05" fill="currentColor"/><circle cx="10.3" cy="9.6" r="1.05" fill="currentColor"/>',
actor: '<circle cx="8" cy="4.6" r="2.6" fill="none" stroke="currentColor" stroke-width="1.4"/><path d="M2.2 15.2a5.8 5.8 0 0 1 11.6 0" fill="none" stroke="currentColor" stroke-width="1.4"/>',
"application-component": '<rect x="4.5" y="2" width="9.5" height="12" rx="1" fill="none" stroke="currentColor" stroke-width="1.4"/><rect x="2" y="4.6" width="5" height="2.4" fill="currentColor"/><rect x="2" y="9" width="5" height="2.4" fill="currentColor"/>',
node: '<path d="M2.5 5.5L5.5 2.5H13.5V10.5L10.5 13.5H2.5ZM2.5 5.5H10.5V13.5M10.5 5.5L13.5 2.5" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linejoin="round"/>',
"system-software": '<circle cx="7" cy="9" r="5.5" fill="none" stroke="currentColor" stroke-width="1.4"/><circle cx="10.5" cy="5.5" r="3.4" fill="none" stroke="currentColor" stroke-width="1.4"/>',
Expand All @@ -936,7 +938,7 @@
function withMarks(m){
if (m && typeof m.registerIconPacks === "function" && !m.rbMarks) {
var icons = {};
Object.keys(MARKS).forEach(function(k){ icons[k] = { body: '<g class="rbchat-mark ' + (k === "human" || k === "agent" ? k : "element " + k) + '">' + MARKS[k] + "</g>" }; });
Object.keys(MARKS).forEach(function(k){ icons[k] = { body: '<g class="rbchat-mark ' + (k === "human" || k === "agent" || k === "actor" ? k : "element " + k) + '">' + MARKS[k] + "</g>" }; });
m.registerIconPacks([{ name: "fak", icons: { prefix: "fak", width: 16, height: 16, icons: icons } }]);
m.rbMarks = true;
}
Expand Down
2 changes: 1 addition & 1 deletion ideas/og.sha
Original file line number Diff line number Diff line change
@@ -1 +1 @@
28ad7f22d50615789c19a779386ab7656f390768102d64cc649b251ebd9e8c4a
a45e7c0933de69896b1392ca5837271000140f124031dc00b8d5dd86c84ab359
2 changes: 1 addition & 1 deletion model/og.sha
Original file line number Diff line number Diff line change
@@ -1 +1 @@
8d6cb726ee056f2b1564d0f668d3f39bcf2a90bb3e6af450b2689e3818eaa27c
59f3901f8d7def8cc96f3afb7fce56362d56db4c573ce868162096842ec9aa7e
2 changes: 1 addition & 1 deletion og.sha
Original file line number Diff line number Diff line change
@@ -1 +1 @@
163f10abb9c77a1f8b0560f62187fdd68fcb9f830558b6ea55e570175ac230b7
8b1242c11c39f2af81ff4086eac33d0a7d9117234b74312b38373cccb1f5ec48
6 changes: 3 additions & 3 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
"pin:check": "node pin-check.mjs"
},
"devDependencies": {
"@robertblust/design": "github:robertblust/design#v0.150.0",
"@robertblust/design": "github:robertblust/design#v0.151.0",
"companygraph-mcp-server": "github:companygraph/mcp-server#v0.62.0",
"pdf-lib": "^1.17.1",
"playwright": "^1.63.0"
Expand Down
2 changes: 1 addition & 1 deletion principles/og.sha
Original file line number Diff line number Diff line change
@@ -1 +1 @@
32f96a35179035dac90e094ea9e2b7377b492424f3a1de2a8e49d3b2f732ad01
42955012ca6c878dd69060ca9c1e68bb2468772b466f9d64c0ab37a729475b2f
2 changes: 1 addition & 1 deletion privacy/og.sha
Original file line number Diff line number Diff line change
@@ -1 +1 @@
852c558b98a55cf37d350ac879e86a9b5e561a4522678dee67258a05fe5de6ba
0e13741d69c435819396ead21b1959c4287f4b10110a456fcf480a05aefe7189
2 changes: 1 addition & 1 deletion processes/og.sha
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3e5f135ad5bd66cc2e6b655555babd4fd8ae859279507286f047fda4f4c53298
dedce63da4e00e008ba810ba8f9caf0eb00350ee525616dcafe1ed0d33e246fe
2 changes: 1 addition & 1 deletion processes/pictures/answering.sha
Original file line number Diff line number Diff line change
@@ -1 +1 @@
4decf2a5b45e907bf64043674e33cd19047a7ef89a294ce8abb2ba4e553efa00
983410cae0321568b610f7252d21bd21e4d93de12c4d14389e5ffb89d5145dfc
2 changes: 1 addition & 1 deletion processes/pictures/deciding.sha
Original file line number Diff line number Diff line change
@@ -1 +1 @@
12ed3fe08c05bbfe7b8be83b0d34f9c75b0998542680c8e1a9d508b85b913635
58f51103b3115901c9401849dcbf462b5d99dea686176d719d0539ccb279a6b5
2 changes: 1 addition & 1 deletion processes/pictures/delivery.sha
Original file line number Diff line number Diff line change
@@ -1 +1 @@
04839431a9ead9aa3e9abf4a055eee1282eb4abcedfcffcdb46cf00415ae87ac
9fc548f92799b2c56496b006b9a28ccebda77270a21fe9d79527d58fdb6d41e4
2 changes: 1 addition & 1 deletion processes/pictures/narrating.sha
Original file line number Diff line number Diff line change
@@ -1 +1 @@
cb0636faf363d2782f1a70cba79aed40a1da7cd5acdc15a024e7c0d4d08b2479
07fb096f6356c1f4d67726eaf58ea87a0fba340ce3d66e9917bb5e98b2f6abd4
2 changes: 1 addition & 1 deletion surfaces/og.sha
Original file line number Diff line number Diff line change
@@ -1 +1 @@
b2f3b876e76e4bebf605e3bc16a5961236022309bb274402add0055cff5b8698
e7982335e944f4791e8dd048a75ca1588935b742b60907f117b93cf93c447021
2 changes: 1 addition & 1 deletion talks/deciding-well/cost/og.sha
Original file line number Diff line number Diff line change
@@ -1 +1 @@
9e72555ec91b2e6e3a99fd128d0e4f207a1102c309228075e27d0876d5aa216c
dfe15cb76be838c286cbdcca63117fdc96dfe92d774cdf897ddc0aad2d319130
2 changes: 1 addition & 1 deletion talks/deciding-well/og.sha
Original file line number Diff line number Diff line change
@@ -1 +1 @@
e3ab0ee2d447c245c220f76b1136d834be2e329ad06b9abc9131028c41178b29
a7b2b62438312a253c3e2788070ba78a4bfae93931b6909c779ac30028f1cf87
2 changes: 1 addition & 1 deletion talks/essential-complexity/og.sha
Original file line number Diff line number Diff line change
@@ -1 +1 @@
bccbcbbcde954968c4e771367723d10a5816756534f6304712a7ad1462e070e4
787f18dbecc01675e9188d4cd690c496d674949738d450542c302a1b623764f0
2 changes: 1 addition & 1 deletion talks/mental-model/og.sha
Original file line number Diff line number Diff line change
@@ -1 +1 @@
e0b17f053c4279ccc064867a0d5d2275818530646cefa0f5858dc222fbe39e02
acbbaad2438bfecfe2d25dbc0d92bc0331a566b60ea37542c47e65c7801f58de
2 changes: 1 addition & 1 deletion talks/og.sha
Original file line number Diff line number Diff line change
@@ -1 +1 @@
fc6568eff0361077e12355690a1c01bbc7ceb75b8565285b0d43a3e108dba3b7
019e79880def52d2940c46b0c9d9990de1460044c7b28be2be40f0e2e6ed0e32
2 changes: 1 addition & 1 deletion timeline/og.sha
Original file line number Diff line number Diff line change
@@ -1 +1 @@
57d282cd500d814c066933cadf67d6729e11a2b2d180a974e98d2b1a299a8a8d
f4d1d31e154b9879ae9b8ab87709373701c1e960c2f6ac09d33905f219ec63c3
Loading