๐Ÿ— KeyzHub
19Keys ยท community archive
2818 bytes raw
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
{
  "harness_version": "1.0",
  "active_challenge": {
    "id": "git-python",
    "name": "Build your own Git (Python)",
    "language": "python3",
    "tutorial": "https://wyag.thb.lt/",
    "alt_tutorials": [
      "https://benhoyt.com/writings/pygit/",
      "https://www.leshenko.net/p/ugit/"
    ],
    "workspace": "workspace/git-python",
    "verify": "./init.sh"
  },
  "features": [
    {
      "id": "init",
      "name": "init",
      "description": "`init` โ€” create the .git directory structure (objects, refs, HEAD).",
      "status": "todo",
      "dependencies": [],
      "done_criteria": "Running the tool's `init` in an empty dir creates .git/{objects,refs} and HEAD pointing at refs/heads/main.",
      "verify": "python3 -m pytest tests/test_init.py -q",
      "evidence": ""
    },
    {
      "id": "hash-object",
      "name": "hash-object",
      "description": "`hash-object` โ€” write a blob object and return its SHA-1.",
      "status": "todo",
      "dependencies": ["init"],
      "done_criteria": "SHA-1 matches real `git hash-object` for the same input; object is zlib-compressed at .git/objects/xx/yyy.",
      "verify": "python3 -m pytest tests/test_hash_object.py -q",
      "evidence": ""
    },
    {
      "id": "cat-file",
      "name": "cat-file",
      "description": "`cat-file` โ€” read and inflate an object by SHA.",
      "status": "todo",
      "dependencies": ["hash-object"],
      "done_criteria": "`cat-file -p <sha>` prints the original blob content byte-for-byte.",
      "verify": "python3 -m pytest tests/test_cat_file.py -q",
      "evidence": ""
    },
    {
      "id": "write-tree",
      "name": "write-tree",
      "description": "`write-tree` โ€” serialize the working directory into a tree object.",
      "status": "todo",
      "dependencies": ["cat-file"],
      "done_criteria": "Tree SHA matches real `git write-tree` for an identical directory layout.",
      "verify": "python3 -m pytest tests/test_write_tree.py -q",
      "evidence": ""
    },
    {
      "id": "commit-tree",
      "name": "commit-tree",
      "description": "`commit-tree` โ€” create a commit object from a tree SHA.",
      "status": "todo",
      "dependencies": ["write-tree"],
      "done_criteria": "Commit object parses with real `git cat-file -p`; has tree, author, committer, message.",
      "verify": "python3 -m pytest tests/test_commit_tree.py -q",
      "evidence": ""
    },
    {
      "id": "log",
      "name": "log",
      "description": "`log` โ€” walk commit parents from HEAD, newest first.",
      "status": "todo",
      "dependencies": ["commit-tree"],
      "done_criteria": "Given a chain of commits, `log` prints them newest-first with SHAs and messages.",
      "verify": "python3 -m pytest tests/test_log.py -q",
      "evidence": ""
    }
  ]
}