Darkmatter · github-bot stage: prod
preview@internal.darkmatter
Events received
69369
Ignored
69333
Jobs dispatched
36

Event 6402a190…

← All events

Event

Delivery
6402a190-65eb-11f1-8059-c616bcb4f44e
Event
issue_comment
Action
created
Received
2026-06-11T23:15:10.731Z
Signature
valid
Parsed
yes
Sender
arximboldi
Repo
darkmatter/nixmac
Status
ignored — missing_command

Headers

{
  "accept": "*/*",
  "accept-encoding": "gzip, br",
  "cf-connecting-ip": "140.82.115.245",
  "cf-ipcountry": "US",
  "cf-ray": "a0a450f7da28f88d",
  "cf-visitor": "{\"scheme\":\"https\"}",
  "connection": "Keep-Alive",
  "content-length": "15709",
  "content-type": "application/json",
  "host": "github-bot.darkmatter.io",
  "user-agent": "GitHub-Hookshot/831a06e",
  "x-forwarded-proto": "https",
  "x-github-delivery": "6402a190-65eb-11f1-8059-c616bcb4f44e",
  "x-github-event": "issue_comment",
  "x-github-hook-id": "628737947",
  "x-github-hook-installation-target-id": "3663660",
  "x-github-hook-installation-target-type": "integration",
  "x-real-ip": "140.82.115.245"
}

Payload

