[{"id":"10824385715","type":"CreateEvent","actor":{"id":3770603,"login":"camio","display_login":"camio","gravatar_id":"","url":"https://api.github.com/users/camio","avatar_url":"https://avatars.githubusercontent.com/u/3770603?"},"repo":{"id":399925664,"name":"stlab/better-code","url":"https://api.github.com/repos/stlab/better-code"},"payload":{"ref":"dsankel/review-notes","ref_type":"branch","full_ref":"refs/heads/dsankel/review-notes","master_branch":"main","description":"Better Code (redux) course and book materials","pusher_type":"user"},"public":true,"created_at":"2026-04-20T20:54:00Z","org":{"id":2448845,"login":"stlab","gravatar_id":"","url":"https://api.github.com/orgs/stlab","avatar_url":"https://avatars.githubusercontent.com/u/2448845?"}},{"id":"10824380111","type":"CreateEvent","actor":{"id":3770603,"login":"camio","display_login":"camio","gravatar_id":"","url":"https://api.github.com/users/camio","avatar_url":"https://avatars.githubusercontent.com/u/3770603?"},"repo":{"id":399925664,"name":"stlab/better-code","url":"https://api.github.com/repos/stlab/better-code"},"payload":{"ref":"what-to-expect","ref_type":"branch","full_ref":"refs/heads/what-to-expect","master_branch":"main","description":"Better Code (redux) course and book materials","pusher_type":"user"},"public":true,"created_at":"2026-04-20T20:53:50Z","org":{"id":2448845,"login":"stlab","gravatar_id":"","url":"https://api.github.com/orgs/stlab","avatar_url":"https://avatars.githubusercontent.com/u/2448845?"}},{"id":"8422497947","type":"PullRequestEvent","actor":{"id":49699333,"login":"dependabot[bot]","display_login":"dependabot","gravatar_id":"","url":"https://api.github.com/users/dependabot[bot]","avatar_url":"https://avatars.githubusercontent.com/u/49699333?"},"repo":{"id":760976633,"name":"stlab/chain","url":"https://api.github.com/repos/stlab/chain"},"payload":{"action":"labeled","number":16,"pull_request":{"url":"https://api.github.com/repos/stlab/chain/pulls/16","id":3531286470,"number":16,"head":{"ref":"dependabot/github_actions/actions/github-script-9","sha":"1217c3255074b4a38986f505ee3158bbeec3da30","repo":{"id":760976633,"url":"https://api.github.com/repos/stlab/chain","name":"chain"}},"base":{"ref":"main","sha":"9d8fd4058c5ecf2bc1a06a32ac406a06a6d23e33","repo":{"id":760976633,"url":"https://api.github.com/repos/stlab/chain","name":"chain"}}},"label":{"id":10238937108,"node_id":"LA_kwDOLVuU-c8AAAACYknIFA","url":"https://api.github.com/repos/stlab/chain/labels/github_actions","name":"github_actions","color":"000000","default":false,"description":"Pull requests that update GitHub Actions code"},"labels":[{"id":10238937104,"node_id":"LA_kwDOLVuU-c8AAAACYknIEA","url":"https://api.github.com/repos/stlab/chain/labels/dependencies","name":"dependencies","color":"0366d6","default":false,"description":"Pull requests that update a dependency file"},{"id":10238937108,"node_id":"LA_kwDOLVuU-c8AAAACYknIFA","url":"https://api.github.com/repos/stlab/chain/labels/github_actions","name":"github_actions","color":"000000","default":false,"description":"Pull requests that update GitHub Actions code"}]},"public":true,"created_at":"2026-04-15T00:45:11Z","org":{"id":2448845,"login":"stlab","gravatar_id":"","url":"https://api.github.com/orgs/stlab","avatar_url":"https://avatars.githubusercontent.com/u/2448845?"}},{"id":"8422497946","type":"PullRequestEvent","actor":{"id":49699333,"login":"dependabot[bot]","display_login":"dependabot","gravatar_id":"","url":"https://api.github.com/users/dependabot[bot]","avatar_url":"https://avatars.githubusercontent.com/u/49699333?"},"repo":{"id":760976633,"name":"stlab/chain","url":"https://api.github.com/repos/stlab/chain"},"payload":{"action":"labeled","number":16,"pull_request":{"url":"https://api.github.com/repos/stlab/chain/pulls/16","id":3531286470,"number":16,"head":{"ref":"dependabot/github_actions/actions/github-script-9","sha":"1217c3255074b4a38986f505ee3158bbeec3da30","repo":{"id":760976633,"url":"https://api.github.com/repos/stlab/chain","name":"chain"}},"base":{"ref":"main","sha":"9d8fd4058c5ecf2bc1a06a32ac406a06a6d23e33","repo":{"id":760976633,"url":"https://api.github.com/repos/stlab/chain","name":"chain"}}},"label":{"id":10238937108,"node_id":"LA_kwDOLVuU-c8AAAACYknIFA","url":"https://api.github.com/repos/stlab/chain/labels/github_actions","name":"github_actions","color":"000000","default":false,"description":"Pull requests that update GitHub Actions code"},"labels":[{"id":10238937104,"node_id":"LA_kwDOLVuU-c8AAAACYknIEA","url":"https://api.github.com/repos/stlab/chain/labels/dependencies","name":"dependencies","color":"0366d6","default":false,"description":"Pull requests that update a dependency file"},{"id":10238937108,"node_id":"LA_kwDOLVuU-c8AAAACYknIFA","url":"https://api.github.com/repos/stlab/chain/labels/github_actions","name":"github_actions","color":"000000","default":false,"description":"Pull requests that update GitHub Actions code"}]},"public":true,"created_at":"2026-04-15T00:45:11Z","org":{"id":2448845,"login":"stlab","gravatar_id":"","url":"https://api.github.com/orgs/stlab","avatar_url":"https://avatars.githubusercontent.com/u/2448845?"}},{"id":"8422497916","type":"PullRequestEvent","actor":{"id":49699333,"login":"dependabot[bot]","display_login":"dependabot","gravatar_id":"","url":"https://api.github.com/users/dependabot[bot]","avatar_url":"https://avatars.githubusercontent.com/u/49699333?"},"repo":{"id":760976633,"name":"stlab/chain","url":"https://api.github.com/repos/stlab/chain"},"payload":{"action":"labeled","number":16,"pull_request":{"url":"https://api.github.com/repos/stlab/chain/pulls/16","id":3531286470,"number":16,"head":{"ref":"dependabot/github_actions/actions/github-script-9","sha":"1217c3255074b4a38986f505ee3158bbeec3da30","repo":{"id":760976633,"url":"https://api.github.com/repos/stlab/chain","name":"chain"}},"base":{"ref":"main","sha":"9d8fd4058c5ecf2bc1a06a32ac406a06a6d23e33","repo":{"id":760976633,"url":"https://api.github.com/repos/stlab/chain","name":"chain"}}},"label":{"id":10238937108,"node_id":"LA_kwDOLVuU-c8AAAACYknIFA","url":"https://api.github.com/repos/stlab/chain/labels/github_actions","name":"github_actions","color":"000000","default":false,"description":"Pull requests that update GitHub Actions code"},"labels":[{"id":10238937104,"node_id":"LA_kwDOLVuU-c8AAAACYknIEA","url":"https://api.github.com/repos/stlab/chain/labels/dependencies","name":"dependencies","color":"0366d6","default":false,"description":"Pull requests that update a dependency file"},{"id":10238937108,"node_id":"LA_kwDOLVuU-c8AAAACYknIFA","url":"https://api.github.com/repos/stlab/chain/labels/github_actions","name":"github_actions","color":"000000","default":false,"description":"Pull requests that update GitHub Actions code"}]},"public":true,"created_at":"2026-04-15T00:45:10Z","org":{"id":2448845,"login":"stlab","gravatar_id":"","url":"https://api.github.com/orgs/stlab","avatar_url":"https://avatars.githubusercontent.com/u/2448845?"}},{"id":"8422497914","type":"PullRequestEvent","actor":{"id":49699333,"login":"dependabot[bot]","display_login":"dependabot","gravatar_id":"","url":"https://api.github.com/users/dependabot[bot]","avatar_url":"https://avatars.githubusercontent.com/u/49699333?"},"repo":{"id":760976633,"name":"stlab/chain","url":"https://api.github.com/repos/stlab/chain"},"payload":{"action":"labeled","number":16,"pull_request":{"url":"https://api.github.com/repos/stlab/chain/pulls/16","id":3531286470,"number":16,"head":{"ref":"dependabot/github_actions/actions/github-script-9","sha":"1217c3255074b4a38986f505ee3158bbeec3da30","repo":{"id":760976633,"url":"https://api.github.com/repos/stlab/chain","name":"chain"}},"base":{"ref":"main","sha":"9d8fd4058c5ecf2bc1a06a32ac406a06a6d23e33","repo":{"id":760976633,"url":"https://api.github.com/repos/stlab/chain","name":"chain"}}},"label":{"id":10238937108,"node_id":"LA_kwDOLVuU-c8AAAACYknIFA","url":"https://api.github.com/repos/stlab/chain/labels/github_actions","name":"github_actions","color":"000000","default":false,"description":"Pull requests that update GitHub Actions code"},"labels":[{"id":10238937104,"node_id":"LA_kwDOLVuU-c8AAAACYknIEA","url":"https://api.github.com/repos/stlab/chain/labels/dependencies","name":"dependencies","color":"0366d6","default":false,"description":"Pull requests that update a dependency file"},{"id":10238937108,"node_id":"LA_kwDOLVuU-c8AAAACYknIFA","url":"https://api.github.com/repos/stlab/chain/labels/github_actions","name":"github_actions","color":"000000","default":false,"description":"Pull requests that update GitHub Actions code"}]},"public":true,"created_at":"2026-04-15T00:45:10Z","org":{"id":2448845,"login":"stlab","gravatar_id":"","url":"https://api.github.com/orgs/stlab","avatar_url":"https://avatars.githubusercontent.com/u/2448845?"}},{"id":"8422497680","type":"PullRequestEvent","actor":{"id":49699333,"login":"dependabot[bot]","display_login":"dependabot","gravatar_id":"","url":"https://api.github.com/users/dependabot[bot]","avatar_url":"https://avatars.githubusercontent.com/u/49699333?"},"repo":{"id":760976633,"name":"stlab/chain","url":"https://api.github.com/repos/stlab/chain"},"payload":{"action":"opened","number":16,"pull_request":{"url":"https://api.github.com/repos/stlab/chain/pulls/16","id":3531286470,"number":16,"head":{"ref":"dependabot/github_actions/actions/github-script-9","sha":"1217c3255074b4a38986f505ee3158bbeec3da30","repo":{"id":760976633,"url":"https://api.github.com/repos/stlab/chain","name":"chain"}},"base":{"ref":"main","sha":"9d8fd4058c5ecf2bc1a06a32ac406a06a6d23e33","repo":{"id":760976633,"url":"https://api.github.com/repos/stlab/chain","name":"chain"}}}},"public":true,"created_at":"2026-04-15T00:45:10Z","org":{"id":2448845,"login":"stlab","gravatar_id":"","url":"https://api.github.com/orgs/stlab","avatar_url":"https://avatars.githubusercontent.com/u/2448845?"}},{"id":"10590509942","type":"CreateEvent","actor":{"id":49699333,"login":"dependabot[bot]","display_login":"dependabot","gravatar_id":"","url":"https://api.github.com/users/dependabot[bot]","avatar_url":"https://avatars.githubusercontent.com/u/49699333?"},"repo":{"id":760976633,"name":"stlab/chain","url":"https://api.github.com/repos/stlab/chain"},"payload":{"ref":"dependabot/github_actions/actions/github-script-9","ref_type":"branch","full_ref":"refs/heads/dependabot/github_actions/actions/github-script-9","master_branch":"main","description":"Experimental alternative to sender/receivers.","pusher_type":"user"},"public":true,"created_at":"2026-04-15T00:45:10Z","org":{"id":2448845,"login":"stlab","gravatar_id":"","url":"https://api.github.com/orgs/stlab","avatar_url":"https://avatars.githubusercontent.com/u/2448845?"}},{"id":"8422497308","type":"PullRequestEvent","actor":{"id":49699333,"login":"dependabot[bot]","display_login":"dependabot","gravatar_id":"","url":"https://api.github.com/users/dependabot[bot]","avatar_url":"https://avatars.githubusercontent.com/u/49699333?"},"repo":{"id":760976633,"name":"stlab/chain","url":"https://api.github.com/repos/stlab/chain"},"payload":{"action":"labeled","number":15,"pull_request":{"url":"https://api.github.com/repos/stlab/chain/pulls/15","id":3531286367,"number":15,"head":{"ref":"dependabot/github_actions/softprops/action-gh-release-3","sha":"edb6511c8c35355bfdba51f72e166d1e7c407b3d","repo":{"id":760976633,"url":"https://api.github.com/repos/stlab/chain","name":"chain"}},"base":{"ref":"main","sha":"9d8fd4058c5ecf2bc1a06a32ac406a06a6d23e33","repo":{"id":760976633,"url":"https://api.github.com/repos/stlab/chain","name":"chain"}}},"label":{"id":10238937108,"node_id":"LA_kwDOLVuU-c8AAAACYknIFA","url":"https://api.github.com/repos/stlab/chain/labels/github_actions","name":"github_actions","color":"000000","default":false,"description":"Pull requests that update GitHub Actions code"},"labels":[{"id":10238937104,"node_id":"LA_kwDOLVuU-c8AAAACYknIEA","url":"https://api.github.com/repos/stlab/chain/labels/dependencies","name":"dependencies","color":"0366d6","default":false,"description":"Pull requests that update a dependency file"},{"id":10238937108,"node_id":"LA_kwDOLVuU-c8AAAACYknIFA","url":"https://api.github.com/repos/stlab/chain/labels/github_actions","name":"github_actions","color":"000000","default":false,"description":"Pull requests that update GitHub Actions code"}]},"public":true,"created_at":"2026-04-15T00:45:08Z","org":{"id":2448845,"login":"stlab","gravatar_id":"","url":"https://api.github.com/orgs/stlab","avatar_url":"https://avatars.githubusercontent.com/u/2448845?"}},{"id":"8422497307","type":"PullRequestEvent","actor":{"id":49699333,"login":"dependabot[bot]","display_login":"dependabot","gravatar_id":"","url":"https://api.github.com/users/dependabot[bot]","avatar_url":"https://avatars.githubusercontent.com/u/49699333?"},"repo":{"id":760976633,"name":"stlab/chain","url":"https://api.github.com/repos/stlab/chain"},"payload":{"action":"labeled","number":15,"pull_request":{"url":"https://api.github.com/repos/stlab/chain/pulls/15","id":3531286367,"number":15,"head":{"ref":"dependabot/github_actions/softprops/action-gh-release-3","sha":"edb6511c8c35355bfdba51f72e166d1e7c407b3d","repo":{"id":760976633,"url":"https://api.github.com/repos/stlab/chain","name":"chain"}},"base":{"ref":"main","sha":"9d8fd4058c5ecf2bc1a06a32ac406a06a6d23e33","repo":{"id":760976633,"url":"https://api.github.com/repos/stlab/chain","name":"chain"}}},"label":{"id":10238937108,"node_id":"LA_kwDOLVuU-c8AAAACYknIFA","url":"https://api.github.com/repos/stlab/chain/labels/github_actions","name":"github_actions","color":"000000","default":false,"description":"Pull requests that update GitHub Actions code"},"labels":[{"id":10238937104,"node_id":"LA_kwDOLVuU-c8AAAACYknIEA","url":"https://api.github.com/repos/stlab/chain/labels/dependencies","name":"dependencies","color":"0366d6","default":false,"description":"Pull requests that update a dependency file"},{"id":10238937108,"node_id":"LA_kwDOLVuU-c8AAAACYknIFA","url":"https://api.github.com/repos/stlab/chain/labels/github_actions","name":"github_actions","color":"000000","default":false,"description":"Pull requests that update GitHub Actions code"}]},"public":true,"created_at":"2026-04-15T00:45:08Z","org":{"id":2448845,"login":"stlab","gravatar_id":"","url":"https://api.github.com/orgs/stlab","avatar_url":"https://avatars.githubusercontent.com/u/2448845?"}},{"id":"8422497263","type":"PullRequestEvent","actor":{"id":49699333,"login":"dependabot[bot]","display_login":"dependabot","gravatar_id":"","url":"https://api.github.com/users/dependabot[bot]","avatar_url":"https://avatars.githubusercontent.com/u/49699333?"},"repo":{"id":760976633,"name":"stlab/chain","url":"https://api.github.com/repos/stlab/chain"},"payload":{"action":"labeled","number":15,"pull_request":{"url":"https://api.github.com/repos/stlab/chain/pulls/15","id":3531286367,"number":15,"head":{"ref":"dependabot/github_actions/softprops/action-gh-release-3","sha":"edb6511c8c35355bfdba51f72e166d1e7c407b3d","repo":{"id":760976633,"url":"https://api.github.com/repos/stlab/chain","name":"chain"}},"base":{"ref":"main","sha":"9d8fd4058c5ecf2bc1a06a32ac406a06a6d23e33","repo":{"id":760976633,"url":"https://api.github.com/repos/stlab/chain","name":"chain"}}},"label":{"id":10238937108,"node_id":"LA_kwDOLVuU-c8AAAACYknIFA","url":"https://api.github.com/repos/stlab/chain/labels/github_actions","name":"github_actions","color":"000000","default":false,"description":"Pull requests that update GitHub Actions code"},"labels":[{"id":10238937104,"node_id":"LA_kwDOLVuU-c8AAAACYknIEA","url":"https://api.github.com/repos/stlab/chain/labels/dependencies","name":"dependencies","color":"0366d6","default":false,"description":"Pull requests that update a dependency file"},{"id":10238937108,"node_id":"LA_kwDOLVuU-c8AAAACYknIFA","url":"https://api.github.com/repos/stlab/chain/labels/github_actions","name":"github_actions","color":"000000","default":false,"description":"Pull requests that update GitHub Actions code"}]},"public":true,"created_at":"2026-04-15T00:45:08Z","org":{"id":2448845,"login":"stlab","gravatar_id":"","url":"https://api.github.com/orgs/stlab","avatar_url":"https://avatars.githubusercontent.com/u/2448845?"}},{"id":"8422497261","type":"PullRequestEvent","actor":{"id":49699333,"login":"dependabot[bot]","display_login":"dependabot","gravatar_id":"","url":"https://api.github.com/users/dependabot[bot]","avatar_url":"https://avatars.githubusercontent.com/u/49699333?"},"repo":{"id":760976633,"name":"stlab/chain","url":"https://api.github.com/repos/stlab/chain"},"payload":{"action":"labeled","number":15,"pull_request":{"url":"https://api.github.com/repos/stlab/chain/pulls/15","id":3531286367,"number":15,"head":{"ref":"dependabot/github_actions/softprops/action-gh-release-3","sha":"edb6511c8c35355bfdba51f72e166d1e7c407b3d","repo":{"id":760976633,"url":"https://api.github.com/repos/stlab/chain","name":"chain"}},"base":{"ref":"main","sha":"9d8fd4058c5ecf2bc1a06a32ac406a06a6d23e33","repo":{"id":760976633,"url":"https://api.github.com/repos/stlab/chain","name":"chain"}}},"label":{"id":10238937108,"node_id":"LA_kwDOLVuU-c8AAAACYknIFA","url":"https://api.github.com/repos/stlab/chain/labels/github_actions","name":"github_actions","color":"000000","default":false,"description":"Pull requests that update GitHub Actions code"},"labels":[{"id":10238937104,"node_id":"LA_kwDOLVuU-c8AAAACYknIEA","url":"https://api.github.com/repos/stlab/chain/labels/dependencies","name":"dependencies","color":"0366d6","default":false,"description":"Pull requests that update a dependency file"},{"id":10238937108,"node_id":"LA_kwDOLVuU-c8AAAACYknIFA","url":"https://api.github.com/repos/stlab/chain/labels/github_actions","name":"github_actions","color":"000000","default":false,"description":"Pull requests that update GitHub Actions code"}]},"public":true,"created_at":"2026-04-15T00:45:08Z","org":{"id":2448845,"login":"stlab","gravatar_id":"","url":"https://api.github.com/orgs/stlab","avatar_url":"https://avatars.githubusercontent.com/u/2448845?"}},{"id":"10590509036","type":"CreateEvent","actor":{"id":49699333,"login":"dependabot[bot]","display_login":"dependabot","gravatar_id":"","url":"https://api.github.com/users/dependabot[bot]","avatar_url":"https://avatars.githubusercontent.com/u/49699333?"},"repo":{"id":760976633,"name":"stlab/chain","url":"https://api.github.com/repos/stlab/chain"},"payload":{"ref":"dependabot/github_actions/softprops/action-gh-release-3","ref_type":"branch","full_ref":"refs/heads/dependabot/github_actions/softprops/action-gh-release-3","master_branch":"main","description":"Experimental alternative to sender/receivers.","pusher_type":"user"},"public":true,"created_at":"2026-04-15T00:45:08Z","org":{"id":2448845,"login":"stlab","gravatar_id":"","url":"https://api.github.com/orgs/stlab","avatar_url":"https://avatars.githubusercontent.com/u/2448845?"}},{"id":"8422496868","type":"PullRequestEvent","actor":{"id":49699333,"login":"dependabot[bot]","display_login":"dependabot","gravatar_id":"","url":"https://api.github.com/users/dependabot[bot]","avatar_url":"https://avatars.githubusercontent.com/u/49699333?"},"repo":{"id":760976633,"name":"stlab/chain","url":"https://api.github.com/repos/stlab/chain"},"payload":{"action":"opened","number":15,"pull_request":{"url":"https://api.github.com/repos/stlab/chain/pulls/15","id":3531286367,"number":15,"head":{"ref":"dependabot/github_actions/softprops/action-gh-release-3","sha":"edb6511c8c35355bfdba51f72e166d1e7c407b3d","repo":{"id":760976633,"url":"https://api.github.com/repos/stlab/chain","name":"chain"}},"base":{"ref":"main","sha":"9d8fd4058c5ecf2bc1a06a32ac406a06a6d23e33","repo":{"id":760976633,"url":"https://api.github.com/repos/stlab/chain","name":"chain"}}}},"public":true,"created_at":"2026-04-15T00:45:08Z","org":{"id":2448845,"login":"stlab","gravatar_id":"","url":"https://api.github.com/orgs/stlab","avatar_url":"https://avatars.githubusercontent.com/u/2448845?"}},{"id":"8339573276","type":"IssuesEvent","actor":{"id":44065,"login":"dabrahams","display_login":"dabrahams","gravatar_id":"","url":"https://api.github.com/users/dabrahams","avatar_url":"https://avatars.githubusercontent.com/u/44065?"},"repo":{"id":399925664,"name":"stlab/better-code","url":"https://api.github.com/repos/stlab/better-code"},"payload":{"action":"opened","issue":{"url":"https://api.github.com/repos/stlab/better-code/issues/52","repository_url":"https://api.github.com/repos/stlab/better-code","labels_url":"https://api.github.com/repos/stlab/better-code/issues/52/labels{/name}","comments_url":"https://api.github.com/repos/stlab/better-code/issues/52/comments","events_url":"https://api.github.com/repos/stlab/better-code/issues/52/events","html_url":"https://github.com/stlab/better-code/issues/52","id":4251024880,"node_id":"I_kwDOF9ZhoM79YX3w","number":52,"title":"This paragraph makes no sense to me.","user":{"login":"dabrahams","id":44065,"node_id":"MDQ6VXNlcjQ0MDY1","avatar_url":"https://avatars.githubusercontent.com/u/44065?v=4","gravatar_id":"","url":"https://api.github.com/users/dabrahams","html_url":"https://github.com/dabrahams","followers_url":"https://api.github.com/users/dabrahams/followers","following_url":"https://api.github.com/users/dabrahams/following{/other_user}","gists_url":"https://api.github.com/users/dabrahams/gists{/gist_id}","starred_url":"https://api.github.com/users/dabrahams/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dabrahams/subscriptions","organizations_url":"https://api.github.com/users/dabrahams/orgs","repos_url":"https://api.github.com/users/dabrahams/repos","events_url":"https://api.github.com/users/dabrahams/events{/privacy}","received_events_url":"https://api.github.com/users/dabrahams/received_events","type":"User","user_view_type":"public","site_admin":false},"labels":[],"state":"open","locked":false,"assignees":[],"milestone":null,"comments":0,"created_at":"2026-04-13T03:18:35Z","updated_at":"2026-04-13T03:38:28Z","closed_at":null,"assignee":null,"type":null,"active_lock_reason":null,"sub_issues_summary":{"total":0,"completed":0,"percent_completed":0},"issue_dependencies_summary":{"blocked_by":0,"total_blocked_by":0,"blocking":0,"total_blocking":0},"body":"[this paragraph](https://github.com/stlab/better-code/blame/3d6d16bc10d78a0d5c1e4ec3a895f658afab4f06/better-code/src/Appendix%20-%20Safety.md#L66)\n\n>  safety properties become compositional only when the functions involved are themselves safety‑preserving. \n\nWe're talking about the safety of operations, i.e. “the functions involved.”  The composition property *described in the text* posits safety-preserving operations.\n\n> In other words, from the fact that a safety property p holds for f(x) and for g(x), nothing follows about p(f(g(x))) unless f and g each preserve p.\n\nSurely these two statements are equivalent for a safety property p:\n- for any x, p holds for f(x) \n- f preserves p\n\nI added “for any x” but that is implicit in all of the text in the definitions, if you read them.  If your quibble depends on the distinction between “for any x” and some specific x, then I think you're confused either about what's written in the document, or some of the fancy language in those papers you cite.\n\nIf you drop “for any x,” we must interpret your premise “a safety property p holds for f(x) and for g(x)” as applying to some specific x.  In that case, f(g(x)) may not even make any sense (because of type—or if you are positing some kind of untyped calculus, precondition—violations). But if it did make sense, its upholding of p would *obviously* not follow because it's likely that g(x) ≠ x and we only have an assertion about the safety of f(x).  But then the functional composition operation g•f is not what we're talking about here!  The operations are composed by sequencing, and I  claim the composition f(x); g(x) *does* uphold p.  If I  am wrong, a single counterexample would suffice to show it.\n","reactions":{"url":"https://api.github.com/repos/stlab/better-code/issues/52/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/stlab/better-code/issues/52/timeline","performed_via_github_app":null,"state_reason":null,"pinned_comment":null}},"public":true,"created_at":"2026-04-13T03:18:36Z","org":{"id":2448845,"login":"stlab","gravatar_id":"","url":"https://api.github.com/orgs/stlab","avatar_url":"https://avatars.githubusercontent.com/u/2448845?"}},{"id":"8339175314","type":"PullRequestEvent","actor":{"id":44065,"login":"dabrahams","display_login":"dabrahams","gravatar_id":"","url":"https://api.github.com/users/dabrahams","avatar_url":"https://avatars.githubusercontent.com/u/44065?"},"repo":{"id":399925664,"name":"stlab/better-code","url":"https://api.github.com/repos/stlab/better-code"},"payload":{"action":"opened","number":51,"pull_request":{"url":"https://api.github.com/repos/stlab/better-code/pulls/51","id":3520742567,"number":51,"head":{"ref":"patch-1","sha":"64b49b55468b08480ac434112199e817cc63e638","repo":{"id":1209025247,"url":"https://api.github.com/repos/dabrahams/better-code","name":"better-code"}},"base":{"ref":"main","sha":"3d6d16bc10d78a0d5c1e4ec3a895f658afab4f06","repo":{"id":399925664,"url":"https://api.github.com/repos/stlab/better-code","name":"better-code"}}}},"public":true,"created_at":"2026-04-13T02:54:53Z","org":{"id":2448845,"login":"stlab","gravatar_id":"","url":"https://api.github.com/orgs/stlab","avatar_url":"https://avatars.githubusercontent.com/u/2448845?"}},{"id":"8339067525","type":"ForkEvent","actor":{"id":44065,"login":"dabrahams","display_login":"dabrahams","gravatar_id":"","url":"https://api.github.com/users/dabrahams","avatar_url":"https://avatars.githubusercontent.com/u/44065?"},"repo":{"id":399925664,"name":"stlab/better-code","url":"https://api.github.com/repos/stlab/better-code"},"payload":{"action":"forked","forkee":{"id":1209025247,"node_id":"R_kgDOSBBC3w","name":"better-code","full_name":"dabrahams/better-code","private":false,"owner":{"login":"dabrahams","id":44065,"node_id":"MDQ6VXNlcjQ0MDY1","avatar_url":"https://avatars.githubusercontent.com/u/44065?v=4","gravatar_id":"","url":"https://api.github.com/users/dabrahams","html_url":"https://github.com/dabrahams","followers_url":"https://api.github.com/users/dabrahams/followers","following_url":"https://api.github.com/users/dabrahams/following{/other_user}","gists_url":"https://api.github.com/users/dabrahams/gists{/gist_id}","starred_url":"https://api.github.com/users/dabrahams/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dabrahams/subscriptions","organizations_url":"https://api.github.com/users/dabrahams/orgs","repos_url":"https://api.github.com/users/dabrahams/repos","events_url":"https://api.github.com/users/dabrahams/events{/privacy}","received_events_url":"https://api.github.com/users/dabrahams/received_events","type":"User","user_view_type":"public","site_admin":false},"html_url":"https://github.com/dabrahams/better-code","description":"Better Code (redux) course and book materials","fork":true,"url":"https://api.github.com/repos/dabrahams/better-code","forks_url":"https://api.github.com/repos/dabrahams/better-code/forks","keys_url":"https://api.github.com/repos/dabrahams/better-code/keys{/key_id}","collaborators_url":"https://api.github.com/repos/dabrahams/better-code/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/dabrahams/better-code/teams","hooks_url":"https://api.github.com/repos/dabrahams/better-code/hooks","issue_events_url":"https://api.github.com/repos/dabrahams/better-code/issues/events{/number}","events_url":"https://api.github.com/repos/dabrahams/better-code/events","assignees_url":"https://api.github.com/repos/dabrahams/better-code/assignees{/user}","branches_url":"https://api.github.com/repos/dabrahams/better-code/branches{/branch}","tags_url":"https://api.github.com/repos/dabrahams/better-code/tags","blobs_url":"https://api.github.com/repos/dabrahams/better-code/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/dabrahams/better-code/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/dabrahams/better-code/git/refs{/sha}","trees_url":"https://api.github.com/repos/dabrahams/better-code/git/trees{/sha}","statuses_url":"https://api.github.com/repos/dabrahams/better-code/statuses/{sha}","languages_url":"https://api.github.com/repos/dabrahams/better-code/languages","stargazers_url":"https://api.github.com/repos/dabrahams/better-code/stargazers","contributors_url":"https://api.github.com/repos/dabrahams/better-code/contributors","subscribers_url":"https://api.github.com/repos/dabrahams/better-code/subscribers","subscription_url":"https://api.github.com/repos/dabrahams/better-code/subscription","commits_url":"https://api.github.com/repos/dabrahams/better-code/commits{/sha}","git_commits_url":"https://api.github.com/repos/dabrahams/better-code/git/commits{/sha}","comments_url":"https://api.github.com/repos/dabrahams/better-code/comments{/number}","issue_comment_url":"https://api.github.com/repos/dabrahams/better-code/issues/comments{/number}","contents_url":"https://api.github.com/repos/dabrahams/better-code/contents/{+path}","compare_url":"https://api.github.com/repos/dabrahams/better-code/compare/{base}...{head}","merges_url":"https://api.github.com/repos/dabrahams/better-code/merges","archive_url":"https://api.github.com/repos/dabrahams/better-code/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/dabrahams/better-code/downloads","issues_url":"https://api.github.com/repos/dabrahams/better-code/issues{/number}","pulls_url":"https://api.github.com/repos/dabrahams/better-code/pulls{/number}","milestones_url":"https://api.github.com/repos/dabrahams/better-code/milestones{/number}","notifications_url":"https://api.github.com/repos/dabrahams/better-code/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/dabrahams/better-code/labels{/name}","releases_url":"https://api.github.com/repos/dabrahams/better-code/releases{/id}","deployments_url":"https://api.github.com/repos/dabrahams/better-code/deployments","created_at":"2026-04-13T02:48:01Z","updated_at":"2026-04-13T02:48:01Z","pushed_at":"2026-04-13T02:54:25Z","git_url":"git://github.com/dabrahams/better-code.git","ssh_url":"git@github.com:dabrahams/better-code.git","clone_url":"https://github.com/dabrahams/better-code.git","svn_url":"https://github.com/dabrahams/better-code","homepage":null,"size":64658,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"has_discussions":false,"forks_count":0,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":0,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"allow_forking":true,"is_template":false,"web_commit_signoff_required":false,"has_pull_requests":true,"pull_request_creation_policy":"all","topics":[],"visibility":"public","forks":0,"open_issues":0,"watchers":0,"default_branch":"main"}},"public":true,"created_at":"2026-04-13T02:48:01Z","org":{"id":2448845,"login":"stlab","gravatar_id":"","url":"https://api.github.com/orgs/stlab","avatar_url":"https://avatars.githubusercontent.com/u/2448845?"}},{"id":"8243699564","type":"IssueCommentEvent","actor":{"id":9896706,"login":"lucteo","display_login":"lucteo","gravatar_id":"","url":"https://api.github.com/users/lucteo","avatar_url":"https://avatars.githubusercontent.com/u/9896706?"},"repo":{"id":399925664,"name":"stlab/better-code","url":"https://api.github.com/repos/stlab/better-code"},"payload":{"action":"created","issue":{"url":"https://api.github.com/repos/stlab/better-code/issues/50","repository_url":"https://api.github.com/repos/stlab/better-code","labels_url":"https://api.github.com/repos/stlab/better-code/issues/50/labels{/name}","comments_url":"https://api.github.com/repos/stlab/better-code/issues/50/comments","events_url":"https://api.github.com/repos/stlab/better-code/issues/50/events","html_url":"https://github.com/stlab/better-code/issues/50","id":4231816535,"node_id":"I_kwDOF9ZhoM78PGVX","number":50,"title":"[safety] Strange use of unqualified \"safe language\"","user":{"login":"lucteo","id":9896706,"node_id":"MDQ6VXNlcjk4OTY3MDY=","avatar_url":"https://avatars.githubusercontent.com/u/9896706?v=4","gravatar_id":"","url":"https://api.github.com/users/lucteo","html_url":"https://github.com/lucteo","followers_url":"https://api.github.com/users/lucteo/followers","following_url":"https://api.github.com/users/lucteo/following{/other_user}","gists_url":"https://api.github.com/users/lucteo/gists{/gist_id}","starred_url":"https://api.github.com/users/lucteo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lucteo/subscriptions","organizations_url":"https://api.github.com/users/lucteo/orgs","repos_url":"https://api.github.com/users/lucteo/repos","events_url":"https://api.github.com/users/lucteo/events{/privacy}","received_events_url":"https://api.github.com/users/lucteo/received_events","type":"User","user_view_type":"public","site_admin":false},"labels":[],"state":"open","locked":false,"assignees":[],"milestone":null,"comments":1,"created_at":"2026-04-09T11:31:11Z","updated_at":"2026-04-09T13:13:19Z","closed_at":null,"assignee":null,"type":null,"active_lock_reason":null,"sub_issues_summary":{"total":0,"completed":0,"percent_completed":0},"issue_dependencies_summary":{"blocked_by":0,"total_blocked_by":0,"blocking":0,"total_blocking":0},"body":"In the context of a problem that we are trying to solve, let's consider the following safety property: \"The values of all numbers in a program run are positive\" -- noted as *XP*\n\nThe definitions of ***X* safe operation** and ***X* safe language** allows one to operate with our property *XP*.\n\nThe phrase:\n> A **safe language** (such as Java or Haskell) has only safe operations, so all possible programs in the language are safe.\nsounds like a definition, but I assume it's just a variant of the above ***X* safe language** definition. \n\nIf we interpret \"safe operation\" as an operation that is an \"*X* safe operation\" for any *X*, then we can conclude that a \"safe language\" needs to also satisfy *XP*.\n\nBut languages like Java and Haskell allow expressing negative numbers, thus they don't uphold *XP* by default. Thus, we can't say that these languages are \"safe languages\", meaning that they only have \"safe operations\".\n\nSimilarly, the phrase\n> Since undefined behavior invalidates all guarantees (including memory safety), a memory-safe language can have no undefined behavior and is therefore a safe language\nreads as if one doesn't have undefined behavior, all safety properties are uphold.\n\nThis issue is somehow similar to #48 ","reactions":{"url":"https://api.github.com/repos/stlab/better-code/issues/50/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/stlab/better-code/issues/50/timeline","performed_via_github_app":null,"state_reason":null,"pinned_comment":null},"comment":{"url":"https://api.github.com/repos/stlab/better-code/issues/comments/4214486169","html_url":"https://github.com/stlab/better-code/issues/50#issuecomment-4214486169","issue_url":"https://api.github.com/repos/stlab/better-code/issues/50","id":4214486169,"node_id":"IC_kwDOF9ZhoM77M_SZ","user":{"login":"lucteo","id":9896706,"node_id":"MDQ6VXNlcjk4OTY3MDY=","avatar_url":"https://avatars.githubusercontent.com/u/9896706?v=4","gravatar_id":"","url":"https://api.github.com/users/lucteo","html_url":"https://github.com/lucteo","followers_url":"https://api.github.com/users/lucteo/followers","following_url":"https://api.github.com/users/lucteo/following{/other_user}","gists_url":"https://api.github.com/users/lucteo/gists{/gist_id}","starred_url":"https://api.github.com/users/lucteo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lucteo/subscriptions","organizations_url":"https://api.github.com/users/lucteo/orgs","repos_url":"https://api.github.com/users/lucteo/repos","events_url":"https://api.github.com/users/lucteo/events{/privacy}","received_events_url":"https://api.github.com/users/lucteo/received_events","type":"User","user_view_type":"public","site_admin":false},"created_at":"2026-04-09T13:13:19Z","updated_at":"2026-04-09T13:13:19Z","body":"I can't think of any definition of \"safe language\" that provides any other safety guarantees on top of lack of UB.","pin":null,"reactions":{"url":"https://api.github.com/repos/stlab/better-code/issues/comments/4214486169/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"performed_via_github_app":null}},"public":true,"created_at":"2026-04-09T13:13:19Z","org":{"id":2448845,"login":"stlab","gravatar_id":"","url":"https://api.github.com/orgs/stlab","avatar_url":"https://avatars.githubusercontent.com/u/2448845?"}},{"id":"8239974214","type":"IssuesEvent","actor":{"id":9896706,"login":"lucteo","display_login":"lucteo","gravatar_id":"","url":"https://api.github.com/users/lucteo","avatar_url":"https://avatars.githubusercontent.com/u/9896706?"},"repo":{"id":399925664,"name":"stlab/better-code","url":"https://api.github.com/repos/stlab/better-code"},"payload":{"action":"opened","issue":{"url":"https://api.github.com/repos/stlab/better-code/issues/50","repository_url":"https://api.github.com/repos/stlab/better-code","labels_url":"https://api.github.com/repos/stlab/better-code/issues/50/labels{/name}","comments_url":"https://api.github.com/repos/stlab/better-code/issues/50/comments","events_url":"https://api.github.com/repos/stlab/better-code/issues/50/events","html_url":"https://github.com/stlab/better-code/issues/50","id":4231816535,"node_id":"I_kwDOF9ZhoM78PGVX","number":50,"title":"[safety] Strange use of unqualified \"safe language\"","user":{"login":"lucteo","id":9896706,"node_id":"MDQ6VXNlcjk4OTY3MDY=","avatar_url":"https://avatars.githubusercontent.com/u/9896706?v=4","gravatar_id":"","url":"https://api.github.com/users/lucteo","html_url":"https://github.com/lucteo","followers_url":"https://api.github.com/users/lucteo/followers","following_url":"https://api.github.com/users/lucteo/following{/other_user}","gists_url":"https://api.github.com/users/lucteo/gists{/gist_id}","starred_url":"https://api.github.com/users/lucteo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lucteo/subscriptions","organizations_url":"https://api.github.com/users/lucteo/orgs","repos_url":"https://api.github.com/users/lucteo/repos","events_url":"https://api.github.com/users/lucteo/events{/privacy}","received_events_url":"https://api.github.com/users/lucteo/received_events","type":"User","user_view_type":"public","site_admin":false},"labels":[],"state":"open","locked":false,"assignees":[],"milestone":null,"comments":1,"created_at":"2026-04-09T11:31:11Z","updated_at":"2026-04-09T13:13:19Z","closed_at":null,"assignee":null,"type":null,"active_lock_reason":null,"sub_issues_summary":{"total":0,"completed":0,"percent_completed":0},"issue_dependencies_summary":{"blocked_by":0,"total_blocked_by":0,"blocking":0,"total_blocking":0},"body":"In the context of a problem that we are trying to solve, let's consider the following safety property: \"The values of all numbers in a program run are positive\" -- noted as *XP*\n\nThe definitions of ***X* safe operation** and ***X* safe language** allows one to operate with our property *XP*.\n\nThe phrase:\n> A **safe language** (such as Java or Haskell) has only safe operations, so all possible programs in the language are safe.\nsounds like a definition, but I assume it's just a variant of the above ***X* safe language** definition. \n\nIf we interpret \"safe operation\" as an operation that is an \"*X* safe operation\" for any *X*, then we can conclude that a \"safe language\" needs to also satisfy *XP*.\n\nBut languages like Java and Haskell allow expressing negative numbers, thus they don't uphold *XP* by default. Thus, we can't say that these languages are \"safe languages\", meaning that they only have \"safe operations\".\n\nSimilarly, the phrase\n> Since undefined behavior invalidates all guarantees (including memory safety), a memory-safe language can have no undefined behavior and is therefore a safe language\nreads as if one doesn't have undefined behavior, all safety properties are uphold.\n\nThis issue is somehow similar to #48 ","reactions":{"url":"https://api.github.com/repos/stlab/better-code/issues/50/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/stlab/better-code/issues/50/timeline","performed_via_github_app":null,"state_reason":null,"pinned_comment":null}},"public":true,"created_at":"2026-04-09T11:31:13Z","org":{"id":2448845,"login":"stlab","gravatar_id":"","url":"https://api.github.com/orgs/stlab","avatar_url":"https://avatars.githubusercontent.com/u/2448845?"}},{"id":"8239291607","type":"IssuesEvent","actor":{"id":9896706,"login":"lucteo","display_login":"lucteo","gravatar_id":"","url":"https://api.github.com/users/lucteo","avatar_url":"https://avatars.githubusercontent.com/u/9896706?"},"repo":{"id":399925664,"name":"stlab/better-code","url":"https://api.github.com/repos/stlab/better-code"},"payload":{"action":"opened","issue":{"url":"https://api.github.com/repos/stlab/better-code/issues/49","repository_url":"https://api.github.com/repos/stlab/better-code","labels_url":"https://api.github.com/repos/stlab/better-code/issues/49/labels{/name}","comments_url":"https://api.github.com/repos/stlab/better-code/issues/49/comments","events_url":"https://api.github.com/repos/stlab/better-code/issues/49/events","html_url":"https://github.com/stlab/better-code/issues/49","id":4231698117,"node_id":"I_kwDOF9ZhoM78OpbF","number":49,"title":"[safety] No-trapping is also a safety property","user":{"login":"lucteo","id":9896706,"node_id":"MDQ6VXNlcjk4OTY3MDY=","avatar_url":"https://avatars.githubusercontent.com/u/9896706?v=4","gravatar_id":"","url":"https://api.github.com/users/lucteo","html_url":"https://github.com/lucteo","followers_url":"https://api.github.com/users/lucteo/followers","following_url":"https://api.github.com/users/lucteo/following{/other_user}","gists_url":"https://api.github.com/users/lucteo/gists{/gist_id}","starred_url":"https://api.github.com/users/lucteo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lucteo/subscriptions","organizations_url":"https://api.github.com/users/lucteo/orgs","repos_url":"https://api.github.com/users/lucteo/repos","events_url":"https://api.github.com/users/lucteo/events{/privacy}","received_events_url":"https://api.github.com/users/lucteo/received_events","type":"User","user_view_type":"public","site_admin":false},"labels":[],"state":"open","locked":false,"assignees":[],"milestone":null,"comments":0,"created_at":"2026-04-09T11:11:07Z","updated_at":"2026-04-09T11:11:07Z","closed_at":null,"assignee":null,"type":null,"active_lock_reason":null,"sub_issues_summary":{"total":0,"completed":0,"percent_completed":0},"issue_dependencies_summary":{"blocked_by":0,"total_blocked_by":0,"blocking":0,"total_blocking":0},"body":"According to the definition of safety property, a property like \"The program shall never trap/crash\" is a safety property. This is a property that is frequently not uphold in \"safe languages\".\n\nThe definition of ***X* safe operation** nicely avoids this pitfall, by not mentioning how the safety property *X* is uphold:\n> An ***X* safe operation** upholds some safety property *X* **even if preconditions are violated**.\n\nBut, later on the definition of **safe operation** (and implicitly **safe language**), mention trapping as a way to construct safe operations:\n> “Trapping” or otherwise stopping the program when preconditions are violated is one way to achieve safety.\n\nTrapping is not a good strategy for programs in which \"no-trapping\" is a safety property.\n\nI would suggest slightly altering the phrase about trapping to indicate that this is just a strategy and may not work in the case of no-trapping safety property. Maybe adding a footnote is enough.\n\nSimilarly, I would point out (probably in a footnote) that safe languages are, by design, not upholding the no-trapping safety property.","reactions":{"url":"https://api.github.com/repos/stlab/better-code/issues/49/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/stlab/better-code/issues/49/timeline","performed_via_github_app":null,"state_reason":null,"pinned_comment":null}},"public":true,"created_at":"2026-04-09T11:11:10Z","org":{"id":2448845,"login":"stlab","gravatar_id":"","url":"https://api.github.com/orgs/stlab","avatar_url":"https://avatars.githubusercontent.com/u/2448845?"}},{"id":"8238820221","type":"IssuesEvent","actor":{"id":9896706,"login":"lucteo","display_login":"lucteo","gravatar_id":"","url":"https://api.github.com/users/lucteo","avatar_url":"https://avatars.githubusercontent.com/u/9896706?"},"repo":{"id":399925664,"name":"stlab/better-code","url":"https://api.github.com/repos/stlab/better-code"},"payload":{"action":"opened","issue":{"url":"https://api.github.com/repos/stlab/better-code/issues/48","repository_url":"https://api.github.com/repos/stlab/better-code","labels_url":"https://api.github.com/repos/stlab/better-code/issues/48/labels{/name}","comments_url":"https://api.github.com/repos/stlab/better-code/issues/48/comments","events_url":"https://api.github.com/repos/stlab/better-code/issues/48/events","html_url":"https://github.com/stlab/better-code/issues/48","id":4231604141,"node_id":"I_kwDOF9ZhoM78OSet","number":48,"title":"[safety] Inconsistent use of \"*X* safe operation\"","user":{"login":"lucteo","id":9896706,"node_id":"MDQ6VXNlcjk4OTY3MDY=","avatar_url":"https://avatars.githubusercontent.com/u/9896706?v=4","gravatar_id":"","url":"https://api.github.com/users/lucteo","html_url":"https://github.com/lucteo","followers_url":"https://api.github.com/users/lucteo/followers","following_url":"https://api.github.com/users/lucteo/following{/other_user}","gists_url":"https://api.github.com/users/lucteo/gists{/gist_id}","starred_url":"https://api.github.com/users/lucteo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lucteo/subscriptions","organizations_url":"https://api.github.com/users/lucteo/orgs","repos_url":"https://api.github.com/users/lucteo/repos","events_url":"https://api.github.com/users/lucteo/events{/privacy}","received_events_url":"https://api.github.com/users/lucteo/received_events","type":"User","user_view_type":"public","site_admin":false},"labels":[],"state":"open","locked":false,"assignees":[],"milestone":null,"comments":0,"created_at":"2026-04-09T10:56:51Z","updated_at":"2026-04-09T10:57:04Z","closed_at":null,"assignee":null,"type":null,"active_lock_reason":null,"sub_issues_summary":{"total":0,"completed":0,"percent_completed":0},"issue_dependencies_summary":{"blocked_by":0,"total_blocked_by":0,"blocking":0,"total_blocking":0},"body":"The document defines ***X* safe operation**  through:\n> An ***X* safe operation** upholds some safety property *X* **even if preconditions are violated**.\n\nLater on the document drops the *X* qualification:\n> A **safe operation** will never exhibit undefined behavior, even if preconditions are violated.\n\nThe document should use the *X* qualification in all places, or add a footnote explaining why it doesn't add value anymore.","reactions":{"url":"https://api.github.com/repos/stlab/better-code/issues/48/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/stlab/better-code/issues/48/timeline","performed_via_github_app":null,"state_reason":null,"pinned_comment":null}},"public":true,"created_at":"2026-04-09T10:56:52Z","org":{"id":2448845,"login":"stlab","gravatar_id":"","url":"https://api.github.com/orgs/stlab","avatar_url":"https://avatars.githubusercontent.com/u/2448845?"}},{"id":"7974340628","type":"PullRequestEvent","actor":{"id":49699333,"login":"dependabot[bot]","display_login":"dependabot","gravatar_id":"","url":"https://api.github.com/users/dependabot[bot]","avatar_url":"https://avatars.githubusercontent.com/u/49699333?"},"repo":{"id":760976633,"name":"stlab/chain","url":"https://api.github.com/repos/stlab/chain"},"payload":{"action":"labeled","number":14,"pull_request":{"url":"https://api.github.com/repos/stlab/chain/pulls/14","id":3474671038,"number":14,"head":{"ref":"dependabot/github_actions/codecov/codecov-action-6","sha":"455a7d82363f169a9d7c3ad60c964236fe123bdc","repo":{"id":760976633,"url":"https://api.github.com/repos/stlab/chain","name":"chain"}},"base":{"ref":"main","sha":"9d8fd4058c5ecf2bc1a06a32ac406a06a6d23e33","repo":{"id":760976633,"url":"https://api.github.com/repos/stlab/chain","name":"chain"}}},"label":{"id":10238937108,"node_id":"LA_kwDOLVuU-c8AAAACYknIFA","url":"https://api.github.com/repos/stlab/chain/labels/github_actions","name":"github_actions","color":"000000","default":false,"description":"Pull requests that update GitHub Actions code"},"labels":[{"id":10238937104,"node_id":"LA_kwDOLVuU-c8AAAACYknIEA","url":"https://api.github.com/repos/stlab/chain/labels/dependencies","name":"dependencies","color":"0366d6","default":false,"description":"Pull requests that update a dependency file"},{"id":10238937108,"node_id":"LA_kwDOLVuU-c8AAAACYknIFA","url":"https://api.github.com/repos/stlab/chain/labels/github_actions","name":"github_actions","color":"000000","default":false,"description":"Pull requests that update GitHub Actions code"}]},"public":true,"created_at":"2026-04-01T00:49:15Z","org":{"id":2448845,"login":"stlab","gravatar_id":"","url":"https://api.github.com/orgs/stlab","avatar_url":"https://avatars.githubusercontent.com/u/2448845?"}},{"id":"7974340627","type":"PullRequestEvent","actor":{"id":49699333,"login":"dependabot[bot]","display_login":"dependabot","gravatar_id":"","url":"https://api.github.com/users/dependabot[bot]","avatar_url":"https://avatars.githubusercontent.com/u/49699333?"},"repo":{"id":760976633,"name":"stlab/chain","url":"https://api.github.com/repos/stlab/chain"},"payload":{"action":"labeled","number":14,"pull_request":{"url":"https://api.github.com/repos/stlab/chain/pulls/14","id":3474671038,"number":14,"head":{"ref":"dependabot/github_actions/codecov/codecov-action-6","sha":"455a7d82363f169a9d7c3ad60c964236fe123bdc","repo":{"id":760976633,"url":"https://api.github.com/repos/stlab/chain","name":"chain"}},"base":{"ref":"main","sha":"9d8fd4058c5ecf2bc1a06a32ac406a06a6d23e33","repo":{"id":760976633,"url":"https://api.github.com/repos/stlab/chain","name":"chain"}}},"label":{"id":10238937108,"node_id":"LA_kwDOLVuU-c8AAAACYknIFA","url":"https://api.github.com/repos/stlab/chain/labels/github_actions","name":"github_actions","color":"000000","default":false,"description":"Pull requests that update GitHub Actions code"},"labels":[{"id":10238937104,"node_id":"LA_kwDOLVuU-c8AAAACYknIEA","url":"https://api.github.com/repos/stlab/chain/labels/dependencies","name":"dependencies","color":"0366d6","default":false,"description":"Pull requests that update a dependency file"},{"id":10238937108,"node_id":"LA_kwDOLVuU-c8AAAACYknIFA","url":"https://api.github.com/repos/stlab/chain/labels/github_actions","name":"github_actions","color":"000000","default":false,"description":"Pull requests that update GitHub Actions code"}]},"public":true,"created_at":"2026-04-01T00:49:15Z","org":{"id":2448845,"login":"stlab","gravatar_id":"","url":"https://api.github.com/orgs/stlab","avatar_url":"https://avatars.githubusercontent.com/u/2448845?"}},{"id":"7974340512","type":"PullRequestEvent","actor":{"id":49699333,"login":"dependabot[bot]","display_login":"dependabot","gravatar_id":"","url":"https://api.github.com/users/dependabot[bot]","avatar_url":"https://avatars.githubusercontent.com/u/49699333?"},"repo":{"id":760976633,"name":"stlab/chain","url":"https://api.github.com/repos/stlab/chain"},"payload":{"action":"labeled","number":14,"pull_request":{"url":"https://api.github.com/repos/stlab/chain/pulls/14","id":3474671038,"number":14,"head":{"ref":"dependabot/github_actions/codecov/codecov-action-6","sha":"455a7d82363f169a9d7c3ad60c964236fe123bdc","repo":{"id":760976633,"url":"https://api.github.com/repos/stlab/chain","name":"chain"}},"base":{"ref":"main","sha":"9d8fd4058c5ecf2bc1a06a32ac406a06a6d23e33","repo":{"id":760976633,"url":"https://api.github.com/repos/stlab/chain","name":"chain"}}},"label":{"id":10238937108,"node_id":"LA_kwDOLVuU-c8AAAACYknIFA","url":"https://api.github.com/repos/stlab/chain/labels/github_actions","name":"github_actions","color":"000000","default":false,"description":"Pull requests that update GitHub Actions code"},"labels":[{"id":10238937104,"node_id":"LA_kwDOLVuU-c8AAAACYknIEA","url":"https://api.github.com/repos/stlab/chain/labels/dependencies","name":"dependencies","color":"0366d6","default":false,"description":"Pull requests that update a dependency file"},{"id":10238937108,"node_id":"LA_kwDOLVuU-c8AAAACYknIFA","url":"https://api.github.com/repos/stlab/chain/labels/github_actions","name":"github_actions","color":"000000","default":false,"description":"Pull requests that update GitHub Actions code"}]},"public":true,"created_at":"2026-04-01T00:49:15Z","org":{"id":2448845,"login":"stlab","gravatar_id":"","url":"https://api.github.com/orgs/stlab","avatar_url":"https://avatars.githubusercontent.com/u/2448845?"}},{"id":"7974340511","type":"PullRequestEvent","actor":{"id":49699333,"login":"dependabot[bot]","display_login":"dependabot","gravatar_id":"","url":"https://api.github.com/users/dependabot[bot]","avatar_url":"https://avatars.githubusercontent.com/u/49699333?"},"repo":{"id":760976633,"name":"stlab/chain","url":"https://api.github.com/repos/stlab/chain"},"payload":{"action":"labeled","number":14,"pull_request":{"url":"https://api.github.com/repos/stlab/chain/pulls/14","id":3474671038,"number":14,"head":{"ref":"dependabot/github_actions/codecov/codecov-action-6","sha":"455a7d82363f169a9d7c3ad60c964236fe123bdc","repo":{"id":760976633,"url":"https://api.github.com/repos/stlab/chain","name":"chain"}},"base":{"ref":"main","sha":"9d8fd4058c5ecf2bc1a06a32ac406a06a6d23e33","repo":{"id":760976633,"url":"https://api.github.com/repos/stlab/chain","name":"chain"}}},"label":{"id":10238937108,"node_id":"LA_kwDOLVuU-c8AAAACYknIFA","url":"https://api.github.com/repos/stlab/chain/labels/github_actions","name":"github_actions","color":"000000","default":false,"description":"Pull requests that update GitHub Actions code"},"labels":[{"id":10238937104,"node_id":"LA_kwDOLVuU-c8AAAACYknIEA","url":"https://api.github.com/repos/stlab/chain/labels/dependencies","name":"dependencies","color":"0366d6","default":false,"description":"Pull requests that update a dependency file"},{"id":10238937108,"node_id":"LA_kwDOLVuU-c8AAAACYknIFA","url":"https://api.github.com/repos/stlab/chain/labels/github_actions","name":"github_actions","color":"000000","default":false,"description":"Pull requests that update GitHub Actions code"}]},"public":true,"created_at":"2026-04-01T00:49:15Z","org":{"id":2448845,"login":"stlab","gravatar_id":"","url":"https://api.github.com/orgs/stlab","avatar_url":"https://avatars.githubusercontent.com/u/2448845?"}},{"id":"10054074404","type":"CreateEvent","actor":{"id":49699333,"login":"dependabot[bot]","display_login":"dependabot","gravatar_id":"","url":"https://api.github.com/users/dependabot[bot]","avatar_url":"https://avatars.githubusercontent.com/u/49699333?"},"repo":{"id":760976633,"name":"stlab/chain","url":"https://api.github.com/repos/stlab/chain"},"payload":{"ref":"dependabot/github_actions/codecov/codecov-action-6","ref_type":"branch","full_ref":"refs/heads/dependabot/github_actions/codecov/codecov-action-6","master_branch":"main","description":"Experimental alternative to sender/receivers.","pusher_type":"user"},"public":true,"created_at":"2026-04-01T00:49:15Z","org":{"id":2448845,"login":"stlab","gravatar_id":"","url":"https://api.github.com/orgs/stlab","avatar_url":"https://avatars.githubusercontent.com/u/2448845?"}},{"id":"7974340167","type":"PullRequestEvent","actor":{"id":49699333,"login":"dependabot[bot]","display_login":"dependabot","gravatar_id":"","url":"https://api.github.com/users/dependabot[bot]","avatar_url":"https://avatars.githubusercontent.com/u/49699333?"},"repo":{"id":760976633,"name":"stlab/chain","url":"https://api.github.com/repos/stlab/chain"},"payload":{"action":"opened","number":14,"pull_request":{"url":"https://api.github.com/repos/stlab/chain/pulls/14","id":3474671038,"number":14,"head":{"ref":"dependabot/github_actions/codecov/codecov-action-6","sha":"455a7d82363f169a9d7c3ad60c964236fe123bdc","repo":{"id":760976633,"url":"https://api.github.com/repos/stlab/chain","name":"chain"}},"base":{"ref":"main","sha":"9d8fd4058c5ecf2bc1a06a32ac406a06a6d23e33","repo":{"id":760976633,"url":"https://api.github.com/repos/stlab/chain","name":"chain"}}}},"public":true,"created_at":"2026-04-01T00:49:15Z","org":{"id":2448845,"login":"stlab","gravatar_id":"","url":"https://api.github.com/orgs/stlab","avatar_url":"https://avatars.githubusercontent.com/u/2448845?"}},{"id":"7966855160","type":"WatchEvent","actor":{"id":30873659,"login":"fwcd","display_login":"fwcd","gravatar_id":"","url":"https://api.github.com/users/fwcd","avatar_url":"https://avatars.githubusercontent.com/u/30873659?"},"repo":{"id":153516990,"name":"adobe/hyde","url":"https://api.github.com/repos/adobe/hyde"},"payload":{"action":"started"},"public":true,"created_at":"2026-03-31T19:49:55Z","org":{"id":476009,"login":"adobe","gravatar_id":"","url":"https://api.github.com/orgs/adobe","avatar_url":"https://avatars.githubusercontent.com/u/476009?"}},{"id":"7769019678","type":"IssuesEvent","actor":{"id":32463042,"login":"tothambrus11","display_login":"tothambrus11","gravatar_id":"","url":"https://api.github.com/users/tothambrus11","avatar_url":"https://avatars.githubusercontent.com/u/32463042?"},"repo":{"id":399925664,"name":"stlab/better-code","url":"https://api.github.com/repos/stlab/better-code"},"payload":{"action":"opened","issue":{"url":"https://api.github.com/repos/stlab/better-code/issues/47","repository_url":"https://api.github.com/repos/stlab/better-code","labels_url":"https://api.github.com/repos/stlab/better-code/issues/47/labels{/name}","comments_url":"https://api.github.com/repos/stlab/better-code/issues/47/comments","events_url":"https://api.github.com/repos/stlab/better-code/issues/47/events","html_url":"https://github.com/stlab/better-code/issues/47","id":4139387126,"node_id":"I_kwDOF9ZhoM72ugj2","number":47,"title":"Already published or scam?","user":{"login":"tothambrus11","id":32463042,"node_id":"MDQ6VXNlcjMyNDYzMDQy","avatar_url":"https://avatars.githubusercontent.com/u/32463042?v=4","gravatar_id":"","url":"https://api.github.com/users/tothambrus11","html_url":"https://github.com/tothambrus11","followers_url":"https://api.github.com/users/tothambrus11/followers","following_url":"https://api.github.com/users/tothambrus11/following{/other_user}","gists_url":"https://api.github.com/users/tothambrus11/gists{/gist_id}","starred_url":"https://api.github.com/users/tothambrus11/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tothambrus11/subscriptions","organizations_url":"https://api.github.com/users/tothambrus11/orgs","repos_url":"https://api.github.com/users/tothambrus11/repos","events_url":"https://api.github.com/users/tothambrus11/events{/privacy}","received_events_url":"https://api.github.com/users/tothambrus11/received_events","type":"User","user_view_type":"public","site_admin":false},"labels":[],"state":"open","locked":false,"assignees":[],"milestone":null,"comments":0,"created_at":"2026-03-26T00:04:50Z","updated_at":"2026-03-26T00:04:50Z","closed_at":null,"assignee":null,"type":null,"active_lock_reason":null,"sub_issues_summary":{"total":0,"completed":0,"percent_completed":0},"issue_dependencies_summary":{"blocked_by":0,"total_blocked_by":0,"blocking":0,"total_blocking":0},"body":"I was looking for this repo on Google, and somehow I found these two links earlier than the repo itself:\n- https://www.informit.com/store/better-code-goals-for-software-developers-9780134584522\n- https://www.amazon.co.uk/Better-Code-Goals-Software-Developers/dp/0134584465#detailBullets_feature_div\n\n@sean-parent Are you aware of these or should we ask the sites to take them down?","reactions":{"url":"https://api.github.com/repos/stlab/better-code/issues/47/reactions","total_count":0,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"timeline_url":"https://api.github.com/repos/stlab/better-code/issues/47/timeline","performed_via_github_app":null,"state_reason":null,"pinned_comment":null}},"public":true,"created_at":"2026-03-26T00:04:51Z","org":{"id":2448845,"login":"stlab","gravatar_id":"","url":"https://api.github.com/orgs/stlab","avatar_url":"https://avatars.githubusercontent.com/u/2448845?"}},{"id":"9771009159","type":"DeleteEvent","actor":{"id":2279724,"login":"sean-parent","display_login":"sean-parent","gravatar_id":"","url":"https://api.github.com/users/sean-parent","avatar_url":"https://avatars.githubusercontent.com/u/2279724?"},"repo":{"id":399925664,"name":"stlab/better-code","url":"https://api.github.com/repos/stlab/better-code"},"payload":{"ref":"npd/more-tests","ref_type":"branch","full_ref":"refs/heads/npd/more-tests","pusher_type":"user"},"public":true,"created_at":"2026-03-24T20:48:22Z","org":{"id":2448845,"login":"stlab","gravatar_id":"","url":"https://api.github.com/orgs/stlab","avatar_url":"https://avatars.githubusercontent.com/u/2448845?"}}]