diff --git a/build/privacy.de.json b/build/privacy.de.json index 9e44952..ce79ed1 100644 --- a/build/privacy.de.json +++ b/build/privacy.de.json @@ -58,5 +58,45 @@ { "en": "The question and whether the model could answer it, kept in its Zürich region with the weekly report made from them", "de": "Die Frage und ob das Modell sie beantworten konnte, aufbewahrt in der Region Zürich, zusammen mit dem wöchentlichen Bericht, der aus den Fragen entsteht" + }, + { + "en": "The model and the effort the signed-in reader chose for the chat's answers", + "de": "Das Modell und der Aufwand, die Sie nach der Anmeldung für die Antworten des Chats gewählt haben" + }, + { + "en": "The access token and the ID token from the reader's sign-in at id.blust.ch, so that each message to the chat carries the access token", + "de": "Das Zugriffstoken und das ID-Token aus Ihrer Anmeldung bei id.blust.ch, damit das Zugriffstoken mit jeder Nachricht an den Chat mitgeschickt wird" + }, + { + "en": "Until the reader signs out, the chat refuses the token or the visitor clears it", + "de": "Bis Sie sich abmelden, der Chat das Token ablehnt oder Sie es löschen" + }, + { + "en": "The secret that proves a sign-in was started in this tab, its state and the page it started from, kept only for the trip to the login at id.blust.ch and back", + "de": "Das Geheimnis, das belegt, dass eine Anmeldung in diesem Tab begonnen wurde, dazu ihr Zustand und die Seite, auf der sie begann. Aufbewahrt nur für den Weg zur Anmeldeseite von id.blust.ch und zurück" + }, + { + "en": "Counting a reader's month", + "de": "Der Monatszähler einer angemeldeten Person" + }, + { + "en": "Only the month last counted, which the reader's first message of a new month replaces", + "de": "Nur der zuletzt gezählte Monat, den Ihre erste Nachricht in einem neuen Monat ersetzt" + }, + { + "en": "What the reader's answers cost this month, in its Zurich region, under a key the chat cannot turn back into the account", + "de": "Was die Antworten an Sie in diesem Monat kosten, aufbewahrt in der Region Zürich unter einem Schlüssel, aus dem der Chat nicht auf das Konto zurückschliessen kann" + }, + { + "en": "Signing a reader in", + "de": "Anmeldung im Chat" + }, + { + "en": "As long as the reader's account at id.blust.ch exists", + "de": "Solange Ihr Konto bei id.blust.ch besteht" + }, + { + "en": "The reader's name, email address and roles, held by id.blust.ch in its Zurich region, and the access token each message carries", + "de": "Ihr Name, Ihre E-Mail-Adresse und Ihre Rollen, die id.blust.ch in der Region Zürich aufbewahrt, und das Zugriffstoken, das mit jeder Nachricht mitgeschickt wird" } ] diff --git a/id/01a170fb-3c35-75b6-a369-580128e17173/index.html b/id/01a170fb-3c35-75b6-a369-580128e17173/index.html new file mode 100644 index 0000000..3fe87d7 --- /dev/null +++ b/id/01a170fb-3c35-75b6-a369-580128e17173/index.html @@ -0,0 +1,13 @@ + + +
+ + +Go on to chat-signin.
+ + diff --git a/id/01a170fb-4c16-7661-b909-d129ab3d9b2d/index.html b/id/01a170fb-4c16-7661-b909-d129ab3d9b2d/index.html new file mode 100644 index 0000000..c6b6c15 --- /dev/null +++ b/id/01a170fb-4c16-7661-b909-d129ab3d9b2d/index.html @@ -0,0 +1,13 @@ + + + + + +Go on to chat-choice.
+ + diff --git a/id/01a170fb-5d14-73fc-813c-9d183b893661/index.html b/id/01a170fb-5d14-73fc-813c-9d183b893661/index.html new file mode 100644 index 0000000..15de514 --- /dev/null +++ b/id/01a170fb-5d14-73fc-813c-9d183b893661/index.html @@ -0,0 +1,13 @@ + + + + + +Go on to chat-pkce.
+ + diff --git a/id/01a170fb-6d2a-721f-bedd-43fe48ab26f2/index.html b/id/01a170fb-6d2a-721f-bedd-43fe48ab26f2/index.html new file mode 100644 index 0000000..f75bd56 --- /dev/null +++ b/id/01a170fb-6d2a-721f-bedd-43fe48ab26f2/index.html @@ -0,0 +1,13 @@ + + + + + +Go on to Signing a reader in.
+ + diff --git a/id/01a170fb-7c91-7e1b-b5e5-eae3d2ae671c/index.html b/id/01a170fb-7c91-7e1b-b5e5-eae3d2ae671c/index.html new file mode 100644 index 0000000..917cbce --- /dev/null +++ b/id/01a170fb-7c91-7e1b-b5e5-eae3d2ae671c/index.html @@ -0,0 +1,13 @@ + + + + + +Go on to Counting a reader's month.
+ + diff --git a/model.json b/model.json index 8c945b9..0afdb96 100644 --- a/model.json +++ b/model.json @@ -1,5 +1,5 @@ { - "commit": "f2ef1257b2f932f51ccea59582dcd9e8d9a7cbcc", + "commit": "c259512efa40734c3fa9102ef718d0641bfcb9e7", "core": "0.69.0", "root": "Robert Blust", "rootId": "01a04c85-bc20-7849-9ec1-d877215d70b4", @@ -2726,7 +2726,7 @@ "address": "data-processors/google-cloud", "type": "data-processor", "name": "Google Cloud", - "tagline": "Runs the chat service and the MCP server in its Zürich region, and keeps the chat's log of questions there.", + "tagline": "Runs the chat service, the MCP server and the identity service id.blust.ch, which is ZITADEL, in its Zurich region, and keeps there the chat's log of questions, the readers' accounts and each signed-in reader's month.", "fields": { "id": "01a108dc-de29-78aa-9804-a6150ebfabad", "source": "Local", @@ -8224,6 +8224,68 @@ "owner": null, "path": "model/processing-activities/answering-in-the-chat.md" }, + { + "id": "01a170fb-7c91-7e1b-b5e5-eae3d2ae671c", + "address": "processing-activities/counting-a-reader-s-month", + "type": "processing-activity", + "name": "Counting a reader's month", + "tagline": "Counting what a signed-in reader's answers cost in the month, so that no reader spends more of the chat's month than their own share.", + "fields": { + "id": "01a170fb-7c91-7e1b-b5e5-eae3d2ae671c", + "source": "Local", + "legal-basis": "legitimate-interests", + "retention": "Only the month last counted, which the reader's first message of a new month replaces", + "surfaces": [ + "chat.blust.ch chat" + ] + }, + "sections": [ + { + "heading": "Data subjects", + "text": "- Readers who sign in to the chat and send a message", + "tables": [] + }, + { + "heading": "Personal data", + "text": "- What the reader's answers cost this month, kept under a key made from their account that the chat cannot turn back into it", + "tables": [] + }, + { + "heading": "Processors", + "text": "", + "tables": [ + { + "caption": null, + "columns": [ + "Processor", + "Receives" + ], + "rows": [ + [ + "Google Cloud", + "What the reader's answers cost this month, in its Zurich region, under a key the chat cannot turn back into the account" + ] + ] + } + ], + "table": { + "caption": null, + "columns": [ + "Processor", + "Receives" + ], + "rows": [ + [ + "Google Cloud", + "What the reader's answers cost this month, in its Zurich region, under a key the chat cannot turn back into the account" + ] + ] + } + } + ], + "owner": null, + "path": "model/processing-activities/counting-a-reader-s-month.md" + }, { "id": "01a108dc-fd15-708e-b4a7-735d8fc5592e", "address": "processing-activities/keeping-the-chat-s-questions", @@ -8247,7 +8309,7 @@ }, { "heading": "Personal data", - "text": "- The question a visitor sent, kept without their address and without the answer", + "text": "- The question a visitor sent, kept without their address, their sign-in or the answer", "tables": [] }, { @@ -8286,6 +8348,68 @@ "owner": null, "path": "model/processing-activities/keeping-the-chat-s-questions.md" }, + { + "id": "01a170fb-6d2a-721f-bedd-43fe48ab26f2", + "address": "processing-activities/signing-a-reader-in", + "type": "processing-activity", + "name": "Signing a reader in", + "tagline": "Letting a reader the owner has invited sign in to the chat, so that it knows which models the reader may choose.", + "fields": { + "id": "01a170fb-6d2a-721f-bedd-43fe48ab26f2", + "source": "Local", + "legal-basis": "legitimate-interests", + "retention": "As long as the reader's account at id.blust.ch exists", + "surfaces": [ + "chat.blust.ch chat" + ] + }, + "sections": [ + { + "heading": "Data subjects", + "text": "- Readers the owner has invited to sign in to the chat", + "tables": [] + }, + { + "heading": "Personal data", + "text": "- The reader's name and email address, which their account at id.blust.ch holds\n- The roles granted to the reader, which name the models they may choose\n- The tokens the sign-in issues, kept in the reader's browser, and the access token each message carries to the chat, which checks it", + "tables": [] + }, + { + "heading": "Processors", + "text": "", + "tables": [ + { + "caption": null, + "columns": [ + "Processor", + "Receives" + ], + "rows": [ + [ + "Google Cloud", + "The reader's name, email address and roles, held by id.blust.ch in its Zurich region, and the access token each message carries" + ] + ] + } + ], + "table": { + "caption": null, + "columns": [ + "Processor", + "Receives" + ], + "rows": [ + [ + "Google Cloud", + "The reader's name, email address and roles, held by id.blust.ch in its Zurich region, and the access token each message carries" + ] + ] + } + } + ], + "owner": null, + "path": "model/processing-activities/signing-a-reader-in.md" + }, { "id": "01a12457-c64f-7a57-97e5-b36e80289743", "address": "product-kinds/model", @@ -21194,6 +21318,26 @@ "owner": null, "path": "model/stored-items/chat.md" }, + { + "id": "01a170fb-4c16-7661-b909-d129ab3d9b2d", + "address": "stored-items/chat-choice", + "type": "stored-item", + "name": "chat-choice", + "tagline": "The model and the effort the signed-in reader chose for the chat's answers.", + "fields": { + "id": "01a170fb-4c16-7661-b909-d129ab3d9b2d", + "source": "Local", + "mechanism": "local-storage", + "necessity": "strictly-necessary", + "duration": "Until the visitor clears it", + "surfaces": [ + "chat.blust.ch chat" + ] + }, + "sections": [], + "owner": null, + "path": "model/stored-items/chat-choice.md" + }, { "id": "01a108dd-85a4-7a5b-8055-872abe683db8", "address": "stored-items/chat-facts", @@ -21232,6 +21376,46 @@ "owner": null, "path": "model/stored-items/chat-pictures.md" }, + { + "id": "01a170fb-5d14-73fc-813c-9d183b893661", + "address": "stored-items/chat-pkce", + "type": "stored-item", + "name": "chat-pkce", + "tagline": "The secret that proves a sign-in was started in this tab, its state and the page it started from, kept only for the trip to the login at id.blust.ch and back.", + "fields": { + "id": "01a170fb-5d14-73fc-813c-9d183b893661", + "source": "Local", + "mechanism": "session-storage", + "necessity": "strictly-necessary", + "surfaces": [ + "chat.blust.ch chat" + ] + }, + "sections": [], + "owner": null, + "path": "model/stored-items/chat-pkce.md" + }, + { + "id": "01a170fb-3c35-75b6-a369-580128e17173", + "address": "stored-items/chat-signin", + "type": "stored-item", + "name": "chat-signin", + "tagline": "The access token and the ID token from the reader's sign-in at id.blust.ch, so that each message to the chat carries the access token.", + "fields": { + "id": "01a170fb-3c35-75b6-a369-580128e17173", + "source": "Local", + "mechanism": "local-storage", + "necessity": "strictly-necessary", + "duration": "Until the reader signs out, the chat refuses the token or the visitor clears it", + "surfaces": [ + "chat.blust.ch chat" + ], + "activity": "Signing a reader in" + }, + "sections": [], + "owner": null, + "path": "model/stored-items/chat-signin.md" + }, { "id": "01a108dd-6751-7040-bd3c-4bb5ecf70bc6", "address": "stored-items/chat-size", @@ -33305,6 +33489,88 @@ "to": "01a03d8e-dd00-7372-ac62-ba79f12bf81a", "via": "source", "attrs": {} + }, + { + "from": "01a170fb-3c35-75b6-a369-580128e17173", + "to": "01a170fb-6d2a-721f-bedd-43fe48ab26f2", + "via": "activity", + "attrs": {} + }, + { + "from": "01a170fb-3c35-75b6-a369-580128e17173", + "to": "01a03d8e-dd00-7372-ac62-ba79f12bf81a", + "via": "source", + "attrs": {} + }, + { + "from": "01a170fb-3c35-75b6-a369-580128e17173", + "to": "01a0c9f6-44b8-757d-a3e5-7401751adee7", + "via": "surfaces", + "attrs": {} + }, + { + "from": "01a170fb-4c16-7661-b909-d129ab3d9b2d", + "to": "01a03d8e-dd00-7372-ac62-ba79f12bf81a", + "via": "source", + "attrs": {} + }, + { + "from": "01a170fb-4c16-7661-b909-d129ab3d9b2d", + "to": "01a0c9f6-44b8-757d-a3e5-7401751adee7", + "via": "surfaces", + "attrs": {} + }, + { + "from": "01a170fb-5d14-73fc-813c-9d183b893661", + "to": "01a03d8e-dd00-7372-ac62-ba79f12bf81a", + "via": "source", + "attrs": {} + }, + { + "from": "01a170fb-5d14-73fc-813c-9d183b893661", + "to": "01a0c9f6-44b8-757d-a3e5-7401751adee7", + "via": "surfaces", + "attrs": {} + }, + { + "from": "01a170fb-6d2a-721f-bedd-43fe48ab26f2", + "to": "01a108dc-de29-78aa-9804-a6150ebfabad", + "via": "Processors.Processor", + "attrs": { + "Receives": "The reader's name, email address and roles, held by id.blust.ch in its Zurich region, and the access token each message carries" + } + }, + { + "from": "01a170fb-6d2a-721f-bedd-43fe48ab26f2", + "to": "01a03d8e-dd00-7372-ac62-ba79f12bf81a", + "via": "source", + "attrs": {} + }, + { + "from": "01a170fb-6d2a-721f-bedd-43fe48ab26f2", + "to": "01a0c9f6-44b8-757d-a3e5-7401751adee7", + "via": "surfaces", + "attrs": {} + }, + { + "from": "01a170fb-7c91-7e1b-b5e5-eae3d2ae671c", + "to": "01a108dc-de29-78aa-9804-a6150ebfabad", + "via": "Processors.Processor", + "attrs": { + "Receives": "What the reader's answers cost this month, in its Zurich region, under a key the chat cannot turn back into the account" + } + }, + { + "from": "01a170fb-7c91-7e1b-b5e5-eae3d2ae671c", + "to": "01a03d8e-dd00-7372-ac62-ba79f12bf81a", + "via": "source", + "attrs": {} + }, + { + "from": "01a170fb-7c91-7e1b-b5e5-eae3d2ae671c", + "to": "01a0c9f6-44b8-757d-a3e5-7401751adee7", + "via": "surfaces", + "attrs": {} } ], "repo": "robertblust/mental-model" diff --git a/model/og.sha b/model/og.sha index 7d789e5..c603d42 100644 --- a/model/og.sha +++ b/model/og.sha @@ -1 +1 @@ -035ab63caabe16d74dfd0e93715bae5fd2edc42390c2b275320a1b1188ca4166 +ebc452621cd2a289a901344ba89207fed58c964eab21e17fe2b85984a25e5537 diff --git a/principles/index.html b/principles/index.html index d109610..8f60521 100644 --- a/principles/index.html +++ b/principles/index.html @@ -337,7 +337,7 @@Generated from robertblust/mental-model@f2ef125 — model/vision.md and model/values/. That repository is an instance of CompanyGraph, a meta-model for describing a company as a graph of Markdown.
Generated from robertblust/mental-model@c259512 — model/vision.md and model/values/. That repository is an instance of CompanyGraph, a meta-model for describing a company as a graph of Markdown.