{
  "action": "created",
  "issue": {
    "url": "https://api.github.com/repos/darkmatter/nixmac/issues/376",
    "repository_url": "https://api.github.com/repos/darkmatter/nixmac",
    "labels_url": "https://api.github.com/repos/darkmatter/nixmac/issues/376/labels{/name}",
    "comments_url": "https://api.github.com/repos/darkmatter/nixmac/issues/376/comments",
    "events_url": "https://api.github.com/repos/darkmatter/nixmac/issues/376/events",
    "html_url": "https://github.com/darkmatter/nixmac/pull/376",
    "id": 4627888188,
    "node_id": "PR_kwDOSB6EzM7krWeb",
    "number": 376,
    "title": "feat(import): initialize git repo for zip-imported configs",
    "user": {
      "login": "fkb032",
      "id": 249513614,
      "node_id": "U_kgDODt9Gjg",
      "avatar_url": "https://avatars.githubusercontent.com/u/249513614?v=4",
      "gravatar_id": "",
      "url": "https://api.github.com/users/fkb032",
      "html_url": "https://github.com/fkb032",
      "followers_url": "https://api.github.com/users/fkb032/followers",
      "following_url": "https://api.github.com/users/fkb032/following{/other_user}",
      "gists_url": "https://api.github.com/users/fkb032/gists{/gist_id}",
      "starred_url": "https://api.github.com/users/fkb032/starred{/owner}{/repo}",
      "subscriptions_url": "https://api.github.com/users/fkb032/subscriptions",
      "organizations_url": "https://api.github.com/users/fkb032/orgs",
      "repos_url": "https://api.github.com/users/fkb032/repos",
      "events_url": "https://api.github.com/users/fkb032/events{/privacy}",
      "received_events_url": "https://api.github.com/users/fkb032/received_events",
      "type": "User",
      "user_view_type": "public",
      "site_admin": false
    },
    "labels": [],
    "state": "open",
    "locked": false,
    "assignees": [],
    "milestone": null,
    "comments": 3,
    "created_at": "2026-06-10T04:11:25Z",
    "updated_at": "2026-06-11T23:15:08Z",
    "closed_at": null,
    "assignee": null,
    "author_association": "CONTRIBUTOR",
    "issue_field_values": [],
    "type": null,
    "active_lock_reason": null,
    "draft": false,
    "pull_request": {
      "url": "https://api.github.com/repos/darkmatter/nixmac/pulls/376",
      "html_url": "https://github.com/darkmatter/nixmac/pull/376",
      "diff_url": "https://github.com/darkmatter/nixmac/pull/376.diff",
      "patch_url": "https://github.com/darkmatter/nixmac/pull/376.patch",
      "merged_at": null
    },
    "body": "## Summary\n\nImplements the zip-import half of ENG-552 scenario 3 (git-less onboarding): a GitHub \"Download ZIP\" archive contains no `.git`, so `config_import_zip` previously finalized a directory the rest of the app can't operate on (`git::status` fails soft in `handle_new_config_dir`; evolution/history need a repo). After extraction, the imported files are now committed as the configuration's base state — same message and failure-soft `nixmac-base-*` tag as `bootstrap`'s existing adopt-user-config branch, so history classification treats imports identically.\n\nRepo detection in the new `import::ensure_initial_commit` deliberately uses `Repository::open` (exact root), not `Repository::discover`: `discover` walks up parent directories, so for a user whose `$HOME` is itself a git repo (dotfiles setups) the existing `init_repo`-then-`commit_all` pattern would silently stage the entire home directory into the parent repo. Exact-root init makes that setup work correctly (fresh repo at the destination; `commit_all`'s discovery stops at `dest/.git`).\n\nAlso adds failure cleanup to the zip path: any extract/init/commit failure restores the target to its pre-import state (removed if the import created it, emptied if the user pre-created it; refuses to touch a symlinked target), so a retry passes `prepare_import_target` instead of hitting \"Directory already exists and is not empty.\" This is the backend prerequisite for the retry affordance in ENG-552 scenario 5. The github clone path is untouched — libgit2 already removes the directory on clone failure.\n\nScoped per ENG-552 review discussion:\n- Archives that ship their own `.git` are left untouched (parity with the clone path).\n- **Design decision — ignore semantics:** the archive's `.gitignore` (or the seeded defaults) is respected: matched files stay on disk but untracked — the same semantics `bootstrap` uses when adopting an existing config dir (test-pinned). The alternative is clone-parity force-add (a GitHub zip only contains tracked files, so a file force-tracked upstream despite `.gitignore` would currently land untracked in the baseline); rejected for now because hand-zipped working dirs would then commit junk (`node_modules`, `result`), and the affected file still exists and functions on disk. If we'd rather have clone parity it's a one-line switch to `IndexAddOption::FORCE` — happy to go either way. An archive whose ignore rules exclude everything fails with `nothing to commit` and cleans up (test-pinned).\n- The seeded `.gitignore` literal is now a shared `git::init::SEED_GITIGNORE` const (was duplicated inline in `init_repo`), so the import path and `init_repo` can't drift.\n- Extracted-folder selection (`config_set_dir` flow), OAuth, and zip symlink/exec-mode fidelity are out of scope. Follow-ups filed: **ENG-559** (consolidate `default_config.rs`'s three init/commit/tag sites onto `ensure_initial_commit` and fix the same `discover` landmine there), **ENG-560** (`extract_zip` flattens zip symlink entries and Unix exec modes).\n\n## Test Plan\n\n- [ ] New unit tests (in-file, `tempfile`): adoption commit + base tag created; no-op for archives shipping a repo; nested-in-parent-repo target gets its own repo and the parent repo is untouched; ignore-everything archive errors; cleanup removes created dir / empties pre-existing dir / refuses symlinked target.\n- [ ] `cargo test` green, `cargo clippy --all-targets` clean, rustfmt applied.\n- [ ] Manual: import a GitHub \"Download ZIP\" of a config repo on a machine without git → app lands with a repo, one base tag, working status/evolution.\n\n## Docs\n\n- [x] No docs update needed.",
    "reactions": {
      "url": "https://api.github.com/repos/darkmatter/nixmac/issues/376/reactions",
      "total_count": 1,
      "+1": 1,
      "-1": 0,
      "laugh": 0,
      "hooray": 0,
      "confused": 0,
      "heart": 0,
      "rocket": 0,
      "eyes": 0
    },
    "timeline_url": "https://api.github.com/repos/darkmatter/nixmac/issues/376/timeline",
    "performed_via_github_app": null,
    "state_reason": null
  },
  "comment": {
    "url": "https://api.github.com/repos/darkmatter/nixmac/issues/comments/4685892678",
    "html_url": "https://github.com/darkmatter/nixmac/pull/376#issuecomment-4685892678",
    "issue_url": "https://api.github.com/repos/darkmatter/nixmac/issues/376",
    "id": 4685892678,
    "node_id": "IC_kwDOSB6EzM8AAAABF00MRg",
    "user": {
      "login": "arximboldi",
      "id": 4521138,
      "node_id": "MDQ6VXNlcjQ1MjExMzg=",
      "avatar_url": "https://avatars.githubusercontent.com/u/4521138?v=4",
      "gravatar_id": "",
      "url": "https://api.github.com/users/arximboldi",
      "html_url": "https://github.com/arximboldi",
      "followers_url": "https://api.github.com/users/arximboldi/followers",
      "following_url": "https://api.github.com/users/arximboldi/following{/other_user}",
      "gists_url": "https://api.github.com/users/arximboldi/gists{/gist_id}",
      "starred_url": "https://api.github.com/users/arximboldi/starred{/owner}{/repo}",
      "subscriptions_url": "https://api.github.com/users/arximboldi/subscriptions",
      "organizations_url": "https://api.github.com/users/arximboldi/orgs",
      "repos_url": "https://api.github.com/users/arximboldi/repos",
      "events_url": "https://api.github.com/users/arximboldi/events{/privacy}",
      "received_events_url": "https://api.github.com/users/arximboldi/received_events",
      "type": "User",
      "user_view_type": "public",
      "site_admin": false
    },
    "created_at": "2026-06-11T23:15:08Z",
    "updated_at": "2026-06-11T23:15:08Z",
    "body": "I'm unsure how to manually test this. But this onboarding discussion may be worth having in the context of my comment in #354 about `nix-darwin`. E.g. if one has to install `nix-darwin` manually, what is the likellyhood that one won't have git installed? And also, now that we use `libgit2`, is having `git` installed the real problem? Or is it about chosing an pre-existing template that I landed in my machine without `git`?\r\n\r\nIn that case, how do I test this, i.e. what is the specific UX or workflow that I am testing? I checked ENG-552 but while I did understand from it that it's trying to bring in a configuration template downloaded as a `.zip`, it is not clear to me how the user is meant to attempt this in Nixmac's UI itself.",
    "author_association": "MEMBER",
    "reactions": {
      "url": "https://api.github.com/repos/darkmatter/nixmac/issues/comments/4685892678/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
  },
  "repository": {
    "id": 1209959628,
    "node_id": "R_kgDOSB6EzA",
    "name": "nixmac",
    "full_name": "darkmatter/nixmac",
    "private": false,
    "owner": {
      "login": "darkmatter",
      "id": 17834193,
      "node_id": "MDEyOk9yZ2FuaXphdGlvbjE3ODM0MTkz",
      "avatar_url": "https://avatars.githubusercontent.com/u/17834193?v=4",
      "gravatar_id": "",
      "url": "https://api.github.com/users/darkmatter",
      "html_url": "https://github.com/darkmatter",
      "followers_url": "https://api.github.com/users/darkmatter/followers",
      "following_url": "https://api.github.com/users/darkmatter/following{/other_user}",
      "gists_url": "https://api.github.com/users/darkmatter/gists{/gist_id}",
      "starred_url": "https://api.github.com/users/darkmatter/starred{/owner}{/repo}",
      "subscriptions_url": "https://api.github.com/users/darkmatter/subscriptions",
      "organizations_url": "https://api.github.com/users/darkmatter/orgs",
      "repos_url": "https://api.github.com/users/darkmatter/repos",
      "events_url": "https://api.github.com/users/darkmatter/events{/privacy}",
      "received_events_url": "https://api.github.com/users/darkmatter/received_events",
      "type": "Organization",
      "user_view_type": "public",
      "site_admin": false
    },
    "html_url": "https://github.com/darkmatter/nixmac",
    "description": "Home manager and nix-darwin that understands plain English",
    "fork": false,
    "url": "https://api.github.com/repos/darkmatter/nixmac",
    "forks_url": "https://api.github.com/repos/darkmatter/nixmac/forks",
    "keys_url": "https://api.github.com/repos/darkmatter/nixmac/keys{/key_id}",
    "collaborators_url": "https://api.github.com/repos/darkmatter/nixmac/collaborators{/collaborator}",
    "teams_url": "https://api.github.com/repos/darkmatter/nixmac/teams",
    "hooks_url": "https://api.github.com/repos/darkmatter/nixmac/hooks",
    "issue_events_url": "https://api.github.com/repos/darkmatter/nixmac/issues/events{/number}",
    "events_url": "https://api.github.com/repos/darkmatter/nixmac/events",
    "assignees_url": "https://api.github.com/repos/darkmatter/nixmac/assignees{/user}",
    "branches_url": "https://api.github.com/repos/darkmatter/nixmac/branches{/branch}",
    "tags_url": "https://api.github.com/repos/darkmatter/nixmac/tags",
    "blobs_url": "https://api.github.com/repos/darkmatter/nixmac/git/blobs{/sha}",
    "git_tags_url": "https://api.github.com/repos/darkmatter/nixmac/git/tags{/sha}",
    "git_refs_url": "https://api.github.com/repos/darkmatter/nixmac/git/refs{/sha}",
    "trees_url": "https://api.github.com/repos/darkmatter/nixmac/git/trees{/sha}",
    "statuses_url": "https://api.github.com/repos/darkmatter/nixmac/statuses/{sha}",
    "languages_url": "https://api.github.com/repos/darkmatter/nixmac/languages",
    "stargazers_url": "https://api.github.com/repos/darkmatter/nixmac/stargazers",
    "contributors_url": "https://api.github.com/repos/darkmatter/nixmac/contributors",
    "subscribers_url": "https://api.github.com/repos/darkmatter/nixmac/subscribers",
    "subscription_url": "https://api.github.com/repos/darkmatter/nixmac/subscription",
    "commits_url": "https://api.github.com/repos/darkmatter/nixmac/commits{/sha}",
    "git_commits_url": "https://api.github.com/repos/darkmatter/nixmac/git/commits{/sha}",
    "comments_url": "https://api.github.com/repos/darkmatter/nixmac/comments{/number}",
    "issue_comment_url": "https://api.github.com/repos/darkmatter/nixmac/issues/comments{/number}",
    "contents_url": "https://api.github.com/repos/darkmatter/nixmac/contents/{+path}",
    "compare_url": "https://api.github.com/repos/darkmatter/nixmac/compare/{base}...{head}",
    "merges_url": "https://api.github.com/repos/darkmatter/nixmac/merges",
    "archive_url": "https://api.github.com/repos/darkmatter/nixmac/{archive_format}{/ref}",
    "downloads_url": "https://api.github.com/repos/darkmatter/nixmac/downloads",
    "issues_url": "https://api.github.com/repos/darkmatter/nixmac/issues{/number}",
    "pulls_url": "https://api.github.com/repos/darkmatter/nixmac/pulls{/number}",
    "milestones_url": "https://api.github.com/repos/darkmatter/nixmac/milestones{/number}",
    "notifications_url": "https://api.github.com/repos/darkmatter/nixmac/notifications{?since,all,participating}",
    "labels_url": "https://api.github.com/repos/darkmatter/nixmac/labels{/name}",
    "releases_url": "https://api.github.com/repos/darkmatter/nixmac/releases{/id}",
    "deployments_url": "https://api.github.com/repos/darkmatter/nixmac/deployments",
    "created_at": "2026-04-14T00:37:13Z",
    "updated_at": "2026-06-10T15:32:59Z",
    "pushed_at": "2026-06-11T21:26:16Z",
    "git_url": "git://github.com/darkmatter/nixmac.git",
    "ssh_url": "git@github.com:darkmatter/nixmac.git",
    "clone_url": "https://github.com/darkmatter/nixmac.git",
    "svn_url": "https://github.com/darkmatter/nixmac",
    "homepage": "https://nixmac.com",
    "size": 681555,
    "stargazers_count": 5,
    "watchers_count": 5,
    "language": "Rust",
    "has_issues": true,
    "has_projects": false,
    "has_downloads": true,
    "has_wiki": false,
    "has_pages": true,
    "has_discussions": false,
    "forks_count": 1,
    "mirror_url": null,
    "archived": false,
    "disabled": false,
    "open_issues_count": 92,
    "license": {
      "key": "mit",
      "name": "MIT License",
      "spdx_id": "MIT",
      "url": "https://api.github.com/licenses/mit",
      "node_id": "MDc6TGljZW5zZTEz"
    },
    "allow_forking": true,
    "is_template": false,
    "web_commit_signoff_required": false,
    "has_pull_requests": true,
    "pull_request_creation_policy": "all",
    "topics": [
      "home-manager",
      "nix",
      "nix-darwin",
      "nix-flake",
      "opencode"
    ],
    "visibility": "public",
    "forks": 1,
    "open_issues": 92,
    "watchers": 5,
    "default_branch": "develop",
    "custom_properties": {}
  },
  "organization": {
    "login": "darkmatter",
    "id": 17834193,
    "node_id": "MDEyOk9yZ2FuaXphdGlvbjE3ODM0MTkz",
    "url": "https://api.github.com/orgs/darkmatter",
    "repos_url": "https://api.github.com/orgs/darkmatter/repos",
    "events_url": "https://api.github.com/orgs/darkmatter/events",
    "hooks_url": "https://api.github.com/orgs/darkmatter/hooks",
    "issues_url": "https://api.github.com/orgs/darkmatter/issues",
    "members_url": "https://api.github.com/orgs/darkmatter/members{/member}",
    "public_members_url": "https://api.github.com/orgs/darkmatter/public_members{/member}",
    "avatar_url": "https://avatars.githubusercontent.com/u/17834193?v=4",
    "description": ""
  },
  "enterprise": {
    "id": 469843,
    "slug": "darkmatter",
    "name": "darkmatter",
    "node_id": "E_kgDOAAcrUw",
    "avatar_url": "https://avatars.githubusercontent.com/b/469843?v=4",
    "description": "",
    "website_url": "darkmatter.io",
    "html_url": "https://github.com/enterprises/darkmatter",
    "created_at": "2025-09-07T16:01:00Z",
    "updated_at": "2026-06-07T16:53:26Z"
  },
  "sender": {
    "login": "arximboldi",
    "id": 4521138,
    "node_id": "MDQ6VXNlcjQ1MjExMzg=",
    "avatar_url": "https://avatars.githubusercontent.com/u/4521138?v=4",
    "gravatar_id": "",
    "url": "https://api.github.com/users/arximboldi",
    "html_url": "https://github.com/arximboldi",
    "followers_url": "https://api.github.com/users/arximboldi/followers",
    "following_url": "https://api.github.com/users/arximboldi/following{/other_user}",
    "gists_url": "https://api.github.com/users/arximboldi/gists{/gist_id}",
    "starred_url": "https://api.github.com/users/arximboldi/starred{/owner}{/repo}",
    "subscriptions_url": "https://api.github.com/users/arximboldi/subscriptions",
    "organizations_url": "https://api.github.com/users/arximboldi/orgs",
    "repos_url": "https://api.github.com/users/arximboldi/repos",
    "events_url": "https://api.github.com/users/arximboldi/events{/privacy}",
    "received_events_url": "https://api.github.com/users/arximboldi/received_events",
    "type": "User",
    "user_view_type": "public",
    "site_admin": false
  },
  "installation": {
    "id": 131074261,
    "node_id": "MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMTMxMDc0MjYx"
  }
}