mirror of
https://github.com/fabro-sh/fabro.git
synced 2026-08-28 05:27:41 +00:00
parent
78ae22b9a7
commit
dba2b79c62
5 changed files with 79 additions and 0 deletions
57
checkpoint.json
Normal file
57
checkpoint.json
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
{
|
||||
"timestamp": "2026-03-16T05:32:47.876203Z",
|
||||
"current_node": "setup",
|
||||
"completed_nodes": [
|
||||
"start",
|
||||
"setup"
|
||||
],
|
||||
"node_retries": {
|
||||
"start": 1,
|
||||
"setup": 1
|
||||
},
|
||||
"context_values": {
|
||||
"graph.rankdir": "LR",
|
||||
"internal.node_visit_count": 1,
|
||||
"internal.fidelity": "compact",
|
||||
"failure_class": "deterministic",
|
||||
"current.preamble": "Goal: Abstract model field should not be equal across models\nDescription\n\t\nConsider the following models:\nclass A(models.Model):\n\tclass Meta:\n\t\tabstract = True\n\tmyfield = IntegerField()\nclass B(A):\n\tpass\nclass C(A):\n\tpass\nIf I pull the fields of B and C into a shared set, one will be de-duplicated away, because they compare as equal. I found this surprising, though in practice using a list was sufficient for my need. The root of the issue is that they compare equal, as fields only consider self.creation_counter when comparing for equality.\nlen({B._meta.get_field('myfield'), C._meta.get_field('myfield')}) == 1\nB._meta.get_field('myfield') == C._meta.get_field('myfield')\nWe should adjust __eq__ so that if the field.model is different, they will compare unequal. Similarly, it is probably wise to adjust __hash__ and __lt__ to match.\nWhen adjusting __lt__, it may be wise to order first by self.creation_counter so that cases not affected by this equality collision won't be re-ordered. In my experimental branch, there was one test that broke if I ordered them by model first.\nI brought this up on IRC django-dev to check my intuitions, and those conversing with me there seemed to agree that the current behavior is not intuitive.\n\n",
|
||||
"command.stderr": "",
|
||||
"outcome": "fail",
|
||||
"command.output": "fatal: destination path '.' already exists and is not an empty directory.\n",
|
||||
"current_node": "setup",
|
||||
"internal.retry_count.setup": 1,
|
||||
"internal.thread_id": "start",
|
||||
"internal.run_id": "01KKTJ3P2SY78VQ0X36S0X3Y7B",
|
||||
"graph.goal": "Abstract model field should not be equal across models\nDescription\n\t\nConsider the following models:\nclass A(models.Model):\n\tclass Meta:\n\t\tabstract = True\n\tmyfield = IntegerField()\nclass B(A):\n\tpass\nclass C(A):\n\tpass\nIf I pull the fields of B and C into a shared set, one will be de-duplicated away, because they compare as equal. I found this surprising, though in practice using a list was sufficient for my need. The root of the issue is that they compare equal, as fields only consider self.creation_counter when comparing for equality.\nlen({B._meta.get_field('myfield'), C._meta.get_field('myfield')}) == 1\nB._meta.get_field('myfield') == C._meta.get_field('myfield')\nWe should adjust __eq__ so that if the field.model is different, they will compare unequal. Similarly, it is probably wise to adjust __hash__ and __lt__ to match.\nWhen adjusting __lt__, it may be wise to order first by self.creation_counter so that cases not affected by this equality collision won't be re-ordered. In my experimental branch, there was one test that broke if I ordered them by model first.\nI brought this up on IRC django-dev to check my intuitions, and those conversing with me there seemed to agree that the current behavior is not intuitive.\n",
|
||||
"failure_signature": "setup|deterministic|script failed with exit code: <n> ## stdout fatal: destination path '.' already exists and is not an empty directory.",
|
||||
"internal.retry_count.start": 1,
|
||||
"thread.start.current_node": "setup"
|
||||
},
|
||||
"logs": [],
|
||||
"node_outcomes": {
|
||||
"start": {
|
||||
"status": "success",
|
||||
"duration_ms": 0
|
||||
},
|
||||
"setup": {
|
||||
"status": "fail",
|
||||
"context_updates": {
|
||||
"command.output": "fatal: destination path '.' already exists and is not an empty directory.\n",
|
||||
"command.stderr": ""
|
||||
},
|
||||
"failure": {
|
||||
"message": "Script failed with exit code: 128\n\n## stdout\nfatal: destination path '.' already exists and is not an empty directory.\n",
|
||||
"failure_class": "deterministic"
|
||||
},
|
||||
"duration_ms": 85
|
||||
}
|
||||
},
|
||||
"next_node_id": "solve",
|
||||
"loop_failure_signatures": {
|
||||
"setup|deterministic|script failed with exit code: <n> ## stdout fatal: destination path '.' already exists and is not an empty directory.": 1
|
||||
},
|
||||
"node_visits": {
|
||||
"start": 1,
|
||||
"setup": 1
|
||||
}
|
||||
}
|
||||
5
nodes/setup/script_invocation.json
Normal file
5
nodes/setup/script_invocation.json
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"command": "git clone https://github.com/django/django.git . && git checkout 453967477e3ddae704cd739eac2449c0e13d464c && python -m pip install -e .",
|
||||
"language": "shell",
|
||||
"timeout_ms": null
|
||||
}
|
||||
5
nodes/setup/script_timing.json
Normal file
5
nodes/setup/script_timing.json
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"duration_ms": 85,
|
||||
"exit_code": 128,
|
||||
"timed_out": false
|
||||
}
|
||||
6
nodes/setup/status.json
Normal file
6
nodes/setup/status.json
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"status": "fail",
|
||||
"notes": null,
|
||||
"failure_reason": "Script failed with exit code: 128\n\n## stdout\nfatal: destination path '.' already exists and is not an empty directory.\n",
|
||||
"timestamp": "2026-03-16T05:32:47.876011+00:00"
|
||||
}
|
||||
6
nodes/start/status.json
Normal file
6
nodes/start/status.json
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"status": "success",
|
||||
"notes": null,
|
||||
"failure_reason": null,
|
||||
"timestamp": "2026-03-16T05:32:47.789080+00:00"
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue