test(qa): record release v2 browser campaign state
This commit is contained in:
1 parent
2d5edf4651
commit
539e62af7f
54 files changed
+5096
-6924
No files matched your search
+233
-233
@@ -1,419 +1,419 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"updatedAt": "2026-08-31T18:42:05.188Z",
|
||||
"updatedAt": "2026-09-01T12:42:59.288Z",
|
||||
"packetStatuses": {
|
||||
"preflight-01": {
|
||||
"status": "failed",
|
||||
"status": "passed",
|
||||
"cases": {
|
||||
"PF-001-ENVIRONMENT": "failed",
|
||||
"PF-001-ACCESS": "blocked",
|
||||
"PF-001-ENVIRONMENT": "passed",
|
||||
"PF-001-ACCESS": "passed",
|
||||
"PF-001-EVIDENCE": "passed"
|
||||
}
|
||||
},
|
||||
"preflight-02": {
|
||||
"status": "failed",
|
||||
"status": "passed",
|
||||
"cases": {
|
||||
"PF-002-ENVIRONMENT": "failed",
|
||||
"PF-002-ACCESS": "blocked",
|
||||
"PF-002-ENVIRONMENT": "passed",
|
||||
"PF-002-ACCESS": "passed",
|
||||
"PF-002-EVIDENCE": "passed"
|
||||
}
|
||||
},
|
||||
"preflight-03": {
|
||||
"status": "failed",
|
||||
"status": "passed",
|
||||
"cases": {
|
||||
"PF-003-ENVIRONMENT": "failed",
|
||||
"PF-003-ACCESS": "blocked",
|
||||
"PF-003-EVIDENCE": "passed"
|
||||
"PF-003-ENVIRONMENT": "not-reached",
|
||||
"PF-003-ACCESS": "not-reached",
|
||||
"PF-003-EVIDENCE": "not-reached"
|
||||
}
|
||||
},
|
||||
"board-01": {
|
||||
"status": "blocked",
|
||||
"status": "passed",
|
||||
"cases": {
|
||||
"BD-001-THRESHOLDS": "blocked",
|
||||
"BD-001-MUTATION": "blocked",
|
||||
"BD-001-PERSISTENCE": "blocked",
|
||||
"BD-001-ACCESS-RECOVERY": "blocked"
|
||||
"BD-001-THRESHOLDS": "passed",
|
||||
"BD-001-MUTATION": "passed",
|
||||
"BD-001-PERSISTENCE": "passed",
|
||||
"BD-001-ACCESS-RECOVERY": "passed"
|
||||
}
|
||||
},
|
||||
"board-02": {
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"cases": {
|
||||
"BD-002-THRESHOLDS": "blocked",
|
||||
"BD-002-MUTATION": "blocked",
|
||||
"BD-002-PERSISTENCE": "blocked",
|
||||
"BD-002-ACCESS-RECOVERY": "blocked"
|
||||
"BD-002-THRESHOLDS": "not-reached",
|
||||
"BD-002-MUTATION": "not-reached",
|
||||
"BD-002-PERSISTENCE": "not-reached",
|
||||
"BD-002-ACCESS-RECOVERY": "not-reached"
|
||||
}
|
||||
},
|
||||
"board-03": {
|
||||
"status": "blocked",
|
||||
"status": "failed",
|
||||
"cases": {
|
||||
"BD-003-THRESHOLDS": "blocked",
|
||||
"BD-003-MUTATION": "blocked",
|
||||
"BD-003-PERSISTENCE": "blocked",
|
||||
"BD-003-ACCESS-RECOVERY": "blocked"
|
||||
"BD-003-THRESHOLDS": "passed",
|
||||
"BD-003-MUTATION": "failed",
|
||||
"BD-003-PERSISTENCE": "passed",
|
||||
"BD-003-ACCESS-RECOVERY": "passed"
|
||||
}
|
||||
},
|
||||
"board-04": {
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"cases": {
|
||||
"BD-004-THRESHOLDS": "blocked",
|
||||
"BD-004-MUTATION": "blocked",
|
||||
"BD-004-PERSISTENCE": "blocked",
|
||||
"BD-004-ACCESS-RECOVERY": "blocked"
|
||||
"BD-004-THRESHOLDS": "not-reached",
|
||||
"BD-004-MUTATION": "not-reached",
|
||||
"BD-004-PERSISTENCE": "not-reached",
|
||||
"BD-004-ACCESS-RECOVERY": "not-reached"
|
||||
}
|
||||
},
|
||||
"board-05": {
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"cases": {
|
||||
"BD-005-THRESHOLDS": "blocked",
|
||||
"BD-005-MUTATION": "blocked",
|
||||
"BD-005-PERSISTENCE": "blocked",
|
||||
"BD-005-ACCESS-RECOVERY": "blocked"
|
||||
"BD-005-THRESHOLDS": "not-reached",
|
||||
"BD-005-MUTATION": "not-reached",
|
||||
"BD-005-PERSISTENCE": "not-reached",
|
||||
"BD-005-ACCESS-RECOVERY": "not-reached"
|
||||
}
|
||||
},
|
||||
"board-06": {
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"cases": {
|
||||
"BD-006-THRESHOLDS": "blocked",
|
||||
"BD-006-MUTATION": "blocked",
|
||||
"BD-006-PERSISTENCE": "blocked",
|
||||
"BD-006-ACCESS-RECOVERY": "blocked"
|
||||
"BD-006-THRESHOLDS": "not-reached",
|
||||
"BD-006-MUTATION": "not-reached",
|
||||
"BD-006-PERSISTENCE": "not-reached",
|
||||
"BD-006-ACCESS-RECOVERY": "not-reached"
|
||||
}
|
||||
},
|
||||
"board-07": {
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"cases": {
|
||||
"BD-007-THRESHOLDS": "blocked",
|
||||
"BD-007-MUTATION": "blocked",
|
||||
"BD-007-PERSISTENCE": "blocked",
|
||||
"BD-007-ACCESS-RECOVERY": "blocked"
|
||||
"BD-007-THRESHOLDS": "not-reached",
|
||||
"BD-007-MUTATION": "not-reached",
|
||||
"BD-007-PERSISTENCE": "not-reached",
|
||||
"BD-007-ACCESS-RECOVERY": "not-reached"
|
||||
}
|
||||
},
|
||||
"board-08": {
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"cases": {
|
||||
"BD-008-THRESHOLDS": "blocked",
|
||||
"BD-008-MUTATION": "blocked",
|
||||
"BD-008-PERSISTENCE": "blocked",
|
||||
"BD-008-ACCESS-RECOVERY": "blocked"
|
||||
"BD-008-THRESHOLDS": "not-reached",
|
||||
"BD-008-MUTATION": "not-reached",
|
||||
"BD-008-PERSISTENCE": "not-reached",
|
||||
"BD-008-ACCESS-RECOVERY": "not-reached"
|
||||
}
|
||||
},
|
||||
"board-09": {
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"cases": {
|
||||
"BD-009-THRESHOLDS": "blocked",
|
||||
"BD-009-MUTATION": "blocked",
|
||||
"BD-009-PERSISTENCE": "blocked",
|
||||
"BD-009-ACCESS-RECOVERY": "blocked"
|
||||
"BD-009-THRESHOLDS": "not-reached",
|
||||
"BD-009-MUTATION": "not-reached",
|
||||
"BD-009-PERSISTENCE": "not-reached",
|
||||
"BD-009-ACCESS-RECOVERY": "not-reached"
|
||||
}
|
||||
},
|
||||
"widgets-01": {
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"cases": {
|
||||
"WG-001-RENDER-SIZE": "blocked",
|
||||
"WG-001-STATES-RECOVERY": "blocked",
|
||||
"WG-001-OPTIONS-PERSISTENCE": "blocked",
|
||||
"WG-001-ACCESS-READONLY": "blocked",
|
||||
"WG-001-EVIDENCE": "blocked"
|
||||
"WG-001-RENDER-SIZE": "not-reached",
|
||||
"WG-001-STATES-RECOVERY": "not-reached",
|
||||
"WG-001-OPTIONS-PERSISTENCE": "not-reached",
|
||||
"WG-001-ACCESS-READONLY": "not-reached",
|
||||
"WG-001-EVIDENCE": "not-reached"
|
||||
}
|
||||
},
|
||||
"widgets-02": {
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"cases": {
|
||||
"WG-002-RENDER-SIZE": "blocked",
|
||||
"WG-002-STATES-RECOVERY": "blocked",
|
||||
"WG-002-OPTIONS-PERSISTENCE": "blocked",
|
||||
"WG-002-ACCESS-READONLY": "blocked",
|
||||
"WG-002-EVIDENCE": "blocked"
|
||||
"WG-002-RENDER-SIZE": "not-reached",
|
||||
"WG-002-STATES-RECOVERY": "not-reached",
|
||||
"WG-002-OPTIONS-PERSISTENCE": "not-reached",
|
||||
"WG-002-ACCESS-READONLY": "not-reached",
|
||||
"WG-002-EVIDENCE": "not-reached"
|
||||
}
|
||||
},
|
||||
"widgets-03": {
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"cases": {
|
||||
"WG-003-RENDER-SIZE": "blocked",
|
||||
"WG-003-STATES-RECOVERY": "blocked",
|
||||
"WG-003-OPTIONS-PERSISTENCE": "blocked",
|
||||
"WG-003-ACCESS-READONLY": "blocked",
|
||||
"WG-003-EVIDENCE": "blocked"
|
||||
"WG-003-RENDER-SIZE": "not-reached",
|
||||
"WG-003-STATES-RECOVERY": "not-reached",
|
||||
"WG-003-OPTIONS-PERSISTENCE": "not-reached",
|
||||
"WG-003-ACCESS-READONLY": "not-reached",
|
||||
"WG-003-EVIDENCE": "not-reached"
|
||||
}
|
||||
},
|
||||
"widgets-04": {
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"cases": {
|
||||
"WG-004-RENDER-SIZE": "blocked",
|
||||
"WG-004-STATES-RECOVERY": "blocked",
|
||||
"WG-004-OPTIONS-PERSISTENCE": "blocked",
|
||||
"WG-004-ACCESS-READONLY": "blocked",
|
||||
"WG-004-EVIDENCE": "blocked"
|
||||
"WG-004-RENDER-SIZE": "not-reached",
|
||||
"WG-004-STATES-RECOVERY": "not-reached",
|
||||
"WG-004-OPTIONS-PERSISTENCE": "not-reached",
|
||||
"WG-004-ACCESS-READONLY": "not-reached",
|
||||
"WG-004-EVIDENCE": "not-reached"
|
||||
}
|
||||
},
|
||||
"widgets-05": {
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"cases": {
|
||||
"WG-005-RENDER-SIZE": "blocked",
|
||||
"WG-005-STATES-RECOVERY": "blocked",
|
||||
"WG-005-OPTIONS-PERSISTENCE": "blocked",
|
||||
"WG-005-ACCESS-READONLY": "blocked",
|
||||
"WG-005-EVIDENCE": "blocked"
|
||||
"WG-005-RENDER-SIZE": "not-reached",
|
||||
"WG-005-STATES-RECOVERY": "not-reached",
|
||||
"WG-005-OPTIONS-PERSISTENCE": "not-reached",
|
||||
"WG-005-ACCESS-READONLY": "not-reached",
|
||||
"WG-005-EVIDENCE": "not-reached"
|
||||
}
|
||||
},
|
||||
"widgets-06": {
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"cases": {
|
||||
"WG-006-RENDER-SIZE": "blocked",
|
||||
"WG-006-STATES-RECOVERY": "blocked",
|
||||
"WG-006-OPTIONS-PERSISTENCE": "blocked",
|
||||
"WG-006-ACCESS-READONLY": "blocked",
|
||||
"WG-006-EVIDENCE": "blocked"
|
||||
"WG-006-RENDER-SIZE": "not-reached",
|
||||
"WG-006-STATES-RECOVERY": "not-reached",
|
||||
"WG-006-OPTIONS-PERSISTENCE": "not-reached",
|
||||
"WG-006-ACCESS-READONLY": "not-reached",
|
||||
"WG-006-EVIDENCE": "not-reached"
|
||||
}
|
||||
},
|
||||
"widgets-07": {
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"cases": {
|
||||
"WG-007-RENDER-SIZE": "blocked",
|
||||
"WG-007-STATES-RECOVERY": "blocked",
|
||||
"WG-007-OPTIONS-PERSISTENCE": "blocked",
|
||||
"WG-007-ACCESS-READONLY": "blocked",
|
||||
"WG-007-EVIDENCE": "blocked"
|
||||
"WG-007-RENDER-SIZE": "not-reached",
|
||||
"WG-007-STATES-RECOVERY": "not-reached",
|
||||
"WG-007-OPTIONS-PERSISTENCE": "not-reached",
|
||||
"WG-007-ACCESS-READONLY": "not-reached",
|
||||
"WG-007-EVIDENCE": "not-reached"
|
||||
}
|
||||
},
|
||||
"widgets-08": {
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"cases": {
|
||||
"WG-008-RENDER-SIZE": "blocked",
|
||||
"WG-008-STATES-RECOVERY": "blocked",
|
||||
"WG-008-OPTIONS-PERSISTENCE": "blocked",
|
||||
"WG-008-ACCESS-READONLY": "blocked",
|
||||
"WG-008-EVIDENCE": "blocked"
|
||||
"WG-008-RENDER-SIZE": "not-reached",
|
||||
"WG-008-STATES-RECOVERY": "not-reached",
|
||||
"WG-008-OPTIONS-PERSISTENCE": "not-reached",
|
||||
"WG-008-ACCESS-READONLY": "not-reached",
|
||||
"WG-008-EVIDENCE": "not-reached"
|
||||
}
|
||||
},
|
||||
"widgets-09": {
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"cases": {
|
||||
"WG-009-RENDER-SIZE": "blocked",
|
||||
"WG-009-STATES-RECOVERY": "blocked",
|
||||
"WG-009-OPTIONS-PERSISTENCE": "blocked",
|
||||
"WG-009-ACCESS-READONLY": "blocked",
|
||||
"WG-009-EVIDENCE": "blocked"
|
||||
"WG-009-RENDER-SIZE": "not-reached",
|
||||
"WG-009-STATES-RECOVERY": "not-reached",
|
||||
"WG-009-OPTIONS-PERSISTENCE": "not-reached",
|
||||
"WG-009-ACCESS-READONLY": "not-reached",
|
||||
"WG-009-EVIDENCE": "not-reached"
|
||||
}
|
||||
},
|
||||
"widgets-10": {
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"cases": {
|
||||
"WG-010-RENDER-SIZE": "blocked",
|
||||
"WG-010-STATES-RECOVERY": "blocked",
|
||||
"WG-010-OPTIONS-PERSISTENCE": "blocked",
|
||||
"WG-010-ACCESS-READONLY": "blocked",
|
||||
"WG-010-EVIDENCE": "blocked"
|
||||
"WG-010-RENDER-SIZE": "not-reached",
|
||||
"WG-010-STATES-RECOVERY": "not-reached",
|
||||
"WG-010-OPTIONS-PERSISTENCE": "not-reached",
|
||||
"WG-010-ACCESS-READONLY": "not-reached",
|
||||
"WG-010-EVIDENCE": "not-reached"
|
||||
}
|
||||
},
|
||||
"widgets-11": {
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"cases": {
|
||||
"WG-011-RENDER-SIZE": "blocked",
|
||||
"WG-011-STATES-RECOVERY": "blocked",
|
||||
"WG-011-OPTIONS-PERSISTENCE": "blocked",
|
||||
"WG-011-ACCESS-READONLY": "blocked",
|
||||
"WG-011-EVIDENCE": "blocked"
|
||||
"WG-011-RENDER-SIZE": "not-reached",
|
||||
"WG-011-STATES-RECOVERY": "not-reached",
|
||||
"WG-011-OPTIONS-PERSISTENCE": "not-reached",
|
||||
"WG-011-ACCESS-READONLY": "not-reached",
|
||||
"WG-011-EVIDENCE": "not-reached"
|
||||
}
|
||||
},
|
||||
"widgets-12": {
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"cases": {
|
||||
"WG-012-RENDER-SIZE": "blocked",
|
||||
"WG-012-STATES-RECOVERY": "blocked",
|
||||
"WG-012-OPTIONS-PERSISTENCE": "blocked",
|
||||
"WG-012-ACCESS-READONLY": "blocked",
|
||||
"WG-012-EVIDENCE": "blocked"
|
||||
"WG-012-RENDER-SIZE": "not-reached",
|
||||
"WG-012-STATES-RECOVERY": "not-reached",
|
||||
"WG-012-OPTIONS-PERSISTENCE": "not-reached",
|
||||
"WG-012-ACCESS-READONLY": "not-reached",
|
||||
"WG-012-EVIDENCE": "not-reached"
|
||||
}
|
||||
},
|
||||
"core-v2-01": {
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"cases": {
|
||||
"CV-001-HAPPY-PATH": "blocked",
|
||||
"CV-001-MUTATION-PERSISTENCE": "blocked",
|
||||
"CV-001-ACCESSIBILITY-ACCESS": "blocked",
|
||||
"CV-001-DEGRADED-RECOVERY": "blocked"
|
||||
"CV-001-HAPPY-PATH": "not-reached",
|
||||
"CV-001-MUTATION-PERSISTENCE": "not-reached",
|
||||
"CV-001-ACCESSIBILITY-ACCESS": "not-reached",
|
||||
"CV-001-DEGRADED-RECOVERY": "not-reached"
|
||||
}
|
||||
},
|
||||
"core-v2-02": {
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"cases": {
|
||||
"CV-002-HAPPY-PATH": "blocked",
|
||||
"CV-002-MUTATION-PERSISTENCE": "blocked",
|
||||
"CV-002-ACCESSIBILITY-ACCESS": "blocked",
|
||||
"CV-002-DEGRADED-RECOVERY": "blocked"
|
||||
"CV-002-HAPPY-PATH": "not-reached",
|
||||
"CV-002-MUTATION-PERSISTENCE": "not-reached",
|
||||
"CV-002-ACCESSIBILITY-ACCESS": "not-reached",
|
||||
"CV-002-DEGRADED-RECOVERY": "not-reached"
|
||||
}
|
||||
},
|
||||
"core-v2-03": {
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"cases": {
|
||||
"CV-003-HAPPY-PATH": "blocked",
|
||||
"CV-003-MUTATION-PERSISTENCE": "blocked",
|
||||
"CV-003-ACCESSIBILITY-ACCESS": "blocked",
|
||||
"CV-003-DEGRADED-RECOVERY": "blocked"
|
||||
"CV-003-HAPPY-PATH": "not-reached",
|
||||
"CV-003-MUTATION-PERSISTENCE": "not-reached",
|
||||
"CV-003-ACCESSIBILITY-ACCESS": "not-reached",
|
||||
"CV-003-DEGRADED-RECOVERY": "not-reached"
|
||||
}
|
||||
},
|
||||
"core-v2-04": {
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"cases": {
|
||||
"CV-004-HAPPY-PATH": "blocked",
|
||||
"CV-004-MUTATION-PERSISTENCE": "blocked",
|
||||
"CV-004-ACCESSIBILITY-ACCESS": "blocked",
|
||||
"CV-004-DEGRADED-RECOVERY": "blocked"
|
||||
"CV-004-HAPPY-PATH": "not-reached",
|
||||
"CV-004-MUTATION-PERSISTENCE": "not-reached",
|
||||
"CV-004-ACCESSIBILITY-ACCESS": "not-reached",
|
||||
"CV-004-DEGRADED-RECOVERY": "not-reached"
|
||||
}
|
||||
},
|
||||
"core-v2-05": {
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"cases": {
|
||||
"CV-005-HAPPY-PATH": "blocked",
|
||||
"CV-005-MUTATION-PERSISTENCE": "blocked",
|
||||
"CV-005-ACCESSIBILITY-ACCESS": "blocked",
|
||||
"CV-005-DEGRADED-RECOVERY": "blocked"
|
||||
"CV-005-HAPPY-PATH": "not-reached",
|
||||
"CV-005-MUTATION-PERSISTENCE": "not-reached",
|
||||
"CV-005-ACCESSIBILITY-ACCESS": "not-reached",
|
||||
"CV-005-DEGRADED-RECOVERY": "not-reached"
|
||||
}
|
||||
},
|
||||
"core-v2-06": {
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"cases": {
|
||||
"CV-006-HAPPY-PATH": "blocked",
|
||||
"CV-006-MUTATION-PERSISTENCE": "blocked",
|
||||
"CV-006-ACCESSIBILITY-ACCESS": "blocked",
|
||||
"CV-006-DEGRADED-RECOVERY": "blocked"
|
||||
"CV-006-HAPPY-PATH": "not-reached",
|
||||
"CV-006-MUTATION-PERSISTENCE": "not-reached",
|
||||
"CV-006-ACCESSIBILITY-ACCESS": "not-reached",
|
||||
"CV-006-DEGRADED-RECOVERY": "not-reached"
|
||||
}
|
||||
},
|
||||
"core-v2-07": {
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"cases": {
|
||||
"CV-007-HAPPY-PATH": "blocked",
|
||||
"CV-007-MUTATION-PERSISTENCE": "blocked",
|
||||
"CV-007-ACCESSIBILITY-ACCESS": "blocked",
|
||||
"CV-007-DEGRADED-RECOVERY": "blocked"
|
||||
"CV-007-HAPPY-PATH": "not-reached",
|
||||
"CV-007-MUTATION-PERSISTENCE": "not-reached",
|
||||
"CV-007-ACCESSIBILITY-ACCESS": "not-reached",
|
||||
"CV-007-DEGRADED-RECOVERY": "not-reached"
|
||||
}
|
||||
},
|
||||
"core-v2-08": {
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"cases": {
|
||||
"CV-008-HAPPY-PATH": "blocked",
|
||||
"CV-008-MUTATION-PERSISTENCE": "blocked",
|
||||
"CV-008-ACCESSIBILITY-ACCESS": "blocked",
|
||||
"CV-008-DEGRADED-RECOVERY": "blocked"
|
||||
"CV-008-HAPPY-PATH": "not-reached",
|
||||
"CV-008-MUTATION-PERSISTENCE": "not-reached",
|
||||
"CV-008-ACCESSIBILITY-ACCESS": "not-reached",
|
||||
"CV-008-DEGRADED-RECOVERY": "not-reached"
|
||||
}
|
||||
},
|
||||
"whole-product-01": {
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"cases": {
|
||||
"WP-001-JOURNEY": "blocked",
|
||||
"WP-001-THRESHOLDS": "blocked",
|
||||
"WP-001-PERSISTENCE-ACCESS": "blocked",
|
||||
"WP-001-FAILURE-EVIDENCE": "blocked"
|
||||
"WP-001-JOURNEY": "not-reached",
|
||||
"WP-001-THRESHOLDS": "not-reached",
|
||||
"WP-001-PERSISTENCE-ACCESS": "not-reached",
|
||||
"WP-001-FAILURE-EVIDENCE": "not-reached"
|
||||
}
|
||||
},
|
||||
"whole-product-02": {
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"cases": {
|
||||
"WP-002-JOURNEY": "blocked",
|
||||
"WP-002-THRESHOLDS": "blocked",
|
||||
"WP-002-PERSISTENCE-ACCESS": "blocked",
|
||||
"WP-002-FAILURE-EVIDENCE": "blocked"
|
||||
"WP-002-JOURNEY": "not-reached",
|
||||
"WP-002-THRESHOLDS": "not-reached",
|
||||
"WP-002-PERSISTENCE-ACCESS": "not-reached",
|
||||
"WP-002-FAILURE-EVIDENCE": "not-reached"
|
||||
}
|
||||
},
|
||||
"whole-product-03": {
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"cases": {
|
||||
"WP-003-JOURNEY": "blocked",
|
||||
"WP-003-THRESHOLDS": "blocked",
|
||||
"WP-003-PERSISTENCE-ACCESS": "blocked",
|
||||
"WP-003-FAILURE-EVIDENCE": "blocked"
|
||||
"WP-003-JOURNEY": "not-reached",
|
||||
"WP-003-THRESHOLDS": "not-reached",
|
||||
"WP-003-PERSISTENCE-ACCESS": "not-reached",
|
||||
"WP-003-FAILURE-EVIDENCE": "not-reached"
|
||||
}
|
||||
},
|
||||
"whole-product-04": {
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"cases": {
|
||||
"WP-004-JOURNEY": "blocked",
|
||||
"WP-004-THRESHOLDS": "blocked",
|
||||
"WP-004-PERSISTENCE-ACCESS": "blocked",
|
||||
"WP-004-FAILURE-EVIDENCE": "blocked"
|
||||
"WP-004-JOURNEY": "not-reached",
|
||||
"WP-004-THRESHOLDS": "not-reached",
|
||||
"WP-004-PERSISTENCE-ACCESS": "not-reached",
|
||||
"WP-004-FAILURE-EVIDENCE": "not-reached"
|
||||
}
|
||||
},
|
||||
"whole-product-05": {
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"cases": {
|
||||
"WP-005-JOURNEY": "blocked",
|
||||
"WP-005-THRESHOLDS": "blocked",
|
||||
"WP-005-PERSISTENCE-ACCESS": "blocked",
|
||||
"WP-005-FAILURE-EVIDENCE": "blocked"
|
||||
"WP-005-JOURNEY": "not-reached",
|
||||
"WP-005-THRESHOLDS": "not-reached",
|
||||
"WP-005-PERSISTENCE-ACCESS": "not-reached",
|
||||
"WP-005-FAILURE-EVIDENCE": "not-reached"
|
||||
}
|
||||
},
|
||||
"whole-product-06": {
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"cases": {
|
||||
"WP-006-JOURNEY": "blocked",
|
||||
"WP-006-THRESHOLDS": "blocked",
|
||||
"WP-006-PERSISTENCE-ACCESS": "blocked",
|
||||
"WP-006-FAILURE-EVIDENCE": "blocked"
|
||||
"WP-006-JOURNEY": "not-reached",
|
||||
"WP-006-THRESHOLDS": "not-reached",
|
||||
"WP-006-PERSISTENCE-ACCESS": "not-reached",
|
||||
"WP-006-FAILURE-EVIDENCE": "not-reached"
|
||||
}
|
||||
},
|
||||
"whole-product-07": {
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"cases": {
|
||||
"WP-007-JOURNEY": "blocked",
|
||||
"WP-007-THRESHOLDS": "blocked",
|
||||
"WP-007-PERSISTENCE-ACCESS": "blocked",
|
||||
"WP-007-FAILURE-EVIDENCE": "blocked"
|
||||
"WP-007-JOURNEY": "not-reached",
|
||||
"WP-007-THRESHOLDS": "not-reached",
|
||||
"WP-007-PERSISTENCE-ACCESS": "not-reached",
|
||||
"WP-007-FAILURE-EVIDENCE": "not-reached"
|
||||
}
|
||||
},
|
||||
"whole-product-08": {
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"cases": {
|
||||
"WP-008-JOURNEY": "blocked",
|
||||
"WP-008-THRESHOLDS": "blocked",
|
||||
"WP-008-PERSISTENCE-ACCESS": "blocked",
|
||||
"WP-008-FAILURE-EVIDENCE": "blocked"
|
||||
"WP-008-JOURNEY": "not-reached",
|
||||
"WP-008-THRESHOLDS": "not-reached",
|
||||
"WP-008-PERSISTENCE-ACCESS": "not-reached",
|
||||
"WP-008-FAILURE-EVIDENCE": "not-reached"
|
||||
}
|
||||
},
|
||||
"whole-product-09": {
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"cases": {
|
||||
"WP-009-JOURNEY": "blocked",
|
||||
"WP-009-THRESHOLDS": "blocked",
|
||||
"WP-009-PERSISTENCE-ACCESS": "blocked",
|
||||
"WP-009-FAILURE-EVIDENCE": "blocked"
|
||||
"WP-009-JOURNEY": "not-reached",
|
||||
"WP-009-THRESHOLDS": "not-reached",
|
||||
"WP-009-PERSISTENCE-ACCESS": "not-reached",
|
||||
"WP-009-FAILURE-EVIDENCE": "not-reached"
|
||||
}
|
||||
},
|
||||
"performance-01": {
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"cases": {
|
||||
"PE-001-BASELINE": "blocked",
|
||||
"PE-001-THRESHOLD": "blocked",
|
||||
"PE-001-STRESS": "blocked",
|
||||
"PE-001-RECOVERY-EVIDENCE": "blocked"
|
||||
"PE-001-BASELINE": "not-reached",
|
||||
"PE-001-THRESHOLD": "not-reached",
|
||||
"PE-001-STRESS": "not-reached",
|
||||
"PE-001-RECOVERY-EVIDENCE": "not-reached"
|
||||
}
|
||||
},
|
||||
"performance-02": {
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"cases": {
|
||||
"PE-002-BASELINE": "blocked",
|
||||
"PE-002-THRESHOLD": "blocked",
|
||||
"PE-002-STRESS": "blocked",
|
||||
"PE-002-RECOVERY-EVIDENCE": "blocked"
|
||||
"PE-002-BASELINE": "not-reached",
|
||||
"PE-002-THRESHOLD": "not-reached",
|
||||
"PE-002-STRESS": "not-reached",
|
||||
"PE-002-RECOVERY-EVIDENCE": "not-reached"
|
||||
}
|
||||
},
|
||||
"performance-03": {
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"cases": {
|
||||
"PE-003-BASELINE": "blocked",
|
||||
"PE-003-THRESHOLD": "blocked",
|
||||
"PE-003-STRESS": "blocked",
|
||||
"PE-003-RECOVERY-EVIDENCE": "blocked"
|
||||
"PE-003-BASELINE": "not-reached",
|
||||
"PE-003-THRESHOLD": "not-reached",
|
||||
"PE-003-STRESS": "not-reached",
|
||||
"PE-003-RECOVERY-EVIDENCE": "not-reached"
|
||||
}
|
||||
},
|
||||
"performance-04": {
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"cases": {
|
||||
"PE-004-BASELINE": "blocked",
|
||||
"PE-004-THRESHOLD": "blocked",
|
||||
"PE-004-STRESS": "blocked",
|
||||
"PE-004-RECOVERY-EVIDENCE": "blocked"
|
||||
"PE-004-BASELINE": "not-reached",
|
||||
"PE-004-THRESHOLD": "not-reached",
|
||||
"PE-004-STRESS": "not-reached",
|
||||
"PE-004-RECOVERY-EVIDENCE": "not-reached"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1210
-723
File diff suppressed because it is too large.
Load diff
@@ -1,17 +1,17 @@
|
||||
<!-- release-v2-qa-report
|
||||
{
|
||||
"packetId": "board-01",
|
||||
"status": "blocked",
|
||||
"status": "passed",
|
||||
"caseStatuses": {
|
||||
"BD-001-THRESHOLDS": "blocked",
|
||||
"BD-001-MUTATION": "blocked",
|
||||
"BD-001-PERSISTENCE": "blocked",
|
||||
"BD-001-ACCESS-RECOVERY": "blocked"
|
||||
"BD-001-THRESHOLDS": "passed",
|
||||
"BD-001-MUTATION": "passed",
|
||||
"BD-001-PERSISTENCE": "passed",
|
||||
"BD-001-ACCESS-RECOVERY": "passed"
|
||||
},
|
||||
"execution": {
|
||||
"candidateSha": "f57a660088d6777c86aca22977354fa8b810e2be",
|
||||
"url": "http://127.0.0.1:37137",
|
||||
"actualPort": 37137,
|
||||
"candidateSha": "358d6469cf50ae9513cbce0f9238cd6c03aa4182",
|
||||
"url": "http://127.0.0.1:45657/boards/qa-grid-24",
|
||||
"actualPort": 45657,
|
||||
"runtimeProfile": "main-writable",
|
||||
"runtimeFlags": [
|
||||
"DEMO_MODE=true",
|
||||
@@ -19,68 +19,125 @@
|
||||
"UNSAFE_ENABLE_MOCK_INTEGRATION=true"
|
||||
],
|
||||
"persona": "Rowan Owner",
|
||||
"sessionId": "qa-v2-board-01",
|
||||
"timestamp": "2026-08-31T15:21:05.106Z",
|
||||
"sessionId": "bd01-358d-080; bd01-358d-125; bd01-358d-mut-100; bd01-358d-fresh-100; bd01-358d-fresh2-100; bd01-358d-cleanfresh-100",
|
||||
"timestamp": "2026-09-01T13:45:13+02:00",
|
||||
"viewport": "desktop-1440",
|
||||
"viewports": ["desktop-1440", "desktop-1920"],
|
||||
"input": "mouse",
|
||||
"zoom": 100
|
||||
"additionalInputs": ["keyboard"],
|
||||
"zoom": 100,
|
||||
"zooms": [80, 100, 125]
|
||||
},
|
||||
"findings": [
|
||||
{
|
||||
"id": "RV2-P1-001",
|
||||
"fingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"severity": "P1",
|
||||
"area": "routing/authentication",
|
||||
"title": "Locale rewrite causes an infinite browser redirect before the application renders",
|
||||
"summary": "A fresh Chromium session repeatedly requests the same entry route and ends on ERR_TOO_MANY_REDIRECTS, preventing the assigned browser flow.",
|
||||
"caseIds": [
|
||||
"BD-001-THRESHOLDS",
|
||||
"BD-001-MUTATION",
|
||||
"BD-001-PERSISTENCE",
|
||||
"BD-001-ACCESS-RECOVERY"
|
||||
],
|
||||
"evidence": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/login-initial.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/login-redirect-retry-annotated.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/login-redirect-retry-network.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/login-redirect-retry-result.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/login-redirect-retry.webm",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/login-retry-before-open.png"
|
||||
]
|
||||
}
|
||||
],
|
||||
"findings": [],
|
||||
"artifacts": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/login-initial.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/login-redirect-retry-annotated.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/login-redirect-retry-console.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/login-redirect-retry-errors.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/login-redirect-retry-network.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/login-redirect-retry-result.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/login-redirect-retry-snapshot.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/login-redirect-retry-url.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/login-redirect-retry.har",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/login-redirect-retry.webm",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/login-retry-before-open.png"
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-thresholds-1440-080-top.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-thresholds-1440-080-bottom.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-thresholds-1440-080-top-after.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-thresholds-1440-080-top.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-thresholds-1440-080-bottom.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-thresholds-1440-100-top.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-thresholds-1440-100-bottom.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-thresholds-1440-100-top-after.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-thresholds-1440-100-top.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-thresholds-1440-100-bottom.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-thresholds-1440-125-top.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-thresholds-1440-125-bottom.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-thresholds-1440-125-top-after.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-thresholds-1440-125-top.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-thresholds-1440-125-bottom.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-thresholds-1920-080-top.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-thresholds-1920-080-bottom.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-thresholds-1920-080-top-after.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-thresholds-1920-080-top.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-thresholds-1920-080-bottom.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-thresholds-1920-100.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-thresholds-1920-100-top.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-thresholds-1920-100-bottom.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-thresholds-1920-100-top-after.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-thresholds-1920-100.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-thresholds-1920-100-top.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-thresholds-1920-100-bottom.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-thresholds-1920-125-top.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-thresholds-1920-125-bottom.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-thresholds-1920-125-top-after.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-thresholds-1920-125-top.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-thresholds-1920-125-bottom.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-mutation-baseline-1440-100.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-mutation-edit-baseline-1440-100.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-mutation-keyboard-move-down-1440-100.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-mutation-keyboard-after-down-final-1440-100.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-mutation-keyboard-after-escape-final-1440-100.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-mutation-keyboard-resize-down-1440-100.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-mutation-keyboard-resize-down-1440-100.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-mutation-keyboard-resize-restored-1440-100.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-mutation-keyboard-collision-right-1440-100.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-mutation-keyboard-collision-right-1440-100.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-mutation-keyboard-collision-all-1440-100.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-mutation-keyboard-collision-restored-1440-100.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-mutation-pointer-before-1440-100.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-mutation-pointer-after-1440-100.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-mutation-pointer-after-1440-100.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-mutation-pointer-invalid-before-1440-100.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-mutation-pointer-invalid-after-1440-100.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-mutation-pointer-invalid-after-1440-100.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-mutation-pointer-handles-1440-100.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-mutation-pointer-resize-before-1440-100.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-mutation-pointer-resize-after-1440-100.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-mutation-pointer-resize-after-1440-100.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-mutation-pointer-resize-restored-1440-100.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-mutation-pointer-resize-restored-1440-100.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-mutation-pointer-restored-1440-100.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-mutation-pointer-restored-1440-100.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-access-dirty-before-nav-1440-100.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-access-dirty-before-nav-1440-100.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-access-unsaved-dialog-1440-100.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-access-cancel-after-1440-100.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-access-cancel-after-1440-100.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-access-discard-settings-1440-100.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-access-discard-back-clean-1440-100.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-access-discard-reload-check-1440-100.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-fresh-baseline-1440-100.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-fresh-baseline-1440-100.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-persistence-before-save-1440-100.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-persistence-before-save-1440-100.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-persistence-after-save-1440-100.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-persistence-after-save-1440-100.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-persistence-after-reload-1440-100.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-persistence-after-reload-1440-100.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-persistence-away-back-1440-100.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-persistence-away-back-1440-100.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-persistence-fresh-saved-1440-100.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-persistence-fresh-saved-1440-100.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-persistence-before-restore-save-1440-100.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-persistence-after-restore-save-1440-100.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-persistence-after-restore-save-1440-100.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-persistence-after-restore-reload-1440-100.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-persistence-after-restore-reload-1440-100.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-persistence-fresh-clean-1440-100.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-persistence-fresh-clean-1440-100.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-diagnostics-080-network.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-diagnostics-125-network.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-diagnostics-cleanfresh-network.txt"
|
||||
],
|
||||
"widgetChecks": [],
|
||||
"performance": {
|
||||
"measurements": [],
|
||||
"measurements": [
|
||||
{"surface":"desktop-1440","zoom":80,"cssViewport":"1800x1125","dpr":0.8,"visualViewportScale":1,"root":"x16..right1611.93 width1595.94","page":"scrollWidth=1781 clientWidth=1781 scrollHeight=4807 clientHeight=1125","scrollBottom":3682.5,"renderedWidths":"1-22; seeded 23/24 gutter-clamped"},
|
||||
{"surface":"desktop-1440","zoom":100,"cssViewport":"1440x900","dpr":1,"visualViewportScale":1,"root":"x16..right1300.59 width1284.59","page":"scrollWidth=1440 clientWidth=1440 scrollHeight=3887 clientHeight=900","scrollBottom":2987,"renderedWidths":"1-22; seeded 23/24 gutter-clamped"},
|
||||
{"surface":"desktop-1440","zoom":125,"cssViewport":"1152x720","dpr":1.25,"visualViewportScale":1,"root":"x16..right994.73 width978.73","page":"scrollWidth=1140 clientWidth=1140 scrollHeight=4558 clientHeight=720","scrollBottom":3837.6,"renderedWidths":"1-16; seeded 17-24 gutter-clamped"},
|
||||
{"surface":"desktop-1920","zoom":80,"cssViewport":"2400x1350","dpr":0.8,"visualViewportScale":1,"root":"x16..right2159.36 width2143.36","page":"scrollWidth=2381 clientWidth=2381 scrollHeight=6425 clientHeight=1350","scrollBottom":5075,"renderedWidths":"1-22; seeded 23/24 gutter-clamped"},
|
||||
{"surface":"desktop-1920","zoom":100,"cssViewport":"1920x1080","dpr":1,"visualViewportScale":1,"root":"x16..right1738.53 width1722.5","page":"scrollWidth=1920 clientWidth=1920 scrollHeight=5181 clientHeight=1080","scrollBottom":4101,"renderedWidths":"1-22; seeded 23/24 gutter-clamped"},
|
||||
{"surface":"desktop-1920","zoom":125,"cssViewport":"1536x864","dpr":1.25,"visualViewportScale":1,"root":"x16..right1377.24 width1361.24","page":"scrollWidth=1524 clientWidth=1524 scrollHeight=4114 clientHeight=864","scrollBottom":3249.6,"renderedWidths":"1-22; seeded 23/24 gutter-clamped"}
|
||||
],
|
||||
"limitations": [
|
||||
"The application never rendered, so assigned feature, mutation, persistence, permission, viewport, and performance checks were blocked.",
|
||||
"No credentials were submitted and no product state was mutated.",
|
||||
"The finding was retried in a fresh Chromium context; console output was empty while document requests repeated until Chromium stopped the loop."
|
||||
"Metrics distinguish browser outer viewport from CSS viewport for extension zoom; visualViewport.scale remained 1 on every surface.",
|
||||
"The seeded 1..24 width series and the visible 24-column width-coverage option were exercised as rendered UI evidence; the board was not left in a changed settings layout.",
|
||||
"Diagnostics retained status-only network/asset listings with query values redacted. Console and page-error commands returned no output; headers, bodies, cookies, tokens, and credentials were not retained.",
|
||||
"The browser CLI retained stale registry metadata for an exited recorder daemon after close; no corresponding Chrome process remained."
|
||||
]
|
||||
},
|
||||
"independentReproductions": [
|
||||
{
|
||||
"findingFingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"agentId": "qa-v2-preflight-01",
|
||||
"outcome": "reproduced",
|
||||
"evidence": [],
|
||||
"notes": "See preflight-01 for an independent Luna Max reproduction."
|
||||
}
|
||||
],
|
||||
"notes": "Report-only black-box run. No defect was fixed and no secret was recorded."
|
||||
"independentReproductions": [],
|
||||
"notes": "Pre-fix black-box run against candidate 358d6469cf50ae9513cbce0f9238cd6c03aa4182. Six viewport/zoom surfaces each rendered 24 seeded groups and returned to scroll top after bottom capture. The six top and bottom JSON pairs plus top-after JSON files are the full threshold matrix. The assigned board showed left x=16 gutters and a bounded right edge; scrollWidth equaled clientWidth on all six surfaces. Width intents 1..24 were represented by the seeded matrix; overwide entries were bounded to the available last column. Mutation covered physical pointer move into an empty gap, physical resize, active invalid-drop Escape rollback, keyboard move/resize, collision displacement, and restoration. A row-2 move survived Save, reload, away/back, and a fresh profile; the move was reversed through the UI, saved, reloaded, and confirmed clean in a fresh profile. Dirty navigation Cancel retained work; Discard navigated to settings and the discarded move was absent after reload and fresh-session checks. No unresolved finding remains."
|
||||
}
|
||||
-->
|
||||
|
||||
@@ -88,78 +145,61 @@
|
||||
|
||||
| Metadata | Value |
|
||||
| --- | --- |
|
||||
| Status | blocked |
|
||||
| Status | passed |
|
||||
| Wave | board |
|
||||
| PR refs | #6503 |
|
||||
| PR refs | candidate `358d6469cf50ae9513cbce0f9238cd6c03aa4182` |
|
||||
| Personas | Rowan Owner |
|
||||
| Boards | qa-grid-24 |
|
||||
| Profiles | main-writable |
|
||||
| Profiles | main-writable; `/tmp/homarr-release-v2-qa-zoom-358d-s1b-080`; `/tmp/homarr-release-v2-qa-zoom-358d-s1b-125` |
|
||||
| Chromium viewports | desktop-1440, desktop-1920 |
|
||||
| Zoom | 80%, 100%, 125% |
|
||||
| Input | mouse, keyboard |
|
||||
| Widget kinds | None |
|
||||
| Artifact directory | [/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01) |
|
||||
| Candidate SHA | f57a660088d6777c86aca22977354fa8b810e2be |
|
||||
| URL / actual port | http://127.0.0.1:37137 / 37137 |
|
||||
| Runtime profile / flags | main-writable; DEMO_MODE=true, DEMO_READ_ONLY=false, UNSAFE_ENABLE_MOCK_INTEGRATION=true |
|
||||
| Candidate SHA | `358d6469cf50ae9513cbce0f9238cd6c03aa4182` |
|
||||
| URL / actual port | http://127.0.0.1:45657/boards/qa-grid-24 / 45657 |
|
||||
| Runtime profile / flags | main-writable / `DEMO_MODE=true`, `DEMO_READ_ONLY=false`, `UNSAFE_ENABLE_MOCK_INTEGRATION=true` |
|
||||
| Executed persona | Rowan Owner |
|
||||
| Browser session ID | qa-v2-board-01 |
|
||||
| Timestamp | 2026-08-31T15:21:05.106Z |
|
||||
| Executed viewport / input / zoom | desktop-1440 / mouse / 100% |
|
||||
| Browser session ID | `bd01-358d-080`; `bd01-358d-125`; `bd01-358d-mut-100`; `bd01-358d-fresh2-100`; `bd01-358d-cleanfresh-100` |
|
||||
| Timestamp | 2026-09-01T13:45:13+02:00 |
|
||||
| Executed viewport / input / zoom | desktop-1440 (1440x900), desktop-1920 (1920x1080) / mouse, keyboard / 80%, 100%, 125% |
|
||||
|
||||
## Dogfood evidence
|
||||
|
||||
| Case ID | Status | Evidence | Observed | Expected |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| BD-001-THRESHOLDS | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Exercise every assigned viewport, zoom, and input, including breakpoint and dense-layout stress. |
|
||||
| BD-001-MUTATION | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Exercise create, move, resize, reorder, collapse, and delete paths that apply to this packet. |
|
||||
| BD-001-PERSISTENCE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Reload, switch layouts or sessions, and verify saved and reset state remains correct. |
|
||||
| BD-001-ACCESS-RECOVERY | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify Owner, Editor, Viewer, outsider, read-only, keyboard, cancellation, error, and recovery behavior that applies. |
|
||||
| BD-001-THRESHOLDS | passed | [1440/100 top geometry](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-thresholds-1440-100-top.json), [1440/125 geometry](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-thresholds-1440-125-top.json), [1920/125 geometry](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-thresholds-1920-125-top.json) | All six viewport/zoom surfaces rendered 24 seeded groups. Width intents 1..24 were present; measured rendered widths were 1..22 on five surfaces and 1..16 at desktop-1440/125, with overwide entries bounded to the available right edge. Left/right gutters were present, `scrollWidth == clientWidth` on every surface, and bottom/top scroll captures completed. | 24-column placement/scaling remains usable at each assigned viewport and zoom, with gutter bounds and no unintended page overflow. |
|
||||
| BD-001-MUTATION | passed | [pointer gap move](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-mutation-pointer-after-1440-100.json), [Escape rollback](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-mutation-pointer-invalid-after-1440-100.json), [pointer resize](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-mutation-pointer-resize-after-1440-100.json), [keyboard collision](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-mutation-keyboard-collision-all-1440-100.json) | Physical drag moved cell 01 from column 1 to empty column 22; an active invalid drag plus Escape returned to its prior position. Physical SE resize changed height 1 to 2 and was reversed. Keyboard move, resize, collision displacement, and restoration passed without overlap or page overflow. | Pointer DnD, resize, keyboard move/resize, collision handling, and cancel/rollback stay within bounds. |
|
||||
| BD-001-PERSISTENCE | passed | [saved row-2 state](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-persistence-after-save-1440-100.json), [reload](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-persistence-after-reload-1440-100.json), [away/back](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-persistence-away-back-1440-100.json), [fresh saved session](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-persistence-fresh-saved-1440-100.json), [fresh clean baseline](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-persistence-fresh-clean-1440-100.json) | A harmless move to row 2 survived Save, reload, away/back, and a fresh profile. The move was reversed through the UI, saved, reloaded, and confirmed at row 1 with 24 items in a fresh profile. | Saved layout persists across reload and fresh session; restored baseline remains clean. |
|
||||
| BD-001-ACCESS-RECOVERY | passed | [dirty state](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-access-dirty-before-nav-1440-100.json), [unsaved dialog](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-access-unsaved-dialog-1440-100.png), [Cancel result](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-access-cancel-after-1440-100.json), [Discard reload check](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-access-discard-reload-check-1440-100.json) | Dirty navigation prompted. Cancel retained the row-2 edit. Discard navigated to Board settings; browser Back briefly showed transient history state, but reload and fresh-session checks were row 1 and no discarded move persisted. | Dirty navigation prompts, Cancel retains work, and Discard does not silently persist the discarded move. |
|
||||
|
||||
## Performance measurements and limitations
|
||||
## Full viewport and zoom matrix
|
||||
|
||||
No valid feature timing could be recorded because no application document rendered. Cold/warm, polling, rendering, memory, and recovery measurements remain blocked.
|
||||
| Assigned surface | Numeric zoom | CSS viewport / DPR / scale | Root bounds and gutters | Page scroll metrics | Widths / evidence |
|
||||
| --- | ---: | --- | --- | --- | --- |
|
||||
| desktop-1440 | 80 | 1800x1125 / 0.8 / 1 | x=16, right=1611.93, width=1595.94; right gutter to client 1781 | scrollWidth=1781, clientWidth=1781, scrollHeight=4807, bottom scrollY=3682.5 | 1..22 rendered; [top](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-thresholds-1440-080-top.json), [bottom](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-thresholds-1440-080-bottom.json), [top-after](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-thresholds-1440-080-top-after.json) |
|
||||
| desktop-1440 | 100 | 1440x900 / 1 / 1 | x=16, right=1300.59, width=1284.59; right gutter to client 1440 | scrollWidth=1440, clientWidth=1440, scrollHeight=3887, bottom scrollY=2987 | 1..22 rendered; [top](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-thresholds-1440-100-top.json), [bottom](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-thresholds-1440-100-bottom.json), [top-after](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-thresholds-1440-100-top-after.json) |
|
||||
| desktop-1440 | 125 | 1152x720 / 1.25 / 1 | x=16, right=994.73, width=978.73; right gutter to client 1140 | scrollWidth=1140, clientWidth=1140, scrollHeight=4558, bottom scrollY=3837.6 | 1..16 rendered; [top](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-thresholds-1440-125-top.json), [bottom](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-thresholds-1440-125-bottom.json), [top-after](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-thresholds-1440-125-top-after.json) |
|
||||
| desktop-1920 | 80 | 2400x1350 / 0.8 / 1 | x=16, right=2159.36, width=2143.36; right gutter to client 2381 | scrollWidth=2381, clientWidth=2381, scrollHeight=6425, bottom scrollY=5075 | 1..22 rendered; [top](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-thresholds-1920-080-top.json), [bottom](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-thresholds-1920-080-bottom.json), [top-after](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-thresholds-1920-080-top-after.json) |
|
||||
| desktop-1920 | 100 | 1920x1080 / 1 / 1 | x=16, right=1738.53, width=1722.5; right gutter to client 1920 | scrollWidth=1920, clientWidth=1920, scrollHeight=5181, bottom scrollY=4101 | 1..22 rendered; [top](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-thresholds-1920-100.json), [bottom](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-thresholds-1920-100-bottom.json), [top-after](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-thresholds-1920-100-top-after.json) |
|
||||
| desktop-1920 | 125 | 1536x864 / 1.25 / 1 | x=16, right=1377.24, width=1361.24; right gutter to client 1524 | scrollWidth=1524, clientWidth=1524, scrollHeight=4114, bottom scrollY=3249.6 | 1..22 rendered; [top](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-thresholds-1920-125-top.json), [bottom](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-thresholds-1920-125-bottom.json), [top-after](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-thresholds-1920-125-top-after.json) |
|
||||
|
||||
## Independent reproductions
|
||||
The seeded matrix contains width intents 1 through 24. The visible Board settings UI also exposed a `24-column width coverage` layout option. On the assigned gutter-bounded surfaces, entries through the available last column had measurable widths and overwide entries were clamped to that bound; no horizontal page overflow occurred. The full top/bottom/top-after capture set above is the human-readable matrix, while the JSON geometry files preserve scalar values.
|
||||
|
||||
The common routing failure was independently reproduced by qa-v2-preflight-01; the corresponding tracked packet contains its own browser evidence.
|
||||
## Mutation details
|
||||
|
||||
## Findings
|
||||
The physical pointer path moved the 1x1 first item from column 1 to an empty column 22, then the inverse gesture restored it. An active invalid drag followed by Escape retained the pre-drag column. The physical southeast resize changed height 1 to 2 and was reversed. Keyboard ArrowDown moved the item to row 2; Shift+ArrowDown resized it to height 2; ArrowRight into an occupied cell displaced the neighbor without overlap; the layout was restored before persistence. Keyboard Escape stopped keyboard editing, while the active pointer Escape path provided rollback evidence.
|
||||
|
||||
### RV2-P1-001 — P1: locale rewrite causes an infinite browser redirect
|
||||
## Persistence and access recovery
|
||||
|
||||
Preconditions: candidate f57a660088d6777c86aca22977354fa8b810e2be, main-writable, desktop-1440, 100% zoom, mouse, fresh named Chromium session qa-v2-board-01.
|
||||
A harmless row-2 move was saved and observed after reload, Board settings away/back, and a fresh authenticated profile. The move was then reversed with the UI, saved, reloaded, and confirmed as row 1 in a separate fresh profile with 24 items. A dirty navigation attempt displayed the Unsaved changes dialog. Cancel retained the dirty row-2 edit. Discard navigated to Board settings; browser history briefly retained transient in-memory row 2, but reload and fresh-session checks returned row 1, confirming the discarded move was not persisted.
|
||||
|
||||
1. Launch a fresh Chromium context with the Chromium argument --no-sandbox.
|
||||
2. Set the assigned viewport and open http://127.0.0.1:37137 or its authentication entry.
|
||||
3. Observe repeated document requests to the same route.
|
||||
4. Wait until Chromium displays ERR_TOO_MANY_REDIRECTS or chrome-error://chromewebdata/.
|
||||
5. Close the context, retry in a fresh context, and observe the same result.
|
||||
## Diagnostics and limitations
|
||||
|
||||
Expected: the application renders the assigned entry, permitting authentication and the packet flow. Actual: the redirect loop prevents the application from rendering. Reproducibility: reproduced on retry and independently by another Luna Max preflight agent. Console output was empty; network and visual evidence are linked below.
|
||||
Status-only network/asset listings were captured for the 80%, 125%, and fresh native sessions: [80% network](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-diagnostics-080-network.txt), [125% network](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-diagnostics-125-network.txt), and [fresh native network](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/bd01-358d-diagnostics-cleanfresh-network.txt). Terminal status lines were 200; a few image entries had no terminal status in the CLI listing. Console and page-error commands returned no output. No headers, bodies, cookies, tokens, credentials, or query values were retained.
|
||||
|
||||
## Artifacts
|
||||
|
||||
- [login-initial.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/login-initial.png)
|
||||
- [login-redirect-retry-annotated.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/login-redirect-retry-annotated.png)
|
||||
- [login-redirect-retry-console.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/login-redirect-retry-console.txt)
|
||||
- [login-redirect-retry-errors.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/login-redirect-retry-errors.txt)
|
||||
- [login-redirect-retry-network.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/login-redirect-retry-network.txt)
|
||||
- [login-redirect-retry-result.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/login-redirect-retry-result.png)
|
||||
- [login-redirect-retry-snapshot.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/login-redirect-retry-snapshot.txt)
|
||||
- [login-redirect-retry-url.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/login-redirect-retry-url.txt)
|
||||
- [login-redirect-retry.har](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/login-redirect-retry.har)
|
||||
- [login-redirect-retry.webm](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/login-redirect-retry.webm)
|
||||
- [login-retry-before-open.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-01/login-retry-before-open.png)
|
||||
|
||||
## Mutations and persistence
|
||||
|
||||
No credentials were submitted and no product mutation occurred. Reload and fresh-session retries reproduced the routing failure, so application persistence was not reachable.
|
||||
|
||||
## Blockers and gaps
|
||||
|
||||
Every non-evidence case listed as blocked remains untested beyond the routing entry. No blocked cell is treated as passed.
|
||||
No widget-specific checks or performance timings were requested. No rail-specific target was claimed because the assigned seeded board exposed the gutter-bounded canvas rather than a separate rail target. No unresolved finding remains.
|
||||
|
||||
## Cleanup
|
||||
|
||||
The named browser session was closed by the browser agent. Artifacts remain under the untracked packet directory; no secret values were captured.
|
||||
The saved temporary row-2 move was reversed and saved. Reload and a separate fresh profile confirmed the clean row-1 baseline. All exact Chromium sessions were closed; the browser CLI retained stale registry metadata for the exited recorder/main daemon only, with no corresponding Chrome process. No resources were created and no source, database, manifest, ledger, or master files were inspected or changed.
|
||||
@@ -1,92 +1,35 @@
|
||||
<!-- release-v2-qa-report
|
||||
{
|
||||
"packetId": "board-02",
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"caseStatuses": {
|
||||
"BD-002-THRESHOLDS": "blocked",
|
||||
"BD-002-MUTATION": "blocked",
|
||||
"BD-002-PERSISTENCE": "blocked",
|
||||
"BD-002-ACCESS-RECOVERY": "blocked"
|
||||
"BD-002-THRESHOLDS": "not-reached",
|
||||
"BD-002-MUTATION": "not-reached",
|
||||
"BD-002-PERSISTENCE": "not-reached",
|
||||
"BD-002-ACCESS-RECOVERY": "not-reached"
|
||||
},
|
||||
"execution": {
|
||||
"candidateSha": "f57a660088d6777c86aca22977354fa8b810e2be",
|
||||
"url": "http://127.0.0.1:37137",
|
||||
"actualPort": 37137,
|
||||
"runtimeProfile": "main-writable",
|
||||
"runtimeFlags": [
|
||||
"DEMO_MODE=true",
|
||||
"DEMO_READ_ONLY=false",
|
||||
"UNSAFE_ENABLE_MOCK_INTEGRATION=true"
|
||||
],
|
||||
"persona": "Eden Editor",
|
||||
"sessionId": "qa-v2-board-02",
|
||||
"timestamp": "2026-08-31T15:29:45.710Z",
|
||||
"viewport": "mobile-375",
|
||||
"input": "mouse",
|
||||
"zoom": 100
|
||||
"candidateSha": "2d5edf46513b96c8b9f973d4a121b396d688e9bb",
|
||||
"url": null,
|
||||
"actualPort": null,
|
||||
"runtimeProfile": null,
|
||||
"runtimeFlags": [],
|
||||
"persona": null,
|
||||
"sessionId": null,
|
||||
"timestamp": null,
|
||||
"viewport": null,
|
||||
"input": null,
|
||||
"zoom": null
|
||||
},
|
||||
"findings": [
|
||||
{
|
||||
"id": "RV2-P1-001",
|
||||
"fingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"severity": "P1",
|
||||
"area": "routing/authentication",
|
||||
"title": "Locale rewrite causes an infinite browser redirect before the application renders",
|
||||
"summary": "A fresh Chromium session repeatedly requests the same entry route and ends on ERR_TOO_MANY_REDIRECTS, preventing the assigned browser flow.",
|
||||
"caseIds": [
|
||||
"BD-002-THRESHOLDS",
|
||||
"BD-002-MUTATION",
|
||||
"BD-002-PERSISTENCE",
|
||||
"BD-002-ACCESS-RECOVERY"
|
||||
],
|
||||
"evidence": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-02/logs/entry-attempt-1-network.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-02/logs/entry-retry-network-all.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-02/logs/entry-retry-network.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-02/screenshots/entry-attempt-1-redirect-error.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-02/screenshots/entry-retry-before-navigation.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-02/screenshots/entry-retry-result-annotated.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-02/screenshots/entry-retry-result.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-02/videos/entry-redirect-retry.webm"
|
||||
]
|
||||
}
|
||||
],
|
||||
"artifacts": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-02/logs/entry-attempt-1-console.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-02/logs/entry-attempt-1-errors.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-02/logs/entry-attempt-1-network.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-02/logs/entry-attempt-1-url.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-02/logs/entry-retry-console.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-02/logs/entry-retry-errors.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-02/logs/entry-retry-network-all.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-02/logs/entry-retry-network.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-02/logs/entry-retry-snapshot.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-02/logs/entry-retry-url.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-02/screenshots/entry-attempt-1-redirect-error.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-02/screenshots/entry-retry-before-navigation.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-02/screenshots/entry-retry-result-annotated.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-02/screenshots/entry-retry-result.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-02/videos/entry-redirect-retry.webm"
|
||||
],
|
||||
"findings": [],
|
||||
"artifacts": [],
|
||||
"widgetChecks": [],
|
||||
"performance": {
|
||||
"measurements": [],
|
||||
"limitations": [
|
||||
"The application never rendered, so assigned feature, mutation, persistence, permission, viewport, and performance checks were blocked.",
|
||||
"No credentials were submitted and no product state was mutated.",
|
||||
"The finding was retried in a fresh Chromium context; console output was empty while document requests repeated until Chromium stopped the loop."
|
||||
]
|
||||
"limitations": []
|
||||
},
|
||||
"independentReproductions": [
|
||||
{
|
||||
"findingFingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"agentId": "qa-v2-preflight-01",
|
||||
"outcome": "reproduced",
|
||||
"evidence": [],
|
||||
"notes": "See preflight-01 for an independent Luna Max reproduction."
|
||||
}
|
||||
],
|
||||
"notes": "Report-only black-box run. No defect was fixed and no secret was recorded."
|
||||
"independentReproductions": [],
|
||||
"notes": "Not executed."
|
||||
}
|
||||
-->
|
||||
|
||||
@@ -94,7 +37,7 @@
|
||||
|
||||
| Metadata | Value |
|
||||
| --- | --- |
|
||||
| Status | blocked |
|
||||
| Status | not-reached |
|
||||
| Wave | board |
|
||||
| PR refs | #6503 |
|
||||
| Personas | Eden Editor |
|
||||
@@ -105,71 +48,39 @@
|
||||
| Input | mouse, touch |
|
||||
| Widget kinds | None |
|
||||
| Artifact directory | [/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-02](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-02) |
|
||||
| Candidate SHA | f57a660088d6777c86aca22977354fa8b810e2be |
|
||||
| URL / actual port | http://127.0.0.1:37137 / 37137 |
|
||||
| Runtime profile / flags | main-writable; DEMO_MODE=true, DEMO_READ_ONLY=false, UNSAFE_ENABLE_MOCK_INTEGRATION=true |
|
||||
| Executed persona | Eden Editor |
|
||||
| Browser session ID | qa-v2-board-02 |
|
||||
| Timestamp | 2026-08-31T15:29:45.710Z |
|
||||
| Executed viewport / input / zoom | mobile-375 / mouse / 100% |
|
||||
| Candidate SHA | 2d5edf46513b96c8b9f973d4a121b396d688e9bb |
|
||||
| URL / actual port | not-recorded |
|
||||
| Runtime profile / flags | not-recorded |
|
||||
| Executed persona | not-recorded |
|
||||
| Browser session ID | not-recorded |
|
||||
| Timestamp | not-recorded |
|
||||
| Executed viewport / input / zoom | not-recorded |
|
||||
|
||||
## Dogfood evidence
|
||||
|
||||
| Case ID | Status | Evidence | Observed | Expected |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| BD-002-THRESHOLDS | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-02) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Exercise every assigned viewport, zoom, and input, including breakpoint and dense-layout stress. |
|
||||
| BD-002-MUTATION | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-02) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Exercise create, move, resize, reorder, collapse, and delete paths that apply to this packet. |
|
||||
| BD-002-PERSISTENCE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-02) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Reload, switch layouts or sessions, and verify saved and reset state remains correct. |
|
||||
| BD-002-ACCESS-RECOVERY | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-02) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify Owner, Editor, Viewer, outsider, read-only, keyboard, cancellation, error, and recovery behavior that applies. |
|
||||
| BD-002-THRESHOLDS | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-02/BD-002-THRESHOLDS.png) | Not executed | Exercise every assigned viewport, zoom, and input, including breakpoint and dense-layout stress. |
|
||||
| BD-002-MUTATION | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-02/BD-002-MUTATION.png) | Not executed | Exercise create, move, resize, reorder, collapse, and delete paths that apply to this packet. |
|
||||
| BD-002-PERSISTENCE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-02/BD-002-PERSISTENCE.png) | Not executed | Reload, switch layouts or sessions, and verify saved and reset state remains correct. |
|
||||
| BD-002-ACCESS-RECOVERY | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-02/BD-002-ACCESS-RECOVERY.png) | Not executed | Verify Owner, Editor, Viewer, outsider, read-only, keyboard, cancellation, error, and recovery behavior that applies. |
|
||||
|
||||
## Performance measurements and limitations
|
||||
|
||||
No valid feature timing could be recorded because no application document rendered. Cold/warm, polling, rendering, memory, and recovery measurements remain blocked.
|
||||
Record structured measurements in `performance.measurements` with units, thresholds, status, and evidence. Record every environmental or tooling limitation in `performance.limitations`; leave measurements empty instead of inventing a result.
|
||||
|
||||
## Independent reproductions
|
||||
|
||||
The common routing failure was independently reproduced by qa-v2-preflight-01; the corresponding tracked packet contains its own browser evidence.
|
||||
Record a second agent's result in `independentReproductions` with the finding fingerprint, agent ID, outcome, evidence, and notes. An unattempted reproduction remains `not-reached`.
|
||||
|
||||
## Findings
|
||||
|
||||
### RV2-P1-001 — P1: locale rewrite causes an infinite browser redirect
|
||||
|
||||
Preconditions: candidate f57a660088d6777c86aca22977354fa8b810e2be, main-writable, mobile-375, 100% zoom, mouse, fresh named Chromium session qa-v2-board-02.
|
||||
|
||||
1. Launch a fresh Chromium context with the Chromium argument --no-sandbox.
|
||||
2. Set the assigned viewport and open http://127.0.0.1:37137 or its authentication entry.
|
||||
3. Observe repeated document requests to the same route.
|
||||
4. Wait until Chromium displays ERR_TOO_MANY_REDIRECTS or chrome-error://chromewebdata/.
|
||||
5. Close the context, retry in a fresh context, and observe the same result.
|
||||
|
||||
Expected: the application renders the assigned entry, permitting authentication and the packet flow. Actual: the redirect loop prevents the application from rendering. Reproducibility: reproduced on retry and independently by another Luna Max preflight agent. Console output was empty; network and visual evidence are linked below.
|
||||
|
||||
## Artifacts
|
||||
|
||||
- [entry-attempt-1-console.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-02/logs/entry-attempt-1-console.txt)
|
||||
- [entry-attempt-1-errors.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-02/logs/entry-attempt-1-errors.txt)
|
||||
- [entry-attempt-1-network.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-02/logs/entry-attempt-1-network.txt)
|
||||
- [entry-attempt-1-url.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-02/logs/entry-attempt-1-url.txt)
|
||||
- [entry-retry-console.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-02/logs/entry-retry-console.txt)
|
||||
- [entry-retry-errors.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-02/logs/entry-retry-errors.txt)
|
||||
- [entry-retry-network-all.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-02/logs/entry-retry-network-all.txt)
|
||||
- [entry-retry-network.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-02/logs/entry-retry-network.txt)
|
||||
- [entry-retry-snapshot.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-02/logs/entry-retry-snapshot.txt)
|
||||
- [entry-retry-url.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-02/logs/entry-retry-url.txt)
|
||||
- [entry-attempt-1-redirect-error.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-02/screenshots/entry-attempt-1-redirect-error.png)
|
||||
- [entry-retry-before-navigation.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-02/screenshots/entry-retry-before-navigation.png)
|
||||
- [entry-retry-result-annotated.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-02/screenshots/entry-retry-result-annotated.png)
|
||||
- [entry-retry-result.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-02/screenshots/entry-retry-result.png)
|
||||
- [entry-redirect-retry.webm](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-02/videos/entry-redirect-retry.webm)
|
||||
|
||||
## Mutations and persistence
|
||||
|
||||
No credentials were submitted and no product mutation occurred. Reload and fresh-session retries reproduced the routing failure, so application persistence was not reachable.
|
||||
No findings recorded. Add structured findings to the metadata block and mirror them here.
|
||||
|
||||
## Blockers and gaps
|
||||
|
||||
Every non-evidence case listed as blocked remains untested beyond the routing entry. No blocked cell is treated as passed.
|
||||
Not executed.
|
||||
|
||||
## Cleanup
|
||||
|
||||
The named browser session was closed by the browser agent. Artifacts remain under the untracked packet directory; no secret values were captured.
|
||||
Record created resources, cleanup outcome, console errors, and network failures. Never include secret values.
|
||||
@@ -1,17 +1,17 @@
|
||||
<!-- release-v2-qa-report
|
||||
{
|
||||
"packetId": "board-03",
|
||||
"status": "blocked",
|
||||
"status": "failed",
|
||||
"caseStatuses": {
|
||||
"BD-003-THRESHOLDS": "blocked",
|
||||
"BD-003-MUTATION": "blocked",
|
||||
"BD-003-PERSISTENCE": "blocked",
|
||||
"BD-003-ACCESS-RECOVERY": "blocked"
|
||||
"BD-003-THRESHOLDS": "passed",
|
||||
"BD-003-MUTATION": "failed",
|
||||
"BD-003-PERSISTENCE": "passed",
|
||||
"BD-003-ACCESS-RECOVERY": "passed"
|
||||
},
|
||||
"execution": {
|
||||
"candidateSha": "f57a660088d6777c86aca22977354fa8b810e2be",
|
||||
"url": "http://127.0.0.1:37137",
|
||||
"actualPort": 37137,
|
||||
"candidateSha": "358d6469cf50ae9513cbce0f9238cd6c03aa4182",
|
||||
"url": "http://127.0.0.1:34355/boards/qa-dense-collisions",
|
||||
"actualPort": 34355,
|
||||
"runtimeProfile": "main-writable",
|
||||
"runtimeFlags": [
|
||||
"DEMO_MODE=true",
|
||||
@@ -19,55 +19,70 @@
|
||||
"UNSAFE_ENABLE_MOCK_INTEGRATION=true"
|
||||
],
|
||||
"persona": "Casey Chaos",
|
||||
"sessionId": "qa-v2-board-03",
|
||||
"timestamp": "2026-08-31T15:34:27.703Z",
|
||||
"sessionId": "bd03-358d-main",
|
||||
"timestamp": "2026-09-01T12:39:31+02:00",
|
||||
"viewport": "tablet-1024",
|
||||
"input": "mouse",
|
||||
"zoom": 100
|
||||
},
|
||||
"findings": [
|
||||
{
|
||||
"id": "RV2-P1-001",
|
||||
"fingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"severity": "P1",
|
||||
"area": "routing/authentication",
|
||||
"title": "Locale rewrite causes an infinite browser redirect before the application renders",
|
||||
"summary": "A fresh Chromium session repeatedly requests the same entry route and ends on ERR_TOO_MANY_REDIRECTS, preventing the assigned browser flow.",
|
||||
"id": "BD-003-F-001",
|
||||
"severity": "P2",
|
||||
"status": "blocked",
|
||||
"replayStatus": "awaiting independent clean-clone replay",
|
||||
"fingerprint": "board-grid-remove-item-does-not-remove-disposable-item",
|
||||
"caseIds": [
|
||||
"BD-003-THRESHOLDS",
|
||||
"BD-003-MUTATION",
|
||||
"BD-003-PERSISTENCE",
|
||||
"BD-003-ACCESS-RECOVERY"
|
||||
"BD-003-MUTATION"
|
||||
],
|
||||
"title": "Remove item does not remove a disposable board item",
|
||||
"steps": [
|
||||
"Login as Casey Chaos and enter Edit board.",
|
||||
"Open Settings for a Date and time item containing the date text.",
|
||||
"Activate Remove item by locator, semantic role, physical pointer, and keyboard Enter.",
|
||||
"Observe that the menu remains open and the item remains in the editor; Save board and reload."
|
||||
],
|
||||
"observed": "The selected disposable item was not removed. Fresh session and reload retained both disposable items.",
|
||||
"expected": "Remove item should remove the selected item and the saved board should no longer contain it.",
|
||||
"evidence": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-03/BD-003-redirect-retry.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-03/redirect-first.png"
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-03/bd03-358d-fresh2-session.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-03/bd03-358d-final-reload-1440.png"
|
||||
]
|
||||
}
|
||||
],
|
||||
"artifacts": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-03/BD-003-redirect-retry.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-03/redirect-first.png"
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-03/bd03-358d-1024-native-initial.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-03/bd03-358d-1024-native-edit-unobstructed.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-03/bd03-358d-1024-zoom125.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-03/bd03-358d-1440-native.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-03/bd03-358d-1440-zoom125.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-03/bd03-358d-collision-reflow.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-03/bd03-358d-saved-reflow.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-03/bd03-358d-reload-persisted.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-03/bd03-358d-fresh-session.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-03/bd03-358d-fresh2-session.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-03/bd03-358d-final-reload-1440.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-03/bd03-358d-after-collision-drag.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-03/bd03-358d-after-gap-drag.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-03/bd03-358d-pointer-drag-gap-result.png"
|
||||
],
|
||||
"widgetChecks": [
|
||||
{
|
||||
"widget": "Date and time",
|
||||
"status": "passed",
|
||||
"notes": "Rendered in the dense board and was created through the Add board content UI; one move/resize modal save triggered collision reflow."
|
||||
}
|
||||
],
|
||||
"widgetChecks": [],
|
||||
"performance": {
|
||||
"measurements": [],
|
||||
"limitations": [
|
||||
"The application never rendered, so assigned feature, mutation, persistence, permission, viewport, and performance checks were blocked.",
|
||||
"No credentials were submitted and no product state was mutated.",
|
||||
"The finding was retried in a fresh Chromium context; console output was empty while document requests repeated until Chromium stopped the loop."
|
||||
"No touch command is available for the installed Chromium agent-browser provider; one fresh capability retry was limited to the CLI touch surface, so native touch semantics are not claimed.",
|
||||
"Low-level mouse DnD/resize attempts in collision and gap destinations produced no committed geometry change; the UI Move / resize item modal did commit a collision move and reflow.",
|
||||
"The UI Remove item action remained ineffective after a fresh-session retry. The final saved board therefore retains two disposable items and the collision-reflowed layout; original fixture geometry could not be restored through the UI."
|
||||
]
|
||||
},
|
||||
"independentReproductions": [
|
||||
{
|
||||
"findingFingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"agentId": "qa-v2-preflight-01",
|
||||
"outcome": "reproduced",
|
||||
"evidence": [],
|
||||
"notes": "See preflight-01 for an independent Luna Max reproduction."
|
||||
}
|
||||
],
|
||||
"notes": "Report-only black-box run. No defect was fixed and no secret was recorded."
|
||||
"independentReproductions": [],
|
||||
"notes": "Casey Chaos (username casey-chaos) had the corrected MODIFY/Edit board permission. Native 100% and extension-backed 125% renders were exercised at 1024x768 and 1440x900; the full matrix is recorded below. Fresh2 was a persistence check, not an independent defect replay. Finding BD-003-F-001 awaits independent clean-clone replay. All browser sessions were closed. No repository tests, source inspection, API calls, or database access were used."
|
||||
}
|
||||
-->
|
||||
|
||||
@@ -75,69 +90,44 @@
|
||||
|
||||
| Metadata | Value |
|
||||
| --- | --- |
|
||||
| Status | blocked |
|
||||
| Status | failed — mutation cleanup finding BD-003-F-001 |
|
||||
| Wave | board |
|
||||
| PR refs | #6503 |
|
||||
| Personas | Casey Chaos |
|
||||
| Boards | qa-dense-collisions |
|
||||
| Profiles | main-writable |
|
||||
| Chromium viewports | tablet-1024, desktop-1440 |
|
||||
| Zoom | 100%, 125% |
|
||||
| Input | mouse, touch, keyboard |
|
||||
| Widget kinds | None |
|
||||
| Personas | Casey Chaos (`casey-chaos`) |
|
||||
| Boards | `qa-dense-collisions` |
|
||||
| Profile | main-writable clone, `DEMO_MODE=true`, `DEMO_READ_ONLY=false`, `UNSAFE_ENABLE_MOCK_INTEGRATION=true` |
|
||||
| Candidate SHA | `358d6469cf50ae9513cbce0f9238cd6c03aa4182` |
|
||||
| URL / actual port | `http://127.0.0.1:34355/boards/qa-dense-collisions` / `34355` |
|
||||
| Browser sessions | `bd03-358d-main`, `bd03-358d-fresh2`, `bd03-358d-zoom125` |
|
||||
| Viewports | `1024x768`, `1440x900` |
|
||||
| Zoom | native `100%`; extension `125%` (`/tmp/homarr-release-v2-qa-zoom-358d-s3-125`) |
|
||||
| Input | mouse, keyboard; touch-equivalent capability checked but unavailable in Chromium CLI |
|
||||
| Artifact directory | [/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-03](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-03) |
|
||||
| Candidate SHA | f57a660088d6777c86aca22977354fa8b810e2be |
|
||||
| URL / actual port | http://127.0.0.1:37137 / 37137 |
|
||||
| Runtime profile / flags | main-writable; DEMO_MODE=true, DEMO_READ_ONLY=false, UNSAFE_ENABLE_MOCK_INTEGRATION=true |
|
||||
| Executed persona | Casey Chaos |
|
||||
| Browser session ID | qa-v2-board-03 |
|
||||
| Timestamp | 2026-08-31T15:34:27.703Z |
|
||||
| Executed viewport / input / zoom | tablet-1024 / mouse / 100% |
|
||||
| Timestamp | `2026-09-01T12:39:31+02:00` |
|
||||
|
||||
## Dogfood evidence
|
||||
|
||||
| Case ID | Status | Evidence | Observed | Expected |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| BD-003-THRESHOLDS | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-03) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Exercise every assigned viewport, zoom, and input, including breakpoint and dense-layout stress. |
|
||||
| BD-003-MUTATION | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-03) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Exercise create, move, resize, reorder, collapse, and delete paths that apply to this packet. |
|
||||
| BD-003-PERSISTENCE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-03) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Reload, switch layouts or sessions, and verify saved and reset state remains correct. |
|
||||
| BD-003-ACCESS-RECOVERY | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-03) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify Owner, Editor, Viewer, outsider, read-only, keyboard, cancellation, error, and recovery behavior that applies. |
|
||||
|
||||
## Performance measurements and limitations
|
||||
|
||||
No valid feature timing could be recorded because no application document rendered. Cold/warm, polling, rendering, memory, and recovery measurements remain blocked.
|
||||
|
||||
## Independent reproductions
|
||||
|
||||
The common routing failure was independently reproduced by qa-v2-preflight-01; the corresponding tracked packet contains its own browser evidence.
|
||||
| BD-003-THRESHOLDS | passed | [1024 native](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-03/bd03-358d-1024-native-initial.png), [1440 native](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-03/bd03-358d-1440-native.png), [1024 at 125%](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-03/bd03-358d-1024-zoom125.png), [1440 at 125%](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-03/bd03-358d-1440-zoom125.png) | Casey had Edit board; dense items rendered at all four viewport/zoom cells. No horizontal item overflow was observed; the dense canvas correctly continued vertically below the 1024px viewport. | Dense items render within bounds at both viewport sizes and zoom levels. |
|
||||
| BD-003-MUTATION | failed | [edit](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-03/bd03-358d-1024-native-edit-unobstructed.png), [collision reflow](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-03/bd03-358d-collision-reflow.png), [pointer collision](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-03/bd03-358d-after-collision-drag.png), [pointer gap](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-03/bd03-358d-after-gap-drag.png) | Two disposable Date/time items were created. Physical mouse DnD/resize attempts in collision/gap paths did not commit geometry; Move / resize item with X offset `6`→`8` did commit and reflow. Keyboard cancellation was attempted; no verified keyboard geometry change. Remove item remained ineffective, so the required delete/cleanup path failed. | Exercise collision/gap/bounds/invalid-drop/cancel/rollback with pointer and non-pointer input, then complete safe create/move/resize/reorder/delete cleanup. |
|
||||
| BD-003-PERSISTENCE | passed | [saved](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-03/bd03-358d-saved-reflow.png), [reload](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-03/bd03-358d-reload-persisted.png), [fresh session](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-03/bd03-358d-fresh2-session.png), [final reload](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-03/bd03-358d-final-reload-1440.png) | Saved collision reflow survived reload, away/back navigation, and a second authenticated session. The two disposable items also survived because UI deletion did not work. | Saved changes survive reload, navigation, and a fresh session; cleanup should leave the original fixture. |
|
||||
| BD-003-ACCESS-RECOVERY | passed | [native edit](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-03/bd03-358d-1024-native-edit-unobstructed.png), [fresh session](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-03/bd03-358d-fresh2-session.png) | Casey authenticated successfully in the isolated clone and consistently received Edit board / Save board controls. A fresh named session authenticated and recovered the saved board. | Corrected Casey MODIFY access exposes Edit board and saved state is recoverable in a second session. |
|
||||
|
||||
## Findings
|
||||
|
||||
### RV2-P1-001 — P1: locale rewrite causes an infinite browser redirect
|
||||
### BD-003-F-001 — Remove item does not remove a disposable board item
|
||||
|
||||
Preconditions: candidate f57a660088d6777c86aca22977354fa8b810e2be, main-writable, tablet-1024, 100% zoom, mouse, fresh named Chromium session qa-v2-board-03.
|
||||
In Edit board, selecting a Date/time item containing the date text and activating Remove item by locator, semantic role, physical pointer, and keyboard Enter left the menu open and the item present. Save/reload and a fresh session retained both disposable items. The finding awaits independent clean-clone replay; `bd03-358d-fresh2` was a persistence check, not an independent defect replay. See [fresh-session evidence](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-03/bd03-358d-fresh2-session.png) and [final reload](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-03/bd03-358d-final-reload-1440.png).
|
||||
|
||||
1. Launch a fresh Chromium context with the Chromium argument --no-sandbox.
|
||||
2. Set the assigned viewport and open http://127.0.0.1:37137 or its authentication entry.
|
||||
3. Observe repeated document requests to the same route.
|
||||
4. Wait until Chromium displays ERR_TOO_MANY_REDIRECTS or chrome-error://chromewebdata/.
|
||||
5. Close the context, retry in a fresh context, and observe the same result.
|
||||
## Performance measurements and limitations
|
||||
|
||||
Expected: the application renders the assigned entry, permitting authentication and the packet flow. Actual: the redirect loop prevents the application from rendering. Reproducibility: reproduced on retry and independently by another Luna Max preflight agent. Console output was empty; network and visual evidence are linked below.
|
||||
No performance timings were collected. The installed Chromium agent-browser provider exposes no native touch command; the touch-equivalent capability retry therefore cannot claim native touch semantics. Low-level mouse collision/gap DnD and resize attempts were made and left the layout unchanged, while the visible Move / resize item dialog successfully committed one collision move and automatic reflow.
|
||||
|
||||
## Artifacts
|
||||
## Independent reproductions
|
||||
|
||||
- [BD-003-redirect-retry.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-03/BD-003-redirect-retry.png)
|
||||
- [redirect-first.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-03/redirect-first.png)
|
||||
|
||||
## Mutations and persistence
|
||||
|
||||
No credentials were submitted and no product mutation occurred. Reload and fresh-session retries reproduced the routing failure, so application persistence was not reachable.
|
||||
|
||||
## Blockers and gaps
|
||||
|
||||
Every non-evidence case listed as blocked remains untested beyond the routing entry. No blocked cell is treated as passed.
|
||||
None recorded. The fresh2 session was used for persistence, not as an independent defect replay; BD-003-F-001 awaits an independent clean-clone replay.
|
||||
|
||||
## Cleanup
|
||||
|
||||
The named browser session was closed by the browser agent. Artifacts remain under the untracked packet directory; no secret values were captured.
|
||||
Two disposable Date/time items were created through the UI. UI removal was attempted in the fresh session through semantic, locator, physical-pointer, and keyboard activation, but neither item was removed. The final reload evidence therefore records the retained disposable items and reflowed layout as an explicit cleanup limitation; original fixture geometry was not restored through the UI. Console and page-error commands returned no output. Status-only network inspection showed successful 200 responses for the app document/assets/data observed and no displayed app request failures. All named browser sessions were closed. No source, database, fixture manifest, API, test, build, or aggregator inspection was performed.
|
||||
@@ -1,77 +1,35 @@
|
||||
<!-- release-v2-qa-report
|
||||
{
|
||||
"packetId": "board-04",
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"caseStatuses": {
|
||||
"BD-004-THRESHOLDS": "blocked",
|
||||
"BD-004-MUTATION": "blocked",
|
||||
"BD-004-PERSISTENCE": "blocked",
|
||||
"BD-004-ACCESS-RECOVERY": "blocked"
|
||||
"BD-004-THRESHOLDS": "not-reached",
|
||||
"BD-004-MUTATION": "not-reached",
|
||||
"BD-004-PERSISTENCE": "not-reached",
|
||||
"BD-004-ACCESS-RECOVERY": "not-reached"
|
||||
},
|
||||
"execution": {
|
||||
"candidateSha": "f57a660088d6777c86aca22977354fa8b810e2be",
|
||||
"url": "http://127.0.0.1:37137",
|
||||
"actualPort": 37137,
|
||||
"runtimeProfile": "main-writable",
|
||||
"runtimeFlags": [
|
||||
"DEMO_MODE=true",
|
||||
"DEMO_READ_ONLY=false",
|
||||
"UNSAFE_ENABLE_MOCK_INTEGRATION=true"
|
||||
],
|
||||
"persona": "Rowan Owner",
|
||||
"sessionId": "qa-v2-board-04",
|
||||
"timestamp": "2026-08-31T15:37:09.712Z",
|
||||
"viewport": "mobile-320",
|
||||
"input": "mouse",
|
||||
"zoom": 100
|
||||
"candidateSha": "2d5edf46513b96c8b9f973d4a121b396d688e9bb",
|
||||
"url": null,
|
||||
"actualPort": null,
|
||||
"runtimeProfile": null,
|
||||
"runtimeFlags": [],
|
||||
"persona": null,
|
||||
"sessionId": null,
|
||||
"timestamp": null,
|
||||
"viewport": null,
|
||||
"input": null,
|
||||
"zoom": null
|
||||
},
|
||||
"findings": [
|
||||
{
|
||||
"id": "RV2-P1-001",
|
||||
"fingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"severity": "P1",
|
||||
"area": "routing/authentication",
|
||||
"title": "Locale rewrite causes an infinite browser redirect before the application renders",
|
||||
"summary": "A fresh Chromium session repeatedly requests the same entry route and ends on ERR_TOO_MANY_REDIRECTS, preventing the assigned browser flow.",
|
||||
"caseIds": [
|
||||
"BD-004-THRESHOLDS",
|
||||
"BD-004-MUTATION",
|
||||
"BD-004-PERSISTENCE",
|
||||
"BD-004-ACCESS-RECOVERY"
|
||||
],
|
||||
"evidence": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-04/BD-004-network-document.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-04/screenshots/BD-004-redirect-result.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-04/videos/BD-004-redirect-retry.webm"
|
||||
]
|
||||
}
|
||||
],
|
||||
"artifacts": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-04/BD-004-console.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-04/BD-004-errors.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-04/BD-004-network-document.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-04/screenshots/BD-004-redirect-result.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-04/videos/BD-004-redirect-retry.webm"
|
||||
],
|
||||
"findings": [],
|
||||
"artifacts": [],
|
||||
"widgetChecks": [],
|
||||
"performance": {
|
||||
"measurements": [],
|
||||
"limitations": [
|
||||
"The application never rendered, so assigned feature, mutation, persistence, permission, viewport, and performance checks were blocked.",
|
||||
"No credentials were submitted and no product state was mutated.",
|
||||
"The finding was retried in a fresh Chromium context; console output was empty while document requests repeated until Chromium stopped the loop."
|
||||
]
|
||||
"limitations": []
|
||||
},
|
||||
"independentReproductions": [
|
||||
{
|
||||
"findingFingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"agentId": "qa-v2-preflight-01",
|
||||
"outcome": "reproduced",
|
||||
"evidence": [],
|
||||
"notes": "See preflight-01 for an independent Luna Max reproduction."
|
||||
}
|
||||
],
|
||||
"notes": "Report-only black-box run. No defect was fixed and no secret was recorded."
|
||||
"independentReproductions": [],
|
||||
"notes": "Not executed."
|
||||
}
|
||||
-->
|
||||
|
||||
@@ -79,7 +37,7 @@
|
||||
|
||||
| Metadata | Value |
|
||||
| --- | --- |
|
||||
| Status | blocked |
|
||||
| Status | not-reached |
|
||||
| Wave | board |
|
||||
| PR refs | #6503 |
|
||||
| Personas | Rowan Owner |
|
||||
@@ -90,61 +48,39 @@
|
||||
| Input | mouse, touch |
|
||||
| Widget kinds | None |
|
||||
| Artifact directory | [/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-04](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-04) |
|
||||
| Candidate SHA | f57a660088d6777c86aca22977354fa8b810e2be |
|
||||
| URL / actual port | http://127.0.0.1:37137 / 37137 |
|
||||
| Runtime profile / flags | main-writable; DEMO_MODE=true, DEMO_READ_ONLY=false, UNSAFE_ENABLE_MOCK_INTEGRATION=true |
|
||||
| Executed persona | Rowan Owner |
|
||||
| Browser session ID | qa-v2-board-04 |
|
||||
| Timestamp | 2026-08-31T15:37:09.712Z |
|
||||
| Executed viewport / input / zoom | mobile-320 / mouse / 100% |
|
||||
| Candidate SHA | 2d5edf46513b96c8b9f973d4a121b396d688e9bb |
|
||||
| URL / actual port | not-recorded |
|
||||
| Runtime profile / flags | not-recorded |
|
||||
| Executed persona | not-recorded |
|
||||
| Browser session ID | not-recorded |
|
||||
| Timestamp | not-recorded |
|
||||
| Executed viewport / input / zoom | not-recorded |
|
||||
|
||||
## Dogfood evidence
|
||||
|
||||
| Case ID | Status | Evidence | Observed | Expected |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| BD-004-THRESHOLDS | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-04) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Exercise every assigned viewport, zoom, and input, including breakpoint and dense-layout stress. |
|
||||
| BD-004-MUTATION | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-04) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Exercise create, move, resize, reorder, collapse, and delete paths that apply to this packet. |
|
||||
| BD-004-PERSISTENCE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-04) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Reload, switch layouts or sessions, and verify saved and reset state remains correct. |
|
||||
| BD-004-ACCESS-RECOVERY | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-04) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify Owner, Editor, Viewer, outsider, read-only, keyboard, cancellation, error, and recovery behavior that applies. |
|
||||
| BD-004-THRESHOLDS | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-04/BD-004-THRESHOLDS.png) | Not executed | Exercise every assigned viewport, zoom, and input, including breakpoint and dense-layout stress. |
|
||||
| BD-004-MUTATION | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-04/BD-004-MUTATION.png) | Not executed | Exercise create, move, resize, reorder, collapse, and delete paths that apply to this packet. |
|
||||
| BD-004-PERSISTENCE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-04/BD-004-PERSISTENCE.png) | Not executed | Reload, switch layouts or sessions, and verify saved and reset state remains correct. |
|
||||
| BD-004-ACCESS-RECOVERY | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-04/BD-004-ACCESS-RECOVERY.png) | Not executed | Verify Owner, Editor, Viewer, outsider, read-only, keyboard, cancellation, error, and recovery behavior that applies. |
|
||||
|
||||
## Performance measurements and limitations
|
||||
|
||||
No valid feature timing could be recorded because no application document rendered. Cold/warm, polling, rendering, memory, and recovery measurements remain blocked.
|
||||
Record structured measurements in `performance.measurements` with units, thresholds, status, and evidence. Record every environmental or tooling limitation in `performance.limitations`; leave measurements empty instead of inventing a result.
|
||||
|
||||
## Independent reproductions
|
||||
|
||||
The common routing failure was independently reproduced by qa-v2-preflight-01; the corresponding tracked packet contains its own browser evidence.
|
||||
Record a second agent's result in `independentReproductions` with the finding fingerprint, agent ID, outcome, evidence, and notes. An unattempted reproduction remains `not-reached`.
|
||||
|
||||
## Findings
|
||||
|
||||
### RV2-P1-001 — P1: locale rewrite causes an infinite browser redirect
|
||||
|
||||
Preconditions: candidate f57a660088d6777c86aca22977354fa8b810e2be, main-writable, mobile-320, 100% zoom, mouse, fresh named Chromium session qa-v2-board-04.
|
||||
|
||||
1. Launch a fresh Chromium context with the Chromium argument --no-sandbox.
|
||||
2. Set the assigned viewport and open http://127.0.0.1:37137 or its authentication entry.
|
||||
3. Observe repeated document requests to the same route.
|
||||
4. Wait until Chromium displays ERR_TOO_MANY_REDIRECTS or chrome-error://chromewebdata/.
|
||||
5. Close the context, retry in a fresh context, and observe the same result.
|
||||
|
||||
Expected: the application renders the assigned entry, permitting authentication and the packet flow. Actual: the redirect loop prevents the application from rendering. Reproducibility: reproduced on retry and independently by another Luna Max preflight agent. Console output was empty; network and visual evidence are linked below.
|
||||
|
||||
## Artifacts
|
||||
|
||||
- [BD-004-console.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-04/BD-004-console.txt)
|
||||
- [BD-004-errors.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-04/BD-004-errors.txt)
|
||||
- [BD-004-network-document.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-04/BD-004-network-document.txt)
|
||||
- [BD-004-redirect-result.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-04/screenshots/BD-004-redirect-result.png)
|
||||
- [BD-004-redirect-retry.webm](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-04/videos/BD-004-redirect-retry.webm)
|
||||
|
||||
## Mutations and persistence
|
||||
|
||||
No credentials were submitted and no product mutation occurred. Reload and fresh-session retries reproduced the routing failure, so application persistence was not reachable.
|
||||
No findings recorded. Add structured findings to the metadata block and mirror them here.
|
||||
|
||||
## Blockers and gaps
|
||||
|
||||
Every non-evidence case listed as blocked remains untested beyond the routing entry. No blocked cell is treated as passed.
|
||||
Not executed.
|
||||
|
||||
## Cleanup
|
||||
|
||||
The named browser session was closed by the browser agent. Artifacts remain under the untracked packet directory; no secret values were captured.
|
||||
Record created resources, cleanup outcome, console errors, and network failures. Never include secret values.
|
||||
@@ -1,89 +1,35 @@
|
||||
<!-- release-v2-qa-report
|
||||
{
|
||||
"packetId": "board-05",
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"caseStatuses": {
|
||||
"BD-005-THRESHOLDS": "blocked",
|
||||
"BD-005-MUTATION": "blocked",
|
||||
"BD-005-PERSISTENCE": "blocked",
|
||||
"BD-005-ACCESS-RECOVERY": "blocked"
|
||||
"BD-005-THRESHOLDS": "not-reached",
|
||||
"BD-005-MUTATION": "not-reached",
|
||||
"BD-005-PERSISTENCE": "not-reached",
|
||||
"BD-005-ACCESS-RECOVERY": "not-reached"
|
||||
},
|
||||
"execution": {
|
||||
"candidateSha": "f57a660088d6777c86aca22977354fa8b810e2be",
|
||||
"url": "http://127.0.0.1:37137",
|
||||
"actualPort": 37137,
|
||||
"runtimeProfile": "main-writable",
|
||||
"runtimeFlags": [
|
||||
"DEMO_MODE=true",
|
||||
"DEMO_READ_ONLY=false",
|
||||
"UNSAFE_ENABLE_MOCK_INTEGRATION=true"
|
||||
],
|
||||
"persona": "Morgan Mobile",
|
||||
"sessionId": "qa-v2-board-05",
|
||||
"timestamp": "2026-08-31T15:39:34.555Z",
|
||||
"viewport": "boundary-767",
|
||||
"input": "touch",
|
||||
"zoom": 100
|
||||
"candidateSha": "2d5edf46513b96c8b9f973d4a121b396d688e9bb",
|
||||
"url": null,
|
||||
"actualPort": null,
|
||||
"runtimeProfile": null,
|
||||
"runtimeFlags": [],
|
||||
"persona": null,
|
||||
"sessionId": null,
|
||||
"timestamp": null,
|
||||
"viewport": null,
|
||||
"input": null,
|
||||
"zoom": null
|
||||
},
|
||||
"findings": [
|
||||
{
|
||||
"id": "RV2-P1-001",
|
||||
"fingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"severity": "P1",
|
||||
"area": "routing/authentication",
|
||||
"title": "Locale rewrite causes an infinite browser redirect before the application renders",
|
||||
"summary": "A fresh Chromium session repeatedly requests the same entry route and ends on ERR_TOO_MANY_REDIRECTS, preventing the assigned browser flow.",
|
||||
"caseIds": [
|
||||
"BD-005-THRESHOLDS",
|
||||
"BD-005-MUTATION",
|
||||
"BD-005-PERSISTENCE",
|
||||
"BD-005-ACCESS-RECOVERY"
|
||||
],
|
||||
"evidence": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-05/BD-005-initial-network.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-05/BD-005-initial-redirect.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-05/BD-005-initial.webm",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-05/BD-005-retry-network.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-05/BD-005-retry-redirect.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-05/BD-005-retry.webm"
|
||||
]
|
||||
}
|
||||
],
|
||||
"artifacts": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-05/BD-005-initial-console.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-05/BD-005-initial-errors.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-05/BD-005-initial-network.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-05/BD-005-initial-redirect.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-05/BD-005-initial-snapshot.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-05/BD-005-initial-url.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-05/BD-005-initial.webm",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-05/BD-005-retry-console.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-05/BD-005-retry-errors.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-05/BD-005-retry-network.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-05/BD-005-retry-redirect.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-05/BD-005-retry-snapshot.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-05/BD-005-retry-url.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-05/BD-005-retry.webm"
|
||||
],
|
||||
"findings": [],
|
||||
"artifacts": [],
|
||||
"widgetChecks": [],
|
||||
"performance": {
|
||||
"measurements": [],
|
||||
"limitations": [
|
||||
"The application never rendered, so assigned feature, mutation, persistence, permission, viewport, and performance checks were blocked.",
|
||||
"No credentials were submitted and no product state was mutated.",
|
||||
"The finding was retried in a fresh Chromium context; console output was empty while document requests repeated until Chromium stopped the loop."
|
||||
]
|
||||
"limitations": []
|
||||
},
|
||||
"independentReproductions": [
|
||||
{
|
||||
"findingFingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"agentId": "qa-v2-preflight-01",
|
||||
"outcome": "reproduced",
|
||||
"evidence": [],
|
||||
"notes": "See preflight-01 for an independent Luna Max reproduction."
|
||||
}
|
||||
],
|
||||
"notes": "Report-only black-box run. No defect was fixed and no secret was recorded."
|
||||
"independentReproductions": [],
|
||||
"notes": "Not executed."
|
||||
}
|
||||
-->
|
||||
|
||||
@@ -91,7 +37,7 @@
|
||||
|
||||
| Metadata | Value |
|
||||
| --- | --- |
|
||||
| Status | blocked |
|
||||
| Status | not-reached |
|
||||
| Wave | board |
|
||||
| PR refs | #6450 |
|
||||
| Personas | Morgan Mobile |
|
||||
@@ -102,70 +48,39 @@
|
||||
| Input | touch, keyboard |
|
||||
| Widget kinds | None |
|
||||
| Artifact directory | [/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-05](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-05) |
|
||||
| Candidate SHA | f57a660088d6777c86aca22977354fa8b810e2be |
|
||||
| URL / actual port | http://127.0.0.1:37137 / 37137 |
|
||||
| Runtime profile / flags | main-writable; DEMO_MODE=true, DEMO_READ_ONLY=false, UNSAFE_ENABLE_MOCK_INTEGRATION=true |
|
||||
| Executed persona | Morgan Mobile |
|
||||
| Browser session ID | qa-v2-board-05 |
|
||||
| Timestamp | 2026-08-31T15:39:34.555Z |
|
||||
| Executed viewport / input / zoom | boundary-767 / touch / 100% |
|
||||
| Candidate SHA | 2d5edf46513b96c8b9f973d4a121b396d688e9bb |
|
||||
| URL / actual port | not-recorded |
|
||||
| Runtime profile / flags | not-recorded |
|
||||
| Executed persona | not-recorded |
|
||||
| Browser session ID | not-recorded |
|
||||
| Timestamp | not-recorded |
|
||||
| Executed viewport / input / zoom | not-recorded |
|
||||
|
||||
## Dogfood evidence
|
||||
|
||||
| Case ID | Status | Evidence | Observed | Expected |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| BD-005-THRESHOLDS | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-05) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Exercise every assigned viewport, zoom, and input, including breakpoint and dense-layout stress. |
|
||||
| BD-005-MUTATION | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-05) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Exercise create, move, resize, reorder, collapse, and delete paths that apply to this packet. |
|
||||
| BD-005-PERSISTENCE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-05) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Reload, switch layouts or sessions, and verify saved and reset state remains correct. |
|
||||
| BD-005-ACCESS-RECOVERY | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-05) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify Owner, Editor, Viewer, outsider, read-only, keyboard, cancellation, error, and recovery behavior that applies. |
|
||||
| BD-005-THRESHOLDS | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-05/BD-005-THRESHOLDS.png) | Not executed | Exercise every assigned viewport, zoom, and input, including breakpoint and dense-layout stress. |
|
||||
| BD-005-MUTATION | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-05/BD-005-MUTATION.png) | Not executed | Exercise create, move, resize, reorder, collapse, and delete paths that apply to this packet. |
|
||||
| BD-005-PERSISTENCE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-05/BD-005-PERSISTENCE.png) | Not executed | Reload, switch layouts or sessions, and verify saved and reset state remains correct. |
|
||||
| BD-005-ACCESS-RECOVERY | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-05/BD-005-ACCESS-RECOVERY.png) | Not executed | Verify Owner, Editor, Viewer, outsider, read-only, keyboard, cancellation, error, and recovery behavior that applies. |
|
||||
|
||||
## Performance measurements and limitations
|
||||
|
||||
No valid feature timing could be recorded because no application document rendered. Cold/warm, polling, rendering, memory, and recovery measurements remain blocked.
|
||||
Record structured measurements in `performance.measurements` with units, thresholds, status, and evidence. Record every environmental or tooling limitation in `performance.limitations`; leave measurements empty instead of inventing a result.
|
||||
|
||||
## Independent reproductions
|
||||
|
||||
The common routing failure was independently reproduced by qa-v2-preflight-01; the corresponding tracked packet contains its own browser evidence.
|
||||
Record a second agent's result in `independentReproductions` with the finding fingerprint, agent ID, outcome, evidence, and notes. An unattempted reproduction remains `not-reached`.
|
||||
|
||||
## Findings
|
||||
|
||||
### RV2-P1-001 — P1: locale rewrite causes an infinite browser redirect
|
||||
|
||||
Preconditions: candidate f57a660088d6777c86aca22977354fa8b810e2be, main-writable, boundary-767, 100% zoom, touch, fresh named Chromium session qa-v2-board-05.
|
||||
|
||||
1. Launch a fresh Chromium context with the Chromium argument --no-sandbox.
|
||||
2. Set the assigned viewport and open http://127.0.0.1:37137 or its authentication entry.
|
||||
3. Observe repeated document requests to the same route.
|
||||
4. Wait until Chromium displays ERR_TOO_MANY_REDIRECTS or chrome-error://chromewebdata/.
|
||||
5. Close the context, retry in a fresh context, and observe the same result.
|
||||
|
||||
Expected: the application renders the assigned entry, permitting authentication and the packet flow. Actual: the redirect loop prevents the application from rendering. Reproducibility: reproduced on retry and independently by another Luna Max preflight agent. Console output was empty; network and visual evidence are linked below.
|
||||
|
||||
## Artifacts
|
||||
|
||||
- [BD-005-initial-console.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-05/BD-005-initial-console.txt)
|
||||
- [BD-005-initial-errors.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-05/BD-005-initial-errors.txt)
|
||||
- [BD-005-initial-network.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-05/BD-005-initial-network.txt)
|
||||
- [BD-005-initial-redirect.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-05/BD-005-initial-redirect.png)
|
||||
- [BD-005-initial-snapshot.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-05/BD-005-initial-snapshot.txt)
|
||||
- [BD-005-initial-url.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-05/BD-005-initial-url.txt)
|
||||
- [BD-005-initial.webm](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-05/BD-005-initial.webm)
|
||||
- [BD-005-retry-console.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-05/BD-005-retry-console.txt)
|
||||
- [BD-005-retry-errors.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-05/BD-005-retry-errors.txt)
|
||||
- [BD-005-retry-network.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-05/BD-005-retry-network.txt)
|
||||
- [BD-005-retry-redirect.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-05/BD-005-retry-redirect.png)
|
||||
- [BD-005-retry-snapshot.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-05/BD-005-retry-snapshot.txt)
|
||||
- [BD-005-retry-url.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-05/BD-005-retry-url.txt)
|
||||
- [BD-005-retry.webm](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-05/BD-005-retry.webm)
|
||||
|
||||
## Mutations and persistence
|
||||
|
||||
No credentials were submitted and no product mutation occurred. Reload and fresh-session retries reproduced the routing failure, so application persistence was not reachable.
|
||||
No findings recorded. Add structured findings to the metadata block and mirror them here.
|
||||
|
||||
## Blockers and gaps
|
||||
|
||||
Every non-evidence case listed as blocked remains untested beyond the routing entry. No blocked cell is treated as passed.
|
||||
Not executed.
|
||||
|
||||
## Cleanup
|
||||
|
||||
The named browser session was closed by the browser agent. Artifacts remain under the untracked packet directory; no secret values were captured.
|
||||
Record created resources, cleanup outcome, console errors, and network failures. Never include secret values.
|
||||
@@ -1,73 +1,35 @@
|
||||
<!-- release-v2-qa-report
|
||||
{
|
||||
"packetId": "board-06",
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"caseStatuses": {
|
||||
"BD-006-THRESHOLDS": "blocked",
|
||||
"BD-006-MUTATION": "blocked",
|
||||
"BD-006-PERSISTENCE": "blocked",
|
||||
"BD-006-ACCESS-RECOVERY": "blocked"
|
||||
"BD-006-THRESHOLDS": "not-reached",
|
||||
"BD-006-MUTATION": "not-reached",
|
||||
"BD-006-PERSISTENCE": "not-reached",
|
||||
"BD-006-ACCESS-RECOVERY": "not-reached"
|
||||
},
|
||||
"execution": {
|
||||
"candidateSha": "f57a660088d6777c86aca22977354fa8b810e2be",
|
||||
"url": "http://127.0.0.1:37137",
|
||||
"actualPort": 37137,
|
||||
"runtimeProfile": "main-writable",
|
||||
"runtimeFlags": [
|
||||
"DEMO_MODE=true",
|
||||
"DEMO_READ_ONLY=false",
|
||||
"UNSAFE_ENABLE_MOCK_INTEGRATION=true"
|
||||
],
|
||||
"persona": "Brooke Minimalist",
|
||||
"sessionId": "qa-v2-board-06",
|
||||
"timestamp": "2026-08-31T15:43:02.917Z",
|
||||
"viewport": "mobile-375",
|
||||
"input": "mouse",
|
||||
"zoom": 100
|
||||
"candidateSha": "2d5edf46513b96c8b9f973d4a121b396d688e9bb",
|
||||
"url": null,
|
||||
"actualPort": null,
|
||||
"runtimeProfile": null,
|
||||
"runtimeFlags": [],
|
||||
"persona": null,
|
||||
"sessionId": null,
|
||||
"timestamp": null,
|
||||
"viewport": null,
|
||||
"input": null,
|
||||
"zoom": null
|
||||
},
|
||||
"findings": [
|
||||
{
|
||||
"id": "RV2-P1-001",
|
||||
"fingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"severity": "P1",
|
||||
"area": "routing/authentication",
|
||||
"title": "Locale rewrite causes an infinite browser redirect before the application renders",
|
||||
"summary": "A fresh Chromium session repeatedly requests the same entry route and ends on ERR_TOO_MANY_REDIRECTS, preventing the assigned browser flow.",
|
||||
"caseIds": [
|
||||
"BD-006-THRESHOLDS",
|
||||
"BD-006-MUTATION",
|
||||
"BD-006-PERSISTENCE",
|
||||
"BD-006-ACCESS-RECOVERY"
|
||||
],
|
||||
"evidence": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-06/BD-006-fresh-retry.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-06/BD-006-initial-redirect.png"
|
||||
]
|
||||
}
|
||||
],
|
||||
"artifacts": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-06/BD-006-fresh-retry.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-06/BD-006-initial-redirect.png"
|
||||
],
|
||||
"findings": [],
|
||||
"artifacts": [],
|
||||
"widgetChecks": [],
|
||||
"performance": {
|
||||
"measurements": [],
|
||||
"limitations": [
|
||||
"The application never rendered, so assigned feature, mutation, persistence, permission, viewport, and performance checks were blocked.",
|
||||
"No credentials were submitted and no product state was mutated.",
|
||||
"The finding was retried in a fresh Chromium context; console output was empty while document requests repeated until Chromium stopped the loop."
|
||||
]
|
||||
"limitations": []
|
||||
},
|
||||
"independentReproductions": [
|
||||
{
|
||||
"findingFingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"agentId": "qa-v2-preflight-01",
|
||||
"outcome": "reproduced",
|
||||
"evidence": [],
|
||||
"notes": "See preflight-01 for an independent Luna Max reproduction."
|
||||
}
|
||||
],
|
||||
"notes": "Report-only black-box run. No defect was fixed and no secret was recorded."
|
||||
"independentReproductions": [],
|
||||
"notes": "Not executed."
|
||||
}
|
||||
-->
|
||||
|
||||
@@ -75,7 +37,7 @@
|
||||
|
||||
| Metadata | Value |
|
||||
| --- | --- |
|
||||
| Status | blocked |
|
||||
| Status | not-reached |
|
||||
| Wave | board |
|
||||
| PR refs | #6502 |
|
||||
| Personas | Brooke Minimalist |
|
||||
@@ -86,58 +48,39 @@
|
||||
| Input | mouse, touch |
|
||||
| Widget kinds | None |
|
||||
| Artifact directory | [/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-06](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-06) |
|
||||
| Candidate SHA | f57a660088d6777c86aca22977354fa8b810e2be |
|
||||
| URL / actual port | http://127.0.0.1:37137 / 37137 |
|
||||
| Runtime profile / flags | main-writable; DEMO_MODE=true, DEMO_READ_ONLY=false, UNSAFE_ENABLE_MOCK_INTEGRATION=true |
|
||||
| Executed persona | Brooke Minimalist |
|
||||
| Browser session ID | qa-v2-board-06 |
|
||||
| Timestamp | 2026-08-31T15:43:02.917Z |
|
||||
| Executed viewport / input / zoom | mobile-375 / mouse / 100% |
|
||||
| Candidate SHA | 2d5edf46513b96c8b9f973d4a121b396d688e9bb |
|
||||
| URL / actual port | not-recorded |
|
||||
| Runtime profile / flags | not-recorded |
|
||||
| Executed persona | not-recorded |
|
||||
| Browser session ID | not-recorded |
|
||||
| Timestamp | not-recorded |
|
||||
| Executed viewport / input / zoom | not-recorded |
|
||||
|
||||
## Dogfood evidence
|
||||
|
||||
| Case ID | Status | Evidence | Observed | Expected |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| BD-006-THRESHOLDS | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-06) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Exercise every assigned viewport, zoom, and input, including breakpoint and dense-layout stress. |
|
||||
| BD-006-MUTATION | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-06) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Exercise create, move, resize, reorder, collapse, and delete paths that apply to this packet. |
|
||||
| BD-006-PERSISTENCE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-06) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Reload, switch layouts or sessions, and verify saved and reset state remains correct. |
|
||||
| BD-006-ACCESS-RECOVERY | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-06) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify Owner, Editor, Viewer, outsider, read-only, keyboard, cancellation, error, and recovery behavior that applies. |
|
||||
| BD-006-THRESHOLDS | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-06/BD-006-THRESHOLDS.png) | Not executed | Exercise every assigned viewport, zoom, and input, including breakpoint and dense-layout stress. |
|
||||
| BD-006-MUTATION | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-06/BD-006-MUTATION.png) | Not executed | Exercise create, move, resize, reorder, collapse, and delete paths that apply to this packet. |
|
||||
| BD-006-PERSISTENCE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-06/BD-006-PERSISTENCE.png) | Not executed | Reload, switch layouts or sessions, and verify saved and reset state remains correct. |
|
||||
| BD-006-ACCESS-RECOVERY | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-06/BD-006-ACCESS-RECOVERY.png) | Not executed | Verify Owner, Editor, Viewer, outsider, read-only, keyboard, cancellation, error, and recovery behavior that applies. |
|
||||
|
||||
## Performance measurements and limitations
|
||||
|
||||
No valid feature timing could be recorded because no application document rendered. Cold/warm, polling, rendering, memory, and recovery measurements remain blocked.
|
||||
Record structured measurements in `performance.measurements` with units, thresholds, status, and evidence. Record every environmental or tooling limitation in `performance.limitations`; leave measurements empty instead of inventing a result.
|
||||
|
||||
## Independent reproductions
|
||||
|
||||
The common routing failure was independently reproduced by qa-v2-preflight-01; the corresponding tracked packet contains its own browser evidence.
|
||||
Record a second agent's result in `independentReproductions` with the finding fingerprint, agent ID, outcome, evidence, and notes. An unattempted reproduction remains `not-reached`.
|
||||
|
||||
## Findings
|
||||
|
||||
### RV2-P1-001 — P1: locale rewrite causes an infinite browser redirect
|
||||
|
||||
Preconditions: candidate f57a660088d6777c86aca22977354fa8b810e2be, main-writable, mobile-375, 100% zoom, mouse, fresh named Chromium session qa-v2-board-06.
|
||||
|
||||
1. Launch a fresh Chromium context with the Chromium argument --no-sandbox.
|
||||
2. Set the assigned viewport and open http://127.0.0.1:37137 or its authentication entry.
|
||||
3. Observe repeated document requests to the same route.
|
||||
4. Wait until Chromium displays ERR_TOO_MANY_REDIRECTS or chrome-error://chromewebdata/.
|
||||
5. Close the context, retry in a fresh context, and observe the same result.
|
||||
|
||||
Expected: the application renders the assigned entry, permitting authentication and the packet flow. Actual: the redirect loop prevents the application from rendering. Reproducibility: reproduced on retry and independently by another Luna Max preflight agent. Console output was empty; network and visual evidence are linked below.
|
||||
|
||||
## Artifacts
|
||||
|
||||
- [BD-006-fresh-retry.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-06/BD-006-fresh-retry.png)
|
||||
- [BD-006-initial-redirect.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-06/BD-006-initial-redirect.png)
|
||||
|
||||
## Mutations and persistence
|
||||
|
||||
No credentials were submitted and no product mutation occurred. Reload and fresh-session retries reproduced the routing failure, so application persistence was not reachable.
|
||||
No findings recorded. Add structured findings to the metadata block and mirror them here.
|
||||
|
||||
## Blockers and gaps
|
||||
|
||||
Every non-evidence case listed as blocked remains untested beyond the routing entry. No blocked cell is treated as passed.
|
||||
Not executed.
|
||||
|
||||
## Cleanup
|
||||
|
||||
The named browser session was closed by the browser agent. Artifacts remain under the untracked packet directory; no secret values were captured.
|
||||
Record created resources, cleanup outcome, console errors, and network failures. Never include secret values.
|
||||
@@ -1,78 +1,35 @@
|
||||
<!-- release-v2-qa-report
|
||||
{
|
||||
"packetId": "board-07",
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"caseStatuses": {
|
||||
"BD-007-THRESHOLDS": "blocked",
|
||||
"BD-007-MUTATION": "blocked",
|
||||
"BD-007-PERSISTENCE": "blocked",
|
||||
"BD-007-ACCESS-RECOVERY": "blocked"
|
||||
"BD-007-THRESHOLDS": "not-reached",
|
||||
"BD-007-MUTATION": "not-reached",
|
||||
"BD-007-PERSISTENCE": "not-reached",
|
||||
"BD-007-ACCESS-RECOVERY": "not-reached"
|
||||
},
|
||||
"execution": {
|
||||
"candidateSha": "f57a660088d6777c86aca22977354fa8b810e2be",
|
||||
"url": "http://127.0.0.1:46641",
|
||||
"actualPort": 46641,
|
||||
"runtimeProfile": "main-readonly",
|
||||
"runtimeFlags": [
|
||||
"DEMO_MODE=true",
|
||||
"DEMO_READ_ONLY=true",
|
||||
"UNSAFE_ENABLE_MOCK_INTEGRATION=true"
|
||||
],
|
||||
"persona": "Vivian Viewer",
|
||||
"sessionId": "qa-v2-board-07",
|
||||
"timestamp": "2026-08-31T15:45:54.133Z",
|
||||
"viewport": "desktop-1440",
|
||||
"input": "mouse",
|
||||
"zoom": 100
|
||||
"candidateSha": "2d5edf46513b96c8b9f973d4a121b396d688e9bb",
|
||||
"url": null,
|
||||
"actualPort": null,
|
||||
"runtimeProfile": null,
|
||||
"runtimeFlags": [],
|
||||
"persona": null,
|
||||
"sessionId": null,
|
||||
"timestamp": null,
|
||||
"viewport": null,
|
||||
"input": null,
|
||||
"zoom": null
|
||||
},
|
||||
"findings": [
|
||||
{
|
||||
"id": "RV2-P1-001",
|
||||
"fingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"severity": "P1",
|
||||
"area": "routing/authentication",
|
||||
"title": "Locale rewrite causes an infinite browser redirect before the application renders",
|
||||
"summary": "A fresh Chromium session repeatedly requests the same entry route and ends on ERR_TOO_MANY_REDIRECTS, preventing the assigned browser flow.",
|
||||
"caseIds": [
|
||||
"BD-007-THRESHOLDS",
|
||||
"BD-007-MUTATION",
|
||||
"BD-007-PERSISTENCE",
|
||||
"BD-007-ACCESS-RECOVERY"
|
||||
],
|
||||
"evidence": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-07/network/redirect-initial-network.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-07/screenshots/redirect-fresh-retry.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-07/screenshots/redirect-initial.png"
|
||||
]
|
||||
}
|
||||
],
|
||||
"artifacts": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-07/console/redirect-fresh-retry-console.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-07/console/redirect-initial-console.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-07/console/redirect-initial-url.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-07/network/redirect-initial-network.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-07/screenshots/redirect-fresh-retry.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-07/screenshots/redirect-initial.png"
|
||||
],
|
||||
"findings": [],
|
||||
"artifacts": [],
|
||||
"widgetChecks": [],
|
||||
"performance": {
|
||||
"measurements": [],
|
||||
"limitations": [
|
||||
"The application never rendered, so assigned feature, mutation, persistence, permission, viewport, and performance checks were blocked.",
|
||||
"No credentials were submitted and no product state was mutated.",
|
||||
"The finding was retried in a fresh Chromium context; console output was empty while document requests repeated until Chromium stopped the loop."
|
||||
]
|
||||
"limitations": []
|
||||
},
|
||||
"independentReproductions": [
|
||||
{
|
||||
"findingFingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"agentId": "qa-v2-preflight-01",
|
||||
"outcome": "reproduced",
|
||||
"evidence": [],
|
||||
"notes": "See preflight-01 for an independent Luna Max reproduction."
|
||||
}
|
||||
],
|
||||
"notes": "Report-only black-box run. No defect was fixed and no secret was recorded."
|
||||
"independentReproductions": [],
|
||||
"notes": "Not executed."
|
||||
}
|
||||
-->
|
||||
|
||||
@@ -80,7 +37,7 @@
|
||||
|
||||
| Metadata | Value |
|
||||
| --- | --- |
|
||||
| Status | blocked |
|
||||
| Status | not-reached |
|
||||
| Wave | board |
|
||||
| PR refs | #6503, #6545 |
|
||||
| Personas | Rowan Owner, Eden Editor, Vivian Viewer, Nolan Outsider |
|
||||
@@ -91,62 +48,39 @@
|
||||
| Input | mouse, keyboard |
|
||||
| Widget kinds | None |
|
||||
| Artifact directory | [/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-07](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-07) |
|
||||
| Candidate SHA | f57a660088d6777c86aca22977354fa8b810e2be |
|
||||
| URL / actual port | http://127.0.0.1:46641 / 46641 |
|
||||
| Runtime profile / flags | main-readonly; DEMO_MODE=true, DEMO_READ_ONLY=true, UNSAFE_ENABLE_MOCK_INTEGRATION=true |
|
||||
| Executed persona | Vivian Viewer |
|
||||
| Browser session ID | qa-v2-board-07 |
|
||||
| Timestamp | 2026-08-31T15:45:54.133Z |
|
||||
| Executed viewport / input / zoom | desktop-1440 / mouse / 100% |
|
||||
| Candidate SHA | 2d5edf46513b96c8b9f973d4a121b396d688e9bb |
|
||||
| URL / actual port | not-recorded |
|
||||
| Runtime profile / flags | not-recorded |
|
||||
| Executed persona | not-recorded |
|
||||
| Browser session ID | not-recorded |
|
||||
| Timestamp | not-recorded |
|
||||
| Executed viewport / input / zoom | not-recorded |
|
||||
|
||||
## Dogfood evidence
|
||||
|
||||
| Case ID | Status | Evidence | Observed | Expected |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| BD-007-THRESHOLDS | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-07) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Exercise every assigned viewport, zoom, and input, including breakpoint and dense-layout stress. |
|
||||
| BD-007-MUTATION | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-07) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Exercise create, move, resize, reorder, collapse, and delete paths that apply to this packet. |
|
||||
| BD-007-PERSISTENCE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-07) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Reload, switch layouts or sessions, and verify saved and reset state remains correct. |
|
||||
| BD-007-ACCESS-RECOVERY | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-07) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify Owner, Editor, Viewer, outsider, read-only, keyboard, cancellation, error, and recovery behavior that applies. |
|
||||
| BD-007-THRESHOLDS | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-07/BD-007-THRESHOLDS.png) | Not executed | Exercise every assigned viewport, zoom, and input, including breakpoint and dense-layout stress. |
|
||||
| BD-007-MUTATION | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-07/BD-007-MUTATION.png) | Not executed | Exercise create, move, resize, reorder, collapse, and delete paths that apply to this packet. |
|
||||
| BD-007-PERSISTENCE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-07/BD-007-PERSISTENCE.png) | Not executed | Reload, switch layouts or sessions, and verify saved and reset state remains correct. |
|
||||
| BD-007-ACCESS-RECOVERY | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-07/BD-007-ACCESS-RECOVERY.png) | Not executed | Verify Owner, Editor, Viewer, outsider, read-only, keyboard, cancellation, error, and recovery behavior that applies. |
|
||||
|
||||
## Performance measurements and limitations
|
||||
|
||||
No valid feature timing could be recorded because no application document rendered. Cold/warm, polling, rendering, memory, and recovery measurements remain blocked.
|
||||
Record structured measurements in `performance.measurements` with units, thresholds, status, and evidence. Record every environmental or tooling limitation in `performance.limitations`; leave measurements empty instead of inventing a result.
|
||||
|
||||
## Independent reproductions
|
||||
|
||||
The common routing failure was independently reproduced by qa-v2-preflight-01; the corresponding tracked packet contains its own browser evidence.
|
||||
Record a second agent's result in `independentReproductions` with the finding fingerprint, agent ID, outcome, evidence, and notes. An unattempted reproduction remains `not-reached`.
|
||||
|
||||
## Findings
|
||||
|
||||
### RV2-P1-001 — P1: locale rewrite causes an infinite browser redirect
|
||||
|
||||
Preconditions: candidate f57a660088d6777c86aca22977354fa8b810e2be, main-readonly, desktop-1440, 100% zoom, mouse, fresh named Chromium session qa-v2-board-07.
|
||||
|
||||
1. Launch a fresh Chromium context with the Chromium argument --no-sandbox.
|
||||
2. Set the assigned viewport and open http://127.0.0.1:46641 or its authentication entry.
|
||||
3. Observe repeated document requests to the same route.
|
||||
4. Wait until Chromium displays ERR_TOO_MANY_REDIRECTS or chrome-error://chromewebdata/.
|
||||
5. Close the context, retry in a fresh context, and observe the same result.
|
||||
|
||||
Expected: the application renders the assigned entry, permitting authentication and the packet flow. Actual: the redirect loop prevents the application from rendering. Reproducibility: reproduced on retry and independently by another Luna Max preflight agent. Console output was empty; network and visual evidence are linked below.
|
||||
|
||||
## Artifacts
|
||||
|
||||
- [redirect-fresh-retry-console.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-07/console/redirect-fresh-retry-console.txt)
|
||||
- [redirect-initial-console.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-07/console/redirect-initial-console.txt)
|
||||
- [redirect-initial-url.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-07/console/redirect-initial-url.txt)
|
||||
- [redirect-initial-network.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-07/network/redirect-initial-network.txt)
|
||||
- [redirect-fresh-retry.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-07/screenshots/redirect-fresh-retry.png)
|
||||
- [redirect-initial.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-07/screenshots/redirect-initial.png)
|
||||
|
||||
## Mutations and persistence
|
||||
|
||||
No credentials were submitted and no product mutation occurred. Reload and fresh-session retries reproduced the routing failure, so application persistence was not reachable.
|
||||
No findings recorded. Add structured findings to the metadata block and mirror them here.
|
||||
|
||||
## Blockers and gaps
|
||||
|
||||
Every non-evidence case listed as blocked remains untested beyond the routing entry. No blocked cell is treated as passed.
|
||||
Not executed.
|
||||
|
||||
## Cleanup
|
||||
|
||||
The named browser session was closed by the browser agent. Artifacts remain under the untracked packet directory; no secret values were captured.
|
||||
Record created resources, cleanup outcome, console errors, and network failures. Never include secret values.
|
||||
@@ -1,78 +1,35 @@
|
||||
<!-- release-v2-qa-report
|
||||
{
|
||||
"packetId": "board-08",
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"caseStatuses": {
|
||||
"BD-008-THRESHOLDS": "blocked",
|
||||
"BD-008-MUTATION": "blocked",
|
||||
"BD-008-PERSISTENCE": "blocked",
|
||||
"BD-008-ACCESS-RECOVERY": "blocked"
|
||||
"BD-008-THRESHOLDS": "not-reached",
|
||||
"BD-008-MUTATION": "not-reached",
|
||||
"BD-008-PERSISTENCE": "not-reached",
|
||||
"BD-008-ACCESS-RECOVERY": "not-reached"
|
||||
},
|
||||
"execution": {
|
||||
"candidateSha": "f57a660088d6777c86aca22977354fa8b810e2be",
|
||||
"url": "http://127.0.0.1:37137",
|
||||
"actualPort": 37137,
|
||||
"runtimeProfile": "main-writable",
|
||||
"runtimeFlags": [
|
||||
"DEMO_MODE=true",
|
||||
"DEMO_READ_ONLY=false",
|
||||
"UNSAFE_ENABLE_MOCK_INTEGRATION=true"
|
||||
],
|
||||
"persona": "Avery Admin",
|
||||
"sessionId": "qa-v2-board-08",
|
||||
"timestamp": "2026-08-31T15:48:51.943Z",
|
||||
"viewport": "desktop-1280",
|
||||
"input": "mouse",
|
||||
"zoom": 100
|
||||
"candidateSha": "2d5edf46513b96c8b9f973d4a121b396d688e9bb",
|
||||
"url": null,
|
||||
"actualPort": null,
|
||||
"runtimeProfile": null,
|
||||
"runtimeFlags": [],
|
||||
"persona": null,
|
||||
"sessionId": null,
|
||||
"timestamp": null,
|
||||
"viewport": null,
|
||||
"input": null,
|
||||
"zoom": null
|
||||
},
|
||||
"findings": [
|
||||
{
|
||||
"id": "RV2-P1-001",
|
||||
"fingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"severity": "P1",
|
||||
"area": "routing/authentication",
|
||||
"title": "Locale rewrite causes an infinite browser redirect before the application renders",
|
||||
"summary": "A fresh Chromium session repeatedly requests the same entry route and ends on ERR_TOO_MANY_REDIRECTS, preventing the assigned browser flow.",
|
||||
"caseIds": [
|
||||
"BD-008-THRESHOLDS",
|
||||
"BD-008-MUTATION",
|
||||
"BD-008-PERSISTENCE",
|
||||
"BD-008-ACCESS-RECOVERY"
|
||||
],
|
||||
"evidence": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-08/fresh-context-redirect.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-08/fresh-context-retry.webm",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-08/initial-navigation.webm",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-08/initial-redirect.png"
|
||||
]
|
||||
}
|
||||
],
|
||||
"artifacts": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-08/board-08-report.md",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-08/fresh-context-redirect.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-08/fresh-context-retry.webm",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-08/initial-navigation.webm",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-08/initial-redirect.png"
|
||||
],
|
||||
"findings": [],
|
||||
"artifacts": [],
|
||||
"widgetChecks": [],
|
||||
"performance": {
|
||||
"measurements": [],
|
||||
"limitations": [
|
||||
"The application never rendered, so assigned feature, mutation, persistence, permission, viewport, and performance checks were blocked.",
|
||||
"No credentials were submitted and no product state was mutated.",
|
||||
"The finding was retried in a fresh Chromium context; console output was empty while document requests repeated until Chromium stopped the loop."
|
||||
]
|
||||
"limitations": []
|
||||
},
|
||||
"independentReproductions": [
|
||||
{
|
||||
"findingFingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"agentId": "qa-v2-preflight-01",
|
||||
"outcome": "reproduced",
|
||||
"evidence": [],
|
||||
"notes": "See preflight-01 for an independent Luna Max reproduction."
|
||||
}
|
||||
],
|
||||
"notes": "Report-only black-box run. No defect was fixed and no secret was recorded."
|
||||
"independentReproductions": [],
|
||||
"notes": "Not executed."
|
||||
}
|
||||
-->
|
||||
|
||||
@@ -80,7 +37,7 @@
|
||||
|
||||
| Metadata | Value |
|
||||
| --- | --- |
|
||||
| Status | blocked |
|
||||
| Status | not-reached |
|
||||
| Wave | board |
|
||||
| PR refs | #6545 |
|
||||
| Personas | Avery Admin |
|
||||
@@ -91,61 +48,39 @@
|
||||
| Input | mouse, keyboard |
|
||||
| Widget kinds | None |
|
||||
| Artifact directory | [/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-08](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-08) |
|
||||
| Candidate SHA | f57a660088d6777c86aca22977354fa8b810e2be |
|
||||
| URL / actual port | http://127.0.0.1:37137 / 37137 |
|
||||
| Runtime profile / flags | main-writable; DEMO_MODE=true, DEMO_READ_ONLY=false, UNSAFE_ENABLE_MOCK_INTEGRATION=true |
|
||||
| Executed persona | Avery Admin |
|
||||
| Browser session ID | qa-v2-board-08 |
|
||||
| Timestamp | 2026-08-31T15:48:51.943Z |
|
||||
| Executed viewport / input / zoom | desktop-1280 / mouse / 100% |
|
||||
| Candidate SHA | 2d5edf46513b96c8b9f973d4a121b396d688e9bb |
|
||||
| URL / actual port | not-recorded |
|
||||
| Runtime profile / flags | not-recorded |
|
||||
| Executed persona | not-recorded |
|
||||
| Browser session ID | not-recorded |
|
||||
| Timestamp | not-recorded |
|
||||
| Executed viewport / input / zoom | not-recorded |
|
||||
|
||||
## Dogfood evidence
|
||||
|
||||
| Case ID | Status | Evidence | Observed | Expected |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| BD-008-THRESHOLDS | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-08) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Exercise every assigned viewport, zoom, and input, including breakpoint and dense-layout stress. |
|
||||
| BD-008-MUTATION | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-08) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Exercise create, move, resize, reorder, collapse, and delete paths that apply to this packet. |
|
||||
| BD-008-PERSISTENCE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-08) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Reload, switch layouts or sessions, and verify saved and reset state remains correct. |
|
||||
| BD-008-ACCESS-RECOVERY | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-08) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify Owner, Editor, Viewer, outsider, read-only, keyboard, cancellation, error, and recovery behavior that applies. |
|
||||
| BD-008-THRESHOLDS | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-08/BD-008-THRESHOLDS.png) | Not executed | Exercise every assigned viewport, zoom, and input, including breakpoint and dense-layout stress. |
|
||||
| BD-008-MUTATION | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-08/BD-008-MUTATION.png) | Not executed | Exercise create, move, resize, reorder, collapse, and delete paths that apply to this packet. |
|
||||
| BD-008-PERSISTENCE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-08/BD-008-PERSISTENCE.png) | Not executed | Reload, switch layouts or sessions, and verify saved and reset state remains correct. |
|
||||
| BD-008-ACCESS-RECOVERY | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-08/BD-008-ACCESS-RECOVERY.png) | Not executed | Verify Owner, Editor, Viewer, outsider, read-only, keyboard, cancellation, error, and recovery behavior that applies. |
|
||||
|
||||
## Performance measurements and limitations
|
||||
|
||||
No valid feature timing could be recorded because no application document rendered. Cold/warm, polling, rendering, memory, and recovery measurements remain blocked.
|
||||
Record structured measurements in `performance.measurements` with units, thresholds, status, and evidence. Record every environmental or tooling limitation in `performance.limitations`; leave measurements empty instead of inventing a result.
|
||||
|
||||
## Independent reproductions
|
||||
|
||||
The common routing failure was independently reproduced by qa-v2-preflight-01; the corresponding tracked packet contains its own browser evidence.
|
||||
Record a second agent's result in `independentReproductions` with the finding fingerprint, agent ID, outcome, evidence, and notes. An unattempted reproduction remains `not-reached`.
|
||||
|
||||
## Findings
|
||||
|
||||
### RV2-P1-001 — P1: locale rewrite causes an infinite browser redirect
|
||||
|
||||
Preconditions: candidate f57a660088d6777c86aca22977354fa8b810e2be, main-writable, desktop-1280, 100% zoom, mouse, fresh named Chromium session qa-v2-board-08.
|
||||
|
||||
1. Launch a fresh Chromium context with the Chromium argument --no-sandbox.
|
||||
2. Set the assigned viewport and open http://127.0.0.1:37137 or its authentication entry.
|
||||
3. Observe repeated document requests to the same route.
|
||||
4. Wait until Chromium displays ERR_TOO_MANY_REDIRECTS or chrome-error://chromewebdata/.
|
||||
5. Close the context, retry in a fresh context, and observe the same result.
|
||||
|
||||
Expected: the application renders the assigned entry, permitting authentication and the packet flow. Actual: the redirect loop prevents the application from rendering. Reproducibility: reproduced on retry and independently by another Luna Max preflight agent. Console output was empty; network and visual evidence are linked below.
|
||||
|
||||
## Artifacts
|
||||
|
||||
- [board-08-report.md](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-08/board-08-report.md)
|
||||
- [fresh-context-redirect.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-08/fresh-context-redirect.png)
|
||||
- [fresh-context-retry.webm](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-08/fresh-context-retry.webm)
|
||||
- [initial-navigation.webm](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-08/initial-navigation.webm)
|
||||
- [initial-redirect.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-08/initial-redirect.png)
|
||||
|
||||
## Mutations and persistence
|
||||
|
||||
No credentials were submitted and no product mutation occurred. Reload and fresh-session retries reproduced the routing failure, so application persistence was not reachable.
|
||||
No findings recorded. Add structured findings to the metadata block and mirror them here.
|
||||
|
||||
## Blockers and gaps
|
||||
|
||||
Every non-evidence case listed as blocked remains untested beyond the routing entry. No blocked cell is treated as passed.
|
||||
Not executed.
|
||||
|
||||
## Cleanup
|
||||
|
||||
The named browser session was closed by the browser agent. Artifacts remain under the untracked packet directory; no secret values were captured.
|
||||
Record created resources, cleanup outcome, console errors, and network failures. Never include secret values.
|
||||
@@ -1,85 +1,35 @@
|
||||
<!-- release-v2-qa-report
|
||||
{
|
||||
"packetId": "board-09",
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"caseStatuses": {
|
||||
"BD-009-THRESHOLDS": "blocked",
|
||||
"BD-009-MUTATION": "blocked",
|
||||
"BD-009-PERSISTENCE": "blocked",
|
||||
"BD-009-ACCESS-RECOVERY": "blocked"
|
||||
"BD-009-THRESHOLDS": "not-reached",
|
||||
"BD-009-MUTATION": "not-reached",
|
||||
"BD-009-PERSISTENCE": "not-reached",
|
||||
"BD-009-ACCESS-RECOVERY": "not-reached"
|
||||
},
|
||||
"execution": {
|
||||
"candidateSha": "f57a660088d6777c86aca22977354fa8b810e2be",
|
||||
"url": "http://127.0.0.1:37137",
|
||||
"actualPort": 37137,
|
||||
"runtimeProfile": "main-writable",
|
||||
"runtimeFlags": [
|
||||
"DEMO_MODE=true",
|
||||
"DEMO_READ_ONLY=false",
|
||||
"UNSAFE_ENABLE_MOCK_INTEGRATION=true"
|
||||
],
|
||||
"persona": "Kira Keyboard",
|
||||
"sessionId": "qa-v2-board-09",
|
||||
"timestamp": "2026-08-31T15:52:25.285Z",
|
||||
"viewport": "mobile-320",
|
||||
"input": "keyboard",
|
||||
"zoom": 100
|
||||
"candidateSha": "2d5edf46513b96c8b9f973d4a121b396d688e9bb",
|
||||
"url": null,
|
||||
"actualPort": null,
|
||||
"runtimeProfile": null,
|
||||
"runtimeFlags": [],
|
||||
"persona": null,
|
||||
"sessionId": null,
|
||||
"timestamp": null,
|
||||
"viewport": null,
|
||||
"input": null,
|
||||
"zoom": null
|
||||
},
|
||||
"findings": [
|
||||
{
|
||||
"id": "RV2-P1-001",
|
||||
"fingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"severity": "P1",
|
||||
"area": "routing/authentication",
|
||||
"title": "Locale rewrite causes an infinite browser redirect before the application renders",
|
||||
"summary": "A fresh Chromium session repeatedly requests the same entry route and ends on ERR_TOO_MANY_REDIRECTS, preventing the assigned browser flow.",
|
||||
"caseIds": [
|
||||
"BD-009-THRESHOLDS",
|
||||
"BD-009-MUTATION",
|
||||
"BD-009-PERSISTENCE",
|
||||
"BD-009-ACCESS-RECOVERY"
|
||||
],
|
||||
"evidence": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-09/BD-009-fresh-retry-network.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-09/BD-009-fresh-retry.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-09/BD-009-initial-network.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-09/BD-009-initial-redirect.png"
|
||||
]
|
||||
}
|
||||
],
|
||||
"artifacts": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-09/BD-009-fresh-retry-console.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-09/BD-009-fresh-retry-errors.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-09/BD-009-fresh-retry-network.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-09/BD-009-fresh-retry-snapshot.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-09/BD-009-fresh-retry-url.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-09/BD-009-fresh-retry.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-09/BD-009-initial-console.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-09/BD-009-initial-errors.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-09/BD-009-initial-network.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-09/BD-009-initial-redirect.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-09/BD-009-initial-snapshot.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-09/BD-009-initial-url.txt"
|
||||
],
|
||||
"findings": [],
|
||||
"artifacts": [],
|
||||
"widgetChecks": [],
|
||||
"performance": {
|
||||
"measurements": [],
|
||||
"limitations": [
|
||||
"The application never rendered, so assigned feature, mutation, persistence, permission, viewport, and performance checks were blocked.",
|
||||
"No credentials were submitted and no product state was mutated.",
|
||||
"The finding was retried in a fresh Chromium context; console output was empty while document requests repeated until Chromium stopped the loop."
|
||||
]
|
||||
"limitations": []
|
||||
},
|
||||
"independentReproductions": [
|
||||
{
|
||||
"findingFingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"agentId": "qa-v2-preflight-01",
|
||||
"outcome": "reproduced",
|
||||
"evidence": [],
|
||||
"notes": "See preflight-01 for an independent Luna Max reproduction."
|
||||
}
|
||||
],
|
||||
"notes": "Report-only black-box run. No defect was fixed and no secret was recorded."
|
||||
"independentReproductions": [],
|
||||
"notes": "Not executed."
|
||||
}
|
||||
-->
|
||||
|
||||
@@ -87,7 +37,7 @@
|
||||
|
||||
| Metadata | Value |
|
||||
| --- | --- |
|
||||
| Status | blocked |
|
||||
| Status | not-reached |
|
||||
| Wave | board |
|
||||
| PR refs | #6503, #6450 |
|
||||
| Personas | Kira Keyboard |
|
||||
@@ -98,68 +48,39 @@
|
||||
| Input | keyboard |
|
||||
| Widget kinds | None |
|
||||
| Artifact directory | [/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-09](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-09) |
|
||||
| Candidate SHA | f57a660088d6777c86aca22977354fa8b810e2be |
|
||||
| URL / actual port | http://127.0.0.1:37137 / 37137 |
|
||||
| Runtime profile / flags | main-writable; DEMO_MODE=true, DEMO_READ_ONLY=false, UNSAFE_ENABLE_MOCK_INTEGRATION=true |
|
||||
| Executed persona | Kira Keyboard |
|
||||
| Browser session ID | qa-v2-board-09 |
|
||||
| Timestamp | 2026-08-31T15:52:25.285Z |
|
||||
| Executed viewport / input / zoom | mobile-320 / keyboard / 100% |
|
||||
| Candidate SHA | 2d5edf46513b96c8b9f973d4a121b396d688e9bb |
|
||||
| URL / actual port | not-recorded |
|
||||
| Runtime profile / flags | not-recorded |
|
||||
| Executed persona | not-recorded |
|
||||
| Browser session ID | not-recorded |
|
||||
| Timestamp | not-recorded |
|
||||
| Executed viewport / input / zoom | not-recorded |
|
||||
|
||||
## Dogfood evidence
|
||||
|
||||
| Case ID | Status | Evidence | Observed | Expected |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| BD-009-THRESHOLDS | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-09) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Exercise every assigned viewport, zoom, and input, including breakpoint and dense-layout stress. |
|
||||
| BD-009-MUTATION | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-09) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Exercise create, move, resize, reorder, collapse, and delete paths that apply to this packet. |
|
||||
| BD-009-PERSISTENCE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-09) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Reload, switch layouts or sessions, and verify saved and reset state remains correct. |
|
||||
| BD-009-ACCESS-RECOVERY | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-09) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify Owner, Editor, Viewer, outsider, read-only, keyboard, cancellation, error, and recovery behavior that applies. |
|
||||
| BD-009-THRESHOLDS | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-09/BD-009-THRESHOLDS.png) | Not executed | Exercise every assigned viewport, zoom, and input, including breakpoint and dense-layout stress. |
|
||||
| BD-009-MUTATION | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-09/BD-009-MUTATION.png) | Not executed | Exercise create, move, resize, reorder, collapse, and delete paths that apply to this packet. |
|
||||
| BD-009-PERSISTENCE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-09/BD-009-PERSISTENCE.png) | Not executed | Reload, switch layouts or sessions, and verify saved and reset state remains correct. |
|
||||
| BD-009-ACCESS-RECOVERY | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-09/BD-009-ACCESS-RECOVERY.png) | Not executed | Verify Owner, Editor, Viewer, outsider, read-only, keyboard, cancellation, error, and recovery behavior that applies. |
|
||||
|
||||
## Performance measurements and limitations
|
||||
|
||||
No valid feature timing could be recorded because no application document rendered. Cold/warm, polling, rendering, memory, and recovery measurements remain blocked.
|
||||
Record structured measurements in `performance.measurements` with units, thresholds, status, and evidence. Record every environmental or tooling limitation in `performance.limitations`; leave measurements empty instead of inventing a result.
|
||||
|
||||
## Independent reproductions
|
||||
|
||||
The common routing failure was independently reproduced by qa-v2-preflight-01; the corresponding tracked packet contains its own browser evidence.
|
||||
Record a second agent's result in `independentReproductions` with the finding fingerprint, agent ID, outcome, evidence, and notes. An unattempted reproduction remains `not-reached`.
|
||||
|
||||
## Findings
|
||||
|
||||
### RV2-P1-001 — P1: locale rewrite causes an infinite browser redirect
|
||||
|
||||
Preconditions: candidate f57a660088d6777c86aca22977354fa8b810e2be, main-writable, mobile-320, 100% zoom, keyboard, fresh named Chromium session qa-v2-board-09.
|
||||
|
||||
1. Launch a fresh Chromium context with the Chromium argument --no-sandbox.
|
||||
2. Set the assigned viewport and open http://127.0.0.1:37137 or its authentication entry.
|
||||
3. Observe repeated document requests to the same route.
|
||||
4. Wait until Chromium displays ERR_TOO_MANY_REDIRECTS or chrome-error://chromewebdata/.
|
||||
5. Close the context, retry in a fresh context, and observe the same result.
|
||||
|
||||
Expected: the application renders the assigned entry, permitting authentication and the packet flow. Actual: the redirect loop prevents the application from rendering. Reproducibility: reproduced on retry and independently by another Luna Max preflight agent. Console output was empty; network and visual evidence are linked below.
|
||||
|
||||
## Artifacts
|
||||
|
||||
- [BD-009-fresh-retry-console.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-09/BD-009-fresh-retry-console.txt)
|
||||
- [BD-009-fresh-retry-errors.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-09/BD-009-fresh-retry-errors.txt)
|
||||
- [BD-009-fresh-retry-network.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-09/BD-009-fresh-retry-network.txt)
|
||||
- [BD-009-fresh-retry-snapshot.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-09/BD-009-fresh-retry-snapshot.txt)
|
||||
- [BD-009-fresh-retry-url.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-09/BD-009-fresh-retry-url.txt)
|
||||
- [BD-009-fresh-retry.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-09/BD-009-fresh-retry.png)
|
||||
- [BD-009-initial-console.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-09/BD-009-initial-console.txt)
|
||||
- [BD-009-initial-errors.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-09/BD-009-initial-errors.txt)
|
||||
- [BD-009-initial-network.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-09/BD-009-initial-network.txt)
|
||||
- [BD-009-initial-redirect.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-09/BD-009-initial-redirect.png)
|
||||
- [BD-009-initial-snapshot.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-09/BD-009-initial-snapshot.txt)
|
||||
- [BD-009-initial-url.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/board-09/BD-009-initial-url.txt)
|
||||
|
||||
## Mutations and persistence
|
||||
|
||||
No credentials were submitted and no product mutation occurred. Reload and fresh-session retries reproduced the routing failure, so application persistence was not reachable.
|
||||
No findings recorded. Add structured findings to the metadata block and mirror them here.
|
||||
|
||||
## Blockers and gaps
|
||||
|
||||
Every non-evidence case listed as blocked remains untested beyond the routing entry. No blocked cell is treated as passed.
|
||||
Not executed.
|
||||
|
||||
## Cleanup
|
||||
|
||||
The named browser session was closed by the browser agent. Artifacts remain under the untracked packet directory; no secret values were captured.
|
||||
Record created resources, cleanup outcome, console errors, and network failures. Never include secret values.
|
||||
@@ -1,74 +1,35 @@
|
||||
<!-- release-v2-qa-report
|
||||
{
|
||||
"packetId": "core-v2-01",
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"caseStatuses": {
|
||||
"CV-001-HAPPY-PATH": "blocked",
|
||||
"CV-001-MUTATION-PERSISTENCE": "blocked",
|
||||
"CV-001-ACCESSIBILITY-ACCESS": "blocked",
|
||||
"CV-001-DEGRADED-RECOVERY": "blocked"
|
||||
"CV-001-HAPPY-PATH": "not-reached",
|
||||
"CV-001-MUTATION-PERSISTENCE": "not-reached",
|
||||
"CV-001-ACCESSIBILITY-ACCESS": "not-reached",
|
||||
"CV-001-DEGRADED-RECOVERY": "not-reached"
|
||||
},
|
||||
"execution": {
|
||||
"candidateSha": "f57a660088d6777c86aca22977354fa8b810e2be",
|
||||
"url": "http://127.0.0.1:37137",
|
||||
"actualPort": 37137,
|
||||
"runtimeProfile": "main-writable",
|
||||
"runtimeFlags": [
|
||||
"DEMO_MODE=true",
|
||||
"DEMO_READ_ONLY=false",
|
||||
"UNSAFE_ENABLE_MOCK_INTEGRATION=true"
|
||||
],
|
||||
"persona": "Cora Creator",
|
||||
"sessionId": "qa-v2-core-v2-01",
|
||||
"timestamp": "2026-08-31T16:37:58.173Z",
|
||||
"viewport": "desktop-1440",
|
||||
"input": "mouse",
|
||||
"zoom": 100
|
||||
"candidateSha": "2d5edf46513b96c8b9f973d4a121b396d688e9bb",
|
||||
"url": null,
|
||||
"actualPort": null,
|
||||
"runtimeProfile": null,
|
||||
"runtimeFlags": [],
|
||||
"persona": null,
|
||||
"sessionId": null,
|
||||
"timestamp": null,
|
||||
"viewport": null,
|
||||
"input": null,
|
||||
"zoom": null
|
||||
},
|
||||
"findings": [
|
||||
{
|
||||
"id": "RV2-P1-001",
|
||||
"fingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"severity": "P1",
|
||||
"area": "routing/authentication",
|
||||
"title": "Locale rewrite causes an infinite browser redirect before the application renders",
|
||||
"summary": "Chromium repeatedly requests the same entry route and ends on ERR_TOO_MANY_REDIRECTS, preventing the assigned browser flow.",
|
||||
"caseIds": [
|
||||
"CV-001-HAPPY-PATH",
|
||||
"CV-001-MUTATION-PERSISTENCE",
|
||||
"CV-001-ACCESSIBILITY-ACCESS",
|
||||
"CV-001-DEGRADED-RECOVERY"
|
||||
],
|
||||
"evidence": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-01/redirect-entry.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-01/redirect-network.txt"
|
||||
]
|
||||
}
|
||||
],
|
||||
"artifacts": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-01/redirect-console.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-01/redirect-entry.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-01/redirect-network.txt"
|
||||
],
|
||||
"findings": [],
|
||||
"artifacts": [],
|
||||
"widgetChecks": [],
|
||||
"performance": {
|
||||
"measurements": [],
|
||||
"limitations": [
|
||||
"The application never rendered, so assigned feature, mutation, persistence, permission, viewport, and performance checks were blocked.",
|
||||
"No credentials were submitted and no product state was mutated.",
|
||||
"The packet's retry did not produce a separate artifact; the same finding has independent reproductions in the preflight reports."
|
||||
]
|
||||
"limitations": []
|
||||
},
|
||||
"independentReproductions": [
|
||||
{
|
||||
"findingFingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"agentId": "qa-v2-preflight-01",
|
||||
"outcome": "reproduced",
|
||||
"evidence": [],
|
||||
"notes": "See preflight-01 for an independent Luna Max reproduction."
|
||||
}
|
||||
],
|
||||
"notes": "Report-only black-box run. No defect was fixed and no secret was recorded."
|
||||
"independentReproductions": [],
|
||||
"notes": "Not executed."
|
||||
}
|
||||
-->
|
||||
|
||||
@@ -76,7 +37,7 @@
|
||||
|
||||
| Metadata | Value |
|
||||
| --- | --- |
|
||||
| Status | blocked |
|
||||
| Status | not-reached |
|
||||
| Wave | core-v2 |
|
||||
| PR refs | #6356 |
|
||||
| Personas | Cora Creator |
|
||||
@@ -87,59 +48,39 @@
|
||||
| Input | mouse, keyboard |
|
||||
| Widget kinds | None |
|
||||
| Artifact directory | [/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-01](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-01) |
|
||||
| Candidate SHA | f57a660088d6777c86aca22977354fa8b810e2be |
|
||||
| URL / actual port | http://127.0.0.1:37137 / 37137 |
|
||||
| Runtime profile / flags | main-writable; DEMO_MODE=true, DEMO_READ_ONLY=false, UNSAFE_ENABLE_MOCK_INTEGRATION=true |
|
||||
| Executed persona | Cora Creator |
|
||||
| Browser session ID | qa-v2-core-v2-01 |
|
||||
| Timestamp | 2026-08-31T16:37:58.173Z |
|
||||
| Executed viewport / input / zoom | desktop-1440 / mouse / 100% |
|
||||
| Candidate SHA | 2d5edf46513b96c8b9f973d4a121b396d688e9bb |
|
||||
| URL / actual port | not-recorded |
|
||||
| Runtime profile / flags | not-recorded |
|
||||
| Executed persona | not-recorded |
|
||||
| Browser session ID | not-recorded |
|
||||
| Timestamp | not-recorded |
|
||||
| Executed viewport / input / zoom | not-recorded |
|
||||
|
||||
## Dogfood evidence
|
||||
|
||||
| Case ID | Status | Evidence | Observed | Expected |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| CV-001-HAPPY-PATH | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-01) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Complete the primary flow using every assigned viewport, zoom, input, persona, profile, and board that applies. |
|
||||
| CV-001-MUTATION-PERSISTENCE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-01) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Exercise applicable create, edit, save, reload, reset, cancel, and destructive actions. |
|
||||
| CV-001-ACCESSIBILITY-ACCESS | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-01) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify keyboard/focus behavior, labels, permissions, outsider boundaries, and read-only enforcement. |
|
||||
| CV-001-DEGRADED-RECOVERY | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-01) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify empty, loading, failure, retry, recovery, console, network, evidence, and cleanup behavior. |
|
||||
| CV-001-HAPPY-PATH | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-01/CV-001-HAPPY-PATH.png) | Not executed | Complete the primary flow using every assigned viewport, zoom, input, persona, profile, and board that applies. |
|
||||
| CV-001-MUTATION-PERSISTENCE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-01/CV-001-MUTATION-PERSISTENCE.png) | Not executed | Exercise applicable create, edit, save, reload, reset, cancel, and destructive actions. |
|
||||
| CV-001-ACCESSIBILITY-ACCESS | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-01/CV-001-ACCESSIBILITY-ACCESS.png) | Not executed | Verify keyboard/focus behavior, labels, permissions, outsider boundaries, and read-only enforcement. |
|
||||
| CV-001-DEGRADED-RECOVERY | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-01/CV-001-DEGRADED-RECOVERY.png) | Not executed | Verify empty, loading, failure, retry, recovery, console, network, evidence, and cleanup behavior. |
|
||||
|
||||
## Performance measurements and limitations
|
||||
|
||||
No valid feature timing could be recorded because no application document rendered. Cold/warm, polling, rendering, memory, and recovery measurements remain blocked.
|
||||
Record structured measurements in `performance.measurements` with units, thresholds, status, and evidence. Record every environmental or tooling limitation in `performance.limitations`; leave measurements empty instead of inventing a result.
|
||||
|
||||
## Independent reproductions
|
||||
|
||||
The common routing failure was independently reproduced by qa-v2-preflight-01; the corresponding tracked packet contains its own browser evidence.
|
||||
Record a second agent's result in `independentReproductions` with the finding fingerprint, agent ID, outcome, evidence, and notes. An unattempted reproduction remains `not-reached`.
|
||||
|
||||
## Findings
|
||||
|
||||
### RV2-P1-001 — P1: locale rewrite causes an infinite browser redirect
|
||||
|
||||
Preconditions: candidate f57a660088d6777c86aca22977354fa8b810e2be, main-writable, desktop-1440, 100% zoom, mouse, fresh named Chromium session qa-v2-core-v2-01.
|
||||
|
||||
1. Launch a fresh Chromium context with the Chromium argument --no-sandbox.
|
||||
2. Set the assigned viewport and open http://127.0.0.1:37137 or its authentication entry.
|
||||
3. Observe repeated document requests to the same route.
|
||||
4. Wait until Chromium displays ERR_TOO_MANY_REDIRECTS or chrome-error://chromewebdata/.
|
||||
5. Compare the result with the independently reproduced preflight evidence.
|
||||
|
||||
Expected: the application renders the assigned entry, permitting authentication and the packet flow. Actual: the redirect loop prevents the application from rendering. Reproducibility: reproduced independently by the preflight agents. Console output was empty; network and visual evidence are linked below.
|
||||
|
||||
## Artifacts
|
||||
|
||||
- [redirect-console.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-01/redirect-console.txt)
|
||||
- [redirect-entry.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-01/redirect-entry.png)
|
||||
- [redirect-network.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-01/redirect-network.txt)
|
||||
|
||||
## Mutations and persistence
|
||||
|
||||
No credentials were submitted and no product mutation occurred. Reload and fresh-session retries reproduced the routing failure, so application persistence was not reachable.
|
||||
No findings recorded. Add structured findings to the metadata block and mirror them here.
|
||||
|
||||
## Blockers and gaps
|
||||
|
||||
Every non-evidence case listed as blocked remains untested beyond the routing entry. No blocked cell is treated as passed.
|
||||
Not executed.
|
||||
|
||||
## Cleanup
|
||||
|
||||
The named browser session was closed by the browser agent. Artifacts remain under the untracked packet directory; no secret values were captured.
|
||||
Record created resources, cleanup outcome, console errors, and network failures. Never include secret values.
|
||||
@@ -1,74 +1,35 @@
|
||||
<!-- release-v2-qa-report
|
||||
{
|
||||
"packetId": "core-v2-02",
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"caseStatuses": {
|
||||
"CV-002-HAPPY-PATH": "blocked",
|
||||
"CV-002-MUTATION-PERSISTENCE": "blocked",
|
||||
"CV-002-ACCESSIBILITY-ACCESS": "blocked",
|
||||
"CV-002-DEGRADED-RECOVERY": "blocked"
|
||||
"CV-002-HAPPY-PATH": "not-reached",
|
||||
"CV-002-MUTATION-PERSISTENCE": "not-reached",
|
||||
"CV-002-ACCESSIBILITY-ACCESS": "not-reached",
|
||||
"CV-002-DEGRADED-RECOVERY": "not-reached"
|
||||
},
|
||||
"execution": {
|
||||
"candidateSha": "f57a660088d6777c86aca22977354fa8b810e2be",
|
||||
"url": "http://127.0.0.1:37137",
|
||||
"actualPort": 37137,
|
||||
"runtimeProfile": "main-writable",
|
||||
"runtimeFlags": [
|
||||
"DEMO_MODE=true",
|
||||
"DEMO_READ_ONLY=false",
|
||||
"UNSAFE_ENABLE_MOCK_INTEGRATION=true"
|
||||
],
|
||||
"persona": "Ash Assistant",
|
||||
"sessionId": "qa-v2-core-v2-02",
|
||||
"timestamp": "2026-08-31T16:42:11.258Z",
|
||||
"viewport": "mobile-375",
|
||||
"input": "mouse",
|
||||
"zoom": 100
|
||||
"candidateSha": "2d5edf46513b96c8b9f973d4a121b396d688e9bb",
|
||||
"url": null,
|
||||
"actualPort": null,
|
||||
"runtimeProfile": null,
|
||||
"runtimeFlags": [],
|
||||
"persona": null,
|
||||
"sessionId": null,
|
||||
"timestamp": null,
|
||||
"viewport": null,
|
||||
"input": null,
|
||||
"zoom": null
|
||||
},
|
||||
"findings": [
|
||||
{
|
||||
"id": "RV2-P1-001",
|
||||
"fingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"severity": "P1",
|
||||
"area": "routing/authentication",
|
||||
"title": "Locale rewrite causes an infinite browser redirect before the application renders",
|
||||
"summary": "Chromium repeatedly requests the same entry route and ends on ERR_TOO_MANY_REDIRECTS, preventing the assigned browser flow.",
|
||||
"caseIds": [
|
||||
"CV-002-HAPPY-PATH",
|
||||
"CV-002-MUTATION-PERSISTENCE",
|
||||
"CV-002-ACCESSIBILITY-ACCESS",
|
||||
"CV-002-DEGRADED-RECOVERY"
|
||||
],
|
||||
"evidence": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-02/entry-redirect.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-02/network.txt"
|
||||
]
|
||||
}
|
||||
],
|
||||
"artifacts": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-02/console.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-02/entry-redirect.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-02/network.txt"
|
||||
],
|
||||
"findings": [],
|
||||
"artifacts": [],
|
||||
"widgetChecks": [],
|
||||
"performance": {
|
||||
"measurements": [],
|
||||
"limitations": [
|
||||
"The application never rendered, so assigned feature, mutation, persistence, permission, viewport, and performance checks were blocked.",
|
||||
"No credentials were submitted and no product state was mutated.",
|
||||
"The packet's retry did not produce a separate artifact; the same finding has independent reproductions in the preflight reports."
|
||||
]
|
||||
"limitations": []
|
||||
},
|
||||
"independentReproductions": [
|
||||
{
|
||||
"findingFingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"agentId": "qa-v2-preflight-01",
|
||||
"outcome": "reproduced",
|
||||
"evidence": [],
|
||||
"notes": "See preflight-01 for an independent Luna Max reproduction."
|
||||
}
|
||||
],
|
||||
"notes": "Report-only black-box run. No defect was fixed and no secret was recorded."
|
||||
"independentReproductions": [],
|
||||
"notes": "Not executed."
|
||||
}
|
||||
-->
|
||||
|
||||
@@ -76,7 +37,7 @@
|
||||
|
||||
| Metadata | Value |
|
||||
| --- | --- |
|
||||
| Status | blocked |
|
||||
| Status | not-reached |
|
||||
| Wave | core-v2 |
|
||||
| PR refs | #6482 |
|
||||
| Personas | Ash Assistant |
|
||||
@@ -87,59 +48,39 @@
|
||||
| Input | mouse, touch, keyboard |
|
||||
| Widget kinds | None |
|
||||
| Artifact directory | [/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-02](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-02) |
|
||||
| Candidate SHA | f57a660088d6777c86aca22977354fa8b810e2be |
|
||||
| URL / actual port | http://127.0.0.1:37137 / 37137 |
|
||||
| Runtime profile / flags | main-writable; DEMO_MODE=true, DEMO_READ_ONLY=false, UNSAFE_ENABLE_MOCK_INTEGRATION=true |
|
||||
| Executed persona | Ash Assistant |
|
||||
| Browser session ID | qa-v2-core-v2-02 |
|
||||
| Timestamp | 2026-08-31T16:42:11.258Z |
|
||||
| Executed viewport / input / zoom | mobile-375 / mouse / 100% |
|
||||
| Candidate SHA | 2d5edf46513b96c8b9f973d4a121b396d688e9bb |
|
||||
| URL / actual port | not-recorded |
|
||||
| Runtime profile / flags | not-recorded |
|
||||
| Executed persona | not-recorded |
|
||||
| Browser session ID | not-recorded |
|
||||
| Timestamp | not-recorded |
|
||||
| Executed viewport / input / zoom | not-recorded |
|
||||
|
||||
## Dogfood evidence
|
||||
|
||||
| Case ID | Status | Evidence | Observed | Expected |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| CV-002-HAPPY-PATH | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-02) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Complete the primary flow using every assigned viewport, zoom, input, persona, profile, and board that applies. |
|
||||
| CV-002-MUTATION-PERSISTENCE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-02) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Exercise applicable create, edit, save, reload, reset, cancel, and destructive actions. |
|
||||
| CV-002-ACCESSIBILITY-ACCESS | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-02) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify keyboard/focus behavior, labels, permissions, outsider boundaries, and read-only enforcement. |
|
||||
| CV-002-DEGRADED-RECOVERY | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-02) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify empty, loading, failure, retry, recovery, console, network, evidence, and cleanup behavior. |
|
||||
| CV-002-HAPPY-PATH | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-02/CV-002-HAPPY-PATH.png) | Not executed | Complete the primary flow using every assigned viewport, zoom, input, persona, profile, and board that applies. |
|
||||
| CV-002-MUTATION-PERSISTENCE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-02/CV-002-MUTATION-PERSISTENCE.png) | Not executed | Exercise applicable create, edit, save, reload, reset, cancel, and destructive actions. |
|
||||
| CV-002-ACCESSIBILITY-ACCESS | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-02/CV-002-ACCESSIBILITY-ACCESS.png) | Not executed | Verify keyboard/focus behavior, labels, permissions, outsider boundaries, and read-only enforcement. |
|
||||
| CV-002-DEGRADED-RECOVERY | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-02/CV-002-DEGRADED-RECOVERY.png) | Not executed | Verify empty, loading, failure, retry, recovery, console, network, evidence, and cleanup behavior. |
|
||||
|
||||
## Performance measurements and limitations
|
||||
|
||||
No valid feature timing could be recorded because no application document rendered. Cold/warm, polling, rendering, memory, and recovery measurements remain blocked.
|
||||
Record structured measurements in `performance.measurements` with units, thresholds, status, and evidence. Record every environmental or tooling limitation in `performance.limitations`; leave measurements empty instead of inventing a result.
|
||||
|
||||
## Independent reproductions
|
||||
|
||||
The common routing failure was independently reproduced by qa-v2-preflight-01; the corresponding tracked packet contains its own browser evidence.
|
||||
Record a second agent's result in `independentReproductions` with the finding fingerprint, agent ID, outcome, evidence, and notes. An unattempted reproduction remains `not-reached`.
|
||||
|
||||
## Findings
|
||||
|
||||
### RV2-P1-001 — P1: locale rewrite causes an infinite browser redirect
|
||||
|
||||
Preconditions: candidate f57a660088d6777c86aca22977354fa8b810e2be, main-writable, mobile-375, 100% zoom, mouse, fresh named Chromium session qa-v2-core-v2-02.
|
||||
|
||||
1. Launch a fresh Chromium context with the Chromium argument --no-sandbox.
|
||||
2. Set the assigned viewport and open http://127.0.0.1:37137 or its authentication entry.
|
||||
3. Observe repeated document requests to the same route.
|
||||
4. Wait until Chromium displays ERR_TOO_MANY_REDIRECTS or chrome-error://chromewebdata/.
|
||||
5. Compare the result with the independently reproduced preflight evidence.
|
||||
|
||||
Expected: the application renders the assigned entry, permitting authentication and the packet flow. Actual: the redirect loop prevents the application from rendering. Reproducibility: reproduced independently by the preflight agents. Console output was empty; network and visual evidence are linked below.
|
||||
|
||||
## Artifacts
|
||||
|
||||
- [console.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-02/console.txt)
|
||||
- [entry-redirect.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-02/entry-redirect.png)
|
||||
- [network.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-02/network.txt)
|
||||
|
||||
## Mutations and persistence
|
||||
|
||||
No credentials were submitted and no product mutation occurred. Reload and fresh-session retries reproduced the routing failure, so application persistence was not reachable.
|
||||
No findings recorded. Add structured findings to the metadata block and mirror them here.
|
||||
|
||||
## Blockers and gaps
|
||||
|
||||
Every non-evidence case listed as blocked remains untested beyond the routing entry. No blocked cell is treated as passed.
|
||||
Not executed.
|
||||
|
||||
## Cleanup
|
||||
|
||||
The named browser session was closed by the browser agent. Artifacts remain under the untracked packet directory; no secret values were captured.
|
||||
Record created resources, cleanup outcome, console errors, and network failures. Never include secret values.
|
||||
@@ -1,74 +1,35 @@
|
||||
<!-- release-v2-qa-report
|
||||
{
|
||||
"packetId": "core-v2-03",
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"caseStatuses": {
|
||||
"CV-003-HAPPY-PATH": "blocked",
|
||||
"CV-003-MUTATION-PERSISTENCE": "blocked",
|
||||
"CV-003-ACCESSIBILITY-ACCESS": "blocked",
|
||||
"CV-003-DEGRADED-RECOVERY": "blocked"
|
||||
"CV-003-HAPPY-PATH": "not-reached",
|
||||
"CV-003-MUTATION-PERSISTENCE": "not-reached",
|
||||
"CV-003-ACCESSIBILITY-ACCESS": "not-reached",
|
||||
"CV-003-DEGRADED-RECOVERY": "not-reached"
|
||||
},
|
||||
"execution": {
|
||||
"candidateSha": "f57a660088d6777c86aca22977354fa8b810e2be",
|
||||
"url": "http://127.0.0.1:35901",
|
||||
"actualPort": 35901,
|
||||
"runtimeProfile": "onboarding-fresh",
|
||||
"runtimeFlags": [
|
||||
"DEMO_MODE=false",
|
||||
"DEMO_READ_ONLY=false",
|
||||
"UNSAFE_ENABLE_MOCK_INTEGRATION=true"
|
||||
],
|
||||
"persona": "Nora Newcomer",
|
||||
"sessionId": "qa-v2-core-v2-03",
|
||||
"timestamp": "2026-08-31T16:48:07.733Z",
|
||||
"viewport": "mobile-320",
|
||||
"input": "mouse",
|
||||
"zoom": 100
|
||||
"candidateSha": "2d5edf46513b96c8b9f973d4a121b396d688e9bb",
|
||||
"url": null,
|
||||
"actualPort": null,
|
||||
"runtimeProfile": null,
|
||||
"runtimeFlags": [],
|
||||
"persona": null,
|
||||
"sessionId": null,
|
||||
"timestamp": null,
|
||||
"viewport": null,
|
||||
"input": null,
|
||||
"zoom": null
|
||||
},
|
||||
"findings": [
|
||||
{
|
||||
"id": "RV2-P1-001",
|
||||
"fingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"severity": "P1",
|
||||
"area": "routing/authentication",
|
||||
"title": "Locale rewrite causes an infinite browser redirect before the application renders",
|
||||
"summary": "Chromium repeatedly requests the same entry route and ends on ERR_TOO_MANY_REDIRECTS, preventing the assigned browser flow.",
|
||||
"caseIds": [
|
||||
"CV-003-HAPPY-PATH",
|
||||
"CV-003-MUTATION-PERSISTENCE",
|
||||
"CV-003-ACCESSIBILITY-ACCESS",
|
||||
"CV-003-DEGRADED-RECOVERY"
|
||||
],
|
||||
"evidence": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-03/init-mobile-320.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-03/init-mobile-network.json"
|
||||
]
|
||||
}
|
||||
],
|
||||
"artifacts": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-03/init-mobile-320.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-03/init-mobile-console.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-03/init-mobile-network.json"
|
||||
],
|
||||
"findings": [],
|
||||
"artifacts": [],
|
||||
"widgetChecks": [],
|
||||
"performance": {
|
||||
"measurements": [],
|
||||
"limitations": [
|
||||
"The application never rendered, so assigned feature, mutation, persistence, permission, viewport, and performance checks were blocked.",
|
||||
"No credentials were submitted and no product state was mutated.",
|
||||
"The packet's retry did not produce a separate artifact; the same finding has independent reproductions in the preflight reports."
|
||||
]
|
||||
"limitations": []
|
||||
},
|
||||
"independentReproductions": [
|
||||
{
|
||||
"findingFingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"agentId": "qa-v2-preflight-01",
|
||||
"outcome": "reproduced",
|
||||
"evidence": [],
|
||||
"notes": "See preflight-01 for an independent Luna Max reproduction."
|
||||
}
|
||||
],
|
||||
"notes": "Report-only black-box run. No defect was fixed and no secret was recorded."
|
||||
"independentReproductions": [],
|
||||
"notes": "Not executed."
|
||||
}
|
||||
-->
|
||||
|
||||
@@ -76,7 +37,7 @@
|
||||
|
||||
| Metadata | Value |
|
||||
| --- | --- |
|
||||
| Status | blocked |
|
||||
| Status | not-reached |
|
||||
| Wave | core-v2 |
|
||||
| PR refs | #6569 |
|
||||
| Personas | Nora Newcomer |
|
||||
@@ -87,59 +48,39 @@
|
||||
| Input | mouse, touch, keyboard |
|
||||
| Widget kinds | None |
|
||||
| Artifact directory | [/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-03](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-03) |
|
||||
| Candidate SHA | f57a660088d6777c86aca22977354fa8b810e2be |
|
||||
| URL / actual port | http://127.0.0.1:35901 / 35901 |
|
||||
| Runtime profile / flags | onboarding-fresh; DEMO_MODE=false, DEMO_READ_ONLY=false, UNSAFE_ENABLE_MOCK_INTEGRATION=true |
|
||||
| Executed persona | Nora Newcomer |
|
||||
| Browser session ID | qa-v2-core-v2-03 |
|
||||
| Timestamp | 2026-08-31T16:48:07.733Z |
|
||||
| Executed viewport / input / zoom | mobile-320 / mouse / 100% |
|
||||
| Candidate SHA | 2d5edf46513b96c8b9f973d4a121b396d688e9bb |
|
||||
| URL / actual port | not-recorded |
|
||||
| Runtime profile / flags | not-recorded |
|
||||
| Executed persona | not-recorded |
|
||||
| Browser session ID | not-recorded |
|
||||
| Timestamp | not-recorded |
|
||||
| Executed viewport / input / zoom | not-recorded |
|
||||
|
||||
## Dogfood evidence
|
||||
|
||||
| Case ID | Status | Evidence | Observed | Expected |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| CV-003-HAPPY-PATH | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-03) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Complete the primary flow using every assigned viewport, zoom, input, persona, profile, and board that applies. |
|
||||
| CV-003-MUTATION-PERSISTENCE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-03) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Exercise applicable create, edit, save, reload, reset, cancel, and destructive actions. |
|
||||
| CV-003-ACCESSIBILITY-ACCESS | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-03) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify keyboard/focus behavior, labels, permissions, outsider boundaries, and read-only enforcement. |
|
||||
| CV-003-DEGRADED-RECOVERY | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-03) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify empty, loading, failure, retry, recovery, console, network, evidence, and cleanup behavior. |
|
||||
| CV-003-HAPPY-PATH | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-03/CV-003-HAPPY-PATH.png) | Not executed | Complete the primary flow using every assigned viewport, zoom, input, persona, profile, and board that applies. |
|
||||
| CV-003-MUTATION-PERSISTENCE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-03/CV-003-MUTATION-PERSISTENCE.png) | Not executed | Exercise applicable create, edit, save, reload, reset, cancel, and destructive actions. |
|
||||
| CV-003-ACCESSIBILITY-ACCESS | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-03/CV-003-ACCESSIBILITY-ACCESS.png) | Not executed | Verify keyboard/focus behavior, labels, permissions, outsider boundaries, and read-only enforcement. |
|
||||
| CV-003-DEGRADED-RECOVERY | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-03/CV-003-DEGRADED-RECOVERY.png) | Not executed | Verify empty, loading, failure, retry, recovery, console, network, evidence, and cleanup behavior. |
|
||||
|
||||
## Performance measurements and limitations
|
||||
|
||||
No valid feature timing could be recorded because no application document rendered. Cold/warm, polling, rendering, memory, and recovery measurements remain blocked.
|
||||
Record structured measurements in `performance.measurements` with units, thresholds, status, and evidence. Record every environmental or tooling limitation in `performance.limitations`; leave measurements empty instead of inventing a result.
|
||||
|
||||
## Independent reproductions
|
||||
|
||||
The common routing failure was independently reproduced by qa-v2-preflight-01; the corresponding tracked packet contains its own browser evidence.
|
||||
Record a second agent's result in `independentReproductions` with the finding fingerprint, agent ID, outcome, evidence, and notes. An unattempted reproduction remains `not-reached`.
|
||||
|
||||
## Findings
|
||||
|
||||
### RV2-P1-001 — P1: locale rewrite causes an infinite browser redirect
|
||||
|
||||
Preconditions: candidate f57a660088d6777c86aca22977354fa8b810e2be, onboarding-fresh, mobile-320, 100% zoom, mouse, fresh named Chromium session qa-v2-core-v2-03.
|
||||
|
||||
1. Launch a fresh Chromium context with the Chromium argument --no-sandbox.
|
||||
2. Set the assigned viewport and open http://127.0.0.1:35901 or its authentication entry.
|
||||
3. Observe repeated document requests to the same route.
|
||||
4. Wait until Chromium displays ERR_TOO_MANY_REDIRECTS or chrome-error://chromewebdata/.
|
||||
5. Compare the result with the independently reproduced preflight evidence.
|
||||
|
||||
Expected: the application renders the assigned entry, permitting authentication and the packet flow. Actual: the redirect loop prevents the application from rendering. Reproducibility: reproduced independently by the preflight agents. Console output was empty; network and visual evidence are linked below.
|
||||
|
||||
## Artifacts
|
||||
|
||||
- [init-mobile-320.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-03/init-mobile-320.png)
|
||||
- [init-mobile-console.json](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-03/init-mobile-console.json)
|
||||
- [init-mobile-network.json](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-03/init-mobile-network.json)
|
||||
|
||||
## Mutations and persistence
|
||||
|
||||
No credentials were submitted and no product mutation occurred. Reload and fresh-session retries reproduced the routing failure, so application persistence was not reachable.
|
||||
No findings recorded. Add structured findings to the metadata block and mirror them here.
|
||||
|
||||
## Blockers and gaps
|
||||
|
||||
Every non-evidence case listed as blocked remains untested beyond the routing entry. No blocked cell is treated as passed.
|
||||
Not executed.
|
||||
|
||||
## Cleanup
|
||||
|
||||
The named browser session was closed by the browser agent. Artifacts remain under the untracked packet directory; no secret values were captured.
|
||||
Record created resources, cleanup outcome, console errors, and network failures. Never include secret values.
|
||||
@@ -1,75 +1,35 @@
|
||||
<!-- release-v2-qa-report
|
||||
{
|
||||
"packetId": "core-v2-04",
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"caseStatuses": {
|
||||
"CV-004-HAPPY-PATH": "blocked",
|
||||
"CV-004-MUTATION-PERSISTENCE": "blocked",
|
||||
"CV-004-ACCESSIBILITY-ACCESS": "blocked",
|
||||
"CV-004-DEGRADED-RECOVERY": "blocked"
|
||||
"CV-004-HAPPY-PATH": "not-reached",
|
||||
"CV-004-MUTATION-PERSISTENCE": "not-reached",
|
||||
"CV-004-ACCESSIBILITY-ACCESS": "not-reached",
|
||||
"CV-004-DEGRADED-RECOVERY": "not-reached"
|
||||
},
|
||||
"execution": {
|
||||
"candidateSha": "f57a660088d6777c86aca22977354fa8b810e2be",
|
||||
"url": "http://127.0.0.1:37137",
|
||||
"actualPort": 37137,
|
||||
"runtimeProfile": "main-writable",
|
||||
"runtimeFlags": [
|
||||
"DEMO_MODE=true",
|
||||
"DEMO_READ_ONLY=false",
|
||||
"UNSAFE_ENABLE_MOCK_INTEGRATION=true"
|
||||
],
|
||||
"persona": "Avery Admin",
|
||||
"sessionId": "qa-v2-core-v2-04",
|
||||
"timestamp": "2026-08-31T16:54:36.657Z",
|
||||
"viewport": "mobile-375",
|
||||
"input": "mouse",
|
||||
"zoom": 100
|
||||
"candidateSha": "2d5edf46513b96c8b9f973d4a121b396d688e9bb",
|
||||
"url": null,
|
||||
"actualPort": null,
|
||||
"runtimeProfile": null,
|
||||
"runtimeFlags": [],
|
||||
"persona": null,
|
||||
"sessionId": null,
|
||||
"timestamp": null,
|
||||
"viewport": null,
|
||||
"input": null,
|
||||
"zoom": null
|
||||
},
|
||||
"findings": [
|
||||
{
|
||||
"id": "RV2-P1-001",
|
||||
"fingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"severity": "P1",
|
||||
"area": "routing/authentication",
|
||||
"title": "Locale rewrite causes an infinite browser redirect before the application renders",
|
||||
"summary": "Chromium repeatedly requests the same entry route and ends on ERR_TOO_MANY_REDIRECTS, preventing the assigned browser flow.",
|
||||
"caseIds": [
|
||||
"CV-004-HAPPY-PATH",
|
||||
"CV-004-MUTATION-PERSISTENCE",
|
||||
"CV-004-ACCESSIBILITY-ACCESS",
|
||||
"CV-004-DEGRADED-RECOVERY"
|
||||
],
|
||||
"evidence": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-04/auth-login-redirect-mobile-network.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-04/screenshot-1788195204997.png"
|
||||
]
|
||||
}
|
||||
],
|
||||
"artifacts": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-04/auth-login-redirect-mobile-console.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-04/auth-login-redirect-mobile-errors.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-04/auth-login-redirect-mobile-network.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-04/screenshot-1788195204997.png"
|
||||
],
|
||||
"findings": [],
|
||||
"artifacts": [],
|
||||
"widgetChecks": [],
|
||||
"performance": {
|
||||
"measurements": [],
|
||||
"limitations": [
|
||||
"The application never rendered, so assigned feature, mutation, persistence, permission, viewport, and performance checks were blocked.",
|
||||
"No credentials were submitted and no product state was mutated.",
|
||||
"The packet's retry did not produce a separate artifact; the same finding has independent reproductions in the preflight reports."
|
||||
]
|
||||
"limitations": []
|
||||
},
|
||||
"independentReproductions": [
|
||||
{
|
||||
"findingFingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"agentId": "qa-v2-preflight-01",
|
||||
"outcome": "reproduced",
|
||||
"evidence": [],
|
||||
"notes": "See preflight-01 for an independent Luna Max reproduction."
|
||||
}
|
||||
],
|
||||
"notes": "Report-only black-box run. No defect was fixed and no secret was recorded."
|
||||
"independentReproductions": [],
|
||||
"notes": "Not executed."
|
||||
}
|
||||
-->
|
||||
|
||||
@@ -77,7 +37,7 @@
|
||||
|
||||
| Metadata | Value |
|
||||
| --- | --- |
|
||||
| Status | blocked |
|
||||
| Status | not-reached |
|
||||
| Wave | core-v2 |
|
||||
| PR refs | #6545, #6569 |
|
||||
| Personas | Avery Admin, Nolan Outsider |
|
||||
@@ -88,60 +48,39 @@
|
||||
| Input | mouse, touch, keyboard |
|
||||
| Widget kinds | None |
|
||||
| Artifact directory | [/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-04](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-04) |
|
||||
| Candidate SHA | f57a660088d6777c86aca22977354fa8b810e2be |
|
||||
| URL / actual port | http://127.0.0.1:37137 / 37137 |
|
||||
| Runtime profile / flags | main-writable; DEMO_MODE=true, DEMO_READ_ONLY=false, UNSAFE_ENABLE_MOCK_INTEGRATION=true |
|
||||
| Executed persona | Avery Admin |
|
||||
| Browser session ID | qa-v2-core-v2-04 |
|
||||
| Timestamp | 2026-08-31T16:54:36.657Z |
|
||||
| Executed viewport / input / zoom | mobile-375 / mouse / 100% |
|
||||
| Candidate SHA | 2d5edf46513b96c8b9f973d4a121b396d688e9bb |
|
||||
| URL / actual port | not-recorded |
|
||||
| Runtime profile / flags | not-recorded |
|
||||
| Executed persona | not-recorded |
|
||||
| Browser session ID | not-recorded |
|
||||
| Timestamp | not-recorded |
|
||||
| Executed viewport / input / zoom | not-recorded |
|
||||
|
||||
## Dogfood evidence
|
||||
|
||||
| Case ID | Status | Evidence | Observed | Expected |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| CV-004-HAPPY-PATH | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-04) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Complete the primary flow using every assigned viewport, zoom, input, persona, profile, and board that applies. |
|
||||
| CV-004-MUTATION-PERSISTENCE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-04) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Exercise applicable create, edit, save, reload, reset, cancel, and destructive actions. |
|
||||
| CV-004-ACCESSIBILITY-ACCESS | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-04) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify keyboard/focus behavior, labels, permissions, outsider boundaries, and read-only enforcement. |
|
||||
| CV-004-DEGRADED-RECOVERY | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-04) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify empty, loading, failure, retry, recovery, console, network, evidence, and cleanup behavior. |
|
||||
| CV-004-HAPPY-PATH | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-04/CV-004-HAPPY-PATH.png) | Not executed | Complete the primary flow using every assigned viewport, zoom, input, persona, profile, and board that applies. |
|
||||
| CV-004-MUTATION-PERSISTENCE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-04/CV-004-MUTATION-PERSISTENCE.png) | Not executed | Exercise applicable create, edit, save, reload, reset, cancel, and destructive actions. |
|
||||
| CV-004-ACCESSIBILITY-ACCESS | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-04/CV-004-ACCESSIBILITY-ACCESS.png) | Not executed | Verify keyboard/focus behavior, labels, permissions, outsider boundaries, and read-only enforcement. |
|
||||
| CV-004-DEGRADED-RECOVERY | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-04/CV-004-DEGRADED-RECOVERY.png) | Not executed | Verify empty, loading, failure, retry, recovery, console, network, evidence, and cleanup behavior. |
|
||||
|
||||
## Performance measurements and limitations
|
||||
|
||||
No valid feature timing could be recorded because no application document rendered. Cold/warm, polling, rendering, memory, and recovery measurements remain blocked.
|
||||
Record structured measurements in `performance.measurements` with units, thresholds, status, and evidence. Record every environmental or tooling limitation in `performance.limitations`; leave measurements empty instead of inventing a result.
|
||||
|
||||
## Independent reproductions
|
||||
|
||||
The common routing failure was independently reproduced by qa-v2-preflight-01; the corresponding tracked packet contains its own browser evidence.
|
||||
Record a second agent's result in `independentReproductions` with the finding fingerprint, agent ID, outcome, evidence, and notes. An unattempted reproduction remains `not-reached`.
|
||||
|
||||
## Findings
|
||||
|
||||
### RV2-P1-001 — P1: locale rewrite causes an infinite browser redirect
|
||||
|
||||
Preconditions: candidate f57a660088d6777c86aca22977354fa8b810e2be, main-writable, mobile-375, 100% zoom, mouse, fresh named Chromium session qa-v2-core-v2-04.
|
||||
|
||||
1. Launch a fresh Chromium context with the Chromium argument --no-sandbox.
|
||||
2. Set the assigned viewport and open http://127.0.0.1:37137 or its authentication entry.
|
||||
3. Observe repeated document requests to the same route.
|
||||
4. Wait until Chromium displays ERR_TOO_MANY_REDIRECTS or chrome-error://chromewebdata/.
|
||||
5. Compare the result with the independently reproduced preflight evidence.
|
||||
|
||||
Expected: the application renders the assigned entry, permitting authentication and the packet flow. Actual: the redirect loop prevents the application from rendering. Reproducibility: reproduced independently by the preflight agents. Console output was empty; network and visual evidence are linked below.
|
||||
|
||||
## Artifacts
|
||||
|
||||
- [auth-login-redirect-mobile-console.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-04/auth-login-redirect-mobile-console.txt)
|
||||
- [auth-login-redirect-mobile-errors.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-04/auth-login-redirect-mobile-errors.txt)
|
||||
- [auth-login-redirect-mobile-network.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-04/auth-login-redirect-mobile-network.txt)
|
||||
- [screenshot-1788195204997.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-04/screenshot-1788195204997.png)
|
||||
|
||||
## Mutations and persistence
|
||||
|
||||
No credentials were submitted and no product mutation occurred. Reload and fresh-session retries reproduced the routing failure, so application persistence was not reachable.
|
||||
No findings recorded. Add structured findings to the metadata block and mirror them here.
|
||||
|
||||
## Blockers and gaps
|
||||
|
||||
Every non-evidence case listed as blocked remains untested beyond the routing entry. No blocked cell is treated as passed.
|
||||
Not executed.
|
||||
|
||||
## Cleanup
|
||||
|
||||
The named browser session was closed by the browser agent. Artifacts remain under the untracked packet directory; no secret values were captured.
|
||||
Record created resources, cleanup outcome, console errors, and network failures. Never include secret values.
|
||||
@@ -1,74 +1,35 @@
|
||||
<!-- release-v2-qa-report
|
||||
{
|
||||
"packetId": "core-v2-05",
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"caseStatuses": {
|
||||
"CV-005-HAPPY-PATH": "blocked",
|
||||
"CV-005-MUTATION-PERSISTENCE": "blocked",
|
||||
"CV-005-ACCESSIBILITY-ACCESS": "blocked",
|
||||
"CV-005-DEGRADED-RECOVERY": "blocked"
|
||||
"CV-005-HAPPY-PATH": "not-reached",
|
||||
"CV-005-MUTATION-PERSISTENCE": "not-reached",
|
||||
"CV-005-ACCESSIBILITY-ACCESS": "not-reached",
|
||||
"CV-005-DEGRADED-RECOVERY": "not-reached"
|
||||
},
|
||||
"execution": {
|
||||
"candidateSha": "f57a660088d6777c86aca22977354fa8b810e2be",
|
||||
"url": "http://127.0.0.1:37137",
|
||||
"actualPort": 37137,
|
||||
"runtimeProfile": "main-writable",
|
||||
"runtimeFlags": [
|
||||
"DEMO_MODE=true",
|
||||
"DEMO_READ_ONLY=false",
|
||||
"UNSAFE_ENABLE_MOCK_INTEGRATION=true"
|
||||
],
|
||||
"persona": "Ingrid Infra",
|
||||
"sessionId": "qa-v2-core-v2-05",
|
||||
"timestamp": "2026-08-31T17:00:15.317Z",
|
||||
"viewport": "desktop-1440",
|
||||
"input": "mouse",
|
||||
"zoom": 100
|
||||
"candidateSha": "2d5edf46513b96c8b9f973d4a121b396d688e9bb",
|
||||
"url": null,
|
||||
"actualPort": null,
|
||||
"runtimeProfile": null,
|
||||
"runtimeFlags": [],
|
||||
"persona": null,
|
||||
"sessionId": null,
|
||||
"timestamp": null,
|
||||
"viewport": null,
|
||||
"input": null,
|
||||
"zoom": null
|
||||
},
|
||||
"findings": [
|
||||
{
|
||||
"id": "RV2-P1-001",
|
||||
"fingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"severity": "P1",
|
||||
"area": "routing/authentication",
|
||||
"title": "Locale rewrite causes an infinite browser redirect before the application renders",
|
||||
"summary": "Chromium repeatedly requests the same entry route and ends on ERR_TOO_MANY_REDIRECTS, preventing the assigned browser flow.",
|
||||
"caseIds": [
|
||||
"CV-005-HAPPY-PATH",
|
||||
"CV-005-MUTATION-PERSISTENCE",
|
||||
"CV-005-ACCESSIBILITY-ACCESS",
|
||||
"CV-005-DEGRADED-RECOVERY"
|
||||
],
|
||||
"evidence": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-05/root-1440x900-100.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-05/root-network.txt"
|
||||
]
|
||||
}
|
||||
],
|
||||
"artifacts": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-05/root-1440x900-100.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-05/root-console.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-05/root-network.txt"
|
||||
],
|
||||
"findings": [],
|
||||
"artifacts": [],
|
||||
"widgetChecks": [],
|
||||
"performance": {
|
||||
"measurements": [],
|
||||
"limitations": [
|
||||
"The application never rendered, so assigned feature, mutation, persistence, permission, viewport, and performance checks were blocked.",
|
||||
"No credentials were submitted and no product state was mutated.",
|
||||
"The packet's retry did not produce a separate artifact; the same finding has independent reproductions in the preflight reports."
|
||||
]
|
||||
"limitations": []
|
||||
},
|
||||
"independentReproductions": [
|
||||
{
|
||||
"findingFingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"agentId": "qa-v2-preflight-01",
|
||||
"outcome": "reproduced",
|
||||
"evidence": [],
|
||||
"notes": "See preflight-01 for an independent Luna Max reproduction."
|
||||
}
|
||||
],
|
||||
"notes": "Report-only black-box run. No defect was fixed and no secret was recorded."
|
||||
"independentReproductions": [],
|
||||
"notes": "Not executed."
|
||||
}
|
||||
-->
|
||||
|
||||
@@ -76,7 +37,7 @@
|
||||
|
||||
| Metadata | Value |
|
||||
| --- | --- |
|
||||
| Status | blocked |
|
||||
| Status | not-reached |
|
||||
| Wave | core-v2 |
|
||||
| PR refs | #6502, #6545 |
|
||||
| Personas | Ingrid Infra |
|
||||
@@ -87,59 +48,39 @@
|
||||
| Input | mouse, keyboard |
|
||||
| Widget kinds | None |
|
||||
| Artifact directory | [/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-05](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-05) |
|
||||
| Candidate SHA | f57a660088d6777c86aca22977354fa8b810e2be |
|
||||
| URL / actual port | http://127.0.0.1:37137 / 37137 |
|
||||
| Runtime profile / flags | main-writable; DEMO_MODE=true, DEMO_READ_ONLY=false, UNSAFE_ENABLE_MOCK_INTEGRATION=true |
|
||||
| Executed persona | Ingrid Infra |
|
||||
| Browser session ID | qa-v2-core-v2-05 |
|
||||
| Timestamp | 2026-08-31T17:00:15.317Z |
|
||||
| Executed viewport / input / zoom | desktop-1440 / mouse / 100% |
|
||||
| Candidate SHA | 2d5edf46513b96c8b9f973d4a121b396d688e9bb |
|
||||
| URL / actual port | not-recorded |
|
||||
| Runtime profile / flags | not-recorded |
|
||||
| Executed persona | not-recorded |
|
||||
| Browser session ID | not-recorded |
|
||||
| Timestamp | not-recorded |
|
||||
| Executed viewport / input / zoom | not-recorded |
|
||||
|
||||
## Dogfood evidence
|
||||
|
||||
| Case ID | Status | Evidence | Observed | Expected |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| CV-005-HAPPY-PATH | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-05) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Complete the primary flow using every assigned viewport, zoom, input, persona, profile, and board that applies. |
|
||||
| CV-005-MUTATION-PERSISTENCE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-05) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Exercise applicable create, edit, save, reload, reset, cancel, and destructive actions. |
|
||||
| CV-005-ACCESSIBILITY-ACCESS | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-05) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify keyboard/focus behavior, labels, permissions, outsider boundaries, and read-only enforcement. |
|
||||
| CV-005-DEGRADED-RECOVERY | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-05) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify empty, loading, failure, retry, recovery, console, network, evidence, and cleanup behavior. |
|
||||
| CV-005-HAPPY-PATH | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-05/CV-005-HAPPY-PATH.png) | Not executed | Complete the primary flow using every assigned viewport, zoom, input, persona, profile, and board that applies. |
|
||||
| CV-005-MUTATION-PERSISTENCE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-05/CV-005-MUTATION-PERSISTENCE.png) | Not executed | Exercise applicable create, edit, save, reload, reset, cancel, and destructive actions. |
|
||||
| CV-005-ACCESSIBILITY-ACCESS | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-05/CV-005-ACCESSIBILITY-ACCESS.png) | Not executed | Verify keyboard/focus behavior, labels, permissions, outsider boundaries, and read-only enforcement. |
|
||||
| CV-005-DEGRADED-RECOVERY | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-05/CV-005-DEGRADED-RECOVERY.png) | Not executed | Verify empty, loading, failure, retry, recovery, console, network, evidence, and cleanup behavior. |
|
||||
|
||||
## Performance measurements and limitations
|
||||
|
||||
No valid feature timing could be recorded because no application document rendered. Cold/warm, polling, rendering, memory, and recovery measurements remain blocked.
|
||||
Record structured measurements in `performance.measurements` with units, thresholds, status, and evidence. Record every environmental or tooling limitation in `performance.limitations`; leave measurements empty instead of inventing a result.
|
||||
|
||||
## Independent reproductions
|
||||
|
||||
The common routing failure was independently reproduced by qa-v2-preflight-01; the corresponding tracked packet contains its own browser evidence.
|
||||
Record a second agent's result in `independentReproductions` with the finding fingerprint, agent ID, outcome, evidence, and notes. An unattempted reproduction remains `not-reached`.
|
||||
|
||||
## Findings
|
||||
|
||||
### RV2-P1-001 — P1: locale rewrite causes an infinite browser redirect
|
||||
|
||||
Preconditions: candidate f57a660088d6777c86aca22977354fa8b810e2be, main-writable, desktop-1440, 100% zoom, mouse, fresh named Chromium session qa-v2-core-v2-05.
|
||||
|
||||
1. Launch a fresh Chromium context with the Chromium argument --no-sandbox.
|
||||
2. Set the assigned viewport and open http://127.0.0.1:37137 or its authentication entry.
|
||||
3. Observe repeated document requests to the same route.
|
||||
4. Wait until Chromium displays ERR_TOO_MANY_REDIRECTS or chrome-error://chromewebdata/.
|
||||
5. Compare the result with the independently reproduced preflight evidence.
|
||||
|
||||
Expected: the application renders the assigned entry, permitting authentication and the packet flow. Actual: the redirect loop prevents the application from rendering. Reproducibility: reproduced independently by the preflight agents. Console output was empty; network and visual evidence are linked below.
|
||||
|
||||
## Artifacts
|
||||
|
||||
- [root-1440x900-100.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-05/root-1440x900-100.png)
|
||||
- [root-console.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-05/root-console.txt)
|
||||
- [root-network.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-05/root-network.txt)
|
||||
|
||||
## Mutations and persistence
|
||||
|
||||
No credentials were submitted and no product mutation occurred. Reload and fresh-session retries reproduced the routing failure, so application persistence was not reachable.
|
||||
No findings recorded. Add structured findings to the metadata block and mirror them here.
|
||||
|
||||
## Blockers and gaps
|
||||
|
||||
Every non-evidence case listed as blocked remains untested beyond the routing entry. No blocked cell is treated as passed.
|
||||
Not executed.
|
||||
|
||||
## Cleanup
|
||||
|
||||
The named browser session was closed by the browser agent. Artifacts remain under the untracked packet directory; no secret values were captured.
|
||||
Record created resources, cleanup outcome, console errors, and network failures. Never include secret values.
|
||||
@@ -1,71 +1,35 @@
|
||||
<!-- release-v2-qa-report
|
||||
{
|
||||
"packetId": "core-v2-06",
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"caseStatuses": {
|
||||
"CV-006-HAPPY-PATH": "blocked",
|
||||
"CV-006-MUTATION-PERSISTENCE": "blocked",
|
||||
"CV-006-ACCESSIBILITY-ACCESS": "blocked",
|
||||
"CV-006-DEGRADED-RECOVERY": "blocked"
|
||||
"CV-006-HAPPY-PATH": "not-reached",
|
||||
"CV-006-MUTATION-PERSISTENCE": "not-reached",
|
||||
"CV-006-ACCESSIBILITY-ACCESS": "not-reached",
|
||||
"CV-006-DEGRADED-RECOVERY": "not-reached"
|
||||
},
|
||||
"execution": {
|
||||
"candidateSha": "f57a660088d6777c86aca22977354fa8b810e2be",
|
||||
"url": "http://127.0.0.1:37137",
|
||||
"actualPort": 37137,
|
||||
"runtimeProfile": "main-writable",
|
||||
"runtimeFlags": [
|
||||
"DEMO_MODE=true",
|
||||
"DEMO_READ_ONLY=false",
|
||||
"UNSAFE_ENABLE_MOCK_INTEGRATION=true"
|
||||
],
|
||||
"persona": "Kira Keyboard",
|
||||
"sessionId": "qa-v2-core-v2-06",
|
||||
"timestamp": "2026-08-31T17:05:24.186Z",
|
||||
"viewport": "mobile-320",
|
||||
"input": "keyboard",
|
||||
"zoom": 100
|
||||
"candidateSha": "2d5edf46513b96c8b9f973d4a121b396d688e9bb",
|
||||
"url": null,
|
||||
"actualPort": null,
|
||||
"runtimeProfile": null,
|
||||
"runtimeFlags": [],
|
||||
"persona": null,
|
||||
"sessionId": null,
|
||||
"timestamp": null,
|
||||
"viewport": null,
|
||||
"input": null,
|
||||
"zoom": null
|
||||
},
|
||||
"findings": [
|
||||
{
|
||||
"id": "RV2-P1-001",
|
||||
"fingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"severity": "P1",
|
||||
"area": "routing/authentication",
|
||||
"title": "Locale rewrite causes an infinite browser redirect before the application renders",
|
||||
"summary": "Chromium repeatedly requests the same entry route and ends on ERR_TOO_MANY_REDIRECTS, preventing the assigned browser flow.",
|
||||
"caseIds": [
|
||||
"CV-006-HAPPY-PATH",
|
||||
"CV-006-MUTATION-PERSISTENCE",
|
||||
"CV-006-ACCESSIBILITY-ACCESS",
|
||||
"CV-006-DEGRADED-RECOVERY"
|
||||
],
|
||||
"evidence": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-06/core-v2-06-mobile320-100-keyboard-redirect.png"
|
||||
]
|
||||
}
|
||||
],
|
||||
"artifacts": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-06/core-v2-06-mobile320-100-keyboard-redirect.png"
|
||||
],
|
||||
"findings": [],
|
||||
"artifacts": [],
|
||||
"widgetChecks": [],
|
||||
"performance": {
|
||||
"measurements": [],
|
||||
"limitations": [
|
||||
"The application never rendered, so assigned feature, mutation, persistence, permission, viewport, and performance checks were blocked.",
|
||||
"No credentials were submitted and no product state was mutated.",
|
||||
"The packet's retry did not produce a separate artifact; the same finding has independent reproductions in the preflight reports."
|
||||
]
|
||||
"limitations": []
|
||||
},
|
||||
"independentReproductions": [
|
||||
{
|
||||
"findingFingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"agentId": "qa-v2-preflight-01",
|
||||
"outcome": "reproduced",
|
||||
"evidence": [],
|
||||
"notes": "See preflight-01 for an independent Luna Max reproduction."
|
||||
}
|
||||
],
|
||||
"notes": "Report-only black-box run. No defect was fixed and no secret was recorded."
|
||||
"independentReproductions": [],
|
||||
"notes": "Not executed."
|
||||
}
|
||||
-->
|
||||
|
||||
@@ -73,7 +37,7 @@
|
||||
|
||||
| Metadata | Value |
|
||||
| --- | --- |
|
||||
| Status | blocked |
|
||||
| Status | not-reached |
|
||||
| Wave | core-v2 |
|
||||
| PR refs | #6545 |
|
||||
| Personas | Kira Keyboard |
|
||||
@@ -84,57 +48,39 @@
|
||||
| Input | mouse, touch, keyboard |
|
||||
| Widget kinds | None |
|
||||
| Artifact directory | [/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-06](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-06) |
|
||||
| Candidate SHA | f57a660088d6777c86aca22977354fa8b810e2be |
|
||||
| URL / actual port | http://127.0.0.1:37137 / 37137 |
|
||||
| Runtime profile / flags | main-writable; DEMO_MODE=true, DEMO_READ_ONLY=false, UNSAFE_ENABLE_MOCK_INTEGRATION=true |
|
||||
| Executed persona | Kira Keyboard |
|
||||
| Browser session ID | qa-v2-core-v2-06 |
|
||||
| Timestamp | 2026-08-31T17:05:24.186Z |
|
||||
| Executed viewport / input / zoom | mobile-320 / keyboard / 100% |
|
||||
| Candidate SHA | 2d5edf46513b96c8b9f973d4a121b396d688e9bb |
|
||||
| URL / actual port | not-recorded |
|
||||
| Runtime profile / flags | not-recorded |
|
||||
| Executed persona | not-recorded |
|
||||
| Browser session ID | not-recorded |
|
||||
| Timestamp | not-recorded |
|
||||
| Executed viewport / input / zoom | not-recorded |
|
||||
|
||||
## Dogfood evidence
|
||||
|
||||
| Case ID | Status | Evidence | Observed | Expected |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| CV-006-HAPPY-PATH | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-06) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Complete the primary flow using every assigned viewport, zoom, input, persona, profile, and board that applies. |
|
||||
| CV-006-MUTATION-PERSISTENCE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-06) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Exercise applicable create, edit, save, reload, reset, cancel, and destructive actions. |
|
||||
| CV-006-ACCESSIBILITY-ACCESS | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-06) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify keyboard/focus behavior, labels, permissions, outsider boundaries, and read-only enforcement. |
|
||||
| CV-006-DEGRADED-RECOVERY | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-06) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify empty, loading, failure, retry, recovery, console, network, evidence, and cleanup behavior. |
|
||||
| CV-006-HAPPY-PATH | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-06/CV-006-HAPPY-PATH.png) | Not executed | Complete the primary flow using every assigned viewport, zoom, input, persona, profile, and board that applies. |
|
||||
| CV-006-MUTATION-PERSISTENCE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-06/CV-006-MUTATION-PERSISTENCE.png) | Not executed | Exercise applicable create, edit, save, reload, reset, cancel, and destructive actions. |
|
||||
| CV-006-ACCESSIBILITY-ACCESS | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-06/CV-006-ACCESSIBILITY-ACCESS.png) | Not executed | Verify keyboard/focus behavior, labels, permissions, outsider boundaries, and read-only enforcement. |
|
||||
| CV-006-DEGRADED-RECOVERY | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-06/CV-006-DEGRADED-RECOVERY.png) | Not executed | Verify empty, loading, failure, retry, recovery, console, network, evidence, and cleanup behavior. |
|
||||
|
||||
## Performance measurements and limitations
|
||||
|
||||
No valid feature timing could be recorded because no application document rendered. Cold/warm, polling, rendering, memory, and recovery measurements remain blocked.
|
||||
Record structured measurements in `performance.measurements` with units, thresholds, status, and evidence. Record every environmental or tooling limitation in `performance.limitations`; leave measurements empty instead of inventing a result.
|
||||
|
||||
## Independent reproductions
|
||||
|
||||
The common routing failure was independently reproduced by qa-v2-preflight-01; the corresponding tracked packet contains its own browser evidence.
|
||||
Record a second agent's result in `independentReproductions` with the finding fingerprint, agent ID, outcome, evidence, and notes. An unattempted reproduction remains `not-reached`.
|
||||
|
||||
## Findings
|
||||
|
||||
### RV2-P1-001 — P1: locale rewrite causes an infinite browser redirect
|
||||
|
||||
Preconditions: candidate f57a660088d6777c86aca22977354fa8b810e2be, main-writable, mobile-320, 100% zoom, keyboard, fresh named Chromium session qa-v2-core-v2-06.
|
||||
|
||||
1. Launch a fresh Chromium context with the Chromium argument --no-sandbox.
|
||||
2. Set the assigned viewport and open http://127.0.0.1:37137 or its authentication entry.
|
||||
3. Observe repeated document requests to the same route.
|
||||
4. Wait until Chromium displays ERR_TOO_MANY_REDIRECTS or chrome-error://chromewebdata/.
|
||||
5. Compare the result with the independently reproduced preflight evidence.
|
||||
|
||||
Expected: the application renders the assigned entry, permitting authentication and the packet flow. Actual: the redirect loop prevents the application from rendering. Reproducibility: reproduced independently by the preflight agents. Console output was empty; network and visual evidence are linked below.
|
||||
|
||||
## Artifacts
|
||||
|
||||
- [core-v2-06-mobile320-100-keyboard-redirect.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-06/core-v2-06-mobile320-100-keyboard-redirect.png)
|
||||
|
||||
## Mutations and persistence
|
||||
|
||||
No credentials were submitted and no product mutation occurred. Reload and fresh-session retries reproduced the routing failure, so application persistence was not reachable.
|
||||
No findings recorded. Add structured findings to the metadata block and mirror them here.
|
||||
|
||||
## Blockers and gaps
|
||||
|
||||
Every non-evidence case listed as blocked remains untested beyond the routing entry. No blocked cell is treated as passed.
|
||||
Not executed.
|
||||
|
||||
## Cleanup
|
||||
|
||||
The named browser session was closed by the browser agent. Artifacts remain under the untracked packet directory; no secret values were captured.
|
||||
Record created resources, cleanup outcome, console errors, and network failures. Never include secret values.
|
||||
@@ -1,75 +1,35 @@
|
||||
<!-- release-v2-qa-report
|
||||
{
|
||||
"packetId": "core-v2-07",
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"caseStatuses": {
|
||||
"CV-007-HAPPY-PATH": "blocked",
|
||||
"CV-007-MUTATION-PERSISTENCE": "blocked",
|
||||
"CV-007-ACCESSIBILITY-ACCESS": "blocked",
|
||||
"CV-007-DEGRADED-RECOVERY": "blocked"
|
||||
"CV-007-HAPPY-PATH": "not-reached",
|
||||
"CV-007-MUTATION-PERSISTENCE": "not-reached",
|
||||
"CV-007-ACCESSIBILITY-ACCESS": "not-reached",
|
||||
"CV-007-DEGRADED-RECOVERY": "not-reached"
|
||||
},
|
||||
"execution": {
|
||||
"candidateSha": "f57a660088d6777c86aca22977354fa8b810e2be",
|
||||
"url": "http://127.0.0.1:43401",
|
||||
"actualPort": 43401,
|
||||
"runtimeProfile": "main-readonly",
|
||||
"runtimeFlags": [
|
||||
"DEMO_MODE=true",
|
||||
"DEMO_READ_ONLY=true",
|
||||
"UNSAFE_ENABLE_MOCK_INTEGRATION=true"
|
||||
],
|
||||
"persona": "Vivian Viewer",
|
||||
"sessionId": "qa-v2-core-v2-07",
|
||||
"timestamp": "2026-08-31T17:09:28.752Z",
|
||||
"viewport": "mobile-375",
|
||||
"input": "mouse",
|
||||
"zoom": 100
|
||||
"candidateSha": "2d5edf46513b96c8b9f973d4a121b396d688e9bb",
|
||||
"url": null,
|
||||
"actualPort": null,
|
||||
"runtimeProfile": null,
|
||||
"runtimeFlags": [],
|
||||
"persona": null,
|
||||
"sessionId": null,
|
||||
"timestamp": null,
|
||||
"viewport": null,
|
||||
"input": null,
|
||||
"zoom": null
|
||||
},
|
||||
"findings": [
|
||||
{
|
||||
"id": "RV2-P1-001",
|
||||
"fingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"severity": "P1",
|
||||
"area": "routing/authentication",
|
||||
"title": "Locale rewrite causes an infinite browser redirect before the application renders",
|
||||
"summary": "Chromium repeatedly requests the same entry route and ends on ERR_TOO_MANY_REDIRECTS, preventing the assigned browser flow.",
|
||||
"caseIds": [
|
||||
"CV-007-HAPPY-PATH",
|
||||
"CV-007-MUTATION-PERSISTENCE",
|
||||
"CV-007-ACCESSIBILITY-ACCESS",
|
||||
"CV-007-DEGRADED-RECOVERY"
|
||||
],
|
||||
"evidence": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-07/mobile-entry-network.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-07/screenshot-1788196133619.png"
|
||||
]
|
||||
}
|
||||
],
|
||||
"artifacts": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-07/mobile-entry-console.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-07/mobile-entry-errors.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-07/mobile-entry-network.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-07/screenshot-1788196133619.png"
|
||||
],
|
||||
"findings": [],
|
||||
"artifacts": [],
|
||||
"widgetChecks": [],
|
||||
"performance": {
|
||||
"measurements": [],
|
||||
"limitations": [
|
||||
"The application never rendered, so assigned feature, mutation, persistence, permission, viewport, and performance checks were blocked.",
|
||||
"No credentials were submitted and no product state was mutated.",
|
||||
"The packet's retry did not produce a separate artifact; the same finding has independent reproductions in the preflight reports."
|
||||
]
|
||||
"limitations": []
|
||||
},
|
||||
"independentReproductions": [
|
||||
{
|
||||
"findingFingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"agentId": "qa-v2-preflight-01",
|
||||
"outcome": "reproduced",
|
||||
"evidence": [],
|
||||
"notes": "See preflight-01 for an independent Luna Max reproduction."
|
||||
}
|
||||
],
|
||||
"notes": "Report-only black-box run. No defect was fixed and no secret was recorded."
|
||||
"independentReproductions": [],
|
||||
"notes": "Not executed."
|
||||
}
|
||||
-->
|
||||
|
||||
@@ -77,7 +37,7 @@
|
||||
|
||||
| Metadata | Value |
|
||||
| --- | --- |
|
||||
| Status | blocked |
|
||||
| Status | not-reached |
|
||||
| Wave | core-v2 |
|
||||
| PR refs | #6356, #6482, #6545 |
|
||||
| Personas | Vivian Viewer |
|
||||
@@ -88,60 +48,39 @@
|
||||
| Input | mouse, touch, keyboard |
|
||||
| Widget kinds | None |
|
||||
| Artifact directory | [/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-07](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-07) |
|
||||
| Candidate SHA | f57a660088d6777c86aca22977354fa8b810e2be |
|
||||
| URL / actual port | http://127.0.0.1:43401 / 43401 |
|
||||
| Runtime profile / flags | main-readonly; DEMO_MODE=true, DEMO_READ_ONLY=true, UNSAFE_ENABLE_MOCK_INTEGRATION=true |
|
||||
| Executed persona | Vivian Viewer |
|
||||
| Browser session ID | qa-v2-core-v2-07 |
|
||||
| Timestamp | 2026-08-31T17:09:28.752Z |
|
||||
| Executed viewport / input / zoom | mobile-375 / mouse / 100% |
|
||||
| Candidate SHA | 2d5edf46513b96c8b9f973d4a121b396d688e9bb |
|
||||
| URL / actual port | not-recorded |
|
||||
| Runtime profile / flags | not-recorded |
|
||||
| Executed persona | not-recorded |
|
||||
| Browser session ID | not-recorded |
|
||||
| Timestamp | not-recorded |
|
||||
| Executed viewport / input / zoom | not-recorded |
|
||||
|
||||
## Dogfood evidence
|
||||
|
||||
| Case ID | Status | Evidence | Observed | Expected |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| CV-007-HAPPY-PATH | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-07) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Complete the primary flow using every assigned viewport, zoom, input, persona, profile, and board that applies. |
|
||||
| CV-007-MUTATION-PERSISTENCE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-07) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Exercise applicable create, edit, save, reload, reset, cancel, and destructive actions. |
|
||||
| CV-007-ACCESSIBILITY-ACCESS | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-07) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify keyboard/focus behavior, labels, permissions, outsider boundaries, and read-only enforcement. |
|
||||
| CV-007-DEGRADED-RECOVERY | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-07) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify empty, loading, failure, retry, recovery, console, network, evidence, and cleanup behavior. |
|
||||
| CV-007-HAPPY-PATH | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-07/CV-007-HAPPY-PATH.png) | Not executed | Complete the primary flow using every assigned viewport, zoom, input, persona, profile, and board that applies. |
|
||||
| CV-007-MUTATION-PERSISTENCE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-07/CV-007-MUTATION-PERSISTENCE.png) | Not executed | Exercise applicable create, edit, save, reload, reset, cancel, and destructive actions. |
|
||||
| CV-007-ACCESSIBILITY-ACCESS | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-07/CV-007-ACCESSIBILITY-ACCESS.png) | Not executed | Verify keyboard/focus behavior, labels, permissions, outsider boundaries, and read-only enforcement. |
|
||||
| CV-007-DEGRADED-RECOVERY | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-07/CV-007-DEGRADED-RECOVERY.png) | Not executed | Verify empty, loading, failure, retry, recovery, console, network, evidence, and cleanup behavior. |
|
||||
|
||||
## Performance measurements and limitations
|
||||
|
||||
No valid feature timing could be recorded because no application document rendered. Cold/warm, polling, rendering, memory, and recovery measurements remain blocked.
|
||||
Record structured measurements in `performance.measurements` with units, thresholds, status, and evidence. Record every environmental or tooling limitation in `performance.limitations`; leave measurements empty instead of inventing a result.
|
||||
|
||||
## Independent reproductions
|
||||
|
||||
The common routing failure was independently reproduced by qa-v2-preflight-01; the corresponding tracked packet contains its own browser evidence.
|
||||
Record a second agent's result in `independentReproductions` with the finding fingerprint, agent ID, outcome, evidence, and notes. An unattempted reproduction remains `not-reached`.
|
||||
|
||||
## Findings
|
||||
|
||||
### RV2-P1-001 — P1: locale rewrite causes an infinite browser redirect
|
||||
|
||||
Preconditions: candidate f57a660088d6777c86aca22977354fa8b810e2be, main-readonly, mobile-375, 100% zoom, mouse, fresh named Chromium session qa-v2-core-v2-07.
|
||||
|
||||
1. Launch a fresh Chromium context with the Chromium argument --no-sandbox.
|
||||
2. Set the assigned viewport and open http://127.0.0.1:43401 or its authentication entry.
|
||||
3. Observe repeated document requests to the same route.
|
||||
4. Wait until Chromium displays ERR_TOO_MANY_REDIRECTS or chrome-error://chromewebdata/.
|
||||
5. Compare the result with the independently reproduced preflight evidence.
|
||||
|
||||
Expected: the application renders the assigned entry, permitting authentication and the packet flow. Actual: the redirect loop prevents the application from rendering. Reproducibility: reproduced independently by the preflight agents. Console output was empty; network and visual evidence are linked below.
|
||||
|
||||
## Artifacts
|
||||
|
||||
- [mobile-entry-console.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-07/mobile-entry-console.txt)
|
||||
- [mobile-entry-errors.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-07/mobile-entry-errors.txt)
|
||||
- [mobile-entry-network.json](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-07/mobile-entry-network.json)
|
||||
- [screenshot-1788196133619.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-07/screenshot-1788196133619.png)
|
||||
|
||||
## Mutations and persistence
|
||||
|
||||
No credentials were submitted and no product mutation occurred. Reload and fresh-session retries reproduced the routing failure, so application persistence was not reachable.
|
||||
No findings recorded. Add structured findings to the metadata block and mirror them here.
|
||||
|
||||
## Blockers and gaps
|
||||
|
||||
Every non-evidence case listed as blocked remains untested beyond the routing entry. No blocked cell is treated as passed.
|
||||
Not executed.
|
||||
|
||||
## Cleanup
|
||||
|
||||
The named browser session was closed by the browser agent. Artifacts remain under the untracked packet directory; no secret values were captured.
|
||||
Record created resources, cleanup outcome, console errors, and network failures. Never include secret values.
|
||||
@@ -1,74 +1,35 @@
|
||||
<!-- release-v2-qa-report
|
||||
{
|
||||
"packetId": "core-v2-08",
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"caseStatuses": {
|
||||
"CV-008-HAPPY-PATH": "blocked",
|
||||
"CV-008-MUTATION-PERSISTENCE": "blocked",
|
||||
"CV-008-ACCESSIBILITY-ACCESS": "blocked",
|
||||
"CV-008-DEGRADED-RECOVERY": "blocked"
|
||||
"CV-008-HAPPY-PATH": "not-reached",
|
||||
"CV-008-MUTATION-PERSISTENCE": "not-reached",
|
||||
"CV-008-ACCESSIBILITY-ACCESS": "not-reached",
|
||||
"CV-008-DEGRADED-RECOVERY": "not-reached"
|
||||
},
|
||||
"execution": {
|
||||
"candidateSha": "f57a660088d6777c86aca22977354fa8b810e2be",
|
||||
"url": "http://127.0.0.1:46777",
|
||||
"actualPort": 46777,
|
||||
"runtimeProfile": "degraded",
|
||||
"runtimeFlags": [
|
||||
"DEMO_MODE=true",
|
||||
"DEMO_READ_ONLY=false",
|
||||
"UNSAFE_ENABLE_MOCK_INTEGRATION=true"
|
||||
],
|
||||
"persona": "Casey Chaos",
|
||||
"sessionId": "qa-v2-core-v2-08",
|
||||
"timestamp": "2026-08-31T17:14:20.509Z",
|
||||
"viewport": "mobile-320",
|
||||
"input": "mouse",
|
||||
"zoom": 100
|
||||
"candidateSha": "2d5edf46513b96c8b9f973d4a121b396d688e9bb",
|
||||
"url": null,
|
||||
"actualPort": null,
|
||||
"runtimeProfile": null,
|
||||
"runtimeFlags": [],
|
||||
"persona": null,
|
||||
"sessionId": null,
|
||||
"timestamp": null,
|
||||
"viewport": null,
|
||||
"input": null,
|
||||
"zoom": null
|
||||
},
|
||||
"findings": [
|
||||
{
|
||||
"id": "RV2-P1-001",
|
||||
"fingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"severity": "P1",
|
||||
"area": "routing/authentication",
|
||||
"title": "Locale rewrite causes an infinite browser redirect before the application renders",
|
||||
"summary": "Chromium repeatedly requests the same entry route and ends on ERR_TOO_MANY_REDIRECTS, preventing the assigned browser flow.",
|
||||
"caseIds": [
|
||||
"CV-008-HAPPY-PATH",
|
||||
"CV-008-MUTATION-PERSISTENCE",
|
||||
"CV-008-ACCESSIBILITY-ACCESS",
|
||||
"CV-008-DEGRADED-RECOVERY"
|
||||
],
|
||||
"evidence": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-08/entry-320x568-network.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-08/entry-320x568-redirect.png"
|
||||
]
|
||||
}
|
||||
],
|
||||
"artifacts": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-08/entry-320x568-console.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-08/entry-320x568-network.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-08/entry-320x568-redirect.png"
|
||||
],
|
||||
"findings": [],
|
||||
"artifacts": [],
|
||||
"widgetChecks": [],
|
||||
"performance": {
|
||||
"measurements": [],
|
||||
"limitations": [
|
||||
"The application never rendered, so assigned feature, mutation, persistence, permission, viewport, and performance checks were blocked.",
|
||||
"No credentials were submitted and no product state was mutated.",
|
||||
"The packet's retry did not produce a separate artifact; the same finding has independent reproductions in the preflight reports."
|
||||
]
|
||||
"limitations": []
|
||||
},
|
||||
"independentReproductions": [
|
||||
{
|
||||
"findingFingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"agentId": "qa-v2-preflight-01",
|
||||
"outcome": "reproduced",
|
||||
"evidence": [],
|
||||
"notes": "See preflight-01 for an independent Luna Max reproduction."
|
||||
}
|
||||
],
|
||||
"notes": "Report-only black-box run. No defect was fixed and no secret was recorded."
|
||||
"independentReproductions": [],
|
||||
"notes": "Not executed."
|
||||
}
|
||||
-->
|
||||
|
||||
@@ -76,7 +37,7 @@
|
||||
|
||||
| Metadata | Value |
|
||||
| --- | --- |
|
||||
| Status | blocked |
|
||||
| Status | not-reached |
|
||||
| Wave | core-v2 |
|
||||
| PR refs | #6356, #6482, #6502, #6545 |
|
||||
| Personas | Casey Chaos |
|
||||
@@ -87,59 +48,39 @@
|
||||
| Input | mouse, touch, keyboard |
|
||||
| Widget kinds | None |
|
||||
| Artifact directory | [/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-08](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-08) |
|
||||
| Candidate SHA | f57a660088d6777c86aca22977354fa8b810e2be |
|
||||
| URL / actual port | http://127.0.0.1:46777 / 46777 |
|
||||
| Runtime profile / flags | degraded; DEMO_MODE=true, DEMO_READ_ONLY=false, UNSAFE_ENABLE_MOCK_INTEGRATION=true |
|
||||
| Executed persona | Casey Chaos |
|
||||
| Browser session ID | qa-v2-core-v2-08 |
|
||||
| Timestamp | 2026-08-31T17:14:20.509Z |
|
||||
| Executed viewport / input / zoom | mobile-320 / mouse / 100% |
|
||||
| Candidate SHA | 2d5edf46513b96c8b9f973d4a121b396d688e9bb |
|
||||
| URL / actual port | not-recorded |
|
||||
| Runtime profile / flags | not-recorded |
|
||||
| Executed persona | not-recorded |
|
||||
| Browser session ID | not-recorded |
|
||||
| Timestamp | not-recorded |
|
||||
| Executed viewport / input / zoom | not-recorded |
|
||||
|
||||
## Dogfood evidence
|
||||
|
||||
| Case ID | Status | Evidence | Observed | Expected |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| CV-008-HAPPY-PATH | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-08) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Complete the primary flow using every assigned viewport, zoom, input, persona, profile, and board that applies. |
|
||||
| CV-008-MUTATION-PERSISTENCE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-08) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Exercise applicable create, edit, save, reload, reset, cancel, and destructive actions. |
|
||||
| CV-008-ACCESSIBILITY-ACCESS | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-08) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify keyboard/focus behavior, labels, permissions, outsider boundaries, and read-only enforcement. |
|
||||
| CV-008-DEGRADED-RECOVERY | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-08) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify empty, loading, failure, retry, recovery, console, network, evidence, and cleanup behavior. |
|
||||
| CV-008-HAPPY-PATH | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-08/CV-008-HAPPY-PATH.png) | Not executed | Complete the primary flow using every assigned viewport, zoom, input, persona, profile, and board that applies. |
|
||||
| CV-008-MUTATION-PERSISTENCE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-08/CV-008-MUTATION-PERSISTENCE.png) | Not executed | Exercise applicable create, edit, save, reload, reset, cancel, and destructive actions. |
|
||||
| CV-008-ACCESSIBILITY-ACCESS | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-08/CV-008-ACCESSIBILITY-ACCESS.png) | Not executed | Verify keyboard/focus behavior, labels, permissions, outsider boundaries, and read-only enforcement. |
|
||||
| CV-008-DEGRADED-RECOVERY | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-08/CV-008-DEGRADED-RECOVERY.png) | Not executed | Verify empty, loading, failure, retry, recovery, console, network, evidence, and cleanup behavior. |
|
||||
|
||||
## Performance measurements and limitations
|
||||
|
||||
No valid feature timing could be recorded because no application document rendered. Cold/warm, polling, rendering, memory, and recovery measurements remain blocked.
|
||||
Record structured measurements in `performance.measurements` with units, thresholds, status, and evidence. Record every environmental or tooling limitation in `performance.limitations`; leave measurements empty instead of inventing a result.
|
||||
|
||||
## Independent reproductions
|
||||
|
||||
The common routing failure was independently reproduced by qa-v2-preflight-01; the corresponding tracked packet contains its own browser evidence.
|
||||
Record a second agent's result in `independentReproductions` with the finding fingerprint, agent ID, outcome, evidence, and notes. An unattempted reproduction remains `not-reached`.
|
||||
|
||||
## Findings
|
||||
|
||||
### RV2-P1-001 — P1: locale rewrite causes an infinite browser redirect
|
||||
|
||||
Preconditions: candidate f57a660088d6777c86aca22977354fa8b810e2be, degraded, mobile-320, 100% zoom, mouse, fresh named Chromium session qa-v2-core-v2-08.
|
||||
|
||||
1. Launch a fresh Chromium context with the Chromium argument --no-sandbox.
|
||||
2. Set the assigned viewport and open http://127.0.0.1:46777 or its authentication entry.
|
||||
3. Observe repeated document requests to the same route.
|
||||
4. Wait until Chromium displays ERR_TOO_MANY_REDIRECTS or chrome-error://chromewebdata/.
|
||||
5. Compare the result with the independently reproduced preflight evidence.
|
||||
|
||||
Expected: the application renders the assigned entry, permitting authentication and the packet flow. Actual: the redirect loop prevents the application from rendering. Reproducibility: reproduced independently by the preflight agents. Console output was empty; network and visual evidence are linked below.
|
||||
|
||||
## Artifacts
|
||||
|
||||
- [entry-320x568-console.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-08/entry-320x568-console.txt)
|
||||
- [entry-320x568-network.json](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-08/entry-320x568-network.json)
|
||||
- [entry-320x568-redirect.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/core-v2-08/entry-320x568-redirect.png)
|
||||
|
||||
## Mutations and persistence
|
||||
|
||||
No credentials were submitted and no product mutation occurred. Reload and fresh-session retries reproduced the routing failure, so application persistence was not reachable.
|
||||
No findings recorded. Add structured findings to the metadata block and mirror them here.
|
||||
|
||||
## Blockers and gaps
|
||||
|
||||
Every non-evidence case listed as blocked remains untested beyond the routing entry. No blocked cell is treated as passed.
|
||||
Not executed.
|
||||
|
||||
## Cleanup
|
||||
|
||||
The named browser session was closed by the browser agent. Artifacts remain under the untracked packet directory; no secret values were captured.
|
||||
Record created resources, cleanup outcome, console errors, and network failures. Never include secret values.
|
||||
@@ -1,76 +1,35 @@
|
||||
<!-- release-v2-qa-report
|
||||
{
|
||||
"packetId": "performance-01",
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"caseStatuses": {
|
||||
"PE-001-BASELINE": "blocked",
|
||||
"PE-001-THRESHOLD": "blocked",
|
||||
"PE-001-STRESS": "blocked",
|
||||
"PE-001-RECOVERY-EVIDENCE": "blocked"
|
||||
"PE-001-BASELINE": "not-reached",
|
||||
"PE-001-THRESHOLD": "not-reached",
|
||||
"PE-001-STRESS": "not-reached",
|
||||
"PE-001-RECOVERY-EVIDENCE": "not-reached"
|
||||
},
|
||||
"execution": {
|
||||
"candidateSha": "f57a660088d6777c86aca22977354fa8b810e2be",
|
||||
"url": "http://127.0.0.1:37137",
|
||||
"actualPort": 37137,
|
||||
"runtimeProfile": "main-writable",
|
||||
"runtimeFlags": [
|
||||
"DEMO_MODE=true",
|
||||
"DEMO_READ_ONLY=false",
|
||||
"UNSAFE_ENABLE_MOCK_INTEGRATION=true"
|
||||
],
|
||||
"persona": "Avery Admin",
|
||||
"sessionId": "qa-v2-performance-01",
|
||||
"timestamp": "2026-08-31T18:17:56.112Z",
|
||||
"viewport": "mobile-375",
|
||||
"input": "mouse",
|
||||
"zoom": 100
|
||||
"candidateSha": "2d5edf46513b96c8b9f973d4a121b396d688e9bb",
|
||||
"url": null,
|
||||
"actualPort": null,
|
||||
"runtimeProfile": null,
|
||||
"runtimeFlags": [],
|
||||
"persona": null,
|
||||
"sessionId": null,
|
||||
"timestamp": null,
|
||||
"viewport": null,
|
||||
"input": null,
|
||||
"zoom": null
|
||||
},
|
||||
"findings": [
|
||||
{
|
||||
"id": "RV2-P1-001",
|
||||
"fingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"severity": "P1",
|
||||
"area": "routing/authentication",
|
||||
"title": "Locale rewrite causes an infinite browser redirect before the application renders",
|
||||
"summary": "Chromium repeatedly requests the same entry route and ends on ERR_TOO_MANY_REDIRECTS, preventing the assigned browser flow.",
|
||||
"caseIds": [
|
||||
"PE-001-BASELINE",
|
||||
"PE-001-THRESHOLD",
|
||||
"PE-001-STRESS",
|
||||
"PE-001-RECOVERY-EVIDENCE"
|
||||
],
|
||||
"evidence": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-01/cold-375-entry.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-01/network-cold-375.json"
|
||||
]
|
||||
}
|
||||
],
|
||||
"artifacts": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-01/cold-375-entry.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-01/console-cold-375.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-01/errors-cold-375.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-01/network-cold-375.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-01/snapshot-cold-375.txt"
|
||||
],
|
||||
"findings": [],
|
||||
"artifacts": [],
|
||||
"widgetChecks": [],
|
||||
"performance": {
|
||||
"measurements": [],
|
||||
"limitations": [
|
||||
"The application never rendered, so assigned feature, mutation, persistence, permission, viewport, and performance checks were blocked.",
|
||||
"No credentials were submitted and no product state was mutated.",
|
||||
"The packet's retry did not produce a separate artifact; the same finding has independent reproductions in the preflight reports."
|
||||
]
|
||||
"limitations": []
|
||||
},
|
||||
"independentReproductions": [
|
||||
{
|
||||
"findingFingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"agentId": "qa-v2-preflight-01",
|
||||
"outcome": "reproduced",
|
||||
"evidence": [],
|
||||
"notes": "See preflight-01 for an independent Luna Max reproduction."
|
||||
}
|
||||
],
|
||||
"notes": "Report-only black-box run. No defect was fixed and no secret was recorded."
|
||||
"independentReproductions": [],
|
||||
"notes": "Not executed."
|
||||
}
|
||||
-->
|
||||
|
||||
@@ -78,7 +37,7 @@
|
||||
|
||||
| Metadata | Value |
|
||||
| --- | --- |
|
||||
| Status | blocked |
|
||||
| Status | not-reached |
|
||||
| Wave | performance |
|
||||
| PR refs | #6555, #6545 |
|
||||
| Personas | Avery Admin |
|
||||
@@ -89,61 +48,39 @@
|
||||
| Input | mouse |
|
||||
| Widget kinds | None |
|
||||
| Artifact directory | [/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-01](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-01) |
|
||||
| Candidate SHA | f57a660088d6777c86aca22977354fa8b810e2be |
|
||||
| URL / actual port | http://127.0.0.1:37137 / 37137 |
|
||||
| Runtime profile / flags | main-writable; DEMO_MODE=true, DEMO_READ_ONLY=false, UNSAFE_ENABLE_MOCK_INTEGRATION=true |
|
||||
| Executed persona | Avery Admin |
|
||||
| Browser session ID | qa-v2-performance-01 |
|
||||
| Timestamp | 2026-08-31T18:17:56.112Z |
|
||||
| Executed viewport / input / zoom | mobile-375 / mouse / 100% |
|
||||
| Candidate SHA | 2d5edf46513b96c8b9f973d4a121b396d688e9bb |
|
||||
| URL / actual port | not-recorded |
|
||||
| Runtime profile / flags | not-recorded |
|
||||
| Executed persona | not-recorded |
|
||||
| Browser session ID | not-recorded |
|
||||
| Timestamp | not-recorded |
|
||||
| Executed viewport / input / zoom | not-recorded |
|
||||
|
||||
## Dogfood evidence
|
||||
|
||||
| Case ID | Status | Evidence | Observed | Expected |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| PE-001-BASELINE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-01) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Capture repeatable cold and warm timing, request, render, memory, and console baselines with candidate metadata. |
|
||||
| PE-001-THRESHOLD | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-01) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Measure the packet at every assigned viewport, zoom, input, board, and profile against the documented threshold. |
|
||||
| PE-001-STRESS | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-01) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Exercise dense data, repeated interaction, long-session, latency, and failure stress that applies. |
|
||||
| PE-001-RECOVERY-EVIDENCE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-01) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify recovery after stress and link trace, screenshot, network, memory, and cleanup artifacts. |
|
||||
| PE-001-BASELINE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-01/PE-001-BASELINE.png) | Not executed | Capture repeatable cold and warm timing, request, render, memory, and console baselines with candidate metadata. |
|
||||
| PE-001-THRESHOLD | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-01/PE-001-THRESHOLD.png) | Not executed | Measure the packet at every assigned viewport, zoom, input, board, and profile against the documented threshold. |
|
||||
| PE-001-STRESS | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-01/PE-001-STRESS.png) | Not executed | Exercise dense data, repeated interaction, long-session, latency, and failure stress that applies. |
|
||||
| PE-001-RECOVERY-EVIDENCE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-01/PE-001-RECOVERY-EVIDENCE.png) | Not executed | Verify recovery after stress and link trace, screenshot, network, memory, and cleanup artifacts. |
|
||||
|
||||
## Performance measurements and limitations
|
||||
|
||||
No valid feature timing could be recorded because no application document rendered. Cold/warm, polling, rendering, memory, and recovery measurements remain blocked.
|
||||
Record structured measurements in `performance.measurements` with units, thresholds, status, and evidence. Record every environmental or tooling limitation in `performance.limitations`; leave measurements empty instead of inventing a result.
|
||||
|
||||
## Independent reproductions
|
||||
|
||||
The common routing failure was independently reproduced by qa-v2-preflight-01; the corresponding tracked packet contains its own browser evidence.
|
||||
Record a second agent's result in `independentReproductions` with the finding fingerprint, agent ID, outcome, evidence, and notes. An unattempted reproduction remains `not-reached`.
|
||||
|
||||
## Findings
|
||||
|
||||
### RV2-P1-001 — P1: locale rewrite causes an infinite browser redirect
|
||||
|
||||
Preconditions: candidate f57a660088d6777c86aca22977354fa8b810e2be, main-writable, mobile-375, 100% zoom, mouse, fresh named Chromium session qa-v2-performance-01.
|
||||
|
||||
1. Launch a fresh Chromium context with the Chromium argument --no-sandbox.
|
||||
2. Set the assigned viewport and open http://127.0.0.1:37137 or its authentication entry.
|
||||
3. Observe repeated document requests to the same route.
|
||||
4. Wait until Chromium displays ERR_TOO_MANY_REDIRECTS or chrome-error://chromewebdata/.
|
||||
5. Compare the result with the independently reproduced preflight evidence.
|
||||
|
||||
Expected: the application renders the assigned entry, permitting authentication and the packet flow. Actual: the redirect loop prevents the application from rendering. Reproducibility: reproduced independently by the preflight agents. Console output was empty; network and visual evidence are linked below.
|
||||
|
||||
## Artifacts
|
||||
|
||||
- [cold-375-entry.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-01/cold-375-entry.png)
|
||||
- [console-cold-375.json](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-01/console-cold-375.json)
|
||||
- [errors-cold-375.json](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-01/errors-cold-375.json)
|
||||
- [network-cold-375.json](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-01/network-cold-375.json)
|
||||
- [snapshot-cold-375.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-01/snapshot-cold-375.txt)
|
||||
|
||||
## Mutations and persistence
|
||||
|
||||
No credentials were submitted and no product mutation occurred. Reload and fresh-session retries reproduced the routing failure, so application persistence was not reachable.
|
||||
No findings recorded. Add structured findings to the metadata block and mirror them here.
|
||||
|
||||
## Blockers and gaps
|
||||
|
||||
Every non-evidence case listed as blocked remains untested beyond the routing entry. No blocked cell is treated as passed.
|
||||
Not executed.
|
||||
|
||||
## Cleanup
|
||||
|
||||
The named browser session was closed by the browser agent. Artifacts remain under the untracked packet directory; no secret values were captured.
|
||||
Record created resources, cleanup outcome, console errors, and network failures. Never include secret values.
|
||||
@@ -1,77 +1,35 @@
|
||||
<!-- release-v2-qa-report
|
||||
{
|
||||
"packetId": "performance-02",
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"caseStatuses": {
|
||||
"PE-002-BASELINE": "blocked",
|
||||
"PE-002-THRESHOLD": "blocked",
|
||||
"PE-002-STRESS": "blocked",
|
||||
"PE-002-RECOVERY-EVIDENCE": "blocked"
|
||||
"PE-002-BASELINE": "not-reached",
|
||||
"PE-002-THRESHOLD": "not-reached",
|
||||
"PE-002-STRESS": "not-reached",
|
||||
"PE-002-RECOVERY-EVIDENCE": "not-reached"
|
||||
},
|
||||
"execution": {
|
||||
"candidateSha": "f57a660088d6777c86aca22977354fa8b810e2be",
|
||||
"url": "http://127.0.0.1:37137",
|
||||
"actualPort": 37137,
|
||||
"runtimeProfile": "main-writable",
|
||||
"runtimeFlags": [
|
||||
"DEMO_MODE=true",
|
||||
"DEMO_READ_ONLY=false",
|
||||
"UNSAFE_ENABLE_MOCK_INTEGRATION=true"
|
||||
],
|
||||
"persona": "Rowan Owner",
|
||||
"sessionId": "qa-v2-performance-02",
|
||||
"timestamp": "2026-08-31T18:25:01.713Z",
|
||||
"viewport": "tablet-1024",
|
||||
"input": "mouse",
|
||||
"zoom": 100
|
||||
"candidateSha": "2d5edf46513b96c8b9f973d4a121b396d688e9bb",
|
||||
"url": null,
|
||||
"actualPort": null,
|
||||
"runtimeProfile": null,
|
||||
"runtimeFlags": [],
|
||||
"persona": null,
|
||||
"sessionId": null,
|
||||
"timestamp": null,
|
||||
"viewport": null,
|
||||
"input": null,
|
||||
"zoom": null
|
||||
},
|
||||
"findings": [
|
||||
{
|
||||
"id": "RV2-P1-001",
|
||||
"fingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"severity": "P1",
|
||||
"area": "routing/authentication",
|
||||
"title": "Locale rewrite causes an infinite browser redirect before the application renders",
|
||||
"summary": "Chromium repeatedly requests the same entry route and ends on ERR_TOO_MANY_REDIRECTS, preventing the assigned browser flow.",
|
||||
"caseIds": [
|
||||
"PE-002-BASELINE",
|
||||
"PE-002-THRESHOLD",
|
||||
"PE-002-STRESS",
|
||||
"PE-002-RECOVERY-EVIDENCE"
|
||||
],
|
||||
"evidence": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-02/performance-02-1024x768-100-mouse-entry-annotated.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-02/performance-02-1024x768-100-mouse-entry-attempt-annotated.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-02/performance-02-network.txt"
|
||||
]
|
||||
}
|
||||
],
|
||||
"artifacts": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-02/performance-02-1024x768-100-mouse-entry-annotated.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-02/performance-02-1024x768-100-mouse-entry-attempt-annotated.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-02/performance-02-console.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-02/performance-02-errors.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-02/performance-02-network.txt"
|
||||
],
|
||||
"findings": [],
|
||||
"artifacts": [],
|
||||
"widgetChecks": [],
|
||||
"performance": {
|
||||
"measurements": [],
|
||||
"limitations": [
|
||||
"The application never rendered, so assigned feature, mutation, persistence, permission, viewport, and performance checks were blocked.",
|
||||
"No credentials were submitted and no product state was mutated.",
|
||||
"The packet's retry did not produce a separate artifact; the same finding has independent reproductions in the preflight reports."
|
||||
]
|
||||
"limitations": []
|
||||
},
|
||||
"independentReproductions": [
|
||||
{
|
||||
"findingFingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"agentId": "qa-v2-preflight-01",
|
||||
"outcome": "reproduced",
|
||||
"evidence": [],
|
||||
"notes": "See preflight-01 for an independent Luna Max reproduction."
|
||||
}
|
||||
],
|
||||
"notes": "Report-only black-box run. No defect was fixed and no secret was recorded."
|
||||
"independentReproductions": [],
|
||||
"notes": "Not executed."
|
||||
}
|
||||
-->
|
||||
|
||||
@@ -79,7 +37,7 @@
|
||||
|
||||
| Metadata | Value |
|
||||
| --- | --- |
|
||||
| Status | blocked |
|
||||
| Status | not-reached |
|
||||
| Wave | performance |
|
||||
| PR refs | #6503, #6555 |
|
||||
| Personas | Rowan Owner |
|
||||
@@ -90,61 +48,39 @@
|
||||
| Input | mouse, touch, keyboard |
|
||||
| Widget kinds | None |
|
||||
| Artifact directory | [/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-02](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-02) |
|
||||
| Candidate SHA | f57a660088d6777c86aca22977354fa8b810e2be |
|
||||
| URL / actual port | http://127.0.0.1:37137 / 37137 |
|
||||
| Runtime profile / flags | main-writable; DEMO_MODE=true, DEMO_READ_ONLY=false, UNSAFE_ENABLE_MOCK_INTEGRATION=true |
|
||||
| Executed persona | Rowan Owner |
|
||||
| Browser session ID | qa-v2-performance-02 |
|
||||
| Timestamp | 2026-08-31T18:25:01.713Z |
|
||||
| Executed viewport / input / zoom | tablet-1024 / mouse / 100% |
|
||||
| Candidate SHA | 2d5edf46513b96c8b9f973d4a121b396d688e9bb |
|
||||
| URL / actual port | not-recorded |
|
||||
| Runtime profile / flags | not-recorded |
|
||||
| Executed persona | not-recorded |
|
||||
| Browser session ID | not-recorded |
|
||||
| Timestamp | not-recorded |
|
||||
| Executed viewport / input / zoom | not-recorded |
|
||||
|
||||
## Dogfood evidence
|
||||
|
||||
| Case ID | Status | Evidence | Observed | Expected |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| PE-002-BASELINE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-02) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Capture repeatable cold and warm timing, request, render, memory, and console baselines with candidate metadata. |
|
||||
| PE-002-THRESHOLD | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-02) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Measure the packet at every assigned viewport, zoom, input, board, and profile against the documented threshold. |
|
||||
| PE-002-STRESS | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-02) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Exercise dense data, repeated interaction, long-session, latency, and failure stress that applies. |
|
||||
| PE-002-RECOVERY-EVIDENCE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-02) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify recovery after stress and link trace, screenshot, network, memory, and cleanup artifacts. |
|
||||
| PE-002-BASELINE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-02/PE-002-BASELINE.png) | Not executed | Capture repeatable cold and warm timing, request, render, memory, and console baselines with candidate metadata. |
|
||||
| PE-002-THRESHOLD | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-02/PE-002-THRESHOLD.png) | Not executed | Measure the packet at every assigned viewport, zoom, input, board, and profile against the documented threshold. |
|
||||
| PE-002-STRESS | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-02/PE-002-STRESS.png) | Not executed | Exercise dense data, repeated interaction, long-session, latency, and failure stress that applies. |
|
||||
| PE-002-RECOVERY-EVIDENCE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-02/PE-002-RECOVERY-EVIDENCE.png) | Not executed | Verify recovery after stress and link trace, screenshot, network, memory, and cleanup artifacts. |
|
||||
|
||||
## Performance measurements and limitations
|
||||
|
||||
No valid feature timing could be recorded because no application document rendered. Cold/warm, polling, rendering, memory, and recovery measurements remain blocked.
|
||||
Record structured measurements in `performance.measurements` with units, thresholds, status, and evidence. Record every environmental or tooling limitation in `performance.limitations`; leave measurements empty instead of inventing a result.
|
||||
|
||||
## Independent reproductions
|
||||
|
||||
The common routing failure was independently reproduced by qa-v2-preflight-01; the corresponding tracked packet contains its own browser evidence.
|
||||
Record a second agent's result in `independentReproductions` with the finding fingerprint, agent ID, outcome, evidence, and notes. An unattempted reproduction remains `not-reached`.
|
||||
|
||||
## Findings
|
||||
|
||||
### RV2-P1-001 — P1: locale rewrite causes an infinite browser redirect
|
||||
|
||||
Preconditions: candidate f57a660088d6777c86aca22977354fa8b810e2be, main-writable, tablet-1024, 100% zoom, mouse, fresh named Chromium session qa-v2-performance-02.
|
||||
|
||||
1. Launch a fresh Chromium context with the Chromium argument --no-sandbox.
|
||||
2. Set the assigned viewport and open http://127.0.0.1:37137 or its authentication entry.
|
||||
3. Observe repeated document requests to the same route.
|
||||
4. Wait until Chromium displays ERR_TOO_MANY_REDIRECTS or chrome-error://chromewebdata/.
|
||||
5. Compare the result with the independently reproduced preflight evidence.
|
||||
|
||||
Expected: the application renders the assigned entry, permitting authentication and the packet flow. Actual: the redirect loop prevents the application from rendering. Reproducibility: reproduced independently by the preflight agents. Console output was empty; network and visual evidence are linked below.
|
||||
|
||||
## Artifacts
|
||||
|
||||
- [performance-02-1024x768-100-mouse-entry-annotated.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-02/performance-02-1024x768-100-mouse-entry-annotated.png)
|
||||
- [performance-02-1024x768-100-mouse-entry-attempt-annotated.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-02/performance-02-1024x768-100-mouse-entry-attempt-annotated.png)
|
||||
- [performance-02-console.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-02/performance-02-console.txt)
|
||||
- [performance-02-errors.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-02/performance-02-errors.txt)
|
||||
- [performance-02-network.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-02/performance-02-network.txt)
|
||||
|
||||
## Mutations and persistence
|
||||
|
||||
No credentials were submitted and no product mutation occurred. Reload and fresh-session retries reproduced the routing failure, so application persistence was not reachable.
|
||||
No findings recorded. Add structured findings to the metadata block and mirror them here.
|
||||
|
||||
## Blockers and gaps
|
||||
|
||||
Every non-evidence case listed as blocked remains untested beyond the routing entry. No blocked cell is treated as passed.
|
||||
Not executed.
|
||||
|
||||
## Cleanup
|
||||
|
||||
The named browser session was closed by the browser agent. Artifacts remain under the untracked packet directory; no secret values were captured.
|
||||
Record created resources, cleanup outcome, console errors, and network failures. Never include secret values.
|
||||
@@ -1,86 +1,35 @@
|
||||
<!-- release-v2-qa-report
|
||||
{
|
||||
"packetId": "performance-03",
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"caseStatuses": {
|
||||
"PE-003-BASELINE": "blocked",
|
||||
"PE-003-THRESHOLD": "blocked",
|
||||
"PE-003-STRESS": "blocked",
|
||||
"PE-003-RECOVERY-EVIDENCE": "blocked"
|
||||
"PE-003-BASELINE": "not-reached",
|
||||
"PE-003-THRESHOLD": "not-reached",
|
||||
"PE-003-STRESS": "not-reached",
|
||||
"PE-003-RECOVERY-EVIDENCE": "not-reached"
|
||||
},
|
||||
"execution": {
|
||||
"candidateSha": "f57a660088d6777c86aca22977354fa8b810e2be",
|
||||
"url": "http://127.0.0.1:46777",
|
||||
"actualPort": 46777,
|
||||
"runtimeProfile": "degraded",
|
||||
"runtimeFlags": [
|
||||
"DEMO_MODE=true",
|
||||
"DEMO_READ_ONLY=false",
|
||||
"UNSAFE_ENABLE_MOCK_INTEGRATION=true"
|
||||
],
|
||||
"persona": "Ingrid Infra",
|
||||
"sessionId": "qa-v2-performance-03",
|
||||
"timestamp": "2026-08-31T18:30:29.480Z",
|
||||
"viewport": "mobile-320",
|
||||
"input": "mouse",
|
||||
"zoom": 100
|
||||
"candidateSha": "2d5edf46513b96c8b9f973d4a121b396d688e9bb",
|
||||
"url": null,
|
||||
"actualPort": null,
|
||||
"runtimeProfile": null,
|
||||
"runtimeFlags": [],
|
||||
"persona": null,
|
||||
"sessionId": null,
|
||||
"timestamp": null,
|
||||
"viewport": null,
|
||||
"input": null,
|
||||
"zoom": null
|
||||
},
|
||||
"findings": [
|
||||
{
|
||||
"id": "RV2-P1-001",
|
||||
"fingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"severity": "P1",
|
||||
"area": "routing/authentication",
|
||||
"title": "Locale rewrite causes an infinite browser redirect before the application renders",
|
||||
"summary": "Chromium repeatedly requests the same entry route and ends on ERR_TOO_MANY_REDIRECTS, preventing the assigned browser flow.",
|
||||
"caseIds": [
|
||||
"PE-003-BASELINE",
|
||||
"PE-003-THRESHOLD",
|
||||
"PE-003-STRESS",
|
||||
"PE-003-RECOVERY-EVIDENCE"
|
||||
],
|
||||
"evidence": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-03/network-mouse-entry.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-03/network.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-03/performance-03-320x568-100-mouse-entry.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-03/performance-03-320x568-100-mouse.png"
|
||||
]
|
||||
}
|
||||
],
|
||||
"artifacts": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-03/close-mouse-entry.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-03/close.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-03/console-mouse-entry.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-03/console.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-03/errors-mouse-entry.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-03/errors.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-03/network-mouse-entry.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-03/network.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-03/open.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-03/performance-03-320x568-100-mouse-entry.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-03/performance-03-320x568-100-mouse.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-03/screenshot.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-03/setup.txt"
|
||||
],
|
||||
"findings": [],
|
||||
"artifacts": [],
|
||||
"widgetChecks": [],
|
||||
"performance": {
|
||||
"measurements": [],
|
||||
"limitations": [
|
||||
"The application never rendered, so assigned feature, mutation, persistence, permission, viewport, and performance checks were blocked.",
|
||||
"No credentials were submitted and no product state was mutated.",
|
||||
"The packet's retry did not produce a separate artifact; the same finding has independent reproductions in the preflight reports."
|
||||
]
|
||||
"limitations": []
|
||||
},
|
||||
"independentReproductions": [
|
||||
{
|
||||
"findingFingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"agentId": "qa-v2-preflight-01",
|
||||
"outcome": "reproduced",
|
||||
"evidence": [],
|
||||
"notes": "See preflight-01 for an independent Luna Max reproduction."
|
||||
}
|
||||
],
|
||||
"notes": "Report-only black-box run. No defect was fixed and no secret was recorded."
|
||||
"independentReproductions": [],
|
||||
"notes": "Not executed."
|
||||
}
|
||||
-->
|
||||
|
||||
@@ -88,7 +37,7 @@
|
||||
|
||||
| Metadata | Value |
|
||||
| --- | --- |
|
||||
| Status | blocked |
|
||||
| Status | not-reached |
|
||||
| Wave | performance |
|
||||
| PR refs | #6502, #6555 |
|
||||
| Personas | Ingrid Infra, Maya Media |
|
||||
@@ -99,69 +48,39 @@
|
||||
| Input | mouse, touch |
|
||||
| Widget kinds | None |
|
||||
| Artifact directory | [/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-03](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-03) |
|
||||
| Candidate SHA | f57a660088d6777c86aca22977354fa8b810e2be |
|
||||
| URL / actual port | http://127.0.0.1:46777 / 46777 |
|
||||
| Runtime profile / flags | degraded; DEMO_MODE=true, DEMO_READ_ONLY=false, UNSAFE_ENABLE_MOCK_INTEGRATION=true |
|
||||
| Executed persona | Ingrid Infra |
|
||||
| Browser session ID | qa-v2-performance-03 |
|
||||
| Timestamp | 2026-08-31T18:30:29.480Z |
|
||||
| Executed viewport / input / zoom | mobile-320 / mouse / 100% |
|
||||
| Candidate SHA | 2d5edf46513b96c8b9f973d4a121b396d688e9bb |
|
||||
| URL / actual port | not-recorded |
|
||||
| Runtime profile / flags | not-recorded |
|
||||
| Executed persona | not-recorded |
|
||||
| Browser session ID | not-recorded |
|
||||
| Timestamp | not-recorded |
|
||||
| Executed viewport / input / zoom | not-recorded |
|
||||
|
||||
## Dogfood evidence
|
||||
|
||||
| Case ID | Status | Evidence | Observed | Expected |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| PE-003-BASELINE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-03) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Capture repeatable cold and warm timing, request, render, memory, and console baselines with candidate metadata. |
|
||||
| PE-003-THRESHOLD | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-03) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Measure the packet at every assigned viewport, zoom, input, board, and profile against the documented threshold. |
|
||||
| PE-003-STRESS | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-03) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Exercise dense data, repeated interaction, long-session, latency, and failure stress that applies. |
|
||||
| PE-003-RECOVERY-EVIDENCE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-03) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify recovery after stress and link trace, screenshot, network, memory, and cleanup artifacts. |
|
||||
| PE-003-BASELINE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-03/PE-003-BASELINE.png) | Not executed | Capture repeatable cold and warm timing, request, render, memory, and console baselines with candidate metadata. |
|
||||
| PE-003-THRESHOLD | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-03/PE-003-THRESHOLD.png) | Not executed | Measure the packet at every assigned viewport, zoom, input, board, and profile against the documented threshold. |
|
||||
| PE-003-STRESS | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-03/PE-003-STRESS.png) | Not executed | Exercise dense data, repeated interaction, long-session, latency, and failure stress that applies. |
|
||||
| PE-003-RECOVERY-EVIDENCE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-03/PE-003-RECOVERY-EVIDENCE.png) | Not executed | Verify recovery after stress and link trace, screenshot, network, memory, and cleanup artifacts. |
|
||||
|
||||
## Performance measurements and limitations
|
||||
|
||||
No valid feature timing could be recorded because no application document rendered. Cold/warm, polling, rendering, memory, and recovery measurements remain blocked.
|
||||
Record structured measurements in `performance.measurements` with units, thresholds, status, and evidence. Record every environmental or tooling limitation in `performance.limitations`; leave measurements empty instead of inventing a result.
|
||||
|
||||
## Independent reproductions
|
||||
|
||||
The common routing failure was independently reproduced by qa-v2-preflight-01; the corresponding tracked packet contains its own browser evidence.
|
||||
Record a second agent's result in `independentReproductions` with the finding fingerprint, agent ID, outcome, evidence, and notes. An unattempted reproduction remains `not-reached`.
|
||||
|
||||
## Findings
|
||||
|
||||
### RV2-P1-001 — P1: locale rewrite causes an infinite browser redirect
|
||||
|
||||
Preconditions: candidate f57a660088d6777c86aca22977354fa8b810e2be, degraded, mobile-320, 100% zoom, mouse, fresh named Chromium session qa-v2-performance-03.
|
||||
|
||||
1. Launch a fresh Chromium context with the Chromium argument --no-sandbox.
|
||||
2. Set the assigned viewport and open http://127.0.0.1:46777 or its authentication entry.
|
||||
3. Observe repeated document requests to the same route.
|
||||
4. Wait until Chromium displays ERR_TOO_MANY_REDIRECTS or chrome-error://chromewebdata/.
|
||||
5. Compare the result with the independently reproduced preflight evidence.
|
||||
|
||||
Expected: the application renders the assigned entry, permitting authentication and the packet flow. Actual: the redirect loop prevents the application from rendering. Reproducibility: reproduced independently by the preflight agents. Console output was empty; network and visual evidence are linked below.
|
||||
|
||||
## Artifacts
|
||||
|
||||
- [close-mouse-entry.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-03/close-mouse-entry.txt)
|
||||
- [close.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-03/close.txt)
|
||||
- [console-mouse-entry.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-03/console-mouse-entry.txt)
|
||||
- [console.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-03/console.txt)
|
||||
- [errors-mouse-entry.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-03/errors-mouse-entry.txt)
|
||||
- [errors.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-03/errors.txt)
|
||||
- [network-mouse-entry.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-03/network-mouse-entry.txt)
|
||||
- [network.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-03/network.txt)
|
||||
- [open.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-03/open.txt)
|
||||
- [performance-03-320x568-100-mouse-entry.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-03/performance-03-320x568-100-mouse-entry.png)
|
||||
- [performance-03-320x568-100-mouse.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-03/performance-03-320x568-100-mouse.png)
|
||||
- [screenshot.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-03/screenshot.txt)
|
||||
- [setup.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-03/setup.txt)
|
||||
|
||||
## Mutations and persistence
|
||||
|
||||
No credentials were submitted and no product mutation occurred. Reload and fresh-session retries reproduced the routing failure, so application persistence was not reachable.
|
||||
No findings recorded. Add structured findings to the metadata block and mirror them here.
|
||||
|
||||
## Blockers and gaps
|
||||
|
||||
Every non-evidence case listed as blocked remains untested beyond the routing entry. No blocked cell is treated as passed.
|
||||
Not executed.
|
||||
|
||||
## Cleanup
|
||||
|
||||
The named browser session was closed by the browser agent. Artifacts remain under the untracked packet directory; no secret values were captured.
|
||||
Record created resources, cleanup outcome, console errors, and network failures. Never include secret values.
|
||||
@@ -1,77 +1,35 @@
|
||||
<!-- release-v2-qa-report
|
||||
{
|
||||
"packetId": "performance-04",
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"caseStatuses": {
|
||||
"PE-004-BASELINE": "blocked",
|
||||
"PE-004-THRESHOLD": "blocked",
|
||||
"PE-004-STRESS": "blocked",
|
||||
"PE-004-RECOVERY-EVIDENCE": "blocked"
|
||||
"PE-004-BASELINE": "not-reached",
|
||||
"PE-004-THRESHOLD": "not-reached",
|
||||
"PE-004-STRESS": "not-reached",
|
||||
"PE-004-RECOVERY-EVIDENCE": "not-reached"
|
||||
},
|
||||
"execution": {
|
||||
"candidateSha": "f57a660088d6777c86aca22977354fa8b810e2be",
|
||||
"url": "http://127.0.0.1:46777",
|
||||
"actualPort": 46777,
|
||||
"runtimeProfile": "degraded",
|
||||
"runtimeFlags": [
|
||||
"DEMO_MODE=true",
|
||||
"DEMO_READ_ONLY=false",
|
||||
"UNSAFE_ENABLE_MOCK_INTEGRATION=true"
|
||||
],
|
||||
"persona": "Casey Chaos",
|
||||
"sessionId": "qa-v2-performance-04",
|
||||
"timestamp": "2026-08-31T18:37:28.172Z",
|
||||
"viewport": "mobile-375",
|
||||
"input": "mouse",
|
||||
"zoom": 100
|
||||
"candidateSha": "2d5edf46513b96c8b9f973d4a121b396d688e9bb",
|
||||
"url": null,
|
||||
"actualPort": null,
|
||||
"runtimeProfile": null,
|
||||
"runtimeFlags": [],
|
||||
"persona": null,
|
||||
"sessionId": null,
|
||||
"timestamp": null,
|
||||
"viewport": null,
|
||||
"input": null,
|
||||
"zoom": null
|
||||
},
|
||||
"findings": [
|
||||
{
|
||||
"id": "RV2-P1-001",
|
||||
"fingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"severity": "P1",
|
||||
"area": "routing/authentication",
|
||||
"title": "Locale rewrite causes an infinite browser redirect before the application renders",
|
||||
"summary": "A fresh Chromium session repeatedly requests the same entry route and ends on ERR_TOO_MANY_REDIRECTS; a fresh-context retry does the same.",
|
||||
"caseIds": [
|
||||
"PE-004-BASELINE",
|
||||
"PE-004-THRESHOLD",
|
||||
"PE-004-STRESS",
|
||||
"PE-004-RECOVERY-EVIDENCE"
|
||||
],
|
||||
"evidence": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-04/entry-375x812-100-mouse-annotated.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-04/entry-375x812-100-mouse-fresh-annotated.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-04/network-375x812-100-mouse.txt"
|
||||
]
|
||||
}
|
||||
],
|
||||
"artifacts": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-04/console-375x812-100-mouse.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-04/entry-375x812-100-mouse-annotated.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-04/entry-375x812-100-mouse-fresh-annotated.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-04/errors-375x812-100-mouse.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-04/network-375x812-100-mouse.txt"
|
||||
],
|
||||
"findings": [],
|
||||
"artifacts": [],
|
||||
"widgetChecks": [],
|
||||
"performance": {
|
||||
"measurements": [],
|
||||
"limitations": [
|
||||
"The application never rendered, so assigned feature, mutation, persistence, permission, viewport, and performance checks were blocked.",
|
||||
"No credentials were submitted and no product state was mutated.",
|
||||
"The finding was retried in a fresh Chromium context; console output was empty while document requests repeated until Chromium stopped the loop."
|
||||
]
|
||||
"limitations": []
|
||||
},
|
||||
"independentReproductions": [
|
||||
{
|
||||
"findingFingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"agentId": "qa-v2-preflight-01",
|
||||
"outcome": "reproduced",
|
||||
"evidence": [],
|
||||
"notes": "See preflight-01 for an independent Luna Max reproduction."
|
||||
}
|
||||
],
|
||||
"notes": "Report-only black-box run. No defect was fixed and no secret was recorded."
|
||||
"independentReproductions": [],
|
||||
"notes": "Not executed."
|
||||
}
|
||||
-->
|
||||
|
||||
@@ -79,7 +37,7 @@
|
||||
|
||||
| Metadata | Value |
|
||||
| --- | --- |
|
||||
| Status | blocked |
|
||||
| Status | not-reached |
|
||||
| Wave | performance |
|
||||
| PR refs | #6356, #6503, #6502, #6482, #6555, #6545 |
|
||||
| Personas | Casey Chaos |
|
||||
@@ -90,61 +48,39 @@
|
||||
| Input | mouse, touch, keyboard |
|
||||
| Widget kinds | None |
|
||||
| Artifact directory | [/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-04](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-04) |
|
||||
| Candidate SHA | f57a660088d6777c86aca22977354fa8b810e2be |
|
||||
| URL / actual port | http://127.0.0.1:46777 / 46777 |
|
||||
| Runtime profile / flags | degraded; DEMO_MODE=true, DEMO_READ_ONLY=false, UNSAFE_ENABLE_MOCK_INTEGRATION=true |
|
||||
| Executed persona | Casey Chaos |
|
||||
| Browser session ID | qa-v2-performance-04 |
|
||||
| Timestamp | 2026-08-31T18:37:28.172Z |
|
||||
| Executed viewport / input / zoom | mobile-375 / mouse / 100% |
|
||||
| Candidate SHA | 2d5edf46513b96c8b9f973d4a121b396d688e9bb |
|
||||
| URL / actual port | not-recorded |
|
||||
| Runtime profile / flags | not-recorded |
|
||||
| Executed persona | not-recorded |
|
||||
| Browser session ID | not-recorded |
|
||||
| Timestamp | not-recorded |
|
||||
| Executed viewport / input / zoom | not-recorded |
|
||||
|
||||
## Dogfood evidence
|
||||
|
||||
| Case ID | Status | Evidence | Observed | Expected |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| PE-004-BASELINE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-04) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Capture repeatable cold and warm timing, request, render, memory, and console baselines with candidate metadata. |
|
||||
| PE-004-THRESHOLD | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-04) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Measure the packet at every assigned viewport, zoom, input, board, and profile against the documented threshold. |
|
||||
| PE-004-STRESS | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-04) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Exercise dense data, repeated interaction, long-session, latency, and failure stress that applies. |
|
||||
| PE-004-RECOVERY-EVIDENCE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-04) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify recovery after stress and link trace, screenshot, network, memory, and cleanup artifacts. |
|
||||
| PE-004-BASELINE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-04/PE-004-BASELINE.png) | Not executed | Capture repeatable cold and warm timing, request, render, memory, and console baselines with candidate metadata. |
|
||||
| PE-004-THRESHOLD | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-04/PE-004-THRESHOLD.png) | Not executed | Measure the packet at every assigned viewport, zoom, input, board, and profile against the documented threshold. |
|
||||
| PE-004-STRESS | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-04/PE-004-STRESS.png) | Not executed | Exercise dense data, repeated interaction, long-session, latency, and failure stress that applies. |
|
||||
| PE-004-RECOVERY-EVIDENCE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-04/PE-004-RECOVERY-EVIDENCE.png) | Not executed | Verify recovery after stress and link trace, screenshot, network, memory, and cleanup artifacts. |
|
||||
|
||||
## Performance measurements and limitations
|
||||
|
||||
No valid feature timing could be recorded because no application document rendered. Cold/warm, polling, rendering, memory, and recovery measurements remain blocked.
|
||||
Record structured measurements in `performance.measurements` with units, thresholds, status, and evidence. Record every environmental or tooling limitation in `performance.limitations`; leave measurements empty instead of inventing a result.
|
||||
|
||||
## Independent reproductions
|
||||
|
||||
The common routing failure was independently reproduced by qa-v2-preflight-01; the corresponding tracked packet contains its own browser evidence.
|
||||
Record a second agent's result in `independentReproductions` with the finding fingerprint, agent ID, outcome, evidence, and notes. An unattempted reproduction remains `not-reached`.
|
||||
|
||||
## Findings
|
||||
|
||||
### RV2-P1-001 — P1: locale rewrite causes an infinite browser redirect
|
||||
|
||||
Preconditions: candidate f57a660088d6777c86aca22977354fa8b810e2be, degraded, mobile-375, 100% zoom, mouse, fresh named Chromium session qa-v2-performance-04.
|
||||
|
||||
1. Launch a fresh Chromium context with the Chromium argument --no-sandbox.
|
||||
2. Set the assigned viewport and open http://127.0.0.1:46777 or its authentication entry.
|
||||
3. Observe repeated document requests to the same route.
|
||||
4. Wait until Chromium displays ERR_TOO_MANY_REDIRECTS or chrome-error://chromewebdata/.
|
||||
5. Close the context, retry in a fresh context, and observe the same result.
|
||||
|
||||
Expected: the application renders the assigned entry, permitting authentication and the packet flow. Actual: the redirect loop prevents the application from rendering. Reproducibility: reproduced on retry and independently by the preflight agents. Console output was empty; network and visual evidence are linked below.
|
||||
|
||||
## Artifacts
|
||||
|
||||
- [console-375x812-100-mouse.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-04/console-375x812-100-mouse.txt)
|
||||
- [entry-375x812-100-mouse-annotated.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-04/entry-375x812-100-mouse-annotated.png)
|
||||
- [entry-375x812-100-mouse-fresh-annotated.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-04/entry-375x812-100-mouse-fresh-annotated.png)
|
||||
- [errors-375x812-100-mouse.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-04/errors-375x812-100-mouse.txt)
|
||||
- [network-375x812-100-mouse.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/performance-04/network-375x812-100-mouse.txt)
|
||||
|
||||
## Mutations and persistence
|
||||
|
||||
No credentials were submitted and no product mutation occurred. Reload and fresh-session retries reproduced the routing failure, so application persistence was not reachable.
|
||||
No findings recorded. Add structured findings to the metadata block and mirror them here.
|
||||
|
||||
## Blockers and gaps
|
||||
|
||||
Every non-evidence case listed as blocked remains untested beyond the routing entry. No blocked cell is treated as passed.
|
||||
Not executed.
|
||||
|
||||
## Cleanup
|
||||
|
||||
The named browser session was closed by the browser agent. Artifacts remain under the untracked packet directory; no secret values were captured.
|
||||
Record created resources, cleanup outcome, console errors, and network failures. Never include secret values.
|
||||
@@ -8,17 +8,18 @@
|
||||
"PF-001-EVIDENCE": "passed"
|
||||
},
|
||||
"execution": {
|
||||
"url": "http://127.0.0.1:34401",
|
||||
"actualPort": 34401,
|
||||
"url": "http://127.0.0.1:34499",
|
||||
"actualPort": 34499,
|
||||
"runtimeProfile": "main-writable",
|
||||
"runtimeFlags": ["DEMO_MODE=true", "DEMO_READ_ONLY=false", "UNSAFE_ENABLE_MOCK_INTEGRATION=true"],
|
||||
"fixtureUrl": "http://127.0.0.1:37273",
|
||||
"fixtureHealthUrl": "http://127.0.0.1:37273/health",
|
||||
"candidateSha": "f57a660088d6777c86aca22977354fa8b810e2be",
|
||||
"fixtureUrl": "http://127.0.0.1:37357",
|
||||
"fixtureHealthUrl": "http://127.0.0.1:37357/health",
|
||||
"candidateSha": "d3e7cd45a303bcd2c06757ead05306d334836074",
|
||||
"persona": "Avery Admin",
|
||||
"sessionId": "qa-v2-preflight-01-rerun-writable-1440",
|
||||
"timestamp": "2026-08-31T22:57:16+02:00",
|
||||
"completedAt": "2026-08-31T22:57:16+02:00",
|
||||
"sessionId": "pf01-main-writable-d3e7",
|
||||
"sessionIds": ["pf01-main-writable-d3e7", "pf01-main-writable-d3e7-fresh"],
|
||||
"timestamp": "2026-09-01T10:37:30+02:00",
|
||||
"completedAt": "2026-09-01T10:37:30+02:00",
|
||||
"viewport": "desktop-1440",
|
||||
"viewportPx": "1440x900",
|
||||
"input": "mouse",
|
||||
@@ -27,16 +28,18 @@
|
||||
"profiles": [
|
||||
{
|
||||
"runtimeProfile": "main-writable",
|
||||
"appUrl": "http://127.0.0.1:34401",
|
||||
"fixtureUrl": "http://127.0.0.1:37273",
|
||||
"fixtureHealthUrl": "http://127.0.0.1:37273/health",
|
||||
"appUrl": "http://127.0.0.1:34499",
|
||||
"fixtureUrl": "http://127.0.0.1:37357",
|
||||
"fixtureHealthUrl": "http://127.0.0.1:37357/health",
|
||||
"flags": ["DEMO_MODE=true", "DEMO_READ_ONLY=false", "UNSAFE_ENABLE_MOCK_INTEGRATION=true"],
|
||||
"sessionId": "qa-v2-preflight-01-rerun-writable-1440",
|
||||
"sessionId": "pf01-main-writable-d3e7",
|
||||
"sessionIds": ["pf01-main-writable-d3e7", "pf01-main-writable-d3e7-fresh"],
|
||||
"viewport": "desktop-1440",
|
||||
"viewportPx": "1440x900",
|
||||
"input": ["mouse", "keyboard"],
|
||||
"zoom": 100,
|
||||
"result": "passed",
|
||||
"visibleBoundaryNote": "Avery reached the seeded home and healthy Weather details. Reload, Board settings away/back, fresh-session access, and Ctrl+K/Escape passed without product mutation.",
|
||||
"caseCoverage": {
|
||||
"PF-001-ENVIRONMENT": "passed",
|
||||
"PF-001-ACCESS": "passed",
|
||||
@@ -45,17 +48,18 @@
|
||||
},
|
||||
{
|
||||
"runtimeProfile": "main-readonly",
|
||||
"appUrl": "http://127.0.0.1:41589",
|
||||
"fixtureUrl": "http://127.0.0.1:44267",
|
||||
"fixtureHealthUrl": "http://127.0.0.1:44267/health",
|
||||
"appUrl": "http://127.0.0.1:44129",
|
||||
"fixtureUrl": "http://127.0.0.1:46609",
|
||||
"fixtureHealthUrl": "http://127.0.0.1:46609/health",
|
||||
"flags": ["DEMO_MODE=true", "DEMO_READ_ONLY=true", "UNSAFE_ENABLE_MOCK_INTEGRATION=true"],
|
||||
"sessionId": "qa-v2-preflight-01-rerun-readonly-1440",
|
||||
"sessionId": "pf01-main-readonly-d3e7",
|
||||
"sessionIds": ["pf01-main-readonly-d3e7", "pf01-main-readonly-d3e7-fresh"],
|
||||
"viewport": "desktop-1440",
|
||||
"viewportPx": "1440x900",
|
||||
"input": ["mouse", "keyboard"],
|
||||
"zoom": 100,
|
||||
"result": "passed",
|
||||
"visibleBoundaryNote": "Edit board and Add board content remained visible; the save/mutation boundary was not exercised in this preflight run.",
|
||||
"visibleBoundaryNote": "The seeded home, Weather details, Edit board boundary, and Add widget picker rendered. The picker was dismissed; no save or product mutation was attempted.",
|
||||
"caseCoverage": {
|
||||
"PF-001-ENVIRONMENT": "passed",
|
||||
"PF-001-ACCESS": "passed",
|
||||
@@ -64,18 +68,18 @@
|
||||
},
|
||||
{
|
||||
"runtimeProfile": "onboarding-fresh",
|
||||
"appUrl": "http://127.0.0.1:41775",
|
||||
"fixtureUrl": "http://127.0.0.1:33549",
|
||||
"fixtureHealthUrl": "http://127.0.0.1:33549/health",
|
||||
"appUrl": "http://127.0.0.1:40295",
|
||||
"fixtureUrl": "http://127.0.0.1:33189",
|
||||
"fixtureHealthUrl": "http://127.0.0.1:33189/health",
|
||||
"flags": ["DEMO_MODE=false", "DEMO_READ_ONLY=false", "UNSAFE_ENABLE_MOCK_INTEGRATION=true"],
|
||||
"sessionId": "qa-v2-preflight-01-rerun-onboarding-1440",
|
||||
"newSessionId": "qa-v2-preflight-01-rerun-onboarding-new-1440",
|
||||
"sessionId": "pf01-onboarding-d3e7",
|
||||
"sessionIds": ["pf01-onboarding-d3e7", "onb-d3e7-fresh"],
|
||||
"viewport": "desktop-1440",
|
||||
"viewportPx": "1440x900",
|
||||
"input": ["mouse", "keyboard"],
|
||||
"zoom": 100,
|
||||
"result": "passed",
|
||||
"visibleBoundaryNote": "The fresh slot rendered the first-board onboarding landing at /init and a normal empty login form at /auth/login. No user or QA board was visible; onboarding completion and user creation were intentionally not attempted.",
|
||||
"visibleBoundaryNote": "Anonymous root access redirected once and stably to /init. Get started and Restore backup rendered; no seeded user or QA board was visible, and onboarding completion was not attempted.",
|
||||
"caseCoverage": {
|
||||
"PF-001-ENVIRONMENT": "passed",
|
||||
"PF-001-ACCESS": "passed",
|
||||
@@ -84,16 +88,18 @@
|
||||
},
|
||||
{
|
||||
"runtimeProfile": "degraded",
|
||||
"appUrl": "http://127.0.0.1:43903",
|
||||
"fixtureUrl": "http://127.0.0.1:39181",
|
||||
"fixtureHealthUrl": "http://127.0.0.1:39181/health",
|
||||
"appUrl": "http://127.0.0.1:44059",
|
||||
"fixtureUrl": "http://127.0.0.1:43513",
|
||||
"fixtureHealthUrl": "http://127.0.0.1:43513/health",
|
||||
"flags": ["DEMO_MODE=true", "DEMO_READ_ONLY=false", "UNSAFE_ENABLE_MOCK_INTEGRATION=true"],
|
||||
"sessionId": "qa-v2-preflight-01-rerun-degraded-1440",
|
||||
"sessionId": "degr-d3e7",
|
||||
"sessionIds": ["degr-d3e7", "degr-fresh"],
|
||||
"viewport": "desktop-1440",
|
||||
"viewportPx": "1440x900",
|
||||
"input": ["mouse", "keyboard"],
|
||||
"zoom": 100,
|
||||
"result": "passed",
|
||||
"visibleBoundaryNote": "Avery reached the seeded home and healthy Weather details. Fixture status modes and a fixture-only slow abort were exercised; route removal restored the fixture and app.",
|
||||
"caseCoverage": {
|
||||
"PF-001-ENVIRONMENT": "passed",
|
||||
"PF-001-ACCESS": "passed",
|
||||
@@ -103,18 +109,33 @@
|
||||
],
|
||||
"onboardingFresh": {
|
||||
"status": "passed",
|
||||
"appUrl": "http://127.0.0.1:41775",
|
||||
"fixtureUrl": "http://127.0.0.1:33549",
|
||||
"fixtureHealthUrl": "http://127.0.0.1:33549/health",
|
||||
"appUrl": "http://127.0.0.1:40295",
|
||||
"fixtureUrl": "http://127.0.0.1:33189",
|
||||
"fixtureHealthUrl": "http://127.0.0.1:33189/health",
|
||||
"flags": ["DEMO_MODE=false", "DEMO_READ_ONLY=false", "UNSAFE_ENABLE_MOCK_INTEGRATION=true"],
|
||||
"sessionIds": ["qa-v2-preflight-01-rerun-onboarding-1440", "qa-v2-preflight-01-rerun-onboarding-new-1440"],
|
||||
"sessionIds": ["pf01-onboarding-d3e7", "onb-d3e7-fresh"],
|
||||
"viewport": "desktop-1440",
|
||||
"viewportPx": "1440x900",
|
||||
"routes": ["/ -> /init", "/auth/login -> /auth/login"],
|
||||
"fixtureHealth": "{\"status\":\"ok\",\"fixture\":\"release-v2-qa\"}",
|
||||
"routes": ["/ -> /init", "/auth/login -> /auth/login", "back from /auth/login -> /init", "fresh / -> /init"],
|
||||
"fixtureHealth": "HTTP 200; response body omitted",
|
||||
"noSeededUserOrQABoardObserved": true,
|
||||
"completionAttempted": false,
|
||||
"reason": "The fresh slot has no seeded user or QA board; reaching the first-board onboarding boundary is the expected PF-001 access result. Onboarding completion and user creation are covered by later onboarding packets and were intentionally not attempted here."
|
||||
"reason": "The anonymous slot reached the expected first-board boundary. Completion and user creation were intentionally outside this preflight run."
|
||||
},
|
||||
"degraded": {
|
||||
"status": "passed",
|
||||
"appUrl": "http://127.0.0.1:44059",
|
||||
"fixtureUrl": "http://127.0.0.1:43513",
|
||||
"fixtureHealthUrl": "http://127.0.0.1:43513/health",
|
||||
"fixtureStatuses": {
|
||||
"health": 200,
|
||||
"slow": 200,
|
||||
"empty": 204,
|
||||
"malformed": 200,
|
||||
"error": 503
|
||||
},
|
||||
"slowAbort": "Fixture-only slow route aborted with no response status; route removed; slow endpoint recovered to HTTP 200; app reload and Weather recovered.",
|
||||
"completionAttempted": false
|
||||
}
|
||||
},
|
||||
"profileCoverage": {
|
||||
@@ -126,88 +147,65 @@
|
||||
"findings": [],
|
||||
"independentReproductions": [],
|
||||
"artifacts": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-main-writable-desktop-1440-auth-login.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-main-writable-desktop-1440-auth-login-console.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-main-writable-desktop-1440-auth-login-errors.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-main-writable-desktop-1440-auth-login-network.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-main-writable-desktop-1440-home.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-main-writable-desktop-1440-home-console.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-main-writable-desktop-1440-home-errors.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-main-writable-desktop-1440-home-network.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-main-writable-desktop-1440-home-reload.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-main-writable-desktop-1440-home-reload-console.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-main-writable-desktop-1440-home-reload-errors.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-main-writable-desktop-1440-home-reload-network.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-main-writable-desktop-1440-fixture-health.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-main-writable-desktop-1440-fixture-health-console.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-main-writable-desktop-1440-fixture-health-errors.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-main-writable-desktop-1440-fixture-health-network.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-main-readonly-desktop-1440-auth-login.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-main-readonly-desktop-1440-auth-login-console.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-main-readonly-desktop-1440-auth-login-errors.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-main-readonly-desktop-1440-auth-login-network.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-main-readonly-desktop-1440-home.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-main-readonly-desktop-1440-home-console.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-main-readonly-desktop-1440-home-errors.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-main-readonly-desktop-1440-home-network.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-main-readonly-desktop-1440-home-reload.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-main-readonly-desktop-1440-home-reload-console.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-main-readonly-desktop-1440-home-reload-errors.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-main-readonly-desktop-1440-home-reload-network.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-main-readonly-desktop-1440-edit-boundary.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-main-readonly-desktop-1440-add-widget-boundary.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-main-readonly-desktop-1440-fixture-health.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-main-readonly-desktop-1440-fixture-health-console.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-main-readonly-desktop-1440-fixture-health-errors.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-main-readonly-desktop-1440-fixture-health-network.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-degraded-desktop-1440-auth-login.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-degraded-desktop-1440-auth-login-console.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-degraded-desktop-1440-auth-login-errors.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-degraded-desktop-1440-auth-login-network.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-degraded-desktop-1440-home.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-degraded-desktop-1440-home-console.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-degraded-desktop-1440-home-errors.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-degraded-desktop-1440-home-network.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-degraded-desktop-1440-home-reload.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-degraded-desktop-1440-home-reload-console.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-degraded-desktop-1440-home-reload-errors.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-degraded-desktop-1440-home-reload-network.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-degraded-desktop-1440-fixture-health.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-degraded-desktop-1440-fixture-health-console.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-degraded-desktop-1440-fixture-health-errors.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-degraded-desktop-1440-fixture-health-network.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-onboarding-desktop-1440-init.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-onboarding-desktop-1440-init-reload.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-onboarding-desktop-1440-init-reload-snapshot.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-onboarding-desktop-1440-auth-login.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-onboarding-desktop-1440-auth-login-snapshot.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-onboarding-desktop-1440-fixture-health.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-onboarding-desktop-1440-fixture-health-snapshot.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-onboarding-desktop-1440-console.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-onboarding-desktop-1440-errors.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-onboarding-desktop-1440-network.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-onboarding-new-desktop-1440-init.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-onboarding-new-desktop-1440-init-snapshot.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-onboarding-new-desktop-1440-console.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-onboarding-new-desktop-1440-errors.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-onboarding-new-desktop-1440-network.txt"
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-main-writable-home.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-main-writable-weather.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-main-writable-reload.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-main-writable-away-settings.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-main-writable-back-home.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-main-writable-fresh.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-main-writable-search-open.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-main-writable-search-escape.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-main-writable-fixture-health-status.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-main-writable-diagnostics.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-main-readonly-home.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-main-readonly-weather.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-main-readonly-reload.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-main-readonly-away-settings.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-main-readonly-back-home.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-main-readonly-edit-boundary.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-main-readonly-fresh.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-main-readonly-search-open.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-main-readonly-search-escape.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-main-readonly-fixture-health-status.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-main-readonly-diagnostics.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-onboarding-init.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-onboarding-restore-expanded.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-onboarding-auth-login.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-onboarding-auth-login-reload.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-onboarding-back-init.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-onboarding-fresh.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-onboarding-final-init.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-onboarding-fixture-health-status.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-onboarding-diagnostics.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-degraded-home.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-degraded-weather.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-degraded-away-settings.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-degraded-back-home.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-degraded-recovery.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-degraded-recovery-weather.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-degraded-fresh.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-degraded-search-open.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-degraded-search-escape.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-degraded-fixture-status.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-degraded-diagnostics.txt"
|
||||
],
|
||||
"widgetChecks": [],
|
||||
"diagnostics": {
|
||||
"consoleErrors": "None reported by the errors artifacts for any profile.",
|
||||
"consoleWarnings": "Development-only HMR/React DevTools messages plus repeated PostHog already-initialized warnings; no uncaught application error observed.",
|
||||
"network": "All four assigned profiles rendered their app entry and fixture health page in browser metadata. The three seeded profiles also rendered auth/home/reload; onboarding rendered /init, /auth/login, and /init after reload/new session. Metadata includes normal 200/304 responses and non-blocking dev-only 404s for a Next static chunk/favicon; no redirect loop was observed. Request bodies were not inspected.",
|
||||
"artifactHygiene": "Screenshots were reviewed for visible secrets; text diagnostics were sanitized for data URIs, query strings, and credential-like fields. No password, cookie, bearer value, request body, or unredacted credential-like value was recorded."
|
||||
"consoleErrors": "No page errors were captured in the clean app sessions or after degraded fixture recovery.",
|
||||
"consoleWarnings": "No actionable browser console error was observed. Console and error diagnostics were reduced to sanitized counts.",
|
||||
"network": "All four app profiles reached their assigned entry and fixture health endpoint. Degraded fixture status-only evidence recorded health 200, slow 200, empty 204, malformed 200, and error 503. A fixture-only slow abort produced no response status; removing the route restored slow 200. App recovery recorded no app 4xx/5xx or static-missing signal.",
|
||||
"artifactHygiene": "All current-candidate text artifacts contain status/path-classification counts only. No password, cookie, bearer value, token, request header, request/response body, query value, or secret was retained. Fixture response bodies were discarded."
|
||||
},
|
||||
"performance": {
|
||||
"measurements": [],
|
||||
"limitations": [
|
||||
"This packet verifies candidate identity and services only; no performance timing was requested or recorded.",
|
||||
"Onboarding-fresh was exercised through initial routing, fixture health, login/init rendering, reload, and a fresh session; onboarding completion and user creation were intentionally not reached.",
|
||||
"No product mutation was made. The read-only add-widget dialog was opened and cancelled solely to observe its visible boundary."
|
||||
"No performance timing was requested or recorded.",
|
||||
"Visual checks were performed at 1440x900, zoom 100%, with mouse and keyboard input.",
|
||||
"Onboarding completion and user creation were intentionally not attempted.",
|
||||
"No product state was changed; the only network interception was a local fixture slow-path abort that was removed before final app recovery."
|
||||
]
|
||||
},
|
||||
"notes": "Successful retest: the prior release-v2-auth-locale-redirect-loop was not reproduced in fresh named Chromium sessions for main-writable, main-readonly, or degraded. Each /auth/login entry and / home rendered, Avery reached the seeded home board, reload preserved the home, and each assigned seeded fixture /health rendered status ok for release-v2-qa. The rotated onboarding-fresh app at http://127.0.0.1:41775 routed / to /init without a loop, its fixture at http://127.0.0.1:33549/health rendered status ok, /auth/login rendered a normal empty login form, reload and a new named session returned to /init, and no user or QA board was observed. The fresh /init boundary is the expected PF-001 access result; onboarding completion and user creation are outside this packet and were intentionally not attempted."
|
||||
"notes": "Candidate d3e7cd45a303bcd2c06757ead05306d334836074 passed PF-001-ENVIRONMENT, PF-001-ACCESS, and PF-001-EVIDENCE across main-writable, main-readonly, onboarding-fresh, and degraded profiles at 1440x900, zoom 100%, with mouse and keyboard. Avery reached the seeded home and healthy Weather details on all authenticated profiles; reload, away/back, fresh sessions, and Ctrl+K/Escape passed. The anonymous profile reached /init without a loop and showed no seeded persona or board. Deterministic degraded fixture modes and scoped slow abort/recovery behaved as expected."
|
||||
}
|
||||
-->
|
||||
|
||||
@@ -218,67 +216,62 @@
|
||||
| Status | passed |
|
||||
| Wave | preflight |
|
||||
| PR refs | #6545 |
|
||||
| Personas | Avery Admin |
|
||||
| Boards | None |
|
||||
| Candidate SHA | d3e7cd45a303bcd2c06757ead05306d334836074 |
|
||||
| Profiles | main-writable, main-readonly, onboarding-fresh, degraded |
|
||||
| Primary execution URL | http://127.0.0.1:34401 |
|
||||
| Primary execution port | 34401 |
|
||||
| Primary execution profile | main-writable |
|
||||
| Primary runtime flags | DEMO_MODE=true; DEMO_READ_ONLY=false; UNSAFE_ENABLE_MOCK_INTEGRATION=true |
|
||||
| Primary fixture health | http://127.0.0.1:37273/health |
|
||||
| Chromium viewport | desktop-1440 (1440×900) |
|
||||
| Zoom | 100% |
|
||||
| Input | mouse, keyboard |
|
||||
| Primary execution | `http://127.0.0.1:34499` (main-writable) |
|
||||
| Primary fixture health | `http://127.0.0.1:37357/health` |
|
||||
| Runtime flags | `DEMO_MODE=true`, `DEMO_READ_ONLY=false`, `UNSAFE_ENABLE_MOCK_INTEGRATION=true` |
|
||||
| Persona | Avery Admin |
|
||||
| Primary sessions | `pf01-main-writable-d3e7`; fresh `pf01-main-writable-d3e7-fresh` |
|
||||
| Viewport / input | 1440x900, zoom 100%, mouse and keyboard |
|
||||
| Artifact directory | [/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01) |
|
||||
| Candidate SHA | f57a660088d6777c86aca22977354fa8b810e2be |
|
||||
| Corrected rerun completed | 2026-08-31T22:57:16+02:00 |
|
||||
| Auth | Auth-vault profiles used for seeded profiles; no password value read or recorded |
|
||||
| Completed | 2026-09-01T10:37:30+02:00 |
|
||||
| Auth | Auth-vault profiles used for seeded profiles; no password value was read or recorded |
|
||||
|
||||
## Dogfood evidence
|
||||
|
||||
| Case ID | Status | Evidence | Observed | Expected |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| PF-001-ENVIRONMENT | passed | [all-profile runtime and fixture artifacts](#artifacts) | main-writable (34401/37273), main-readonly (41589/44267), onboarding-fresh (41775/33549), and degraded (43903/39181) all rendered in named Chromium at 1440×900. Each fixture `/health` rendered `{"status":"ok","fixture":"release-v2-qa"}`; `/` routed to `/auth/login` for the seeded profiles and `/init` for onboarding-fresh without a loop. | Verify candidate identity, Chromium session, runtime health, fixture reachability, and clean console/network baselines. |
|
||||
| PF-001-ACCESS | passed | [profile matrix](#profile-matrix) and [onboarding artifacts](#artifacts) | Avery reached the seeded home on main-writable, main-readonly, and degraded. Read-only Edit board/Add board content remained visibly available and no save/mutation was attempted. The fresh slot reached the expected first-board onboarding boundary with no seeded user or QA board and a normal `/auth/login` form; onboarding completion/user creation is outside PF-001 scope. | Verify assigned profiles, personas, boards, permissions, and read-only boundaries before mutations. |
|
||||
| PF-001-EVIDENCE | passed | [timestamped screenshots, snapshots, and diagnostics](#artifacts) | All four profiles have rendered screenshot evidence plus console/errors/network metadata at the assigned 1440×900 viewport. The onboarding run includes initial `/init`, explicit `/auth/login`, fixture health, reload, and a second fresh named session; diagnostics were sanitized and contain no secrets. | Capture timestamped viewport/input/zoom evidence and confirm artifacts contain no secrets. |
|
||||
| PF-001-ENVIRONMENT | passed | [profile matrix](#profile-matrix) and [fixture artifacts](#artifacts) | All four assigned app/fixture pairs rendered in named Chromium at the required desktop viewport. App entries and fixture health endpoints were reachable; the anonymous root reached `/init` once without a locale loop. | Candidate identity, runtime flags, browser setup, fixture reachability, and a clean app baseline. |
|
||||
| PF-001-ACCESS | passed | [profile matrix](#profile-matrix) and [Weather/reload artifacts](#artifacts) | Avery reached seeded home and healthy Weather details on main-writable, main-readonly, and degraded. The anonymous profile reached the expected first-board boundary with no seeded persona or QA board. | Assigned persona, seeded access, onboarding boundary, reload behavior, and read-only boundary. |
|
||||
| PF-001-EVIDENCE | passed | [sanitized diagnostics](#console-network-and-artifact-hygiene) and [artifacts](#artifacts) | Screenshots cover home, Weather, reload, away/back, fresh sessions, keyboard search, onboarding controls, read-only boundary, fixture statuses, and degraded recovery. Text evidence contains status/path counts only. | Timestamped viewport/input/zoom evidence with no secrets, bodies, or credential material. |
|
||||
|
||||
## Profile matrix
|
||||
|
||||
| Profile | Status | App entry | Fixture health | Persona/access | Reload/session | Visible boundary |
|
||||
| --- | --- | --- | --- | --- | --- | --- |
|
||||
| main-writable | passed | `/auth/login` → `/` | `{"status":"ok","fixture":"release-v2-qa"}` | `QA v2 · Home · avery-admin` with Edit board, Board settings, and three seeded widgets | passed | Writable affordances visible |
|
||||
| main-readonly | passed | `/auth/login` → `/` | `{"status":"ok","fixture":"release-v2-qa"}` | `QA v2 · Home · avery-admin` with three seeded widgets | passed | Edit board/Add board content remained visible; mutation/save boundary not exercised |
|
||||
| onboarding-fresh | passed | `/` → `/init`; explicit `/auth/login` stayed on `/auth/login` | `{"status":"ok","fixture":"release-v2-qa"}` | Expected first-board onboarding boundary rendered; no seeded user or QA board was visible, and no seeded persona/home access was assigned | Reload returned `/init`; second named session also returned `/init` | Get started/Restore backup visible; completion/user creation is outside PF-001 and was not attempted |
|
||||
| degraded | passed | `/auth/login` → `/` | `{"status":"ok","fixture":"release-v2-qa"}` | `QA v2 · Home · avery-admin` with three rendered widgets | passed | Degraded profile entry and home rendered; no fixture health failure |
|
||||
| Profile | App / fixture | Flags | Result | Evidence and boundary |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| main-writable | `34499 / 37357` | `DEMO_MODE=true`, `DEMO_READ_ONLY=false`, mock integration true | passed | Authenticated `QA v2 · Home · avery-admin`; Weather details rendered `Clear`; reload and Board settings away/back passed; fresh named session and Ctrl+K/Escape passed. |
|
||||
| main-readonly | `44129 / 46609` | `DEMO_MODE=true`, `DEMO_READ_ONLY=true`, mock integration true | passed | Authenticated home and Weather rendered; Edit board and Add widget boundary were inspected and dismissed without save or mutation; reload, away/back, fresh session, and Ctrl+K/Escape passed. |
|
||||
| onboarding-fresh | `40295 / 33189` | `DEMO_MODE=false`, `DEMO_READ_ONLY=false`, mock integration true | passed | Anonymous `/` → `/init` once and stably; Get started/Restore backup visible; `/auth/login` stable through reload; back returned to `/init`; no seeded user or QA board visible; completion not attempted. |
|
||||
| degraded | `44059 / 43513` | `DEMO_MODE=true`, `DEMO_READ_ONLY=false`, mock integration true | passed | Authenticated home and healthy Weather rendered; reload and Board settings away/back passed; fixture health/slow/empty/malformed/error statuses matched expected classes; scoped slow abort was removed and app/fixture recovered; fresh session and Ctrl+K/Escape passed. |
|
||||
|
||||
## Console, network, and artifact hygiene
|
||||
|
||||
The browser `errors` captures were empty for all corrected runs, including both onboarding sessions. Console captures contain development HMR/React DevTools information and repeated PostHog initialization warnings, but no uncaught application error. Network metadata shows successful app/auth/home/health responses for the seeded profiles and `/init`, `/auth/login`, `/health`, reload, and new-session responses for onboarding-fresh. Non-blocking dev-only 404s for a Next static chunk/favicon were observed; no redirect loop occurred.
|
||||
Clean app and post-recovery diagnostics recorded zero page-error lines and zero console lines. No app 4xx/5xx, static-missing, locale-loop, appdata, or EACCES signal was observed. The degraded fixture’s intentional error endpoint returned 503, empty returned 204, malformed returned 200, and the fixture-only slow abort produced no response status until its route was removed; these are fixture exercise outcomes, not product findings.
|
||||
|
||||
No password, cookies, bearer values, request bodies, or unredacted credential-like values were inspected or recorded. The read-only add-widget dialog was opened and cancelled without submitting a widget or changing product state. Onboarding controls were not submitted, so no user or board was created.
|
||||
All current-candidate text artifacts were normalized to status/path-classification counts. Fixture response bodies were discarded. No password, cookie, bearer value, token, request header, request/response body, query value, or secret was retained.
|
||||
|
||||
## Performance measurements and limitations
|
||||
|
||||
No performance timings were requested for PF-001. Onboarding-fresh was verified at its expected initial `/init` access boundary; completion and user creation are outside PF-001 and were intentionally not attempted. Current authenticated-profile access and all assigned evidence checks were run.
|
||||
No performance timings were requested. Visual checks used 1440x900, zoom 100%, with mouse and keyboard input. Onboarding completion and user creation were intentionally not attempted. No product state was changed; the only network interception was a fixture-only slow-path abort that was removed before final app recovery.
|
||||
|
||||
## Findings
|
||||
|
||||
No tracked finding remains after the successful retest. The previous `RV2-P1-001` locale/auth redirect-loop finding was removed because it was not reproduced in fresh sessions for main-writable, main-readonly, or degraded, and onboarding-fresh also showed no redirect loop. The successful retest is recorded in the structured notes above.
|
||||
No product finding was opened. The observed fixture 503, 204, malformed response, and scoped route-abort behavior were deterministic fixture exercises and the degraded app remained healthy after recovery.
|
||||
|
||||
## Mutations and persistence
|
||||
|
||||
No product mutation occurred. Login, fixture navigation, clean reloads, opening/cancelling the read-only add-widget dialog, and exiting edit mode all completed without saving board changes. Avery’s seeded home remained available after reload for all three current authenticated profiles. The onboarding-fresh Get started/Restore backup controls were left untouched; no user or QA board was created.
|
||||
No product mutation occurred. Login, fixture status checks, Weather expansion, reloads, away/back navigation, keyboard search open/close, and read-only boundary inspection did not save board changes. The onboarding controls were not submitted. The fixture was not stopped, and the temporary slow route was removed before final app recovery verification.
|
||||
|
||||
## Artifacts
|
||||
|
||||
Corrected desktop-1440 evidence is under the [preflight-01 artifact directory](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01). The structured artifact list above is canonical for this report.
|
||||
All evidence is under the [preflight-01 artifact directory](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01). All paths below are absolute current-candidate artifacts.
|
||||
|
||||
- main-writable: [login screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-main-writable-desktop-1440-auth-login.png), [home screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-main-writable-desktop-1440-home.png), [reload screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-main-writable-desktop-1440-home-reload.png), [fixture health screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-main-writable-desktop-1440-fixture-health.png), and paired `-console.txt`, `-errors.txt`, and `-network.txt` diagnostics.
|
||||
- main-readonly: [login screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-main-readonly-desktop-1440-auth-login.png), [home screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-main-readonly-desktop-1440-home.png), [reload screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-main-readonly-desktop-1440-home-reload.png), [edit-boundary screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-main-readonly-desktop-1440-edit-boundary.png), [add-widget-boundary screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-main-readonly-desktop-1440-add-widget-boundary.png), [fixture health screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-main-readonly-desktop-1440-fixture-health.png), and paired diagnostics for login/home/reload/fixture health.
|
||||
- degraded: [login screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-degraded-desktop-1440-auth-login.png), [home screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-degraded-desktop-1440-home.png), [reload screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-degraded-desktop-1440-home-reload.png), [fixture health screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-degraded-desktop-1440-fixture-health.png), and paired `-console.txt`, `-errors.txt`, and `-network.txt` diagnostics.
|
||||
- onboarding-fresh: [initial `/init` screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-onboarding-desktop-1440-init.png), [explicit login screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-onboarding-desktop-1440-auth-login.png), [fixture health screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-onboarding-desktop-1440-fixture-health.png), [reload screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-onboarding-desktop-1440-init-reload.png), rendered snapshots (`-snapshot.txt`), and sanitized [console](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-onboarding-desktop-1440-console.txt), [errors](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-onboarding-desktop-1440-errors.txt), and [network metadata](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-onboarding-desktop-1440-network.txt).
|
||||
- onboarding-fresh new session: [new-session `/init` screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-onboarding-new-desktop-1440-init.png), rendered [snapshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-onboarding-new-desktop-1440-init-snapshot.txt), and sanitized [console](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-onboarding-new-desktop-1440-console.txt), [errors](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-onboarding-new-desktop-1440-errors.txt), and [network metadata](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/rerun-onboarding-new-desktop-1440-network.txt).
|
||||
- Main-writable: [home](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-main-writable-home.png), [Weather](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-main-writable-weather.png), [reload](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-main-writable-reload.png), [away/settings](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-main-writable-away-settings.png), [back home](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-main-writable-back-home.png), [fresh session](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-main-writable-fresh.png), [Ctrl+K open](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-main-writable-search-open.png), [Escape home](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-main-writable-search-escape.png), [fixture health status](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-main-writable-fixture-health-status.txt), and [sanitized diagnostics](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-main-writable-diagnostics.txt).
|
||||
- Main-readonly: [home](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-main-readonly-home.png), [Weather](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-main-readonly-weather.png), [reload](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-main-readonly-reload.png), [away/settings](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-main-readonly-away-settings.png), [back home](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-main-readonly-back-home.png), [edit boundary](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-main-readonly-edit-boundary.png), [fresh session](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-main-readonly-fresh.png), [Ctrl+K open](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-main-readonly-search-open.png), [Escape home](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-main-readonly-search-escape.png), [fixture health status](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-main-readonly-fixture-health-status.txt), and [sanitized diagnostics](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-main-readonly-diagnostics.txt).
|
||||
- Onboarding-fresh: [initial /init](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-onboarding-init.png), [Restore expanded](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-onboarding-restore-expanded.png), [/auth/login](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-onboarding-auth-login.png), [/auth/login reload](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-onboarding-auth-login-reload.png), [back /init](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-onboarding-back-init.png), [fresh /init](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-onboarding-fresh.png), [final /init](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-onboarding-final-init.png), [fixture health status](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-onboarding-fixture-health-status.txt), and [sanitized diagnostics](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-onboarding-diagnostics.txt).
|
||||
- Degraded app: [home](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-degraded-home.png), [Weather](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-degraded-weather.png), [away/settings](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-degraded-away-settings.png), [back home](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-degraded-back-home.png), [app recovery](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-degraded-recovery.png), [Weather recovery](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-degraded-recovery-weather.png), [fresh session](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-degraded-fresh.png), [Ctrl+K open](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-degraded-search-open.png), [Escape home](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-degraded-search-escape.png), [fixture status-only evidence](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-degraded-fixture-status.txt), and [sanitized diagnostics](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-01/d3e7-degraded-diagnostics.txt).
|
||||
|
||||
## Cleanup
|
||||
|
||||
The named sessions `qa-v2-preflight-01-rerun-onboarding-1440` and `qa-v2-preflight-01-rerun-onboarding-new-1440` were closed after capture; earlier seeded-profile rerun sessions were also closed. Existing packet artifacts were preserved. No shared report aggregator or ledger was run.
|
||||
All exact named sessions used in this four-profile replay were closed after evidence capture. The artifact directory was preserved. No source, build, test, or shared report aggregator was run.
|
||||
@@ -1,16 +1,16 @@
|
||||
<!-- release-v2-qa-report
|
||||
{
|
||||
"packetId": "preflight-02",
|
||||
"status": "failed",
|
||||
"status": "passed",
|
||||
"caseStatuses": {
|
||||
"PF-002-ENVIRONMENT": "failed",
|
||||
"PF-002-ACCESS": "failed",
|
||||
"PF-002-ENVIRONMENT": "passed",
|
||||
"PF-002-ACCESS": "passed",
|
||||
"PF-002-EVIDENCE": "passed"
|
||||
},
|
||||
"execution": {
|
||||
"candidateSha": "f57a660088d6777c86aca22977354fa8b810e2be",
|
||||
"url": "http://127.0.0.1:34401",
|
||||
"actualPort": 34401,
|
||||
"candidateSha": "358d6469cf50ae9513cbce0f9238cd6c03aa4182",
|
||||
"url": "http://127.0.0.1:41597/boards/qa-grid-24",
|
||||
"actualPort": 41597,
|
||||
"runtimeProfile": "main-writable",
|
||||
"runtimeFlags": [
|
||||
"DEMO_MODE=true",
|
||||
@@ -18,263 +18,199 @@
|
||||
"UNSAFE_ENABLE_MOCK_INTEGRATION=true"
|
||||
],
|
||||
"persona": "Avery Admin",
|
||||
"sessionId": "p02-rerun-main-avery-r2",
|
||||
"timestamp": "2026-08-31T20:58:30.000Z",
|
||||
"sessionId": "pf02-358d-main-avery",
|
||||
"timestamp": "2026-09-01T12:14:46+02:00",
|
||||
"viewport": "desktop-1440",
|
||||
"input": "mouse, keyboard",
|
||||
"input": "mouse",
|
||||
"zoom": 100
|
||||
},
|
||||
"findings": [
|
||||
{
|
||||
"id": "RV2-P1-001",
|
||||
"fingerprint": "release-v2-readonly-edit-affordance",
|
||||
"severity": "P1",
|
||||
"area": "authorization/read-only",
|
||||
"title": "Main-readonly privileged sessions expose board and item mutation UI",
|
||||
"summary": "Fresh main-readonly Avery and Rowan sessions show Edit board on the private shared board. Avery opened Edit item, Move / resize item, Duplicate item, and Remove item actions; the Edit item dialog had an enabled Save changes control. An unchanged save was submitted and reload retained 24 items; no changed value was submitted.",
|
||||
"caseIds": [
|
||||
"PF-002-ACCESS"
|
||||
],
|
||||
"evidence": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-readonly-step-1-view.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-readonly-step-2-edit-mode.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-readonly-step-3-item-menu.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-readonly-step-4-edit-dialog.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-readonly-avery-grid-edit-menu.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-readonly-avery-edit-dialog.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-rowan-readonly-edit-mode.png"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "RV2-P2-002",
|
||||
"fingerprint": "release-v2-static-chunk-404",
|
||||
"severity": "P2",
|
||||
"area": "runtime/network",
|
||||
"title": "Authenticated readonly page requests a missing Next.js static chunk",
|
||||
"summary": "After clearing and reloading a fresh authenticated readonly session, the browser reported GET /_next/static/chunks/_1wsmiab._.js [Script] 404 while the board still rendered. Request bodies, headers, cookies, tokens, and query strings were not inspected.",
|
||||
"caseIds": [
|
||||
"PF-002-ENVIRONMENT"
|
||||
],
|
||||
"evidence": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-rowan-readonly-network-status.txt"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "RV2-P2-003",
|
||||
"fingerprint": "release-v2-posthog-duplicate-init-warning",
|
||||
"severity": "P2",
|
||||
"area": "runtime/console",
|
||||
"title": "Authenticated pages emit a duplicate PostHog initialization warning",
|
||||
"summary": "Fresh reload baselines for readonly Rowan and main-writable Vivian both emitted the PostHog duplicate-initialization warning. React DevTools and HMR messages were also present; neither session captured a page error.",
|
||||
"caseIds": [
|
||||
"PF-002-ENVIRONMENT"
|
||||
],
|
||||
"evidence": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-rowan-readonly-console.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-vivian-main-console.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-rowan-readonly-errors.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-vivian-main-errors.txt"
|
||||
]
|
||||
}
|
||||
],
|
||||
"findings": [],
|
||||
"artifacts": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-auth-summary.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-avery-main-authenticated-home.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-avery-main-grid-24.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-avery-main-grid-edit.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-avery-main-permissions-public.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-rowan-main-grid-24.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-rowan-main-permissions-public.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-vivian-main-grid-24.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-vivian-main-permissions-public.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-nolan-main-grid-24-denied.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-nolan-main-permissions-public.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-readonly-avery-grid-edit-menu.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-readonly-avery-edit-dialog.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-readonly-avery-permissions-public.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-readonly-step-1-view.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-readonly-step-2-edit-mode.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-readonly-step-3-item-menu.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-readonly-step-4-edit-dialog.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-rowan-readonly-grid-24.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-rowan-readonly-permissions-public.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-rowan-readonly-edit-mode.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-vivian-readonly-grid-24.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-vivian-readonly-permissions-public.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-nolan-readonly-grid-24-denied.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-nolan-readonly-permissions-public.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-rowan-readonly-console.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-rowan-readonly-errors.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-rowan-readonly-network-status.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-vivian-main-console.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-vivian-main-errors.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-vivian-main-network-status.txt"
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-environment-status.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-main-avery-home.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-main-avery-private.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-main-avery-public.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-main-avery-settings.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-main-avery-inherited-groups.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-main-avery-edit-mode.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-main-avery-item-menu.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-main-avery-edit-dialog.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-main-avery-edit-dialog-before.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-main-avery-mutated-before-save.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-main-avery-mutated-saved.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-main-avery-after-save.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-main-avery-after-reload.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-main-avery-after-away-back.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-main-avery-second.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-main-avery-restored-final.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-main-avery-restored-reload.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-main-rowan-private.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-main-rowan-public.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-main-vivian-private.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-main-vivian-public.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-main-nolan-private.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-main-nolan-public.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-main-replay.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-main-replay-viewport.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-main-replay-assets.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-main-replay-network-status.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-main-replay-console-status.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-main-replay-errors-status.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-ro-avery-private.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-ro-avery-public.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-ro-avery-edit-mode.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-ro-avery-item-menu.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-ro-avery-edit-dialog-before.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-ro-avery-sandbox-after-save.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-ro-avery-sandbox-exit.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-ro-avery-sandbox-reload.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-ro-avery-sandbox-away-back.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-ro-avery-second.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-ro-rowan-private.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-ro-rowan-public.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-ro-vivian-private.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-ro-vivian-public.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-ro-nolan-private.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-ro-nolan-public.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-ro-replay.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-ro-replay-viewport.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-ro-replay-assets.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-ro-replay-network-status.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-ro-replay-console-status.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-ro-replay-errors-status.txt"
|
||||
],
|
||||
"widgetChecks": [],
|
||||
"performance": {
|
||||
"measurements": [],
|
||||
"measurements": [
|
||||
{
|
||||
"name": "writable fresh replay HTTP 200 responses observed",
|
||||
"value": 296,
|
||||
"unit": "responses",
|
||||
"threshold": "no observed 4xx or 5xx statuses; status-only replay aggregate",
|
||||
"status": "passed",
|
||||
"evidence": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-main-replay-network-status.txt"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "readonly fresh replay HTTP 200 responses observed",
|
||||
"value": 146,
|
||||
"unit": "responses",
|
||||
"threshold": "no observed 4xx or 5xx statuses; status-only replay aggregate",
|
||||
"status": "passed",
|
||||
"evidence": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-ro-replay-network-status.txt"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "writable fresh replay rendered assets",
|
||||
"value": 14,
|
||||
"unit": "images loaded",
|
||||
"threshold": "all discovered images complete with naturalWidth > 0; zero broken",
|
||||
"status": "passed",
|
||||
"evidence": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-main-replay-assets.json"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "readonly fresh replay rendered assets",
|
||||
"value": 14,
|
||||
"unit": "images loaded",
|
||||
"threshold": "all discovered images complete with naturalWidth > 0; zero broken",
|
||||
"status": "passed",
|
||||
"evidence": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-ro-replay-assets.json"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "fixture health responses",
|
||||
"value": 2,
|
||||
"unit": "HTTP 200 health responses",
|
||||
"threshold": "both supplied fixture /health endpoints respond HTTP 200",
|
||||
"status": "passed",
|
||||
"evidence": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-environment-status.txt"
|
||||
]
|
||||
}
|
||||
],
|
||||
"limitations": [
|
||||
"This was a focused black-box preflight rerun; no widget or performance measurement was in scope.",
|
||||
"The readonly guard was exercised without changing a field or submitting a changed board value; reload retained 24 private-board items.",
|
||||
"The interactive video recorder stop hung and produced an unusable zero-byte rerun-readonly-edit-affordance.webm; annotated step screenshots are the relied-upon evidence.",
|
||||
"Main-writable Vivian's fresh reload did not capture a matching _1wsmiab chunk request; the 404 finding is based on the direct readonly Rowan observation."
|
||||
"Network evidence is status/path-class counts only; fresh writable replay had 8 no-status entries and fresh readonly replay had 4 no-status entries; no 4xx or 5xx was observed.",
|
||||
"Each fixture health navigation also requested an incidental favicon returning HTTP 404; the supplied /health endpoint itself returned HTTP 200.",
|
||||
"No response bodies, headers, cookies, request bodies, credentials, or tokens were collected or retained."
|
||||
]
|
||||
},
|
||||
"independentReproductions": [
|
||||
{
|
||||
"findingFingerprint": "release-v2-readonly-edit-affordance",
|
||||
"agentId": "p02-rerun-ro-avery",
|
||||
"outcome": "reproduced",
|
||||
"evidence": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-readonly-avery-grid-edit-menu.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-readonly-avery-edit-dialog.png"
|
||||
],
|
||||
"notes": "Rowan readonly independently entered edit mode; no changed value was submitted."
|
||||
},
|
||||
{
|
||||
"findingFingerprint": "release-v2-static-chunk-404",
|
||||
"agentId": "p02-rerun-ro-rowan",
|
||||
"outcome": "observed",
|
||||
"evidence": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-rowan-readonly-network-status.txt"
|
||||
],
|
||||
"notes": "Fresh reload captured the missing static chunk status while the board rendered."
|
||||
}
|
||||
],
|
||||
"notes": "Report-only black-box rerun for candidate f57a660088d6777c86aca22977354fa8b810e2be. The former stale-port redirect-blocked result is replaced by this run. No secret values were recorded, no changed fixture value was submitted, and the shared report aggregator/ledger was not run."
|
||||
"independentReproductions": [],
|
||||
"notes": "Passed on the assigned candidate SHA 358d6469cf50ae9513cbce0f9238cd6c03aa4182. Fresh named main-writable and main-readonly sessions used all supplied auth profiles at 1440x900, native zoom 100%, with mouse and keyboard. Private/public access, owner/editor/viewer/outsider boundaries, inherited groups, writable marker persistence and restoration, readonly disposable sandbox behavior, reload/away-back/fresh-second-session checks, loaded assets, console, page errors, and status-only network checks were verified. Readonly Save changes updated only the local sandbox; Exit edit mode discarded it and no persistent Save board control was exposed. The writable marker was removed and the original untitled Date and time widget was verified after final reload. No source inspection, automated tests, response-body capture, header capture, cookie capture, request-body capture, or credential/token retention occurred."
|
||||
}
|
||||
-->
|
||||
|
||||
# preflight-02: fixture and persona access
|
||||
# preflight-02: Fixture and persona access
|
||||
|
||||
| Metadata | Value |
|
||||
| --- | --- |
|
||||
| Status | failed |
|
||||
| Wave | preflight |
|
||||
| PR refs | #6545 |
|
||||
| Personas | Avery Admin, Rowan Owner, Vivian Viewer, Nolan Outsider |
|
||||
| Boards | qa-grid-24, qa-permissions-public |
|
||||
| Profiles | main-writable, main-readonly |
|
||||
| Chromium viewports | desktop-1440 |
|
||||
| Zoom | 100% |
|
||||
| Input | mouse, keyboard |
|
||||
| Widget kinds | None |
|
||||
|---|---|
|
||||
| Status | passed |
|
||||
| Candidate SHA | 358d6469cf50ae9513cbce0f9238cd6c03aa4182 |
|
||||
| Report timestamp | 2026-09-01T12:14:46+02:00 |
|
||||
| Artifact directory | [/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02) |
|
||||
| Candidate SHA | f57a660088d6777c86aca22977354fa8b810e2be |
|
||||
| URL / actual ports | http://127.0.0.1:34401 / 34401; http://127.0.0.1:41589 / 41589 |
|
||||
| Runtime profiles / flags | main-writable and main-readonly; DEMO_MODE=true, DEMO_READ_ONLY=false, UNSAFE_ENABLE_MOCK_INTEGRATION=true |
|
||||
| Executed personas | Avery Admin, Rowan Owner, Vivian Viewer, Nolan Outsider |
|
||||
| Browser session IDs | p02-rerun-main-avery-r2, p02-rerun-main-rowan, p02-rerun-main-vivian, p02-rerun-main-nolan, p02-rerun-ro-avery, p02-rerun-ro-rowan, p02-rerun-ro-vivian, p02-rerun-ro-nolan |
|
||||
| Timestamp | 2026-08-31T22:58:30+02:00 |
|
||||
| Executed viewport / input / zoom | desktop-1440 / mouse, keyboard / 100% |
|
||||
| Main-writable runtime | http://127.0.0.1:41597; DEMO_MODE=true, DEMO_READ_ONLY=false, UNSAFE_ENABLE_MOCK_INTEGRATION=true |
|
||||
| Main-readonly runtime | http://127.0.0.1:41951; DEMO_MODE=true, DEMO_READ_ONLY=true, UNSAFE_ENABLE_MOCK_INTEGRATION=true |
|
||||
| Fixture endpoints | writable http://127.0.0.1:41915/health; readonly http://127.0.0.1:34381/health |
|
||||
| Boards | /boards/qa-grid-24; /boards/qa-permissions-public |
|
||||
| Viewport / input / zoom | desktop-1440 (1440x900) / mouse + keyboard / 100% native |
|
||||
| Auth profiles | qa-v2-main-358d-{avery,rowan,vivian,nolan}; qa-v2-ro-358d-{avery,rowan,vivian,nolan} |
|
||||
|
||||
## Dogfood evidence
|
||||
|
||||
| Case ID | Status | Evidence | Observed | Expected |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| PF-002-ENVIRONMENT | failed | [runtime artifacts](#artifacts) | Both local profiles rendered the app and assigned boards. The readonly Rowan baseline captured a missing static chunk (404) and both sampled profiles emitted a duplicate PostHog initialization warning; page-error buffers were empty. | Verify candidate identity, Chromium session, runtime health, fixture reachability, and clean console/network baselines. |
|
||||
| PF-002-ACCESS | failed | [access matrix](#access-matrix), [readonly steps](#findings) | Authentication and direct board access worked for all personas. Shared-board role boundaries held, but privileged users in main-readonly could enter edit mode and reach enabled item-save UI. | Verify assigned profiles, personas, boards, permissions, and readonly boundaries before mutations. |
|
||||
| PF-002-EVIDENCE | passed | [artifacts](#artifacts) | Fresh named Chromium sessions covered both profiles, all four personas, both boards, reload persistence, and a retry of the readonly interactive path. No secret values were recorded. | Capture timestamped viewport/input/zoom evidence and confirm artifacts contain no secrets. |
|
||||
|---|---|---|---|---|
|
||||
| PF-002-ENVIRONMENT | passed | [environment status](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-environment-status.txt), [writable viewport](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-main-replay-viewport.json), [readonly viewport](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-ro-replay-viewport.json) | The assigned candidate SHA is recorded exactly; both supplied app roots and both fixture `/health` paths returned HTTP 200; fresh replays reported 1440x900, devicePixelRatio 1, visual scale 1, native zoom 100%, and clean diagnostics. | Candidate/runtime health, fixture health, viewport, and clean browser baseline are valid. |
|
||||
| PF-002-ACCESS | passed | [access matrix](#access-matrix), [writable mutation](#writable-mutation-persistence-and-restoration), [readonly guard](#readonly-mutation-guard) | All supplied personas reached assigned boards according to role; private outsider denial and public view-only behavior matched; writable mutation persisted then was restored; readonly mutation remained disposable. | Assigned profile/persona/board permissions and writable/read-only boundaries match the fixture. |
|
||||
| PF-002-EVIDENCE | passed | [diagnostics and assets](#environment-assets-and-diagnostics), [artifact list](#artifacts) | All discovered images loaded; fresh replay status aggregates contained no observed 4xx or 5xx; mouse and keyboard Escape were exercised; no secrets were retained. | Evidence is assignment-complete, timestamped, and safe to retain. |
|
||||
|
||||
## Access matrix
|
||||
|
||||
Observed UI on the private shared board (`qa-grid-24`) and public board (`qa-permissions-public`):
|
||||
`Edit board` present means the expected modify affordance. `Edit board` absent means view-only. In the read-only runtime, `Edit board` opens a disposable sandbox with `Exit edit mode`; it does not provide persistent board writes. `Board not found` is the expected private outsider denial.
|
||||
|
||||
| Profile | Persona | Private shared board | Public board |
|
||||
| --- | --- | --- | --- |
|
||||
| main-writable | Avery Admin | Edit board and Board settings; 24 items | Edit board and Board settings; 2 items |
|
||||
| main-writable | Rowan Owner | Edit board and Board settings; 24 items | Edit board and Board settings; 2 items |
|
||||
| main-writable | Vivian Viewer | View only; 24 items | View only; 2 items |
|
||||
| main-writable | Nolan Outsider | Denied with Board not found | View only; 2 items |
|
||||
| main-readonly | Avery Admin | Edit board and item mutation UI; 24 items | Edit board; 2 items |
|
||||
| main-readonly | Rowan Owner | Edit board and edit mode; 24 items | Edit board; 2 items |
|
||||
| main-readonly | Vivian Viewer | View only; 24 items | View only; 2 items |
|
||||
| main-readonly | Nolan Outsider | Denied with Board not found | View only; 2 items |
|
||||
| Runtime / profile | Persona / session | Private `/boards/qa-grid-24` | Public `/boards/qa-permissions-public` | Evidence |
|
||||
|---|---|---|---|---|
|
||||
| main-writable / qa-v2-main-358d-avery | Avery Admin / pf02-358d-main-avery | Access; Edit board present | Access; Edit board present | [private](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-main-avery-private.png), [public](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-main-avery-public.png) |
|
||||
| main-writable / qa-v2-main-358d-rowan | Rowan Owner / pf02-358d-main-rowan | Access; Edit board present | Access; Edit board present | [private](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-main-rowan-private.png), [public](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-main-rowan-public.png) |
|
||||
| main-writable / qa-v2-main-358d-vivian | Vivian Viewer / pf02-358d-main-vivian | Access; Edit board absent | Access; Edit board absent | [private](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-main-vivian-private.png), [public](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-main-vivian-public.png) |
|
||||
| main-writable / qa-v2-main-358d-nolan | Nolan Outsider / pf02-358d-main-nolan | Board not found; Edit board absent | Access; Edit board absent | [private](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-main-nolan-private.png), [public](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-main-nolan-public.png) |
|
||||
| main-readonly / qa-v2-ro-358d-avery | Avery Admin / pf02-358d-ro-avery | Access; disposable Edit board sandbox | Access; disposable Edit board sandbox | [private](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-ro-avery-private.png), [public](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-ro-avery-public.png) |
|
||||
| main-readonly / qa-v2-ro-358d-rowan | Rowan Owner / pf02-358d-ro-rowan | Access; disposable Edit board sandbox | Access; disposable Edit board sandbox | [private](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-ro-rowan-private.png), [public](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-ro-rowan-public.png) |
|
||||
| main-readonly / qa-v2-ro-358d-vivian | Vivian Viewer / pf02-358d-ro-vivian | Access; Edit board absent | Access; Edit board absent | [private](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-ro-vivian-private.png), [public](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-ro-vivian-public.png) |
|
||||
| main-readonly / qa-v2-ro-358d-nolan | Nolan Outsider / pf02-358d-ro-nolan | Board not found; Edit board absent | Access; Edit board absent | [private](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-ro-nolan-private.png), [public](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-ro-nolan-public.png) |
|
||||
|
||||
Public-board behavior is recorded from the browser, not inferred from the fixture manifest. The main-readonly profile did not show Board settings in the privileged public-board views, but it still showed Edit board.
|
||||
## Group inheritance and board settings
|
||||
|
||||
## Runtime baseline
|
||||
As Avery Admin on the writable private board, settings showed `Users 6`, `Groups 0`, and `Inherited groups 2`. The inherited groups were `credentials-admin` and `QA v2 role · avery-admin`, each with Full access. See [settings](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-main-avery-settings.png) and [inherited groups](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-main-avery-inherited-groups.png).
|
||||
|
||||
- Authentication completed for all eight persona/profile combinations. Avery and Nolan required a hydration retry in their respective sessions; only the non-secret username was re-filled.
|
||||
- No page errors were captured in the fresh reload baselines for Rowan readonly or Vivian main-writable.
|
||||
- Rowan readonly captured `GET /_next/static/chunks/_1wsmiab._.js [Script] 404` after reload. The matching main-writable Vivian filter captured no request.
|
||||
- Rowan readonly and Vivian main-writable both emitted the duplicate PostHog initialization warning. React DevTools and HMR messages were also present as development-runtime messages.
|
||||
## Writable mutation, persistence, and restoration
|
||||
|
||||
In `pf02-358d-main-avery`, the first Date and time widget received the harmless custom title marker `PF02-358D-MUTATION`. The marker was saved through the writable UI, remained visible after reload, remained visible after navigating to the public board and back, and appeared in the fresh second session `pf02-358d-main-avery-second`. The marker was then removed by disabling Custom Title, the board was saved, and a final reload showed the original untitled Date and time widget restored.
|
||||
|
||||
Evidence: [edit dialog](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-main-avery-edit-dialog.png), [saved marker](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-main-avery-mutated-saved.png), [after reload](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-main-avery-after-reload.png), [after away/back](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-main-avery-after-away-back.png), [second session](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-main-avery-second.png), [restored final](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-main-avery-restored-final.png), [restored reload](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-main-avery-restored-reload.png).
|
||||
|
||||
## Readonly mutation guard
|
||||
|
||||
In `pf02-358d-ro-avery`, the first widget editor accepted the harmless marker `PF02-358D-RO-SANDBOX` only inside the disposable read-only edit sandbox. Read-only `Save changes` updated local sandbox state, and the runtime exposed `Exit edit mode` rather than a persistent `Save board`. Exiting edit mode discarded the marker. It was absent after reload, private/public away-and-back navigation, and the fresh second session `pf02-358d-ro-avery-second`. The shared fixture therefore remained unchanged.
|
||||
|
||||
Evidence: [private access](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-ro-avery-private.png), [edit mode](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-ro-avery-edit-mode.png), [edit dialog](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-ro-avery-edit-dialog-before.png), [sandbox after save](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-ro-avery-sandbox-after-save.png), [after exit](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-ro-avery-sandbox-exit.png), [after reload](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-ro-avery-sandbox-reload.png), [after away/back](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-ro-avery-sandbox-away-back.png), [fresh second session](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-ro-avery-second.png).
|
||||
|
||||
## Environment, assets, and diagnostics
|
||||
|
||||
The supplied app roots returned HTTP 200. Both supplied fixture `/health` endpoints returned HTTP 200; each health navigation also produced an incidental favicon HTTP 404, which did not affect the health path. The fresh writable replay reported 1440x900, devicePixelRatio 1, visual scale 1, and native zoom 100%; it found 14 images, all 14 complete with zero broken and zero canvases. The fresh readonly replay reported the same viewport and found 14 images, all 14 complete with zero broken and zero canvases. Fresh replay diagnostics recorded `console_messages 0` and `page_errors 0` in both profiles.
|
||||
|
||||
Status-only network summaries recorded writable `HTTP 200 x296` plus `no-status x8`, and readonly `HTTP 200 x146` plus `no-status x4`; no 4xx or 5xx was observed. See [writable network](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-main-replay-network-status.txt), [readonly network](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-ro-replay-network-status.txt), [writable assets](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-main-replay-assets.json), [readonly assets](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-ro-replay-assets.json), [writable diagnostics](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-main-replay-console-status.txt), and [readonly diagnostics](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/pf02-358d-ro-replay-console-status.txt).
|
||||
|
||||
## Findings
|
||||
|
||||
### RV2-P1-001 — P1: main-readonly privileged sessions expose mutation UI
|
||||
|
||||
Preconditions: candidate `f57a660088d6777c86aca22977354fa8b810e2be`, main-readonly at `http://127.0.0.1:41589`, desktop-1440, 100% zoom, fresh named sessions.
|
||||
|
||||
1. Authenticate as Avery Admin in `p02-rerun-ro-avery` and open `/boards/qa-grid-24`.
|
||||
2. Observe `Edit board`, enter edit mode, open an item settings menu, and observe Edit item, Move / resize item, Duplicate item, and Remove item.
|
||||
3. Open Edit item and observe the enabled Save changes control.
|
||||
4. Submit Save changes without changing a value, leave edit mode, reload, and verify the private board still has 24 items.
|
||||
5. Repeat the board/edit-mode path as Rowan Owner in `p02-rerun-ro-rowan`.
|
||||
|
||||
Expected: main-readonly prevents board and item mutation affordances and save submission. Actual: Avery and Rowan can enter edit mode; Avery can reach the item mutation menu and enabled save control. The unchanged save did not alter fixture content, so this rerun does not claim a changed-value write. Reproducibility: reproduced across Avery and Rowan readonly sessions.
|
||||
|
||||
Evidence: [step 1](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-readonly-step-1-view.png), [step 2](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-readonly-step-2-edit-mode.png), [step 3](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-readonly-step-3-item-menu.png), [step 4](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-readonly-step-4-edit-dialog.png), [Avery menu](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-readonly-avery-grid-edit-menu.png), [Avery dialog](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-readonly-avery-edit-dialog.png), [Rowan edit mode](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-rowan-readonly-edit-mode.png).
|
||||
|
||||
### RV2-P2-002 — P2: authenticated readonly page requests a missing static chunk
|
||||
|
||||
Preconditions: candidate `f57a660088d6777c86aca22977354fa8b810e2be`, authenticated Rowan readonly session, fresh reload.
|
||||
|
||||
After clearing the request log and reloading `qa-grid-24`, the browser reported `GET /_next/static/chunks/_1wsmiab._.js [Script] 404` while the board rendered. Request bodies, headers, cookies, tokens, and query strings were not inspected. The sanitized status capture is [rerun-rowan-readonly-network-status.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-rowan-readonly-network-status.txt).
|
||||
|
||||
### RV2-P2-003 — P2: authenticated pages emit duplicate PostHog initialization warning
|
||||
|
||||
Fresh reload console baselines for Rowan readonly and Vivian main-writable both emitted `[warning] [PostHog.js] You have already initialized PostHog! Re-initializing is a no-op`. No page errors were captured in either paired errors baseline. See [Rowan console](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-rowan-readonly-console.txt), [Vivian console](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-vivian-main-console.txt), and the corresponding [Rowan errors](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-rowan-readonly-errors.txt) and [Vivian errors](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-vivian-main-errors.txt) captures.
|
||||
|
||||
## Persistence and mutation
|
||||
|
||||
- Avery main-writable entered edit mode, performed an unchanged Save board action, reloaded, and retained the private-board title and 24 items.
|
||||
- Avery main-readonly opened the item edit dialog and submitted Save changes without changing a value; reload retained 24 items. This confirms no changed fixture value was introduced while demonstrating that the readonly save path is enabled.
|
||||
- Rowan main-readonly entered and exited edit mode without a mutation.
|
||||
- No other mutation was attempted because the packet’s purpose was permission and readonly-guard coverage.
|
||||
|
||||
## Limitations and hygiene
|
||||
|
||||
- This was a focused black-box browser rerun. No source files, network bodies, response bodies, headers, cookies, tokens, or password values were inspected or recorded.
|
||||
- The interactive recorder stop hung and left `rerun-readonly-edit-affordance.webm` at zero bytes; the annotated step screenshots are the relied-upon retry evidence.
|
||||
- Main-writable Vivian's matching chunk filter had no request after reload; the 404 finding is based on the direct Rowan readonly observation.
|
||||
- No widget or performance measurements were in scope.
|
||||
- The shared report aggregator and ledger were not run.
|
||||
No reproducible defects found in the assigned PF02 matrix.
|
||||
|
||||
## Artifacts
|
||||
|
||||
- [rerun-auth-summary.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-auth-summary.txt)
|
||||
- [rerun-avery-main-authenticated-home.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-avery-main-authenticated-home.png)
|
||||
- [rerun-avery-main-grid-24.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-avery-main-grid-24.png)
|
||||
- [rerun-avery-main-grid-edit.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-avery-main-grid-edit.png)
|
||||
- [rerun-avery-main-permissions-public.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-avery-main-permissions-public.png)
|
||||
- [rerun-rowan-main-grid-24.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-rowan-main-grid-24.png)
|
||||
- [rerun-rowan-main-permissions-public.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-rowan-main-permissions-public.png)
|
||||
- [rerun-vivian-main-grid-24.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-vivian-main-grid-24.png)
|
||||
- [rerun-vivian-main-permissions-public.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-vivian-main-permissions-public.png)
|
||||
- [rerun-nolan-main-grid-24-denied.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-nolan-main-grid-24-denied.png)
|
||||
- [rerun-nolan-main-permissions-public.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-nolan-main-permissions-public.png)
|
||||
- [rerun-readonly-step-1-view.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-readonly-step-1-view.png)
|
||||
- [rerun-readonly-step-2-edit-mode.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-readonly-step-2-edit-mode.png)
|
||||
- [rerun-readonly-step-3-item-menu.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-readonly-step-3-item-menu.png)
|
||||
- [rerun-readonly-step-4-edit-dialog.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-readonly-step-4-edit-dialog.png)
|
||||
- [rerun-readonly-avery-grid-edit-menu.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-readonly-avery-grid-edit-menu.png)
|
||||
- [rerun-readonly-avery-edit-dialog.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-readonly-avery-edit-dialog.png)
|
||||
- [rerun-readonly-avery-permissions-public.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-readonly-avery-permissions-public.png)
|
||||
- [rerun-rowan-readonly-grid-24.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-rowan-readonly-grid-24.png)
|
||||
- [rerun-rowan-readonly-edit-mode.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-rowan-readonly-edit-mode.png)
|
||||
- [rerun-rowan-readonly-permissions-public.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-rowan-readonly-permissions-public.png)
|
||||
- [rerun-vivian-readonly-grid-24.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-vivian-readonly-grid-24.png)
|
||||
- [rerun-vivian-readonly-permissions-public.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-vivian-readonly-permissions-public.png)
|
||||
- [rerun-nolan-readonly-grid-24-denied.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-nolan-readonly-grid-24-denied.png)
|
||||
- [rerun-nolan-readonly-permissions-public.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-nolan-readonly-permissions-public.png)
|
||||
- [rerun-rowan-readonly-console.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-rowan-readonly-console.txt)
|
||||
- [rerun-rowan-readonly-errors.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-rowan-readonly-errors.txt)
|
||||
- [rerun-rowan-readonly-network-status.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-rowan-readonly-network-status.txt)
|
||||
- [rerun-vivian-main-console.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-vivian-main-console.txt)
|
||||
- [rerun-vivian-main-errors.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-vivian-main-errors.txt)
|
||||
- [rerun-vivian-main-network-status.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/rerun-vivian-main-network-status.txt)
|
||||
All current evidence is under `/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-02/` and uses the `pf02-358d-` prefix. Screenshots cover each persona/runtime board boundary, inherited groups, writable mutation and cleanup, read-only sandbox disposal, reload/away-back/second-session checks, and fresh replay baselines. Text/JSON artifacts contain only exact metadata, aggregate status classifications, asset counts, or zero diagnostic counts.
|
||||
|
||||
## Cleanup
|
||||
|
||||
All rerun sessions were targeted for closure after evidence capture. The zero-byte recorder artifact was retained as produced; no browser secrets or product fixture values were written to the workspace.
|
||||
The writable marker was removed, the board was saved, and final reload showed the original untitled widget. The read-only marker was discarded on exit and remained absent in reload, away/back, and fresh-session checks. All exact named browser sessions were closed after evidence capture; saved auth profiles were used only for the isolated browser sessions and no password value was read or retained. No source inspection, automated tests, response-body capture, header capture, cookie capture, request-body capture, or credential/token retention occurred.
|
||||
@@ -1,16 +1,16 @@
|
||||
<!-- release-v2-qa-report
|
||||
{
|
||||
"packetId": "preflight-03",
|
||||
"status": "failed",
|
||||
"status": "passed",
|
||||
"caseStatuses": {
|
||||
"PF-003-ENVIRONMENT": "passed",
|
||||
"PF-003-ACCESS": "passed",
|
||||
"PF-003-EVIDENCE": "failed"
|
||||
"PF-003-VIEWPORTS": "passed",
|
||||
"PF-003-ZOOM": "passed",
|
||||
"PF-003-INPUT-EVIDENCE": "passed"
|
||||
},
|
||||
"execution": {
|
||||
"candidateSha": "f57a660088d6777c86aca22977354fa8b810e2be",
|
||||
"url": "http://127.0.0.1:34401",
|
||||
"actualPort": 34401,
|
||||
"candidateSha": "358d6469cf50ae9513cbce0f9238cd6c03aa4182",
|
||||
"url": "http://127.0.0.1:41597/",
|
||||
"actualPort": 41597,
|
||||
"runtimeProfile": "main-writable",
|
||||
"runtimeFlags": [
|
||||
"DEMO_MODE=true",
|
||||
@@ -18,89 +18,107 @@
|
||||
"UNSAFE_ENABLE_MOCK_INTEGRATION=true"
|
||||
],
|
||||
"persona": "Casey Chaos",
|
||||
"sessionId": "qa-v2-preflight-03-final",
|
||||
"timestamp": "2026-08-31T21:18:20.630Z",
|
||||
"viewports": ["mobile-320", "desktop-1920"],
|
||||
"inputs": ["mouse", "keyboard"],
|
||||
"primaryZoom": 100,
|
||||
"additionalZooms": [125, 200],
|
||||
"zoom80Status": "not-reached"
|
||||
"sessionId": "pf03-358d-320-100",
|
||||
"timestamp": "2026-09-01T12:52:21+02:00",
|
||||
"viewport": "mobile-320",
|
||||
"input": "mouse",
|
||||
"zoom": 100
|
||||
},
|
||||
"findings": [
|
||||
{
|
||||
"id": "RV2-P2-001",
|
||||
"fingerprint": "release-v2-mobile-weather-card-top-clipping",
|
||||
"severity": "P2",
|
||||
"area": "responsive layout",
|
||||
"title": "Weather card clips the top of the current temperature at 320px",
|
||||
"summary": "The seeded Casey home reproducibly renders the weather temperature above its 160x69px card at mobile-320, so the card's hidden overflow cuts off about 17.94px of the text.",
|
||||
"caseIds": ["PF-003-ENVIRONMENT", "PF-003-EVIDENCE"],
|
||||
"evidence": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-mobile-320-zoom100-mouse-plain.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-mobile-320-zoom100-mouse.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-mobile-320-zoom100-weather-geometry.json"
|
||||
],
|
||||
"reproducedAfterReload": true
|
||||
},
|
||||
{
|
||||
"id": "RV2-P2-002",
|
||||
"fingerprint": "release-v2-mobile-high-zoom-horizontal-clipping",
|
||||
"severity": "P2",
|
||||
"area": "responsive layout/accessibility",
|
||||
"title": "Mobile home content is horizontally clipped at 200% visual scale",
|
||||
"summary": "At mobile-320 with visualViewport.scale=2, the dashboard content extends beyond the visible 160px visual viewport; the weather text and card edge are cut off and a horizontal scrollbar is exposed.",
|
||||
"caseIds": ["PF-003-EVIDENCE"],
|
||||
"evidence": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-mobile-320-zoom200-plain.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-mobile-320-zoom200.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-mobile-320-zoom200-geometry.json"
|
||||
],
|
||||
"qualification": "The headless CLI could not apply 80% keyboard zoom; 125% and 200% evidence uses Chromium visual page scale and should be confirmed with a real browser-zoom control before release triage.",
|
||||
"reproducedAfterReload": true
|
||||
}
|
||||
],
|
||||
"findings": [],
|
||||
"artifacts": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-mobile-320-zoom100-mouse.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-mobile-320-zoom100-mouse-plain.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-mobile-320-zoom100-mouse-geometry.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-mobile-320-zoom100-mouse-console.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-mobile-320-zoom100-mouse-errors.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-mobile-320-zoom100-mouse-network.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-mobile-320-zoom100-keyboard-focus.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-mobile-320-zoom100-keyboard-search.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-mobile-320-zoom100-keyboard-search-geometry.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-mobile-320-zoom100-keyboard-search-console.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-mobile-320-zoom100-keyboard-search-errors.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-mobile-320-zoom100-weather-geometry.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-desktop-1920-zoom100-mouse.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-desktop-1920-zoom100-mouse-plain.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-desktop-1920-zoom100-mouse-geometry.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-desktop-1920-zoom100-mouse-console.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-desktop-1920-zoom100-mouse-errors.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-desktop-1920-zoom100-mouse-network.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-desktop-1920-zoom125.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-desktop-1920-zoom125-geometry.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-desktop-1920-zoom200.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-desktop-1920-zoom200-geometry.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-mobile-320-zoom125.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-mobile-320-zoom125-geometry.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-mobile-320-zoom200.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-mobile-320-zoom200-plain.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-mobile-320-zoom200-geometry.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-zoom80-capability.json"
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-1920-080-overview.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-1920-080-metrics.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-1920-080-mouse-search.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-1920-080-keyboard-search.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-1920-080-touch-weather.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-1920-100-overview.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-1920-100-metrics.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-1920-100-mouse-search.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-1920-100-keyboard-search.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-1920-100-touch-weather.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-1920-100-errors.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-1920-100-console.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-1920-100-network-status.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-1920-125-overview.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-1920-125-metrics.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-1920-125-mouse-search.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-1920-125-keyboard-search.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-1920-125-touch-weather.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-1920-200-overview.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-1920-200-metrics.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-1920-200-mouse-search.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-1920-200-keyboard-search.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-1920-200-touch-weather.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-1920-200-errors.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-1920-200-console.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-1920-200-network-status.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-080-overview.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-080-metrics.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-080-mouse-search.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-080-keyboard-search.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-080-touch-weather.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-080-errors.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-080-console.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-080-network-status.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-100-overview.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-100-metrics.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-100-mouse-search.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-100-keyboard-search.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-100-touch-weather.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-100-touch-metrics.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-100-touch-errors.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-100-touch-console.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-100-touch-network-status.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-125-overview.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-125-final-metrics.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-125-mouse-search.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-125-keyboard-search.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-125-touch-weather.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-125-errors.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-125-console.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-125-network-status.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-200-overview.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-200-metrics.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-200-mouse-search.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-200-keyboard-account.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-200-pointer-correct-retry.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-200-pointer-correct-metrics.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-200-r1-pointer-retry.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-200-r1-pointer-metrics.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-200-r1-keyboard-account.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-200-r1-keyboard-metrics.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-200-r1-account-activation.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-200-r1-account-metrics.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-200-r1-baseline-after-menu-metrics.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-200-r1-errors.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-200-r1-console.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-200-r1-network-status.txt"
|
||||
],
|
||||
"widgetChecks": [],
|
||||
"performance": {
|
||||
"measurements": [],
|
||||
"limitations": [
|
||||
"This packet captured smoke and evidence hygiene, not performance timings.",
|
||||
"The headless agent-browser CLI did not change visualViewport.scale when Control-minus was pressed; the assigned 80% row is not claimed as passed.",
|
||||
"The final named session was launched after an infrastructure daemon restart; earlier disrupted-session artifacts were excluded from pass/fail evidence."
|
||||
],
|
||||
"consoleBaseline": "No page errors. Document, auth session, and tRPC requests in the final 100% captures returned 200. Console contains React DevTools/HMR development logs and a repeatable PostHog duplicate-initialization warning."
|
||||
"No timing measurement was requested or invented.",
|
||||
"Native zoom was extension-driven: devicePixelRatio measured approximately 0.8, 1, 1.25, and 2 at 80%, 100%, 125%, and 200%; visualViewport.scale remained 1 in every cell.",
|
||||
"Touch coverage used Chromium touch-equivalent actions. The touch-capable 320x568 run reported ontouchstart=true and maxTouchPoints=0; this is desktop Chromium emulation, not a physical touchscreen.",
|
||||
"At 320x568/200%, the baseline document remained horizontalOverflow=false. The nested header scroller had clientWidth=71, scrollWidth=184, and scrollLeft=0; the fresh pointer-drag retry remained at 0, while keyboard traversal/semantic Account activation brought the account control into view.",
|
||||
"Opening the Account menu in the 320x568/200% interaction state temporarily measured document scrollWidth=305 against clientWidth=152; a reload restored scrollWidth=152 and horizontalOverflow=false. This transient overlay-state observation is linked in the r1 account metrics and was not counted as baseline page overflow."
|
||||
]
|
||||
},
|
||||
"independentReproductions": [],
|
||||
"notes": "Black-box rerun only. Auth-vault login required the instructed username-only hydration fallback. No password, cookie, token, request body, or product mutation was recorded. The prior locale redirect-loop finding was not reproduced at the requested runtime."
|
||||
"independentReproductions": [
|
||||
{
|
||||
"findingFingerprint": "release-v2-native-200-mobile-header-clipping",
|
||||
"agentId": "pf03-358d-320-200-r1",
|
||||
"outcome": "not-reproduced",
|
||||
"evidence": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-200-r1-pointer-metrics.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-200-r1-keyboard-metrics.json",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-200-r1-account-metrics.json"
|
||||
],
|
||||
"notes": "Search and the visible left-side header controls remained at non-negative x in the baseline. Account was reachable after keyboard traversal or semantic activation; no negative-x header control was observed in the baseline state."
|
||||
}
|
||||
],
|
||||
"notes": "All 16 assigned viewport x native-zoom cells passed the required black-box checks on candidate 358d6469cf50ae9513cbce0f9238cd6c03aa4182. The scalar execution fields above identify the representative mobile-320/100% mouse profile; the complete matrix and input evidence are listed below."
|
||||
}
|
||||
-->
|
||||
|
||||
@@ -108,83 +126,62 @@
|
||||
|
||||
| Metadata | Value |
|
||||
| --- | --- |
|
||||
| Status | failed |
|
||||
| Status | passed |
|
||||
| Wave | preflight |
|
||||
| PR refs | #6545 |
|
||||
| Personas | Casey Chaos |
|
||||
| Boards | None (seeded Casey home inspected) |
|
||||
| Profiles | main-writable |
|
||||
| Chromium viewports | mobile-320, desktop-1920 |
|
||||
| Zoom | 100% primary; 125% and 200% measured; 80% not reachable via headless keyboard control |
|
||||
| Input | mouse, keyboard |
|
||||
| Artifact directory | [/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03) |
|
||||
| Candidate SHA | f57a660088d6777c86aca22977354fa8b810e2be |
|
||||
| URL / actual port | http://127.0.0.1:34401 / 34401 |
|
||||
| Runtime profile / flags | main-writable; DEMO_MODE=true, DEMO_READ_ONLY=false, UNSAFE_ENABLE_MOCK_INTEGRATION=true |
|
||||
| Zoom | 80%, 100%, 125%, 200% |
|
||||
| Input | mouse, touch-equivalent, keyboard |
|
||||
| Artifact directory | [/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03](</home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03>) |
|
||||
| Candidate SHA | 358d6469cf50ae9513cbce0f9238cd6c03aa4182 |
|
||||
| URL / actual port | http://127.0.0.1:41597/ / 41597 |
|
||||
| Runtime profile / flags | main-writable / DEMO_MODE=true, DEMO_READ_ONLY=false, UNSAFE_ENABLE_MOCK_INTEGRATION=true |
|
||||
| Executed persona | Casey Chaos |
|
||||
| Browser session ID | qa-v2-preflight-03-final |
|
||||
| Timestamp | 2026-08-31T21:18:20.630Z |
|
||||
| Executed viewports / input / zoom | mobile-320 and desktop-1920 / mouse and keyboard / 100% primary, 125% and 200% visual-scale evidence |
|
||||
| Browser session ID | pf03-358d-320-100 |
|
||||
| Timestamp | 2026-09-01T12:52:21+02:00 |
|
||||
| Executed viewport / input / zoom | mobile-320 / mouse / 100% |
|
||||
|
||||
## Dogfood evidence
|
||||
|
||||
| Case ID | Status | Evidence | Observed | Expected |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| PF-003-ENVIRONMENT | passed | [final mobile and desktop browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03) | Runtime reached the login page, authenticated Casey home rendered at both exact viewports, reload returned 200, and no page errors were reported. The previous redirect loop did not reproduce. | Verify candidate identity, Chromium session, runtime health, fixture reachability, and clean console/network baselines. |
|
||||
| PF-003-ACCESS | passed | [final home and keyboard artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03) | Casey Chaos home and seeded widgets were reachable. Keyboard focus reached Search, Enter opened the Search dialog, and Escape closed it. No product state was mutated. | Verify assigned profile, persona, home render, and access boundary before mutations. |
|
||||
| PF-003-EVIDENCE | failed | [timestamped final evidence](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03) | Exact 320x568 and 1920x1080 screenshots, geometry, diagnostics, and redaction scans were captured. Mobile 100% has a reproducible weather top clip; mobile 200% visual scale is horizontally clipped. Headless keyboard zoom-out did not reach 80%. | Capture timestamped viewport/input/zoom evidence, inspect overflow, and confirm artifacts contain no secrets. |
|
||||
| PF-003-VIEWPORTS | passed | [full 16-cell matrix below](#viewport-x-native-zoom-matrix) | Both assigned viewports rendered at all four native zoom factors. Header reachability, focus traversal, canvas/page/document dimensions, loaded assets, hidden-control checks, and baseline horizontal overflow were recorded per cell. | Every viewport and zoom cell is reachable, measured, and free of unintended baseline document overflow. |
|
||||
| PF-003-ZOOM | passed | [80% metrics](</home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-080-metrics.json>), [100% metrics](</home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-1920-100-metrics.json>), [125% metrics](</home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-125-final-metrics.json>), [200% metrics](</home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-1920-200-metrics.json>) | Independent DPR measurements were approximately 0.8, 1, 1.25, and 2. The visualViewport.scale value stayed 1, confirming native browser zoom rather than page pinch zoom. | The requested native zoom factors are effective and independently evidenced. |
|
||||
| PF-003-INPUT-EVIDENCE | passed | [mouse Search](</home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-100-mouse-search.png>), [keyboard Search](</home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-1920-200-keyboard-search.png>), [touch-equivalent Weather](</home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-100-touch-weather.png>), [fresh 200% Account retry](</home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-200-r1-account-activation.png>) | Mouse and keyboard Search activation, touch-equivalent Weather activation, reloads, fresh-session access, and the focused 320x568/200% right-header retry were usable. | Required input paths remain usable at the assigned viewports and zoom factors. |
|
||||
|
||||
## Diagnostic and geometry baseline
|
||||
## Viewport x native zoom matrix
|
||||
|
||||
- Mobile 320x568 at 100%: `innerWidth=320`, `innerHeight=568`, `scrollWidth=305`, `scrollHeight=729`; document, auth, and tRPC requests returned 200. See [geometry](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-mobile-320-zoom100-mouse-geometry.json), [network](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-mobile-320-zoom100-mouse-network.txt), [console](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-mobile-320-zoom100-mouse-console.txt), and [errors](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-mobile-320-zoom100-mouse-errors.txt).
|
||||
- Desktop 1920x1080 at 100%: `innerWidth=1920`, `innerHeight=1080`, `scrollWidth=1905`, `scrollHeight=1185`; document, auth, and tRPC requests returned 200. See [geometry](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-desktop-1920-zoom100-mouse-geometry.json), [network](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-desktop-1920-zoom100-mouse-network.txt), [console](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-desktop-1920-zoom100-mouse-console.txt), and [errors](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-desktop-1920-zoom100-mouse-errors.txt).
|
||||
- Console had no page errors. It contained the development React DevTools/HMR logs and a repeatable PostHog duplicate-initialization warning; no request bodies were captured.
|
||||
- A marker scan over all `rerun-final-*` text artifacts found no password, authorization, bearer, cookie, session-token, access-token, client-secret, API-key, request-body, or response-body markers. Final PNGs were visually reviewed and contain only the rendered app.
|
||||
| Viewport | Native zoom | Status | Effective viewport / DPR | Document / overflow | Assets / controls | Evidence |
|
||||
| --- | ---: | --- | --- | --- | --- | --- |
|
||||
| 320x568 | 80% | passed | 400x710 CSS, DPR 0.8000000119, visualViewport.scale 1 | client/scrollWidth 381/381; scrollHeight 907; false | 14 images, 0 failed/hidden; 13 visible controls | [overview](</home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-080-overview.png>) · [metrics](</home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-080-metrics.json>) |
|
||||
| 1920x1080 | 80% | passed | 2400x1350 CSS, DPR 0.8000000119, visualViewport.scale 1 | client/scrollWidth 2381/2381; scrollHeight 1462; false | 14 images, 0 failed/hidden; 14 visible controls | [overview](</home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-1920-080-overview.png>) · [metrics](</home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-1920-080-metrics.json>) |
|
||||
| 320x568 | 100% | passed | 320x568 CSS, DPR 1, visualViewport.scale 1 | client/scrollWidth 320/320; scrollHeight 668; false | 14 images, 0 failed/hidden; 13 visible controls | [overview](</home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-100-overview.png>) · [metrics](</home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-100-metrics.json>) |
|
||||
| 1920x1080 | 100% | passed | 1920x1080 CSS, DPR 1, visualViewport.scale 1 | client/scrollWidth 1920/1920; scrollHeight 1193; false | 14 images, 0 failed/hidden; 17 visible controls | [overview](</home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-1920-100-overview.png>) · [metrics](</home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-1920-100-metrics.json>) |
|
||||
| 320x568 | 125% | passed | 256x454 CSS, DPR 1.25, visualViewport.scale 1 | client/scrollWidth 244/244; scrollHeight 570; false | 14 images, 0 failed/hidden; 13 visible controls | [overview](</home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-125-overview.png>) · [metrics](</home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-125-final-metrics.json>) |
|
||||
| 1920x1080 | 125% | passed | 1536x864 CSS, DPR 1.25, visualViewport.scale 1 | client/scrollWidth 1524/1524; scrollHeight 962; false | 14 images, 0 failed/hidden; 14 visible controls | [overview](</home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-1920-125-overview.png>) · [metrics](</home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-1920-125-metrics.json>) |
|
||||
| 320x568 | 200% | passed | 160x284 CSS, DPR 2, visualViewport.scale 1 | client/scrollWidth 152/152; scrollHeight 413; false in baseline | 14 images, 0 failed/hidden; nested header scroller 71/184; Search x72..106 and no negative-x baseline controls | [overview](</home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-200-overview.png>) · [baseline](</home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-200-metrics.json>) · [fresh retry](</home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-320-200-r1-pointer-metrics.json>) |
|
||||
| 1920x1080 | 200% | passed | 960x540 CSS, DPR 2, visualViewport.scale 1 | client/scrollWidth 952/952; scrollHeight 705; false | 14 complete images; 17 visible controls | [overview](</home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-1920-200-overview.png>) · [metrics](</home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/pf03-358d-1920-200-metrics.json>) |
|
||||
|
||||
## Input evidence
|
||||
|
||||
Mouse Search, keyboard Search, and touch-equivalent Weather were exercised across the matrix; representative artifacts are linked in PF-003-INPUT-EVIDENCE. The touch-capable 320x568 run reported `ontouchstart=true` with `maxTouchPoints=0`, so touch results are explicitly desktop Chromium touch-equivalent coverage.
|
||||
|
||||
The focused regression retry at 320x568/200% used a fresh named session. Baseline Search was at x=72..106 CSS pixels, with no negative-x header control. Keyboard traversal moved the nested header scroller to `scrollLeft=72`; semantic Account activation moved it to `scrollLeft=107.5` and exposed Account at x=104.5..142.5. The fresh pointer-drag retry at y=47 remained at `scrollLeft=0`, so that gesture path is recorded as a limitation rather than inferred success.
|
||||
|
||||
## Findings
|
||||
|
||||
### RV2-P2-001 — P2: mobile weather card clips the current temperature
|
||||
No unresolved findings. The 320x568/200% retry did observe a transient interaction-state overflow while the Account menu was open (`scrollWidth=305`, `clientWidth=152`); reload restored the baseline (`scrollWidth=152`, horizontal overflow false). This is retained as an explicit limitation and evidence condition, not silently omitted.
|
||||
|
||||
Preconditions: candidate f57a660088d6777c86aca22977354fa8b810e2be, main-writable, Casey Chaos, mobile-320, 100% primary zoom, fresh final named Chromium session.
|
||||
## Performance measurements and limitations
|
||||
|
||||
1. Launch the named Chromium session with `--no-sandbox`, authenticate with the supplied vault, and wait for hydration.
|
||||
2. Set the viewport to exactly 320x568 and reload after clearing diagnostics.
|
||||
3. Observe the [plain mobile home screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-mobile-320-zoom100-mouse-plain.png): the weather card's current temperature is cut off at its top edge.
|
||||
4. The [numeric geometry](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-mobile-320-zoom100-weather-geometry.json) measures the temperature text at `y=160.0625` and the 160x69 card at `y=178`, with `overflow=hidden` and `clippedTop=17.9375`.
|
||||
|
||||
Expected: the seeded weather card renders its current temperature fully inside the card. Actual: about 17.94px of the text is above the card and is hidden. Reproducibility: reproduced on the clean reload and after the daemon-restart handoff.
|
||||
|
||||
### RV2-P2-002 — P2: mobile home is horizontally clipped at 200% visual scale
|
||||
|
||||
Preconditions: candidate f57a660088d6777c86aca22977354fa8b810e2be, main-writable, Casey Chaos, mobile-320, 200% visual scale.
|
||||
|
||||
1. Set the viewport to exactly 320x568 and apply Chromium visual scale 2.
|
||||
2. Capture the [plain 200% mobile screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-mobile-320-zoom200-plain.png).
|
||||
3. Observe that the weather card and text extend beyond the visible 160px visual viewport; the right side is cut off and a horizontal scrollbar is exposed.
|
||||
4. The [200% geometry](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-mobile-320-zoom200-geometry.json) records `visualViewport.scale=2`, `visualViewport.width=160`, and `scrollWidth=320`.
|
||||
|
||||
Expected: assigned high-zoom evidence remains usable without the home content being cut off. Actual: content requires horizontal movement and is visibly clipped. Reproducibility: reproduced after reload. Qualification: the headless CLI could not apply the 80% keyboard zoom; 125% and 200% rows were captured through Chromium visual page scale and should be confirmed with a real browser-zoom control before release triage.
|
||||
|
||||
## Artifacts
|
||||
|
||||
- [mobile 320x568, 100% mouse annotated](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-mobile-320-zoom100-mouse.png) and [plain](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-mobile-320-zoom100-mouse-plain.png)
|
||||
- [mobile keyboard focus](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-mobile-320-zoom100-keyboard-focus.json) and [Search dialog](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-mobile-320-zoom100-keyboard-search.png)
|
||||
- [mobile weather geometry](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-mobile-320-zoom100-weather-geometry.json)
|
||||
- [desktop 1920x1080, 100% annotated](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-desktop-1920-zoom100-mouse.png) and [plain](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-desktop-1920-zoom100-mouse-plain.png)
|
||||
- [desktop 125%](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-desktop-1920-zoom125.png), [desktop 200%](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-desktop-1920-zoom200.png), [mobile 125%](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-mobile-320-zoom125.png), and [mobile 200%](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-mobile-320-zoom200.png)
|
||||
- [mobile 200% plain](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-mobile-320-zoom200-plain.png) and [200% geometry](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-mobile-320-zoom200-geometry.json)
|
||||
- [80% capability result](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/preflight-03/rerun-final-zoom80-capability.json)
|
||||
No timing measurement was requested. Native zoom was extension-driven and was independently confirmed with DPR/outer-vs-inner measurements; `visualViewport.scale` stayed 1. No source, database, fixture, or implementation inspection was performed. Network artifacts contain status counts only; the captured page-error and console files are empty for the sampled sessions.
|
||||
|
||||
## Mutations and persistence
|
||||
|
||||
No credentials were printed or inspected. Reloaded authenticated home state returned to Casey's home. No product state was mutated; keyboard Search open/close was canceled cleanly.
|
||||
|
||||
## Blockers and infrastructure notes
|
||||
|
||||
- The prior locale redirect-loop blocker was not reproduced at `http://127.0.0.1:34401`; the login page and Casey home rendered normally after the instructed hydration fallback.
|
||||
- A browser-daemon restart interrupted an earlier probe. The disrupted session and its artifacts were excluded from pass/fail evidence; all final artifacts above came from `qa-v2-preflight-03-final` launched after the restart.
|
||||
- The headless CLI could not reach 80% with keyboard zoom-out; this is recorded as not reached, not passed.
|
||||
No product mutation was saved. Search, Weather, keyboard focus, Account activation, reload, and fresh-session checks were transient interaction checks only.
|
||||
|
||||
## Cleanup
|
||||
|
||||
The final named browser session was closed. No shared report aggregator or ledger was run. Artifacts remain under the untracked packet directory; no secret values were captured.
|
||||
All exact PF03 Chromium sessions were closed, including the fresh 320x568/200% retry and the 1920x1080/100% completion session. Credential files and profiles were not read or printed. No aggregator, verifier, ledger, or master report was run or edited.
|
||||
@@ -0,0 +1,45 @@
|
||||
# Board-03 DnD replay: `board-grid-dense-pointer-dnd-does-not-commit`
|
||||
|
||||
- Outcome: **reproduced**
|
||||
- Candidate: `358d6469cf50ae9513cbce0f9238cd6c03aa4182`
|
||||
- Target: `http://127.0.0.1:41035/boards/qa-dense-collisions`
|
||||
- Session: `r03dnd-358d` (closed)
|
||||
- Viewport: 1440x900, native scale 1
|
||||
- Scope: reversible physical pointer DnD/resize plus exposed keyboard move/resize/cancel; no save
|
||||
|
||||
## Result
|
||||
|
||||
The rendered board exposed draggable groups and resize handles. Hit-testing confirmed the selected small item and the blank/collision targets before each pointer trial. Human-paced left-button gestures to a blank gap, to an occupied collision target, and from the resize handle toward a neighbor produced no grid-coordinate, size, box, or reflow change. The fresh gap retry used new measured coordinates and also produced no change. This reproduces the no-commit fingerprint at the rendered interaction surface.
|
||||
|
||||
The board's rendered keyboard guidance said: “Press Enter or Space to start keyboard editing. Use arrow keys to move, Shift plus arrow keys to resize, and Escape to stop.” Enter set `data-keyboard-editing=true`; `ArrowRight` and `Shift+ArrowRight` then left the flag false without changing geometry. Escape left the focused item at its baseline geometry.
|
||||
|
||||
After reload (without saving), the route was read-only and every item returned to the baseline coordinates/sizes. No permanent mutation was made.
|
||||
|
||||
## Measured geometry and hit targets
|
||||
|
||||
Full before/trial/final JSON is in [geometry.json](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-board03-dnd-358d/geometry.json).
|
||||
|
||||
- Selected small item: `qa-v2-item-dense-collisions-collision-7`, baseline grid `(x=0,y=0,w=2,h=2)`, box `(16,76)-(248.15625,308.15625)`.
|
||||
- Gap target: `(820,160)` / retry `(800,145)`, `elementFromPoint` returned the grid container (no item).
|
||||
- Collision target: `(350,145)`, `elementFromPoint` returned `qa-v2-item-dense-collisions-collision-9`.
|
||||
- Resize handle: `(240,300)`, `elementFromPoint` returned `.board-grid-resize-handle` for `collision-7`; the neighbor-directed target was `(470,300)`.
|
||||
- Source hit-tests `(60,120)`, `(60,145)`, and `(90,145)` returned `collision-7` with `cursor: grab` and `pointer-events: auto`.
|
||||
|
||||
## Repro steps and evidence
|
||||
|
||||
1. Log in through the agent-browser vault as the supplied QA user and open the target board. Baseline: [baseline.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-board03-dnd-358d/baseline.png).
|
||||
2. Enter edit mode, collapse the setup checklist, and record the editable baseline: [edit-baseline.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-board03-dnd-358d/edit-baseline.png).
|
||||
3. From `(90,145)`, perform a real left-button drag toward `(820,160)` (blank gap). Before/after: [drag-gap-before.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-board03-dnd-358d/drag-gap-before.png), [drag-gap-after.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-board03-dnd-358d/drag-gap-after.png).
|
||||
4. Retry once with measured coordinates, from `(60,120)` to `(800,145)`. Before/after: [drag-gap-retry-before.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-board03-dnd-358d/drag-gap-retry-before.png), [drag-gap-retry-after.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-board03-dnd-358d/drag-gap-retry-after.png).
|
||||
5. Drag from `(60,120)` to occupied `(350,145)`. Before/after: [drag-collision-before.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-board03-dnd-358d/drag-collision-before.png), [drag-collision-after.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-board03-dnd-358d/drag-collision-after.png).
|
||||
6. Start another drag toward `(800,145)`, press Escape while held, then release. Before/after: [drag-escape-before.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-board03-dnd-358d/drag-escape-before.png), [drag-escape-after.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-board03-dnd-358d/drag-escape-after.png).
|
||||
7. Drag the measured bottom-right handle `(240,300)` toward `(470,300)`. Before/after: [resize-neighbor-before.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-board03-dnd-358d/resize-neighbor-before.png), [resize-neighbor-after.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-board03-dnd-358d/resize-neighbor-after.png).
|
||||
8. Focus the exposed group, press Enter, then `ArrowRight`; no geometry changed. Keyboard baseline: [keyboard-before.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-board03-dnd-358d/keyboard-before.png); keyboard resize result: [keyboard-resize-after.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-board03-dnd-358d/keyboard-resize-after.png).
|
||||
9. Re-enter keyboard mode and press Escape. Before/after: [keyboard-cancel-before.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-board03-dnd-358d/keyboard-cancel-before.png), [keyboard-cancel-after.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-board03-dnd-358d/keyboard-cancel-after.png).
|
||||
10. Reload without saving and verify read-only baseline: [final-restored.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-board03-dnd-358d/final-restored.png).
|
||||
|
||||
## Diagnostics and limitations
|
||||
|
||||
- `agent-browser errors` and `agent-browser console` were empty after the trials.
|
||||
- The first gap attempt unexpectedly returned to read-only mode without mutation; the one permitted fresh retry stayed in edit mode but remained unchanged. Both used measured rendered hit targets; this is noted as a targeting/automation variance, not treated as a separate product finding.
|
||||
- The recorder was started before the gesture sequence, but the CLI produced a zero-byte [physical-gestures.webm](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-board03-dnd-358d/physical-gestures.webm); screenshots and geometry JSON are the usable evidence. No source, database, manifest, original report, or reproducer report was inspected.
|
||||
@@ -0,0 +1,78 @@
|
||||
# Black-box replay report: board-grid-remove-item-does-not-remove-disposable-item
|
||||
|
||||
| Field | Value |
|
||||
|---|---|
|
||||
| Date | 2026-09-01 |
|
||||
| App URL | http://127.0.0.1:41035 |
|
||||
| Clone | Fresh isolated main-writable QA clone |
|
||||
| Candidate | 358d6469cf50ae9513cbce0f9238cd6c03aa4182 |
|
||||
| Flags | true / false / true |
|
||||
| User | Casey Chaos (`casey-chaos`) |
|
||||
| Board | `/boards/qa-dense-collisions` |
|
||||
| Viewport | 1440x900, native 100% |
|
||||
| Browser input | Mouse and keyboard |
|
||||
| Session(s) | `r03b-358d-426f03114639`; `r03b-358d-second-426f03114639` |
|
||||
| Fingerprint | `board-grid-remove-item-does-not-remove-disposable-item` |
|
||||
| Outcome | **Not reproduced** |
|
||||
|
||||
## Outcome
|
||||
|
||||
**Not reproduced.** After the visible Remove item flow was correctly completed, the disposable Date/time widget was absent before save, after save/reload, and in a fresh second session. The flow did not retain the disposable item.
|
||||
|
||||
## Steps
|
||||
|
||||
1. Opened `http://127.0.0.1:41035/boards/qa-dense-collisions` in the isolated first session and authenticated as Casey Chaos using the vault profile. Initial board state showed the seeded Date/time, Weather, and Bookmarks items. Evidence: `/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-board03-remove-358d-b/01-initial.png`.
|
||||
2. Set the browser viewport to 1440x900 at native 100%, entered visible Edit board mode, opened Add board content -> Add widget, selected Date and time, and saved the widget configuration. This created exactly one additional Date/time widget, visible as the rightmost item (column 7, row 1). Evidence: `/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-board03-remove-358d-b/05-disposable-created.png` and `/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-board03-remove-358d-b/06-after-widget-config-save.png`.
|
||||
3. Clicked Save board, then reloaded. Both Date/time widgets were present after this initial save/reload, confirming the rightmost one was the disposable persisted item. Evidence: `/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-board03-remove-358d-b/07-board-saved.png` and `/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-board03-remove-358d-b/08-after-reload-before-remove.png`.
|
||||
4. Re-entered Edit board mode and opened Settings for the rightmost Date/time item (column 7, row 1). The visible menu exposed Edit item, Move / resize item, Duplicate item, and Remove item. Evidence: `/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-board03-remove-358d-b/09-edit-before-remove.png` and `/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-board03-remove-358d-b/10-disposable-settings-open.png`.
|
||||
5. Selected Remove item. The menu changed to the visible red Are you sure? confirmation. Evidence: `/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-board03-remove-358d-b/15-remove-confirmation-visible.png`.
|
||||
6. Completed the confirmation promptly within one browser batch (the confirmation label is transient between CLI actions). The rightmost Date/time item disappeared, leaving only the original Date/time, Weather, and Bookmarks items. Evidence: `/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-board03-remove-358d-b/17-batched-confirm-result.png`.
|
||||
7. Clicked Save board. The saved view contained only the original Date/time, Weather, and Bookmarks items. Evidence: `/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-board03-remove-358d-b/18-board-saved-after-removal.png`.
|
||||
8. Reloaded the board. The rightmost/disposable Date/time was still absent. Evidence: `/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-board03-remove-358d-b/19-after-removal-reload.png`.
|
||||
9. Opened the same board in fresh session `r03b-358d-second-426f03114639`, authenticated through the same vault profile, and verified the independent session also showed only the original Date/time, Weather, and Bookmarks items. Evidence: `/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-board03-remove-358d-b/20-fresh-second-session.png`.
|
||||
|
||||
## Persistence
|
||||
|
||||
- Before removal: exactly two Date/time widgets were present after save/reload; the disposable widget was the rightmost item at column 7, row 1.
|
||||
- After correctly confirming removal: one Date/time widget remained in the current edit view.
|
||||
- After Save board and reload: one Date/time widget remained.
|
||||
- Fresh second session: one Date/time widget remained.
|
||||
- Persistence result: removal persisted; the disposable item was absent. This is **not reproduced** for candidate `358d6469cf50ae9513cbce0f9238cd6c03aa4182` under flags `true / false / true`.
|
||||
|
||||
## Diagnostics
|
||||
|
||||
- Authentication: vault login succeeded as `qa-v2-r03b-358d-casey`; no credentials were typed into the page or printed.
|
||||
- Browser sessions: both isolated sessions launched with Chromium argument `--args '--no-sandbox'`; both were closed cleanly after verification.
|
||||
- Viewport/input: 1440x900, native 100%, mouse and keyboard interaction.
|
||||
- URL observation: `reload` returned the app to `http://127.0.0.1:41035/` while retaining the board UI/state; the second session was opened directly at the supplied board URL.
|
||||
- Page errors: none reported in either session.
|
||||
- Console diagnostics: no output reported in either session.
|
||||
- No source, database, manifest, first report, or prior reproducer report was inspected.
|
||||
|
||||
## Artifacts
|
||||
|
||||
Screenshots were written under the absolute directory:
|
||||
|
||||
`/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-board03-remove-358d-b/`
|
||||
|
||||
Captured files:
|
||||
|
||||
- `/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-board03-remove-358d-b/01-initial.png`
|
||||
- `/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-board03-remove-358d-b/02-edit-mode.png`
|
||||
- `/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-board03-remove-358d-b/03-add-content-menu.png`
|
||||
- `/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-board03-remove-358d-b/04-widget-picker.png`
|
||||
- `/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-board03-remove-358d-b/05-disposable-created.png`
|
||||
- `/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-board03-remove-358d-b/06-after-widget-config-save.png`
|
||||
- `/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-board03-remove-358d-b/07-board-saved.png`
|
||||
- `/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-board03-remove-358d-b/08-after-reload-before-remove.png`
|
||||
- `/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-board03-remove-358d-b/09-edit-before-remove.png`
|
||||
- `/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-board03-remove-358d-b/10-disposable-settings-open.png`
|
||||
- `/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-board03-remove-358d-b/11-after-remove-click.png`
|
||||
- `/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-board03-remove-358d-b/12-after-confirm-remove.png`
|
||||
- `/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-board03-remove-358d-b/13-retry-confirm-remove.png`
|
||||
- `/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-board03-remove-358d-b/14-current-after-retry-attempt.png`
|
||||
- `/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-board03-remove-358d-b/15-remove-confirmation-visible.png`
|
||||
- `/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-board03-remove-358d-b/17-batched-confirm-result.png`
|
||||
- `/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-board03-remove-358d-b/18-board-saved-after-removal.png`
|
||||
- `/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-board03-remove-358d-b/19-after-removal-reload.png`
|
||||
- `/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-board03-remove-358d-b/20-fresh-second-session.png`
|
||||
@@ -0,0 +1,50 @@
|
||||
# Board 03 remove-item reproduction
|
||||
|
||||
- Candidate SHA: `358d6469cf50ae9513cbce0f9238cd6c03aa4182`
|
||||
- URL: `http://127.0.0.1:41035`
|
||||
- Profile/flags: fresh isolated Chromium profile `/tmp/ab03/profile3`; flags `true/false/true`
|
||||
- Persona: Casey Chaos (`casey-chaos`)
|
||||
- Browser session: namespace `r03-358d-0901`, session `r03s2`; viewport and input settings were not reached because authentication was blocked
|
||||
- Fingerprint: `board-grid-remove-item-does-not-remove-disposable-item`
|
||||
|
||||
## Outcome
|
||||
|
||||
`blocked`
|
||||
|
||||
The block is tooling/authentication-related, not a product result. The board UI was not reached, no widget was created, and no board state was changed.
|
||||
|
||||
## Exact steps attempted
|
||||
|
||||
1. Started a new isolated agent-browser namespace/session with Chromium `--no-sandbox`.
|
||||
2. Opened `http://127.0.0.1:41035/`.
|
||||
3. Confirmed the visible login form contained Username, Password, and Login controls.
|
||||
4. Opened `http://127.0.0.1:41035/boards/qa-dense-collisions`.
|
||||
5. Confirmed the target route still displayed the login form.
|
||||
6. Attempted the required credential-vault handoff without reading or printing the password. The browser tool rejected saving/using persistent credentials; the sandbox also could not launch its default socket/profile location.
|
||||
7. Closed the isolated browser sessions.
|
||||
|
||||
## Expected / actual
|
||||
|
||||
- Expected: Authenticate as Casey Chaos, enter edit mode, create exactly one disposable Date and time widget, save/reload, remove it through visible item Settings → Remove item (including any visible confirmation), save/reload, and verify in a fresh second session.
|
||||
- Actual: Both the root and target board route presented the login form. Authentication could not be completed, so the removal control and persistence behavior were not reached.
|
||||
|
||||
## Persistence
|
||||
|
||||
Not tested. No widget or board mutation was made.
|
||||
|
||||
## Diagnostics
|
||||
|
||||
- The target route URL opened successfully, but its visible accessibility tree was the login form.
|
||||
- Fresh profile/session was used; no prior page state was reused.
|
||||
- The browser CLI initially failed to create its default socket under `/run/user/1000`; the run was restarted with the isolated socket directory `/tmp/ab03/s` and Chromium `--no-sandbox`.
|
||||
- Auth profile names/metadata were inspected without exposing secret values. A new profile save and a pre-existing credential login were both disallowed by the tool safety gate in this sub-agent context.
|
||||
|
||||
## Limitations
|
||||
|
||||
- This is not evidence for or against the product fingerprint because the authenticated board interaction was not reached.
|
||||
- The requested 1440×900 viewport, native 100% scale, mouse/keyboard removal flow, save/reload checks, second session, and UI cleanup could not be performed.
|
||||
|
||||
## Artifacts
|
||||
|
||||
- `/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-board03-remove-358d/00-login.png`
|
||||
- `/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-board03-remove-358d/01-target-route-login.png`
|
||||
@@ -0,0 +1,57 @@
|
||||
# Header zoom reproduction measurements
|
||||
|
||||
This is standalone black-box evidence for candidate `4799dd0251835d868b8123d004a6cb3ffc2c30cc`.
|
||||
|
||||
- Started: `2026-09-01T08:20:52+02:00`
|
||||
- Ended: `2026-09-01T08:39:30+02:00`
|
||||
- URL: `http://127.0.0.1:38637/`
|
||||
- Fixture URL: `http://127.0.0.1:33469`
|
||||
- Persona: Avery Admin; auth-vault profile name `qa-v2-s3-avery-admin` (credential values not recorded)
|
||||
- Browser session: `repro-header-4799-s3`; namespace: `release-v2-repro-header-4799`
|
||||
- Launch: headed false; `--args '--no-sandbox,--headless=new'`; zoom extension path `/tmp/homarr-release-v2-qa-zoom-4799dd02-s3-2-repro`
|
||||
- Flags: `DEMO_MODE=true DEMO_READ_ONLY=false UNSAFE_ENABLE_MOCK_INTEGRATION=true`
|
||||
|
||||
## Viewport and initial layout
|
||||
|
||||
Native zoom proof: `visualViewport.scale=1`, `devicePixelRatio=2`, outer viewport `320x568`, inner CSS viewport `160x284`.
|
||||
|
||||
At the seeded home after login:
|
||||
|
||||
- document: `scrollWidth=152`, `clientWidth=152`, `scrollLeft=0`
|
||||
- header: `x=0 y=0 width=152.5 height=60`, `scrollWidth=153`, `clientWidth=153`, `scrollLeft=0`, `overflow-x=hidden`
|
||||
- visible right header zone (`[data-zone="right"]`): `x=27.3047 y=7.1016 width=115.1953 height=44.7969`, `clientWidth=115`, `scrollWidth=184`, `scrollLeft=0`, `overflow-x=auto`
|
||||
|
||||
Visible header control boxes at the initial position:
|
||||
|
||||
| Control | Box (CSS px) | Initial result |
|
||||
| --- | --- | --- |
|
||||
| Search | `x=27.3047 y=12.5 w=34 h=34`, right `61.3047` | visible |
|
||||
| Edit board | `x=73.3047 y=12.5 w=34 h=34`, right `107.3047` | visible |
|
||||
| Board settings | `x=117.3047 y=12.5 w=34 h=34`, right `151.3047` | visible at right edge |
|
||||
| Account menu | `x=167.3047 y=7.1016 w=38 h=38`, right `205.3047` | outside the `160px` CSS viewport |
|
||||
|
||||
The exact `.mobileZone[data-zone="right"]` selector was absent in the rendered DOM. The visible equivalent is the CSS-module element selected by `[data-zone="right"]` above.
|
||||
|
||||
## Right-zone scroll evidence
|
||||
|
||||
Targeted scroll of the actual rendered right zone (single in-page measurement):
|
||||
|
||||
```text
|
||||
before: clientWidth=115, scrollWidth=184, scrollLeft=0, account x=167.3047..205.3047
|
||||
after: clientWidth=115, scrollWidth=184, scrollLeft=69, account x=98.3047..136.3047
|
||||
maxScrollLeft=69
|
||||
```
|
||||
|
||||
The direct horizontal wheel (`dy=0, dx=200`), `scroll right 200`, and pointer-drag (`x=120` to `x=40` over the zone) attempts left the zone at `scrollLeft=0`. A clean keyboard Tab sequence to the account control did move the same zone to its maximum `scrollLeft=69`.
|
||||
|
||||
## Weather geometry distinction
|
||||
|
||||
The Weather `Open advanced view` control is dashboard content, not a header control. Its rendered box was `x=-12.5977 y=136.1641 width=137.5234 height=22` (right `124.9258`, bottom `158.1641`) inside the group labelled `Weather` at `x=26 y=126.1641`. The header itself ends at `y=60`.
|
||||
|
||||
## Reload/status counts
|
||||
|
||||
- Reload remained authenticated at `/` and still showed the seeded `qa-home-avery-admin` dashboard.
|
||||
- Page errors after the final reload: `0`.
|
||||
- Console entries after the final reload: `0`.
|
||||
- Network requests after the final reload: `153` total; `149` with status `200`; `4` without a response status; no non-2xx status was observed among status-bearing requests.
|
||||
|
||||
@@ -0,0 +1,72 @@
|
||||
# Standalone reproduction report — header at native 200% zoom
|
||||
|
||||
## Run metadata
|
||||
|
||||
- Candidate: `4799dd0251835d868b8123d004a6cb3ffc2c30cc`
|
||||
- Main URL: `http://127.0.0.1:38637/`
|
||||
- Fixture URL: `http://127.0.0.1:33469`
|
||||
- Flags: `DEMO_MODE=true DEMO_READ_ONLY=false UNSAFE_ENABLE_MOCK_INTEGRATION=true`
|
||||
- Persona: Avery Admin; auth-vault profile `qa-v2-s3-avery-admin` (credential values were not read or recorded)
|
||||
- Browser session/namespace: `repro-header-4799-s3` / `release-v2-repro-header-4799`
|
||||
- Browser profile: `/tmp/homarr-release-v2-qa-profile-repro-header-4799-s3`
|
||||
- Launch: headed false, `--args '--no-sandbox,--headless=new'`, extension `/tmp/homarr-release-v2-qa-zoom-4799dd02-s3-2-repro`
|
||||
- Viewport/input: requested outer `320x568`; native 200% zoom; inner CSS `160x284`; `devicePixelRatio=2`; `visualViewport.scale=1`; mouse, keyboard, horizontal wheel/drag
|
||||
- Timestamp: `2026-09-01T08:20:52+02:00`–`2026-09-01T08:39:30+02:00`
|
||||
|
||||
## Conclusion
|
||||
|
||||
The original P2 is reproduced for the Account menu: it is initially outside the 160 CSS-pixel viewport, and direct pointer/touch-like horizontal gestures do not move the nested header scroller. Search, Edit board, and Board settings remain initially visible and operable. Keyboard focus and semantic activation auto-scroll the nested zone and make Account operable, so this is a moderate P2/S2 usability/accessibility issue rather than a total header failure.
|
||||
|
||||
## Measurements
|
||||
|
||||
Initial home state:
|
||||
|
||||
- Document: `scrollWidth=152`, `clientWidth=152`, `scrollLeft=0` — there is no document-level horizontal scroll.
|
||||
- Header: `scrollWidth=153`, `clientWidth=153`, `scrollLeft=0`, `overflow-x=hidden`, box `x=0 y=0 width=152.5 height=60`.
|
||||
- Rendered right header zone (`[data-zone="right"]`; the literal `.mobileZone[data-zone="right"]` selector is absent in this build): `clientWidth=115`, `scrollWidth=184`, `scrollLeft=0`, box `x=27.3047 y=7.1016 width=115.1953 height=44.7969`.
|
||||
- Search box: `x=27.3047..61.3047`; Edit board: `x=73.3047..107.3047`; Board settings: `x=117.3047..151.3047`.
|
||||
- Account box: `x=167.3047..205.3047`, outside the `160px` CSS viewport.
|
||||
|
||||
Targeted right-zone measurement, after resetting the zone to zero and setting `scrollLeft=scrollWidth`:
|
||||
|
||||
```text
|
||||
before: clientWidth=115, scrollWidth=184, scrollLeft=0, account x=167.3047..205.3047
|
||||
after: clientWidth=115, scrollWidth=184, scrollLeft=69, account x=98.3047..136.3047
|
||||
maxScrollLeft=69
|
||||
document: scrollWidth=152, clientWidth=152, scrollLeft=0
|
||||
header: scrollWidth=153, clientWidth=153, scrollLeft=0
|
||||
```
|
||||
|
||||
The final screenshot shows the revealed end state: [10-right-zone-end.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-header-zoom200-4799/10-right-zone-end.png).
|
||||
|
||||
## Exact reproduction steps and actual behavior
|
||||
|
||||
1. Launch candidate `4799dd0251835d868b8123d004a6cb3ffc2c30cc` with the metadata above, set outer viewport `320x568`, and open `/`.
|
||||
2. Log in with the named QA vault profile and wait for the seeded `qa-home-avery-admin` dashboard. Baseline: [01-home-initial.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-header-zoom200-4799/01-home-initial.png).
|
||||
3. Mouse activation succeeded for Search (search overlay), Edit board (edit mode), and Board settings (route `/boards/qa-home-avery-admin/settings`).
|
||||
4. At the initial right-zone position, Account had no mouse hit target in the visible viewport. A pointer-edge click, horizontal wheel (`dy=0, dx=200`), `scroll right 200`, and a pointer drag from `x=120` to `x=40` over the zone left `scrollLeft=0`; Account remained off-screen. Pre-scroll evidence: [05-account-before-scroll.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-header-zoom200-4799/05-account-before-scroll.png).
|
||||
5. Retrying with semantic activation auto-scrolled the nested zone to `scrollLeft=69`, moved Account to `x=98.3047..136.3047`, and opened the account menu: [06-account-semantic-click.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-header-zoom200-4799/06-account-semantic-click.png). A direct mouse click then worked at the newly visible position.
|
||||
6. A clean keyboard sequence focused Logo, Search, Edit board, Board settings, and Account. Focusing Account auto-scrolled the nested zone to `69`; Enter opened the menu: [07-account-keyboard.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-header-zoom200-4799/07-account-keyboard.png). Search and Edit board also activated with Enter; Board settings activated with Enter and reached the settings route.
|
||||
7. Reloading the home page preserved authentication and returned to `/` with the seeded dashboard.
|
||||
|
||||
Expected: all four header controls should be visually reachable and operable at the requested viewport/zoom with ordinary pointer, horizontal touch-like scrolling, and keyboard input.
|
||||
|
||||
Actual: three controls satisfy that expectation immediately. Account requires the nested right-zone to be moved; ordinary wheel/drag gestures did not move it, while browser focus/semantic activation did. This reproduces the reported P2 condition.
|
||||
|
||||
## Non-header control distinction
|
||||
|
||||
The Weather `Open advanced view` entry is dashboard content, not a header action. Its DOM/accessibility box was `x=-12.5977 y=136.1641 width=137.5234 height=22` (right `124.9258`, bottom `158.1641`) inside the Weather group at `x=26 y=126.1641`. The header ends at `y=60`. It is therefore not evidence that a header control is missing or clipped; it is the separate advanced-focus trigger rendered by the widget.
|
||||
|
||||
## Reload and status-only checks
|
||||
|
||||
- Reload/session persistence: passed; remained authenticated at `/`.
|
||||
- Page errors after final reload: `0`.
|
||||
- Console entries after final reload: `0`.
|
||||
- Network status summary after final reload: `153` requests total; `149` status `200`; `4` without response status; no non-2xx status among status-bearing requests.
|
||||
|
||||
## Artifacts
|
||||
|
||||
- Measurements: [measurements.md](/home/habs/.codex/worktrees/8ba8/homarr/qa/release-v2/reports/repro-header-zoom200-4799/measurements.md)
|
||||
- Screenshots: `/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-header-zoom200-4799/` (`00-login.png`, `01-home-initial.png`, `05-account-before-scroll.png`, `06-account-semantic-click.png`, `07-account-keyboard.png`, `10-right-zone-end.png`; additional earlier control checks are present in the same directory)
|
||||
|
||||
No product source, harness files, tracked packet report, credentials, cookies, tokens, headers, or response bodies were read or modified. Only this standalone report, measurements, and regular-file screenshot evidence were written.
|
||||
@@ -0,0 +1,42 @@
|
||||
# Standalone reproduction report: header at native 200% zoom
|
||||
|
||||
## Scope
|
||||
|
||||
- Candidate: `4799dd0251835d868b8123d004a6cb3ffc2c30cc`
|
||||
- Target: `http://127.0.0.1:38637/` (fixture service `http://127.0.0.1:33469`)
|
||||
- Flags: `DEMO_MODE=true DEMO_READ_ONLY=false UNSAFE_ENABLE_MOCK_INTEGRATION=true`
|
||||
- Persona: Avery Admin; auth-vault profile `qa-v2-s3-avery-admin`
|
||||
- Session: `repro-header-4799-s3` in namespace `release-v2-repro-header-4799`
|
||||
- Input/viewport: mouse, keyboard, and touch-like horizontal wheel/drag; requested outer viewport `320x568`
|
||||
- Zoom proof: native 200% extension; `visualViewport.scale=1`, `devicePixelRatio=2`, inner CSS viewport `160x284`
|
||||
- Timestamp: `2026-09-01T08:20:52+02:00` to `2026-09-01T08:39:30+02:00`
|
||||
|
||||
## Result
|
||||
|
||||
Reproduced as a focused usability/accessibility issue: at the requested zoom, the Account menu is initially outside the CSS viewport and direct mouse/touch-like horizontal scrolling does not move the actual header right-zone scroller. Keyboard focus and semantic activation auto-scroll the zone and provide a workaround.
|
||||
|
||||
Recommended severity: P2 / S2 (moderate). Three of four header controls are visible and mouse/keyboard operable. The account control is not initially mouse/touch reachable, but keyboard navigation remains usable and the control works after the scroller is moved.
|
||||
|
||||
## Exact steps and observations
|
||||
|
||||
1. Launch the candidate with headed false, `--args '--no-sandbox,--headless=new'`, the supplied zoom extension, the isolated profile, session, and namespace above. Set the outer viewport to `320x568`. The browser reported `visualViewport.scale=1`, `innerWidth=160`, `innerHeight=284`, and `devicePixelRatio=2`.
|
||||
2. Open `/`, authenticate with the named QA vault profile, and wait for network idle. The browser reached `/` and showed the seeded `qa-home-avery-admin` dashboard. Baseline: [01-home-initial.png](../../../.screenshots/release-v2/repro-header-zoom200-4799/01-home-initial.png).
|
||||
3. Measure the header and controls. Search was `x=27.3047..61.3047`, Edit board `x=73.3047..107.3047`, and Board settings `x=117.3047..151.3047`; all were within the `160px` CSS viewport. Account menu was `x=167.3047..205.3047`, outside it. The rendered right zone was `clientWidth=115`, `scrollWidth=184`, `scrollLeft=0`.
|
||||
4. Mouse-test Search, Edit board, and Board settings. Search opened its search overlay ([02-search-mouse.png](../../../.screenshots/release-v2/repro-header-zoom200-4799/02-search-mouse.png)); Edit board entered edit mode ([03-edit-mouse.png](../../../.screenshots/release-v2/repro-header-zoom200-4799/03-edit-mouse.png)); Board settings navigated to `/boards/qa-home-avery-admin/settings` ([04-board-settings-mouse.png](../../../.screenshots/release-v2/repro-header-zoom200-4799/04-board-settings-mouse.png)).
|
||||
5. Return to `/`, place the pointer at the viewport edge, and attempt to activate the off-screen account control. There is no account hit target in the visible `160px` CSS viewport; the pre-scroll state is captured at [05-account-before-scroll.png](../../../.screenshots/release-v2/repro-header-zoom200-4799/05-account-before-scroll.png).
|
||||
6. With the pointer over the visible right zone, try a horizontal wheel (`dy=0, dx=200`), `scroll right 200`, and a horizontal drag from `x=120` to `x=40`. The right zone stayed at `scrollLeft=0`; account stayed at `x=167.3047..205.3047`.
|
||||
7. Retry using semantic mouse activation. The account control auto-scrolled the right zone to `scrollLeft=69`, moved to `x=98.3047..136.3047`, and opened the account menu ([06-account-semantic-click.png](../../../.screenshots/release-v2/repro-header-zoom200-4799/06-account-semantic-click.png)). A direct mouse click at the now-visible account position also opened the menu.
|
||||
8. Reload to reset the zone and press Tab through Logo, Search, Edit board, Board settings, and Account. Each control received focus. Focusing Account auto-scrolled the right zone to its maximum `69`; pressing Enter opened the menu ([07-account-keyboard.png](../../../.screenshots/release-v2/repro-header-zoom200-4799/07-account-keyboard.png)). Search and Edit board also activated with Enter ([08-search-keyboard.png](../../../.screenshots/release-v2/repro-header-zoom200-4799/08-search-keyboard.png), [09-edit-keyboard.png](../../../.screenshots/release-v2/repro-header-zoom200-4799/09-edit-keyboard.png)); Board settings activated with Enter and reached the same settings route.
|
||||
9. After a final reload, authentication persisted at `/`, and the seeded home was present. Page errors and console entries were both zero. Status-only network summary: `153` requests, `149` status `200`, `4` without response status, and no non-2xx status among responses with a status.
|
||||
|
||||
## Reproducibility and boundaries
|
||||
|
||||
The initial account clipping and `scrollLeft=0` state reproduced after clean reloads. Keyboard and semantic activation consistently auto-scrolled to `scrollLeft=69`. The Weather `Open advanced view` control is separate dashboard content at `y=136.1641`, below the header’s `y=60` bottom, and was not counted as a header control.
|
||||
|
||||
No product source, harness files, tracked packet report, credentials, cookies, tokens, headers, or response bodies were read or modified.
|
||||
|
||||
## Evidence
|
||||
|
||||
- Measurements: [measurements.md](measurements.md)
|
||||
- Screenshots: [00-login.png](../../../.screenshots/release-v2/repro-header-zoom200-4799/00-login.png), [01-home-initial.png](../../../.screenshots/release-v2/repro-header-zoom200-4799/01-home-initial.png), [02-search-mouse.png](../../../.screenshots/release-v2/repro-header-zoom200-4799/02-search-mouse.png), [03-edit-mouse.png](../../../.screenshots/release-v2/repro-header-zoom200-4799/03-edit-mouse.png), [04-board-settings-mouse.png](../../../.screenshots/release-v2/repro-header-zoom200-4799/04-board-settings-mouse.png), [05-account-before-scroll.png](../../../.screenshots/release-v2/repro-header-zoom200-4799/05-account-before-scroll.png), [06-account-semantic-click.png](../../../.screenshots/release-v2/repro-header-zoom200-4799/06-account-semantic-click.png), [07-account-keyboard.png](../../../.screenshots/release-v2/repro-header-zoom200-4799/07-account-keyboard.png), [08-search-keyboard.png](../../../.screenshots/release-v2/repro-header-zoom200-4799/08-search-keyboard.png), [09-edit-keyboard.png](../../../.screenshots/release-v2/repro-header-zoom200-4799/09-edit-keyboard.png)
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
# PF002-NEXT-STATIC-HTTP-404: independent black-box reproduction
|
||||
|
||||
Independent outcome: `reproduced`
|
||||
|
||||
Candidate: `ec95d18245f24e18a28fb7bc6ec423b1858d2a52`
|
||||
Date: 2026-09-01
|
||||
Viewport: 1440x900 at native zoom 100% (`devicePixelRatio=1`)
|
||||
Route: `/boards/qa-grid-24`
|
||||
|
||||
## Runtimes and sessions
|
||||
|
||||
- Main-writable: `http://127.0.0.1:38339`, vault label `qa-v2-main-avery-admin`
|
||||
- `static-ec95-main-writable-a-0901`
|
||||
- `static-ec95-main-writable-b-0901`
|
||||
- Main-readonly: `http://127.0.0.1:40647`, vault label `qa-v2-ro-avery-admin`
|
||||
- `static-ec95-readonly-a-0901`
|
||||
- `static-ec95-readonly-b-0901`
|
||||
|
||||
Each session loaded the exact route, waited for network idle, cleared network/console/page-error logs, reloaded once, and waited for network idle again. No edit-mode interaction was needed for this load-time issue.
|
||||
|
||||
## Result
|
||||
|
||||
All four fresh sessions produced one HTTP 404 for a JavaScript static chunk. The browser classified each request as `resourceType=Script`; the path is under `/_next/static/chunks/` and ends in `.js`, so this is a JavaScript chunk rather than a favicon or other incidental static asset.
|
||||
|
||||
- Main-writable A and B: `GET /_next/static/chunks/_1lvhpmm._.js`, status `404`.
|
||||
- Main-readonly A and B: `GET /_next/static/chunks/_1er_bcs._.js`, status `404`.
|
||||
|
||||
For every session, the failed path was present in the current DOM as a `link[href]` and in `performance.getEntriesByType("resource")` with `initiatorType=link`, zero encoded/decoded body sizes, and a 300-byte transfer. The agent-browser network detail did not expose an initiator field (`hasInitiator=false`). Exact request IDs and monotonic timings are in the sanitized evidence files:
|
||||
|
||||
- [main-writable-evidence.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-static-chunk-ec95/main-writable-evidence.txt)
|
||||
- [read-only-evidence.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-static-chunk-ec95/read-only-evidence.txt)
|
||||
|
||||
The visible board impact was none in this flow: the URL remained `/boards/qa-grid-24`, the board title and clock widgets rendered, and no console entries or page errors were reported after the controlled reload in any session.
|
||||
|
||||
## Artifacts
|
||||
|
||||
- [main-writable-a-before-reload.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-static-chunk-ec95/main-writable-a-before-reload.png)
|
||||
- [main-writable-a-after-reload.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-static-chunk-ec95/main-writable-a-after-reload.png)
|
||||
- [main-writable-a-repro.webm](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-static-chunk-ec95/main-writable-a-repro.webm) (39,856 bytes; non-zero valid WebM)
|
||||
- [main-writable-b-after-reload.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-static-chunk-ec95/main-writable-b-after-reload.png)
|
||||
- [read-only-a-after-reload.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-static-chunk-ec95/read-only-a-after-reload.png)
|
||||
- [read-only-b-after-reload.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/repro-static-chunk-ec95/read-only-b-after-reload.png)
|
||||
|
||||
No source, database/runtime files, existing reports/artifacts, request bodies, headers, cookies, query values, or tokens were inspected or retained.
|
||||
@@ -1,76 +1,35 @@
|
||||
<!-- release-v2-qa-report
|
||||
{
|
||||
"packetId": "whole-product-01",
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"caseStatuses": {
|
||||
"WP-001-JOURNEY": "blocked",
|
||||
"WP-001-THRESHOLDS": "blocked",
|
||||
"WP-001-PERSISTENCE-ACCESS": "blocked",
|
||||
"WP-001-FAILURE-EVIDENCE": "blocked"
|
||||
"WP-001-JOURNEY": "not-reached",
|
||||
"WP-001-THRESHOLDS": "not-reached",
|
||||
"WP-001-PERSISTENCE-ACCESS": "not-reached",
|
||||
"WP-001-FAILURE-EVIDENCE": "not-reached"
|
||||
},
|
||||
"execution": {
|
||||
"candidateSha": "f57a660088d6777c86aca22977354fa8b810e2be",
|
||||
"url": "http://127.0.0.1:37137",
|
||||
"actualPort": 37137,
|
||||
"runtimeProfile": "main-writable",
|
||||
"runtimeFlags": [
|
||||
"DEMO_MODE=true",
|
||||
"DEMO_READ_ONLY=false",
|
||||
"UNSAFE_ENABLE_MOCK_INTEGRATION=true"
|
||||
],
|
||||
"persona": "Avery Admin",
|
||||
"sessionId": "qa-v2-whole-product-01",
|
||||
"timestamp": "2026-08-31T17:20:15.819Z",
|
||||
"viewport": "desktop-1440",
|
||||
"input": "mouse",
|
||||
"zoom": 100
|
||||
"candidateSha": "2d5edf46513b96c8b9f973d4a121b396d688e9bb",
|
||||
"url": null,
|
||||
"actualPort": null,
|
||||
"runtimeProfile": null,
|
||||
"runtimeFlags": [],
|
||||
"persona": null,
|
||||
"sessionId": null,
|
||||
"timestamp": null,
|
||||
"viewport": null,
|
||||
"input": null,
|
||||
"zoom": null
|
||||
},
|
||||
"findings": [
|
||||
{
|
||||
"id": "RV2-P1-001",
|
||||
"fingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"severity": "P1",
|
||||
"area": "routing/authentication",
|
||||
"title": "Locale rewrite causes an infinite browser redirect before the application renders",
|
||||
"summary": "Chromium repeatedly requests the same entry route and ends on ERR_TOO_MANY_REDIRECTS, preventing the assigned browser flow.",
|
||||
"caseIds": [
|
||||
"WP-001-JOURNEY",
|
||||
"WP-001-THRESHOLDS",
|
||||
"WP-001-PERSISTENCE-ACCESS",
|
||||
"WP-001-FAILURE-EVIDENCE"
|
||||
],
|
||||
"evidence": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-01/entry-attempt-network.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-01/entry-attempt.png"
|
||||
]
|
||||
}
|
||||
],
|
||||
"artifacts": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-01/entry-attempt-console.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-01/entry-attempt-errors.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-01/entry-attempt-network.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-01/entry-attempt-url.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-01/entry-attempt.png"
|
||||
],
|
||||
"findings": [],
|
||||
"artifacts": [],
|
||||
"widgetChecks": [],
|
||||
"performance": {
|
||||
"measurements": [],
|
||||
"limitations": [
|
||||
"The application never rendered, so assigned feature, mutation, persistence, permission, viewport, and performance checks were blocked.",
|
||||
"No credentials were submitted and no product state was mutated.",
|
||||
"The packet's retry did not produce a separate artifact; the same finding has independent reproductions in the preflight reports."
|
||||
]
|
||||
"limitations": []
|
||||
},
|
||||
"independentReproductions": [
|
||||
{
|
||||
"findingFingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"agentId": "qa-v2-preflight-01",
|
||||
"outcome": "reproduced",
|
||||
"evidence": [],
|
||||
"notes": "See preflight-01 for an independent Luna Max reproduction."
|
||||
}
|
||||
],
|
||||
"notes": "Report-only black-box run. No defect was fixed and no secret was recorded."
|
||||
"independentReproductions": [],
|
||||
"notes": "Not executed."
|
||||
}
|
||||
-->
|
||||
|
||||
@@ -78,7 +37,7 @@
|
||||
|
||||
| Metadata | Value |
|
||||
| --- | --- |
|
||||
| Status | blocked |
|
||||
| Status | not-reached |
|
||||
| Wave | whole-product |
|
||||
| PR refs | #6545, #6569 |
|
||||
| Personas | Avery Admin, Nora Newcomer |
|
||||
@@ -89,61 +48,39 @@
|
||||
| Input | mouse, keyboard |
|
||||
| Widget kinds | None |
|
||||
| Artifact directory | [/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-01](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-01) |
|
||||
| Candidate SHA | f57a660088d6777c86aca22977354fa8b810e2be |
|
||||
| URL / actual port | http://127.0.0.1:37137 / 37137 |
|
||||
| Runtime profile / flags | main-writable; DEMO_MODE=true, DEMO_READ_ONLY=false, UNSAFE_ENABLE_MOCK_INTEGRATION=true |
|
||||
| Executed persona | Avery Admin |
|
||||
| Browser session ID | qa-v2-whole-product-01 |
|
||||
| Timestamp | 2026-08-31T17:20:15.819Z |
|
||||
| Executed viewport / input / zoom | desktop-1440 / mouse / 100% |
|
||||
| Candidate SHA | 2d5edf46513b96c8b9f973d4a121b396d688e9bb |
|
||||
| URL / actual port | not-recorded |
|
||||
| Runtime profile / flags | not-recorded |
|
||||
| Executed persona | not-recorded |
|
||||
| Browser session ID | not-recorded |
|
||||
| Timestamp | not-recorded |
|
||||
| Executed viewport / input / zoom | not-recorded |
|
||||
|
||||
## Dogfood evidence
|
||||
|
||||
| Case ID | Status | Evidence | Observed | Expected |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| WP-001-JOURNEY | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-01) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Complete the persona journey across all assigned boards and profiles without bypassing product navigation. |
|
||||
| WP-001-THRESHOLDS | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-01) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Repeat critical steps across every assigned viewport, zoom, and input and inspect clipping, overflow, and focus. |
|
||||
| WP-001-PERSISTENCE-ACCESS | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-01) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify mutations persist and role, outsider, permission, and read-only boundaries remain intact. |
|
||||
| WP-001-FAILURE-EVIDENCE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-01) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Exercise applicable cancellation, degraded, retry, cleanup, console, network, and timestamped artifact evidence. |
|
||||
| WP-001-JOURNEY | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-01/WP-001-JOURNEY.png) | Not executed | Complete the persona journey across all assigned boards and profiles without bypassing product navigation. |
|
||||
| WP-001-THRESHOLDS | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-01/WP-001-THRESHOLDS.png) | Not executed | Repeat critical steps across every assigned viewport, zoom, and input and inspect clipping, overflow, and focus. |
|
||||
| WP-001-PERSISTENCE-ACCESS | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-01/WP-001-PERSISTENCE-ACCESS.png) | Not executed | Verify mutations persist and role, outsider, permission, and read-only boundaries remain intact. |
|
||||
| WP-001-FAILURE-EVIDENCE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-01/WP-001-FAILURE-EVIDENCE.png) | Not executed | Exercise applicable cancellation, degraded, retry, cleanup, console, network, and timestamped artifact evidence. |
|
||||
|
||||
## Performance measurements and limitations
|
||||
|
||||
No valid feature timing could be recorded because no application document rendered. Cold/warm, polling, rendering, memory, and recovery measurements remain blocked.
|
||||
Record structured measurements in `performance.measurements` with units, thresholds, status, and evidence. Record every environmental or tooling limitation in `performance.limitations`; leave measurements empty instead of inventing a result.
|
||||
|
||||
## Independent reproductions
|
||||
|
||||
The common routing failure was independently reproduced by qa-v2-preflight-01; the corresponding tracked packet contains its own browser evidence.
|
||||
Record a second agent's result in `independentReproductions` with the finding fingerprint, agent ID, outcome, evidence, and notes. An unattempted reproduction remains `not-reached`.
|
||||
|
||||
## Findings
|
||||
|
||||
### RV2-P1-001 — P1: locale rewrite causes an infinite browser redirect
|
||||
|
||||
Preconditions: candidate f57a660088d6777c86aca22977354fa8b810e2be, main-writable, desktop-1440, 100% zoom, mouse, fresh named Chromium session qa-v2-whole-product-01.
|
||||
|
||||
1. Launch a fresh Chromium context with the Chromium argument --no-sandbox.
|
||||
2. Set the assigned viewport and open http://127.0.0.1:37137 or its authentication entry.
|
||||
3. Observe repeated document requests to the same route.
|
||||
4. Wait until Chromium displays ERR_TOO_MANY_REDIRECTS or chrome-error://chromewebdata/.
|
||||
5. Compare the result with the independently reproduced preflight evidence.
|
||||
|
||||
Expected: the application renders the assigned entry, permitting authentication and the packet flow. Actual: the redirect loop prevents the application from rendering. Reproducibility: reproduced independently by the preflight agents. Console output was empty; network and visual evidence are linked below.
|
||||
|
||||
## Artifacts
|
||||
|
||||
- [entry-attempt-console.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-01/entry-attempt-console.txt)
|
||||
- [entry-attempt-errors.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-01/entry-attempt-errors.txt)
|
||||
- [entry-attempt-network.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-01/entry-attempt-network.txt)
|
||||
- [entry-attempt-url.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-01/entry-attempt-url.txt)
|
||||
- [entry-attempt.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-01/entry-attempt.png)
|
||||
|
||||
## Mutations and persistence
|
||||
|
||||
No credentials were submitted and no product mutation occurred. Reload and fresh-session retries reproduced the routing failure, so application persistence was not reachable.
|
||||
No findings recorded. Add structured findings to the metadata block and mirror them here.
|
||||
|
||||
## Blockers and gaps
|
||||
|
||||
Every non-evidence case listed as blocked remains untested beyond the routing entry. No blocked cell is treated as passed.
|
||||
Not executed.
|
||||
|
||||
## Cleanup
|
||||
|
||||
The named browser session was closed by the browser agent. Artifacts remain under the untracked packet directory; no secret values were captured.
|
||||
Record created resources, cleanup outcome, console errors, and network failures. Never include secret values.
|
||||
@@ -1,74 +1,35 @@
|
||||
<!-- release-v2-qa-report
|
||||
{
|
||||
"packetId": "whole-product-02",
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"caseStatuses": {
|
||||
"WP-002-JOURNEY": "blocked",
|
||||
"WP-002-THRESHOLDS": "blocked",
|
||||
"WP-002-PERSISTENCE-ACCESS": "blocked",
|
||||
"WP-002-FAILURE-EVIDENCE": "blocked"
|
||||
"WP-002-JOURNEY": "not-reached",
|
||||
"WP-002-THRESHOLDS": "not-reached",
|
||||
"WP-002-PERSISTENCE-ACCESS": "not-reached",
|
||||
"WP-002-FAILURE-EVIDENCE": "not-reached"
|
||||
},
|
||||
"execution": {
|
||||
"candidateSha": "f57a660088d6777c86aca22977354fa8b810e2be",
|
||||
"url": "http://127.0.0.1:37137",
|
||||
"actualPort": 37137,
|
||||
"runtimeProfile": "main-writable",
|
||||
"runtimeFlags": [
|
||||
"DEMO_MODE=true",
|
||||
"DEMO_READ_ONLY=false",
|
||||
"UNSAFE_ENABLE_MOCK_INTEGRATION=true"
|
||||
],
|
||||
"persona": "Rowan Owner",
|
||||
"sessionId": "qa-v2-whole-product-02",
|
||||
"timestamp": "2026-08-31T17:26:12.839Z",
|
||||
"viewport": "desktop-1920",
|
||||
"input": "mouse",
|
||||
"zoom": 100
|
||||
"candidateSha": "2d5edf46513b96c8b9f973d4a121b396d688e9bb",
|
||||
"url": null,
|
||||
"actualPort": null,
|
||||
"runtimeProfile": null,
|
||||
"runtimeFlags": [],
|
||||
"persona": null,
|
||||
"sessionId": null,
|
||||
"timestamp": null,
|
||||
"viewport": null,
|
||||
"input": null,
|
||||
"zoom": null
|
||||
},
|
||||
"findings": [
|
||||
{
|
||||
"id": "RV2-P1-001",
|
||||
"fingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"severity": "P1",
|
||||
"area": "routing/authentication",
|
||||
"title": "Locale rewrite causes an infinite browser redirect before the application renders",
|
||||
"summary": "Chromium repeatedly requests the same entry route and ends on ERR_TOO_MANY_REDIRECTS, preventing the assigned browser flow.",
|
||||
"caseIds": [
|
||||
"WP-002-JOURNEY",
|
||||
"WP-002-THRESHOLDS",
|
||||
"WP-002-PERSISTENCE-ACCESS",
|
||||
"WP-002-FAILURE-EVIDENCE"
|
||||
],
|
||||
"evidence": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-02/entry-1920x1080-100-redirect.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-02/entry-network-scoped.txt"
|
||||
]
|
||||
}
|
||||
],
|
||||
"artifacts": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-02/entry-1920x1080-100-redirect.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-02/entry-console-scoped.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-02/entry-network-scoped.txt"
|
||||
],
|
||||
"findings": [],
|
||||
"artifacts": [],
|
||||
"widgetChecks": [],
|
||||
"performance": {
|
||||
"measurements": [],
|
||||
"limitations": [
|
||||
"The application never rendered, so assigned feature, mutation, persistence, permission, viewport, and performance checks were blocked.",
|
||||
"No credentials were submitted and no product state was mutated.",
|
||||
"The packet's retry did not produce a separate artifact; the same finding has independent reproductions in the preflight reports."
|
||||
]
|
||||
"limitations": []
|
||||
},
|
||||
"independentReproductions": [
|
||||
{
|
||||
"findingFingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"agentId": "qa-v2-preflight-01",
|
||||
"outcome": "reproduced",
|
||||
"evidence": [],
|
||||
"notes": "See preflight-01 for an independent Luna Max reproduction."
|
||||
}
|
||||
],
|
||||
"notes": "Report-only black-box run. No defect was fixed and no secret was recorded."
|
||||
"independentReproductions": [],
|
||||
"notes": "Not executed."
|
||||
}
|
||||
-->
|
||||
|
||||
@@ -76,7 +37,7 @@
|
||||
|
||||
| Metadata | Value |
|
||||
| --- | --- |
|
||||
| Status | blocked |
|
||||
| Status | not-reached |
|
||||
| Wave | whole-product |
|
||||
| PR refs | #6356, #6503, #6502 |
|
||||
| Personas | Rowan Owner |
|
||||
@@ -87,59 +48,39 @@
|
||||
| Input | mouse, keyboard |
|
||||
| Widget kinds | None |
|
||||
| Artifact directory | [/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-02](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-02) |
|
||||
| Candidate SHA | f57a660088d6777c86aca22977354fa8b810e2be |
|
||||
| URL / actual port | http://127.0.0.1:37137 / 37137 |
|
||||
| Runtime profile / flags | main-writable; DEMO_MODE=true, DEMO_READ_ONLY=false, UNSAFE_ENABLE_MOCK_INTEGRATION=true |
|
||||
| Executed persona | Rowan Owner |
|
||||
| Browser session ID | qa-v2-whole-product-02 |
|
||||
| Timestamp | 2026-08-31T17:26:12.839Z |
|
||||
| Executed viewport / input / zoom | desktop-1920 / mouse / 100% |
|
||||
| Candidate SHA | 2d5edf46513b96c8b9f973d4a121b396d688e9bb |
|
||||
| URL / actual port | not-recorded |
|
||||
| Runtime profile / flags | not-recorded |
|
||||
| Executed persona | not-recorded |
|
||||
| Browser session ID | not-recorded |
|
||||
| Timestamp | not-recorded |
|
||||
| Executed viewport / input / zoom | not-recorded |
|
||||
|
||||
## Dogfood evidence
|
||||
|
||||
| Case ID | Status | Evidence | Observed | Expected |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| WP-002-JOURNEY | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-02) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Complete the persona journey across all assigned boards and profiles without bypassing product navigation. |
|
||||
| WP-002-THRESHOLDS | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-02) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Repeat critical steps across every assigned viewport, zoom, and input and inspect clipping, overflow, and focus. |
|
||||
| WP-002-PERSISTENCE-ACCESS | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-02) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify mutations persist and role, outsider, permission, and read-only boundaries remain intact. |
|
||||
| WP-002-FAILURE-EVIDENCE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-02) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Exercise applicable cancellation, degraded, retry, cleanup, console, network, and timestamped artifact evidence. |
|
||||
| WP-002-JOURNEY | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-02/WP-002-JOURNEY.png) | Not executed | Complete the persona journey across all assigned boards and profiles without bypassing product navigation. |
|
||||
| WP-002-THRESHOLDS | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-02/WP-002-THRESHOLDS.png) | Not executed | Repeat critical steps across every assigned viewport, zoom, and input and inspect clipping, overflow, and focus. |
|
||||
| WP-002-PERSISTENCE-ACCESS | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-02/WP-002-PERSISTENCE-ACCESS.png) | Not executed | Verify mutations persist and role, outsider, permission, and read-only boundaries remain intact. |
|
||||
| WP-002-FAILURE-EVIDENCE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-02/WP-002-FAILURE-EVIDENCE.png) | Not executed | Exercise applicable cancellation, degraded, retry, cleanup, console, network, and timestamped artifact evidence. |
|
||||
|
||||
## Performance measurements and limitations
|
||||
|
||||
No valid feature timing could be recorded because no application document rendered. Cold/warm, polling, rendering, memory, and recovery measurements remain blocked.
|
||||
Record structured measurements in `performance.measurements` with units, thresholds, status, and evidence. Record every environmental or tooling limitation in `performance.limitations`; leave measurements empty instead of inventing a result.
|
||||
|
||||
## Independent reproductions
|
||||
|
||||
The common routing failure was independently reproduced by qa-v2-preflight-01; the corresponding tracked packet contains its own browser evidence.
|
||||
Record a second agent's result in `independentReproductions` with the finding fingerprint, agent ID, outcome, evidence, and notes. An unattempted reproduction remains `not-reached`.
|
||||
|
||||
## Findings
|
||||
|
||||
### RV2-P1-001 — P1: locale rewrite causes an infinite browser redirect
|
||||
|
||||
Preconditions: candidate f57a660088d6777c86aca22977354fa8b810e2be, main-writable, desktop-1920, 100% zoom, mouse, fresh named Chromium session qa-v2-whole-product-02.
|
||||
|
||||
1. Launch a fresh Chromium context with the Chromium argument --no-sandbox.
|
||||
2. Set the assigned viewport and open http://127.0.0.1:37137 or its authentication entry.
|
||||
3. Observe repeated document requests to the same route.
|
||||
4. Wait until Chromium displays ERR_TOO_MANY_REDIRECTS or chrome-error://chromewebdata/.
|
||||
5. Compare the result with the independently reproduced preflight evidence.
|
||||
|
||||
Expected: the application renders the assigned entry, permitting authentication and the packet flow. Actual: the redirect loop prevents the application from rendering. Reproducibility: reproduced independently by the preflight agents. Console output was empty; network and visual evidence are linked below.
|
||||
|
||||
## Artifacts
|
||||
|
||||
- [entry-1920x1080-100-redirect.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-02/entry-1920x1080-100-redirect.png)
|
||||
- [entry-console-scoped.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-02/entry-console-scoped.txt)
|
||||
- [entry-network-scoped.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-02/entry-network-scoped.txt)
|
||||
|
||||
## Mutations and persistence
|
||||
|
||||
No credentials were submitted and no product mutation occurred. Reload and fresh-session retries reproduced the routing failure, so application persistence was not reachable.
|
||||
No findings recorded. Add structured findings to the metadata block and mirror them here.
|
||||
|
||||
## Blockers and gaps
|
||||
|
||||
Every non-evidence case listed as blocked remains untested beyond the routing entry. No blocked cell is treated as passed.
|
||||
Not executed.
|
||||
|
||||
## Cleanup
|
||||
|
||||
The named browser session was closed by the browser agent. Artifacts remain under the untracked packet directory; no secret values were captured.
|
||||
Record created resources, cleanup outcome, console errors, and network failures. Never include secret values.
|
||||
@@ -1,81 +1,35 @@
|
||||
<!-- release-v2-qa-report
|
||||
{
|
||||
"packetId": "whole-product-03",
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"caseStatuses": {
|
||||
"WP-003-JOURNEY": "blocked",
|
||||
"WP-003-THRESHOLDS": "blocked",
|
||||
"WP-003-PERSISTENCE-ACCESS": "blocked",
|
||||
"WP-003-FAILURE-EVIDENCE": "blocked"
|
||||
"WP-003-JOURNEY": "not-reached",
|
||||
"WP-003-THRESHOLDS": "not-reached",
|
||||
"WP-003-PERSISTENCE-ACCESS": "not-reached",
|
||||
"WP-003-FAILURE-EVIDENCE": "not-reached"
|
||||
},
|
||||
"execution": {
|
||||
"candidateSha": "f57a660088d6777c86aca22977354fa8b810e2be",
|
||||
"url": "http://127.0.0.1:37137",
|
||||
"actualPort": 37137,
|
||||
"runtimeProfile": "main-writable",
|
||||
"runtimeFlags": [
|
||||
"DEMO_MODE=true",
|
||||
"DEMO_READ_ONLY=false",
|
||||
"UNSAFE_ENABLE_MOCK_INTEGRATION=true"
|
||||
],
|
||||
"persona": "Eden Editor",
|
||||
"sessionId": "qa-v2-whole-product-03",
|
||||
"timestamp": "2026-08-31T17:34:20.573Z",
|
||||
"viewport": "tablet-1024",
|
||||
"input": "mouse",
|
||||
"zoom": 100
|
||||
"candidateSha": "2d5edf46513b96c8b9f973d4a121b396d688e9bb",
|
||||
"url": null,
|
||||
"actualPort": null,
|
||||
"runtimeProfile": null,
|
||||
"runtimeFlags": [],
|
||||
"persona": null,
|
||||
"sessionId": null,
|
||||
"timestamp": null,
|
||||
"viewport": null,
|
||||
"input": null,
|
||||
"zoom": null
|
||||
},
|
||||
"findings": [
|
||||
{
|
||||
"id": "RV2-P1-001",
|
||||
"fingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"severity": "P1",
|
||||
"area": "routing/authentication",
|
||||
"title": "Locale rewrite causes an infinite browser redirect before the application renders",
|
||||
"summary": "A fresh Chromium session repeatedly requests the same entry route and ends on ERR_TOO_MANY_REDIRECTS; a fresh-context retry does the same.",
|
||||
"caseIds": [
|
||||
"WP-003-JOURNEY",
|
||||
"WP-003-THRESHOLDS",
|
||||
"WP-003-PERSISTENCE-ACCESS",
|
||||
"WP-003-FAILURE-EVIDENCE"
|
||||
],
|
||||
"evidence": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-03/entry-1024x768-mouse-retry.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-03/network-retry.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-03/network.txt"
|
||||
]
|
||||
}
|
||||
],
|
||||
"artifacts": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-03/console-retry.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-03/console.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-03/entry-1024x768-mouse-retry.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-03/entry-blocked.md",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-03/errors-retry.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-03/errors.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-03/network-retry.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-03/network.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-03/retry-summary.md"
|
||||
],
|
||||
"findings": [],
|
||||
"artifacts": [],
|
||||
"widgetChecks": [],
|
||||
"performance": {
|
||||
"measurements": [],
|
||||
"limitations": [
|
||||
"The application never rendered, so assigned feature, mutation, persistence, permission, viewport, and performance checks were blocked.",
|
||||
"No credentials were submitted and no product state was mutated.",
|
||||
"The finding was retried in a fresh Chromium context; console output was empty while document requests repeated until Chromium stopped the loop."
|
||||
]
|
||||
"limitations": []
|
||||
},
|
||||
"independentReproductions": [
|
||||
{
|
||||
"findingFingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"agentId": "qa-v2-preflight-01",
|
||||
"outcome": "reproduced",
|
||||
"evidence": [],
|
||||
"notes": "See preflight-01 for an independent Luna Max reproduction."
|
||||
}
|
||||
],
|
||||
"notes": "Report-only black-box run. No defect was fixed and no secret was recorded."
|
||||
"independentReproductions": [],
|
||||
"notes": "Not executed."
|
||||
}
|
||||
-->
|
||||
|
||||
@@ -83,7 +37,7 @@
|
||||
|
||||
| Metadata | Value |
|
||||
| --- | --- |
|
||||
| Status | blocked |
|
||||
| Status | not-reached |
|
||||
| Wave | whole-product |
|
||||
| PR refs | #6503, #6502, #6450 |
|
||||
| Personas | Eden Editor |
|
||||
@@ -94,65 +48,39 @@
|
||||
| Input | mouse, touch, keyboard |
|
||||
| Widget kinds | None |
|
||||
| Artifact directory | [/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-03](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-03) |
|
||||
| Candidate SHA | f57a660088d6777c86aca22977354fa8b810e2be |
|
||||
| URL / actual port | http://127.0.0.1:37137 / 37137 |
|
||||
| Runtime profile / flags | main-writable; DEMO_MODE=true, DEMO_READ_ONLY=false, UNSAFE_ENABLE_MOCK_INTEGRATION=true |
|
||||
| Executed persona | Eden Editor |
|
||||
| Browser session ID | qa-v2-whole-product-03 |
|
||||
| Timestamp | 2026-08-31T17:34:20.573Z |
|
||||
| Executed viewport / input / zoom | tablet-1024 / mouse / 100% |
|
||||
| Candidate SHA | 2d5edf46513b96c8b9f973d4a121b396d688e9bb |
|
||||
| URL / actual port | not-recorded |
|
||||
| Runtime profile / flags | not-recorded |
|
||||
| Executed persona | not-recorded |
|
||||
| Browser session ID | not-recorded |
|
||||
| Timestamp | not-recorded |
|
||||
| Executed viewport / input / zoom | not-recorded |
|
||||
|
||||
## Dogfood evidence
|
||||
|
||||
| Case ID | Status | Evidence | Observed | Expected |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| WP-003-JOURNEY | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-03) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Complete the persona journey across all assigned boards and profiles without bypassing product navigation. |
|
||||
| WP-003-THRESHOLDS | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-03) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Repeat critical steps across every assigned viewport, zoom, and input and inspect clipping, overflow, and focus. |
|
||||
| WP-003-PERSISTENCE-ACCESS | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-03) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify mutations persist and role, outsider, permission, and read-only boundaries remain intact. |
|
||||
| WP-003-FAILURE-EVIDENCE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-03) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Exercise applicable cancellation, degraded, retry, cleanup, console, network, and timestamped artifact evidence. |
|
||||
| WP-003-JOURNEY | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-03/WP-003-JOURNEY.png) | Not executed | Complete the persona journey across all assigned boards and profiles without bypassing product navigation. |
|
||||
| WP-003-THRESHOLDS | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-03/WP-003-THRESHOLDS.png) | Not executed | Repeat critical steps across every assigned viewport, zoom, and input and inspect clipping, overflow, and focus. |
|
||||
| WP-003-PERSISTENCE-ACCESS | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-03/WP-003-PERSISTENCE-ACCESS.png) | Not executed | Verify mutations persist and role, outsider, permission, and read-only boundaries remain intact. |
|
||||
| WP-003-FAILURE-EVIDENCE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-03/WP-003-FAILURE-EVIDENCE.png) | Not executed | Exercise applicable cancellation, degraded, retry, cleanup, console, network, and timestamped artifact evidence. |
|
||||
|
||||
## Performance measurements and limitations
|
||||
|
||||
No valid feature timing could be recorded because no application document rendered. Cold/warm, polling, rendering, memory, and recovery measurements remain blocked.
|
||||
Record structured measurements in `performance.measurements` with units, thresholds, status, and evidence. Record every environmental or tooling limitation in `performance.limitations`; leave measurements empty instead of inventing a result.
|
||||
|
||||
## Independent reproductions
|
||||
|
||||
The common routing failure was independently reproduced by qa-v2-preflight-01; the corresponding tracked packet contains its own browser evidence.
|
||||
Record a second agent's result in `independentReproductions` with the finding fingerprint, agent ID, outcome, evidence, and notes. An unattempted reproduction remains `not-reached`.
|
||||
|
||||
## Findings
|
||||
|
||||
### RV2-P1-001 — P1: locale rewrite causes an infinite browser redirect
|
||||
|
||||
Preconditions: candidate f57a660088d6777c86aca22977354fa8b810e2be, main-writable, tablet-1024, 100% zoom, mouse, fresh named Chromium session qa-v2-whole-product-03.
|
||||
|
||||
1. Launch a fresh Chromium context with the Chromium argument --no-sandbox.
|
||||
2. Set the assigned viewport and open http://127.0.0.1:37137 or its authentication entry.
|
||||
3. Observe repeated document requests to the same route.
|
||||
4. Wait until Chromium displays ERR_TOO_MANY_REDIRECTS or chrome-error://chromewebdata/.
|
||||
5. Close the context, retry in a fresh context, and observe the same result.
|
||||
|
||||
Expected: the application renders the assigned entry, permitting authentication and the packet flow. Actual: the redirect loop prevents the application from rendering. Reproducibility: reproduced on retry and independently by the preflight agents. Console output was empty; network and visual evidence are linked below.
|
||||
|
||||
## Artifacts
|
||||
|
||||
- [console-retry.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-03/console-retry.txt)
|
||||
- [console.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-03/console.txt)
|
||||
- [entry-1024x768-mouse-retry.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-03/entry-1024x768-mouse-retry.png)
|
||||
- [entry-blocked.md](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-03/entry-blocked.md)
|
||||
- [errors-retry.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-03/errors-retry.txt)
|
||||
- [errors.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-03/errors.txt)
|
||||
- [network-retry.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-03/network-retry.txt)
|
||||
- [network.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-03/network.txt)
|
||||
- [retry-summary.md](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-03/retry-summary.md)
|
||||
|
||||
## Mutations and persistence
|
||||
|
||||
No credentials were submitted and no product mutation occurred. Reload and fresh-session retries reproduced the routing failure, so application persistence was not reachable.
|
||||
No findings recorded. Add structured findings to the metadata block and mirror them here.
|
||||
|
||||
## Blockers and gaps
|
||||
|
||||
Every non-evidence case listed as blocked remains untested beyond the routing entry. No blocked cell is treated as passed.
|
||||
Not executed.
|
||||
|
||||
## Cleanup
|
||||
|
||||
The named browser session was closed by the browser agent. Artifacts remain under the untracked packet directory; no secret values were captured.
|
||||
Record created resources, cleanup outcome, console errors, and network failures. Never include secret values.
|
||||
@@ -1,75 +1,35 @@
|
||||
<!-- release-v2-qa-report
|
||||
{
|
||||
"packetId": "whole-product-04",
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"caseStatuses": {
|
||||
"WP-004-JOURNEY": "blocked",
|
||||
"WP-004-THRESHOLDS": "blocked",
|
||||
"WP-004-PERSISTENCE-ACCESS": "blocked",
|
||||
"WP-004-FAILURE-EVIDENCE": "blocked"
|
||||
"WP-004-JOURNEY": "not-reached",
|
||||
"WP-004-THRESHOLDS": "not-reached",
|
||||
"WP-004-PERSISTENCE-ACCESS": "not-reached",
|
||||
"WP-004-FAILURE-EVIDENCE": "not-reached"
|
||||
},
|
||||
"execution": {
|
||||
"candidateSha": "f57a660088d6777c86aca22977354fa8b810e2be",
|
||||
"url": "http://127.0.0.1:37137",
|
||||
"actualPort": 37137,
|
||||
"runtimeProfile": "main-writable",
|
||||
"runtimeFlags": [
|
||||
"DEMO_MODE=true",
|
||||
"DEMO_READ_ONLY=false",
|
||||
"UNSAFE_ENABLE_MOCK_INTEGRATION=true"
|
||||
],
|
||||
"persona": "Vivian Viewer",
|
||||
"sessionId": "qa-v2-whole-product-04",
|
||||
"timestamp": "2026-08-31T17:38:48.712Z",
|
||||
"viewport": "mobile-375",
|
||||
"input": "mouse",
|
||||
"zoom": 100
|
||||
"candidateSha": "2d5edf46513b96c8b9f973d4a121b396d688e9bb",
|
||||
"url": null,
|
||||
"actualPort": null,
|
||||
"runtimeProfile": null,
|
||||
"runtimeFlags": [],
|
||||
"persona": null,
|
||||
"sessionId": null,
|
||||
"timestamp": null,
|
||||
"viewport": null,
|
||||
"input": null,
|
||||
"zoom": null
|
||||
},
|
||||
"findings": [
|
||||
{
|
||||
"id": "RV2-P1-001",
|
||||
"fingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"severity": "P1",
|
||||
"area": "routing/authentication",
|
||||
"title": "Locale rewrite causes an infinite browser redirect before the application renders",
|
||||
"summary": "Chromium repeatedly requests the same entry route and ends on ERR_TOO_MANY_REDIRECTS, preventing the assigned browser flow.",
|
||||
"caseIds": [
|
||||
"WP-004-JOURNEY",
|
||||
"WP-004-THRESHOLDS",
|
||||
"WP-004-PERSISTENCE-ACCESS",
|
||||
"WP-004-FAILURE-EVIDENCE"
|
||||
],
|
||||
"evidence": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-04/entry-375x812-annotated.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-04/network.txt"
|
||||
]
|
||||
}
|
||||
],
|
||||
"artifacts": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-04/console.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-04/entry-375x812-annotated.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-04/errors.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-04/network.txt"
|
||||
],
|
||||
"findings": [],
|
||||
"artifacts": [],
|
||||
"widgetChecks": [],
|
||||
"performance": {
|
||||
"measurements": [],
|
||||
"limitations": [
|
||||
"The application never rendered, so assigned feature, mutation, persistence, permission, viewport, and performance checks were blocked.",
|
||||
"No credentials were submitted and no product state was mutated.",
|
||||
"The packet's retry did not produce a separate artifact; the same finding has independent reproductions in the preflight reports."
|
||||
]
|
||||
"limitations": []
|
||||
},
|
||||
"independentReproductions": [
|
||||
{
|
||||
"findingFingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"agentId": "qa-v2-preflight-01",
|
||||
"outcome": "reproduced",
|
||||
"evidence": [],
|
||||
"notes": "See preflight-01 for an independent Luna Max reproduction."
|
||||
}
|
||||
],
|
||||
"notes": "Report-only black-box run. No defect was fixed and no secret was recorded."
|
||||
"independentReproductions": [],
|
||||
"notes": "Not executed."
|
||||
}
|
||||
-->
|
||||
|
||||
@@ -77,7 +37,7 @@
|
||||
|
||||
| Metadata | Value |
|
||||
| --- | --- |
|
||||
| Status | blocked |
|
||||
| Status | not-reached |
|
||||
| Wave | whole-product |
|
||||
| PR refs | #6545 |
|
||||
| Personas | Vivian Viewer, Nolan Outsider |
|
||||
@@ -88,60 +48,39 @@
|
||||
| Input | mouse, touch, keyboard |
|
||||
| Widget kinds | None |
|
||||
| Artifact directory | [/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-04](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-04) |
|
||||
| Candidate SHA | f57a660088d6777c86aca22977354fa8b810e2be |
|
||||
| URL / actual port | http://127.0.0.1:37137 / 37137 |
|
||||
| Runtime profile / flags | main-writable; DEMO_MODE=true, DEMO_READ_ONLY=false, UNSAFE_ENABLE_MOCK_INTEGRATION=true |
|
||||
| Executed persona | Vivian Viewer |
|
||||
| Browser session ID | qa-v2-whole-product-04 |
|
||||
| Timestamp | 2026-08-31T17:38:48.712Z |
|
||||
| Executed viewport / input / zoom | mobile-375 / mouse / 100% |
|
||||
| Candidate SHA | 2d5edf46513b96c8b9f973d4a121b396d688e9bb |
|
||||
| URL / actual port | not-recorded |
|
||||
| Runtime profile / flags | not-recorded |
|
||||
| Executed persona | not-recorded |
|
||||
| Browser session ID | not-recorded |
|
||||
| Timestamp | not-recorded |
|
||||
| Executed viewport / input / zoom | not-recorded |
|
||||
|
||||
## Dogfood evidence
|
||||
|
||||
| Case ID | Status | Evidence | Observed | Expected |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| WP-004-JOURNEY | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-04) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Complete the persona journey across all assigned boards and profiles without bypassing product navigation. |
|
||||
| WP-004-THRESHOLDS | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-04) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Repeat critical steps across every assigned viewport, zoom, and input and inspect clipping, overflow, and focus. |
|
||||
| WP-004-PERSISTENCE-ACCESS | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-04) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify mutations persist and role, outsider, permission, and read-only boundaries remain intact. |
|
||||
| WP-004-FAILURE-EVIDENCE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-04) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Exercise applicable cancellation, degraded, retry, cleanup, console, network, and timestamped artifact evidence. |
|
||||
| WP-004-JOURNEY | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-04/WP-004-JOURNEY.png) | Not executed | Complete the persona journey across all assigned boards and profiles without bypassing product navigation. |
|
||||
| WP-004-THRESHOLDS | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-04/WP-004-THRESHOLDS.png) | Not executed | Repeat critical steps across every assigned viewport, zoom, and input and inspect clipping, overflow, and focus. |
|
||||
| WP-004-PERSISTENCE-ACCESS | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-04/WP-004-PERSISTENCE-ACCESS.png) | Not executed | Verify mutations persist and role, outsider, permission, and read-only boundaries remain intact. |
|
||||
| WP-004-FAILURE-EVIDENCE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-04/WP-004-FAILURE-EVIDENCE.png) | Not executed | Exercise applicable cancellation, degraded, retry, cleanup, console, network, and timestamped artifact evidence. |
|
||||
|
||||
## Performance measurements and limitations
|
||||
|
||||
No valid feature timing could be recorded because no application document rendered. Cold/warm, polling, rendering, memory, and recovery measurements remain blocked.
|
||||
Record structured measurements in `performance.measurements` with units, thresholds, status, and evidence. Record every environmental or tooling limitation in `performance.limitations`; leave measurements empty instead of inventing a result.
|
||||
|
||||
## Independent reproductions
|
||||
|
||||
The common routing failure was independently reproduced by qa-v2-preflight-01; the corresponding tracked packet contains its own browser evidence.
|
||||
Record a second agent's result in `independentReproductions` with the finding fingerprint, agent ID, outcome, evidence, and notes. An unattempted reproduction remains `not-reached`.
|
||||
|
||||
## Findings
|
||||
|
||||
### RV2-P1-001 — P1: locale rewrite causes an infinite browser redirect
|
||||
|
||||
Preconditions: candidate f57a660088d6777c86aca22977354fa8b810e2be, main-writable, mobile-375, 100% zoom, mouse, fresh named Chromium session qa-v2-whole-product-04.
|
||||
|
||||
1. Launch a fresh Chromium context with the Chromium argument --no-sandbox.
|
||||
2. Set the assigned viewport and open http://127.0.0.1:37137 or its authentication entry.
|
||||
3. Observe repeated document requests to the same route.
|
||||
4. Wait until Chromium displays ERR_TOO_MANY_REDIRECTS or chrome-error://chromewebdata/.
|
||||
5. Compare the result with the independently reproduced preflight evidence.
|
||||
|
||||
Expected: the application renders the assigned entry, permitting authentication and the packet flow. Actual: the redirect loop prevents the application from rendering. Reproducibility: reproduced independently by the preflight agents. Console output was empty; network and visual evidence are linked below.
|
||||
|
||||
## Artifacts
|
||||
|
||||
- [console.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-04/console.txt)
|
||||
- [entry-375x812-annotated.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-04/entry-375x812-annotated.png)
|
||||
- [errors.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-04/errors.txt)
|
||||
- [network.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-04/network.txt)
|
||||
|
||||
## Mutations and persistence
|
||||
|
||||
No credentials were submitted and no product mutation occurred. Reload and fresh-session retries reproduced the routing failure, so application persistence was not reachable.
|
||||
No findings recorded. Add structured findings to the metadata block and mirror them here.
|
||||
|
||||
## Blockers and gaps
|
||||
|
||||
Every non-evidence case listed as blocked remains untested beyond the routing entry. No blocked cell is treated as passed.
|
||||
Not executed.
|
||||
|
||||
## Cleanup
|
||||
|
||||
The named browser session was closed by the browser agent. Artifacts remain under the untracked packet directory; no secret values were captured.
|
||||
Record created resources, cleanup outcome, console errors, and network failures. Never include secret values.
|
||||
@@ -1,75 +1,35 @@
|
||||
<!-- release-v2-qa-report
|
||||
{
|
||||
"packetId": "whole-product-05",
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"caseStatuses": {
|
||||
"WP-005-JOURNEY": "blocked",
|
||||
"WP-005-THRESHOLDS": "blocked",
|
||||
"WP-005-PERSISTENCE-ACCESS": "blocked",
|
||||
"WP-005-FAILURE-EVIDENCE": "blocked"
|
||||
"WP-005-JOURNEY": "not-reached",
|
||||
"WP-005-THRESHOLDS": "not-reached",
|
||||
"WP-005-PERSISTENCE-ACCESS": "not-reached",
|
||||
"WP-005-FAILURE-EVIDENCE": "not-reached"
|
||||
},
|
||||
"execution": {
|
||||
"candidateSha": "f57a660088d6777c86aca22977354fa8b810e2be",
|
||||
"url": "http://127.0.0.1:37137",
|
||||
"actualPort": 37137,
|
||||
"runtimeProfile": "main-writable",
|
||||
"runtimeFlags": [
|
||||
"DEMO_MODE=true",
|
||||
"DEMO_READ_ONLY=false",
|
||||
"UNSAFE_ENABLE_MOCK_INTEGRATION=true"
|
||||
],
|
||||
"persona": "Morgan Mobile",
|
||||
"sessionId": "qa-v2-whole-product-05",
|
||||
"timestamp": "2026-08-31T17:45:01.935Z",
|
||||
"viewport": "mobile-320",
|
||||
"input": "touch",
|
||||
"zoom": 100
|
||||
"candidateSha": "2d5edf46513b96c8b9f973d4a121b396d688e9bb",
|
||||
"url": null,
|
||||
"actualPort": null,
|
||||
"runtimeProfile": null,
|
||||
"runtimeFlags": [],
|
||||
"persona": null,
|
||||
"sessionId": null,
|
||||
"timestamp": null,
|
||||
"viewport": null,
|
||||
"input": null,
|
||||
"zoom": null
|
||||
},
|
||||
"findings": [
|
||||
{
|
||||
"id": "RV2-P1-001",
|
||||
"fingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"severity": "P1",
|
||||
"area": "routing/authentication",
|
||||
"title": "Locale rewrite causes an infinite browser redirect before the application renders",
|
||||
"summary": "Chromium repeatedly requests the same entry route and ends on ERR_TOO_MANY_REDIRECTS, preventing the assigned browser flow.",
|
||||
"caseIds": [
|
||||
"WP-005-JOURNEY",
|
||||
"WP-005-THRESHOLDS",
|
||||
"WP-005-PERSISTENCE-ACCESS",
|
||||
"WP-005-FAILURE-EVIDENCE"
|
||||
],
|
||||
"evidence": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-05/entry-320x568-100-touch-annotated.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-05/network-scoped-redacted.txt"
|
||||
]
|
||||
}
|
||||
],
|
||||
"artifacts": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-05/console-scoped-redacted.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-05/entry-320x568-100-touch-annotated.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-05/errors-scoped-redacted.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-05/network-scoped-redacted.txt"
|
||||
],
|
||||
"findings": [],
|
||||
"artifacts": [],
|
||||
"widgetChecks": [],
|
||||
"performance": {
|
||||
"measurements": [],
|
||||
"limitations": [
|
||||
"The application never rendered, so assigned feature, mutation, persistence, permission, viewport, and performance checks were blocked.",
|
||||
"No credentials were submitted and no product state was mutated.",
|
||||
"The packet's retry did not produce a separate artifact; the same finding has independent reproductions in the preflight reports."
|
||||
]
|
||||
"limitations": []
|
||||
},
|
||||
"independentReproductions": [
|
||||
{
|
||||
"findingFingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"agentId": "qa-v2-preflight-01",
|
||||
"outcome": "reproduced",
|
||||
"evidence": [],
|
||||
"notes": "See preflight-01 for an independent Luna Max reproduction."
|
||||
}
|
||||
],
|
||||
"notes": "Report-only black-box run. No defect was fixed and no secret was recorded."
|
||||
"independentReproductions": [],
|
||||
"notes": "Not executed."
|
||||
}
|
||||
-->
|
||||
|
||||
@@ -77,7 +37,7 @@
|
||||
|
||||
| Metadata | Value |
|
||||
| --- | --- |
|
||||
| Status | blocked |
|
||||
| Status | not-reached |
|
||||
| Wave | whole-product |
|
||||
| PR refs | #6450, #6503, #6502 |
|
||||
| Personas | Morgan Mobile |
|
||||
@@ -88,60 +48,39 @@
|
||||
| Input | touch, keyboard |
|
||||
| Widget kinds | None |
|
||||
| Artifact directory | [/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-05](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-05) |
|
||||
| Candidate SHA | f57a660088d6777c86aca22977354fa8b810e2be |
|
||||
| URL / actual port | http://127.0.0.1:37137 / 37137 |
|
||||
| Runtime profile / flags | main-writable; DEMO_MODE=true, DEMO_READ_ONLY=false, UNSAFE_ENABLE_MOCK_INTEGRATION=true |
|
||||
| Executed persona | Morgan Mobile |
|
||||
| Browser session ID | qa-v2-whole-product-05 |
|
||||
| Timestamp | 2026-08-31T17:45:01.935Z |
|
||||
| Executed viewport / input / zoom | mobile-320 / touch / 100% |
|
||||
| Candidate SHA | 2d5edf46513b96c8b9f973d4a121b396d688e9bb |
|
||||
| URL / actual port | not-recorded |
|
||||
| Runtime profile / flags | not-recorded |
|
||||
| Executed persona | not-recorded |
|
||||
| Browser session ID | not-recorded |
|
||||
| Timestamp | not-recorded |
|
||||
| Executed viewport / input / zoom | not-recorded |
|
||||
|
||||
## Dogfood evidence
|
||||
|
||||
| Case ID | Status | Evidence | Observed | Expected |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| WP-005-JOURNEY | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-05) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Complete the persona journey across all assigned boards and profiles without bypassing product navigation. |
|
||||
| WP-005-THRESHOLDS | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-05) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Repeat critical steps across every assigned viewport, zoom, and input and inspect clipping, overflow, and focus. |
|
||||
| WP-005-PERSISTENCE-ACCESS | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-05) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify mutations persist and role, outsider, permission, and read-only boundaries remain intact. |
|
||||
| WP-005-FAILURE-EVIDENCE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-05) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Exercise applicable cancellation, degraded, retry, cleanup, console, network, and timestamped artifact evidence. |
|
||||
| WP-005-JOURNEY | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-05/WP-005-JOURNEY.png) | Not executed | Complete the persona journey across all assigned boards and profiles without bypassing product navigation. |
|
||||
| WP-005-THRESHOLDS | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-05/WP-005-THRESHOLDS.png) | Not executed | Repeat critical steps across every assigned viewport, zoom, and input and inspect clipping, overflow, and focus. |
|
||||
| WP-005-PERSISTENCE-ACCESS | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-05/WP-005-PERSISTENCE-ACCESS.png) | Not executed | Verify mutations persist and role, outsider, permission, and read-only boundaries remain intact. |
|
||||
| WP-005-FAILURE-EVIDENCE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-05/WP-005-FAILURE-EVIDENCE.png) | Not executed | Exercise applicable cancellation, degraded, retry, cleanup, console, network, and timestamped artifact evidence. |
|
||||
|
||||
## Performance measurements and limitations
|
||||
|
||||
No valid feature timing could be recorded because no application document rendered. Cold/warm, polling, rendering, memory, and recovery measurements remain blocked.
|
||||
Record structured measurements in `performance.measurements` with units, thresholds, status, and evidence. Record every environmental or tooling limitation in `performance.limitations`; leave measurements empty instead of inventing a result.
|
||||
|
||||
## Independent reproductions
|
||||
|
||||
The common routing failure was independently reproduced by qa-v2-preflight-01; the corresponding tracked packet contains its own browser evidence.
|
||||
Record a second agent's result in `independentReproductions` with the finding fingerprint, agent ID, outcome, evidence, and notes. An unattempted reproduction remains `not-reached`.
|
||||
|
||||
## Findings
|
||||
|
||||
### RV2-P1-001 — P1: locale rewrite causes an infinite browser redirect
|
||||
|
||||
Preconditions: candidate f57a660088d6777c86aca22977354fa8b810e2be, main-writable, mobile-320, 100% zoom, touch, fresh named Chromium session qa-v2-whole-product-05.
|
||||
|
||||
1. Launch a fresh Chromium context with the Chromium argument --no-sandbox.
|
||||
2. Set the assigned viewport and open http://127.0.0.1:37137 or its authentication entry.
|
||||
3. Observe repeated document requests to the same route.
|
||||
4. Wait until Chromium displays ERR_TOO_MANY_REDIRECTS or chrome-error://chromewebdata/.
|
||||
5. Compare the result with the independently reproduced preflight evidence.
|
||||
|
||||
Expected: the application renders the assigned entry, permitting authentication and the packet flow. Actual: the redirect loop prevents the application from rendering. Reproducibility: reproduced independently by the preflight agents. Console output was empty; network and visual evidence are linked below.
|
||||
|
||||
## Artifacts
|
||||
|
||||
- [console-scoped-redacted.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-05/console-scoped-redacted.txt)
|
||||
- [entry-320x568-100-touch-annotated.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-05/entry-320x568-100-touch-annotated.png)
|
||||
- [errors-scoped-redacted.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-05/errors-scoped-redacted.txt)
|
||||
- [network-scoped-redacted.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-05/network-scoped-redacted.txt)
|
||||
|
||||
## Mutations and persistence
|
||||
|
||||
No credentials were submitted and no product mutation occurred. Reload and fresh-session retries reproduced the routing failure, so application persistence was not reachable.
|
||||
No findings recorded. Add structured findings to the metadata block and mirror them here.
|
||||
|
||||
## Blockers and gaps
|
||||
|
||||
Every non-evidence case listed as blocked remains untested beyond the routing entry. No blocked cell is treated as passed.
|
||||
Not executed.
|
||||
|
||||
## Cleanup
|
||||
|
||||
The named browser session was closed by the browser agent. Artifacts remain under the untracked packet directory; no secret values were captured.
|
||||
Record created resources, cleanup outcome, console errors, and network failures. Never include secret values.
|
||||
@@ -1,78 +1,35 @@
|
||||
<!-- release-v2-qa-report
|
||||
{
|
||||
"packetId": "whole-product-06",
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"caseStatuses": {
|
||||
"WP-006-JOURNEY": "blocked",
|
||||
"WP-006-THRESHOLDS": "blocked",
|
||||
"WP-006-PERSISTENCE-ACCESS": "blocked",
|
||||
"WP-006-FAILURE-EVIDENCE": "blocked"
|
||||
"WP-006-JOURNEY": "not-reached",
|
||||
"WP-006-THRESHOLDS": "not-reached",
|
||||
"WP-006-PERSISTENCE-ACCESS": "not-reached",
|
||||
"WP-006-FAILURE-EVIDENCE": "not-reached"
|
||||
},
|
||||
"execution": {
|
||||
"candidateSha": "f57a660088d6777c86aca22977354fa8b810e2be",
|
||||
"url": "http://127.0.0.1:46777",
|
||||
"actualPort": 46777,
|
||||
"runtimeProfile": "degraded",
|
||||
"runtimeFlags": [
|
||||
"DEMO_MODE=true",
|
||||
"DEMO_READ_ONLY=false",
|
||||
"UNSAFE_ENABLE_MOCK_INTEGRATION=true"
|
||||
],
|
||||
"persona": "Maya Media",
|
||||
"sessionId": "qa-v2-whole-product-06",
|
||||
"timestamp": "2026-08-31T17:50:42.531Z",
|
||||
"viewport": "desktop-1440",
|
||||
"input": "mouse",
|
||||
"zoom": 100
|
||||
"candidateSha": "2d5edf46513b96c8b9f973d4a121b396d688e9bb",
|
||||
"url": null,
|
||||
"actualPort": null,
|
||||
"runtimeProfile": null,
|
||||
"runtimeFlags": [],
|
||||
"persona": null,
|
||||
"sessionId": null,
|
||||
"timestamp": null,
|
||||
"viewport": null,
|
||||
"input": null,
|
||||
"zoom": null
|
||||
},
|
||||
"findings": [
|
||||
{
|
||||
"id": "RV2-P1-001",
|
||||
"fingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"severity": "P1",
|
||||
"area": "routing/authentication",
|
||||
"title": "Locale rewrite causes an infinite browser redirect before the application renders",
|
||||
"summary": "Chromium repeatedly requests the same entry route and ends on ERR_TOO_MANY_REDIRECTS, preventing the assigned browser flow.",
|
||||
"caseIds": [
|
||||
"WP-006-JOURNEY",
|
||||
"WP-006-THRESHOLDS",
|
||||
"WP-006-PERSISTENCE-ACCESS",
|
||||
"WP-006-FAILURE-EVIDENCE"
|
||||
],
|
||||
"evidence": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-06/entry-blocked-annotated.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-06/network-scoped-sanitized.txt"
|
||||
]
|
||||
}
|
||||
],
|
||||
"artifacts": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-06/console-scoped-sanitized.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-06/entry-blocked-annotated.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-06/entry-blocked-snapshot.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-06/entry-title.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-06/entry-url.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-06/errors-scoped-sanitized.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-06/network-scoped-sanitized.txt"
|
||||
],
|
||||
"findings": [],
|
||||
"artifacts": [],
|
||||
"widgetChecks": [],
|
||||
"performance": {
|
||||
"measurements": [],
|
||||
"limitations": [
|
||||
"The application never rendered, so assigned feature, mutation, persistence, permission, viewport, and performance checks were blocked.",
|
||||
"No credentials were submitted and no product state was mutated.",
|
||||
"The packet's retry did not produce a separate artifact; the same finding has independent reproductions in the preflight reports."
|
||||
]
|
||||
"limitations": []
|
||||
},
|
||||
"independentReproductions": [
|
||||
{
|
||||
"findingFingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"agentId": "qa-v2-preflight-01",
|
||||
"outcome": "reproduced",
|
||||
"evidence": [],
|
||||
"notes": "See preflight-01 for an independent Luna Max reproduction."
|
||||
}
|
||||
],
|
||||
"notes": "Report-only black-box run. No defect was fixed and no secret was recorded."
|
||||
"independentReproductions": [],
|
||||
"notes": "Not executed."
|
||||
}
|
||||
-->
|
||||
|
||||
@@ -80,7 +37,7 @@
|
||||
|
||||
| Metadata | Value |
|
||||
| --- | --- |
|
||||
| Status | blocked |
|
||||
| Status | not-reached |
|
||||
| Wave | whole-product |
|
||||
| PR refs | #6502, #6555 |
|
||||
| Personas | Maya Media |
|
||||
@@ -91,63 +48,39 @@
|
||||
| Input | mouse, keyboard |
|
||||
| Widget kinds | None |
|
||||
| Artifact directory | [/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-06](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-06) |
|
||||
| Candidate SHA | f57a660088d6777c86aca22977354fa8b810e2be |
|
||||
| URL / actual port | http://127.0.0.1:46777 / 46777 |
|
||||
| Runtime profile / flags | degraded; DEMO_MODE=true, DEMO_READ_ONLY=false, UNSAFE_ENABLE_MOCK_INTEGRATION=true |
|
||||
| Executed persona | Maya Media |
|
||||
| Browser session ID | qa-v2-whole-product-06 |
|
||||
| Timestamp | 2026-08-31T17:50:42.531Z |
|
||||
| Executed viewport / input / zoom | desktop-1440 / mouse / 100% |
|
||||
| Candidate SHA | 2d5edf46513b96c8b9f973d4a121b396d688e9bb |
|
||||
| URL / actual port | not-recorded |
|
||||
| Runtime profile / flags | not-recorded |
|
||||
| Executed persona | not-recorded |
|
||||
| Browser session ID | not-recorded |
|
||||
| Timestamp | not-recorded |
|
||||
| Executed viewport / input / zoom | not-recorded |
|
||||
|
||||
## Dogfood evidence
|
||||
|
||||
| Case ID | Status | Evidence | Observed | Expected |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| WP-006-JOURNEY | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-06) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Complete the persona journey across all assigned boards and profiles without bypassing product navigation. |
|
||||
| WP-006-THRESHOLDS | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-06) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Repeat critical steps across every assigned viewport, zoom, and input and inspect clipping, overflow, and focus. |
|
||||
| WP-006-PERSISTENCE-ACCESS | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-06) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify mutations persist and role, outsider, permission, and read-only boundaries remain intact. |
|
||||
| WP-006-FAILURE-EVIDENCE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-06) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Exercise applicable cancellation, degraded, retry, cleanup, console, network, and timestamped artifact evidence. |
|
||||
| WP-006-JOURNEY | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-06/WP-006-JOURNEY.png) | Not executed | Complete the persona journey across all assigned boards and profiles without bypassing product navigation. |
|
||||
| WP-006-THRESHOLDS | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-06/WP-006-THRESHOLDS.png) | Not executed | Repeat critical steps across every assigned viewport, zoom, and input and inspect clipping, overflow, and focus. |
|
||||
| WP-006-PERSISTENCE-ACCESS | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-06/WP-006-PERSISTENCE-ACCESS.png) | Not executed | Verify mutations persist and role, outsider, permission, and read-only boundaries remain intact. |
|
||||
| WP-006-FAILURE-EVIDENCE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-06/WP-006-FAILURE-EVIDENCE.png) | Not executed | Exercise applicable cancellation, degraded, retry, cleanup, console, network, and timestamped artifact evidence. |
|
||||
|
||||
## Performance measurements and limitations
|
||||
|
||||
No valid feature timing could be recorded because no application document rendered. Cold/warm, polling, rendering, memory, and recovery measurements remain blocked.
|
||||
Record structured measurements in `performance.measurements` with units, thresholds, status, and evidence. Record every environmental or tooling limitation in `performance.limitations`; leave measurements empty instead of inventing a result.
|
||||
|
||||
## Independent reproductions
|
||||
|
||||
The common routing failure was independently reproduced by qa-v2-preflight-01; the corresponding tracked packet contains its own browser evidence.
|
||||
Record a second agent's result in `independentReproductions` with the finding fingerprint, agent ID, outcome, evidence, and notes. An unattempted reproduction remains `not-reached`.
|
||||
|
||||
## Findings
|
||||
|
||||
### RV2-P1-001 — P1: locale rewrite causes an infinite browser redirect
|
||||
|
||||
Preconditions: candidate f57a660088d6777c86aca22977354fa8b810e2be, degraded, desktop-1440, 100% zoom, mouse, fresh named Chromium session qa-v2-whole-product-06.
|
||||
|
||||
1. Launch a fresh Chromium context with the Chromium argument --no-sandbox.
|
||||
2. Set the assigned viewport and open http://127.0.0.1:46777 or its authentication entry.
|
||||
3. Observe repeated document requests to the same route.
|
||||
4. Wait until Chromium displays ERR_TOO_MANY_REDIRECTS or chrome-error://chromewebdata/.
|
||||
5. Compare the result with the independently reproduced preflight evidence.
|
||||
|
||||
Expected: the application renders the assigned entry, permitting authentication and the packet flow. Actual: the redirect loop prevents the application from rendering. Reproducibility: reproduced independently by the preflight agents. Console output was empty; network and visual evidence are linked below.
|
||||
|
||||
## Artifacts
|
||||
|
||||
- [console-scoped-sanitized.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-06/console-scoped-sanitized.txt)
|
||||
- [entry-blocked-annotated.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-06/entry-blocked-annotated.png)
|
||||
- [entry-blocked-snapshot.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-06/entry-blocked-snapshot.txt)
|
||||
- [entry-title.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-06/entry-title.txt)
|
||||
- [entry-url.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-06/entry-url.txt)
|
||||
- [errors-scoped-sanitized.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-06/errors-scoped-sanitized.txt)
|
||||
- [network-scoped-sanitized.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-06/network-scoped-sanitized.txt)
|
||||
|
||||
## Mutations and persistence
|
||||
|
||||
No credentials were submitted and no product mutation occurred. Reload and fresh-session retries reproduced the routing failure, so application persistence was not reachable.
|
||||
No findings recorded. Add structured findings to the metadata block and mirror them here.
|
||||
|
||||
## Blockers and gaps
|
||||
|
||||
Every non-evidence case listed as blocked remains untested beyond the routing entry. No blocked cell is treated as passed.
|
||||
Not executed.
|
||||
|
||||
## Cleanup
|
||||
|
||||
The named browser session was closed by the browser agent. Artifacts remain under the untracked packet directory; no secret values were captured.
|
||||
Record created resources, cleanup outcome, console errors, and network failures. Never include secret values.
|
||||
@@ -1,79 +1,35 @@
|
||||
<!-- release-v2-qa-report
|
||||
{
|
||||
"packetId": "whole-product-07",
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"caseStatuses": {
|
||||
"WP-007-JOURNEY": "blocked",
|
||||
"WP-007-THRESHOLDS": "blocked",
|
||||
"WP-007-PERSISTENCE-ACCESS": "blocked",
|
||||
"WP-007-FAILURE-EVIDENCE": "blocked"
|
||||
"WP-007-JOURNEY": "not-reached",
|
||||
"WP-007-THRESHOLDS": "not-reached",
|
||||
"WP-007-PERSISTENCE-ACCESS": "not-reached",
|
||||
"WP-007-FAILURE-EVIDENCE": "not-reached"
|
||||
},
|
||||
"execution": {
|
||||
"candidateSha": "f57a660088d6777c86aca22977354fa8b810e2be",
|
||||
"url": "http://127.0.0.1:46777",
|
||||
"actualPort": 46777,
|
||||
"runtimeProfile": "degraded",
|
||||
"runtimeFlags": [
|
||||
"DEMO_MODE=true",
|
||||
"DEMO_READ_ONLY=false",
|
||||
"UNSAFE_ENABLE_MOCK_INTEGRATION=true"
|
||||
],
|
||||
"persona": "Ingrid Infra",
|
||||
"sessionId": "qa-v2-whole-product-07",
|
||||
"timestamp": "2026-08-31T17:55:10.068Z",
|
||||
"viewport": "desktop-1920",
|
||||
"input": "mouse",
|
||||
"zoom": 100
|
||||
"candidateSha": "2d5edf46513b96c8b9f973d4a121b396d688e9bb",
|
||||
"url": null,
|
||||
"actualPort": null,
|
||||
"runtimeProfile": null,
|
||||
"runtimeFlags": [],
|
||||
"persona": null,
|
||||
"sessionId": null,
|
||||
"timestamp": null,
|
||||
"viewport": null,
|
||||
"input": null,
|
||||
"zoom": null
|
||||
},
|
||||
"findings": [
|
||||
{
|
||||
"id": "RV2-P1-001",
|
||||
"fingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"severity": "P1",
|
||||
"area": "routing/authentication",
|
||||
"title": "Locale rewrite causes an infinite browser redirect before the application renders",
|
||||
"summary": "Chromium repeatedly requests the same entry route and ends on ERR_TOO_MANY_REDIRECTS, preventing the assigned browser flow.",
|
||||
"caseIds": [
|
||||
"WP-007-JOURNEY",
|
||||
"WP-007-THRESHOLDS",
|
||||
"WP-007-PERSISTENCE-ACCESS",
|
||||
"WP-007-FAILURE-EVIDENCE"
|
||||
],
|
||||
"evidence": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-07/entry-1920x1080-100-mouse-after-reload.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-07/entry-1920x1080-100-mouse-viewport.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-07/entry-1920x1080-100-mouse.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-07/network.txt"
|
||||
]
|
||||
}
|
||||
],
|
||||
"artifacts": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-07/console.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-07/entry-1920x1080-100-mouse-after-reload.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-07/entry-1920x1080-100-mouse-viewport.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-07/entry-1920x1080-100-mouse.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-07/errors.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-07/network.txt"
|
||||
],
|
||||
"findings": [],
|
||||
"artifacts": [],
|
||||
"widgetChecks": [],
|
||||
"performance": {
|
||||
"measurements": [],
|
||||
"limitations": [
|
||||
"The application never rendered, so assigned feature, mutation, persistence, permission, viewport, and performance checks were blocked.",
|
||||
"No credentials were submitted and no product state was mutated.",
|
||||
"The packet's retry did not produce a separate artifact; the same finding has independent reproductions in the preflight reports."
|
||||
]
|
||||
"limitations": []
|
||||
},
|
||||
"independentReproductions": [
|
||||
{
|
||||
"findingFingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"agentId": "qa-v2-preflight-01",
|
||||
"outcome": "reproduced",
|
||||
"evidence": [],
|
||||
"notes": "See preflight-01 for an independent Luna Max reproduction."
|
||||
}
|
||||
],
|
||||
"notes": "Report-only black-box run. No defect was fixed and no secret was recorded."
|
||||
"independentReproductions": [],
|
||||
"notes": "Not executed."
|
||||
}
|
||||
-->
|
||||
|
||||
@@ -81,7 +37,7 @@
|
||||
|
||||
| Metadata | Value |
|
||||
| --- | --- |
|
||||
| Status | blocked |
|
||||
| Status | not-reached |
|
||||
| Wave | whole-product |
|
||||
| PR refs | #6502, #6555 |
|
||||
| Personas | Ingrid Infra |
|
||||
@@ -92,62 +48,39 @@
|
||||
| Input | mouse, keyboard |
|
||||
| Widget kinds | None |
|
||||
| Artifact directory | [/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-07](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-07) |
|
||||
| Candidate SHA | f57a660088d6777c86aca22977354fa8b810e2be |
|
||||
| URL / actual port | http://127.0.0.1:46777 / 46777 |
|
||||
| Runtime profile / flags | degraded; DEMO_MODE=true, DEMO_READ_ONLY=false, UNSAFE_ENABLE_MOCK_INTEGRATION=true |
|
||||
| Executed persona | Ingrid Infra |
|
||||
| Browser session ID | qa-v2-whole-product-07 |
|
||||
| Timestamp | 2026-08-31T17:55:10.068Z |
|
||||
| Executed viewport / input / zoom | desktop-1920 / mouse / 100% |
|
||||
| Candidate SHA | 2d5edf46513b96c8b9f973d4a121b396d688e9bb |
|
||||
| URL / actual port | not-recorded |
|
||||
| Runtime profile / flags | not-recorded |
|
||||
| Executed persona | not-recorded |
|
||||
| Browser session ID | not-recorded |
|
||||
| Timestamp | not-recorded |
|
||||
| Executed viewport / input / zoom | not-recorded |
|
||||
|
||||
## Dogfood evidence
|
||||
|
||||
| Case ID | Status | Evidence | Observed | Expected |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| WP-007-JOURNEY | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-07) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Complete the persona journey across all assigned boards and profiles without bypassing product navigation. |
|
||||
| WP-007-THRESHOLDS | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-07) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Repeat critical steps across every assigned viewport, zoom, and input and inspect clipping, overflow, and focus. |
|
||||
| WP-007-PERSISTENCE-ACCESS | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-07) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify mutations persist and role, outsider, permission, and read-only boundaries remain intact. |
|
||||
| WP-007-FAILURE-EVIDENCE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-07) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Exercise applicable cancellation, degraded, retry, cleanup, console, network, and timestamped artifact evidence. |
|
||||
| WP-007-JOURNEY | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-07/WP-007-JOURNEY.png) | Not executed | Complete the persona journey across all assigned boards and profiles without bypassing product navigation. |
|
||||
| WP-007-THRESHOLDS | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-07/WP-007-THRESHOLDS.png) | Not executed | Repeat critical steps across every assigned viewport, zoom, and input and inspect clipping, overflow, and focus. |
|
||||
| WP-007-PERSISTENCE-ACCESS | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-07/WP-007-PERSISTENCE-ACCESS.png) | Not executed | Verify mutations persist and role, outsider, permission, and read-only boundaries remain intact. |
|
||||
| WP-007-FAILURE-EVIDENCE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-07/WP-007-FAILURE-EVIDENCE.png) | Not executed | Exercise applicable cancellation, degraded, retry, cleanup, console, network, and timestamped artifact evidence. |
|
||||
|
||||
## Performance measurements and limitations
|
||||
|
||||
No valid feature timing could be recorded because no application document rendered. Cold/warm, polling, rendering, memory, and recovery measurements remain blocked.
|
||||
Record structured measurements in `performance.measurements` with units, thresholds, status, and evidence. Record every environmental or tooling limitation in `performance.limitations`; leave measurements empty instead of inventing a result.
|
||||
|
||||
## Independent reproductions
|
||||
|
||||
The common routing failure was independently reproduced by qa-v2-preflight-01; the corresponding tracked packet contains its own browser evidence.
|
||||
Record a second agent's result in `independentReproductions` with the finding fingerprint, agent ID, outcome, evidence, and notes. An unattempted reproduction remains `not-reached`.
|
||||
|
||||
## Findings
|
||||
|
||||
### RV2-P1-001 — P1: locale rewrite causes an infinite browser redirect
|
||||
|
||||
Preconditions: candidate f57a660088d6777c86aca22977354fa8b810e2be, degraded, desktop-1920, 100% zoom, mouse, fresh named Chromium session qa-v2-whole-product-07.
|
||||
|
||||
1. Launch a fresh Chromium context with the Chromium argument --no-sandbox.
|
||||
2. Set the assigned viewport and open http://127.0.0.1:46777 or its authentication entry.
|
||||
3. Observe repeated document requests to the same route.
|
||||
4. Wait until Chromium displays ERR_TOO_MANY_REDIRECTS or chrome-error://chromewebdata/.
|
||||
5. Compare the result with the independently reproduced preflight evidence.
|
||||
|
||||
Expected: the application renders the assigned entry, permitting authentication and the packet flow. Actual: the redirect loop prevents the application from rendering. Reproducibility: reproduced independently by the preflight agents. Console output was empty; network and visual evidence are linked below.
|
||||
|
||||
## Artifacts
|
||||
|
||||
- [console.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-07/console.txt)
|
||||
- [entry-1920x1080-100-mouse-after-reload.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-07/entry-1920x1080-100-mouse-after-reload.png)
|
||||
- [entry-1920x1080-100-mouse-viewport.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-07/entry-1920x1080-100-mouse-viewport.png)
|
||||
- [entry-1920x1080-100-mouse.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-07/entry-1920x1080-100-mouse.png)
|
||||
- [errors.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-07/errors.txt)
|
||||
- [network.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-07/network.txt)
|
||||
|
||||
## Mutations and persistence
|
||||
|
||||
No credentials were submitted and no product mutation occurred. Reload and fresh-session retries reproduced the routing failure, so application persistence was not reachable.
|
||||
No findings recorded. Add structured findings to the metadata block and mirror them here.
|
||||
|
||||
## Blockers and gaps
|
||||
|
||||
Every non-evidence case listed as blocked remains untested beyond the routing entry. No blocked cell is treated as passed.
|
||||
Not executed.
|
||||
|
||||
## Cleanup
|
||||
|
||||
The named browser session was closed by the browser agent. Artifacts remain under the untracked packet directory; no secret values were captured.
|
||||
Record created resources, cleanup outcome, console errors, and network failures. Never include secret values.
|
||||
@@ -1,78 +1,35 @@
|
||||
<!-- release-v2-qa-report
|
||||
{
|
||||
"packetId": "whole-product-08",
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"caseStatuses": {
|
||||
"WP-008-JOURNEY": "blocked",
|
||||
"WP-008-THRESHOLDS": "blocked",
|
||||
"WP-008-PERSISTENCE-ACCESS": "blocked",
|
||||
"WP-008-FAILURE-EVIDENCE": "blocked"
|
||||
"WP-008-JOURNEY": "not-reached",
|
||||
"WP-008-THRESHOLDS": "not-reached",
|
||||
"WP-008-PERSISTENCE-ACCESS": "not-reached",
|
||||
"WP-008-FAILURE-EVIDENCE": "not-reached"
|
||||
},
|
||||
"execution": {
|
||||
"candidateSha": "f57a660088d6777c86aca22977354fa8b810e2be",
|
||||
"url": "http://127.0.0.1:46777",
|
||||
"actualPort": 46777,
|
||||
"runtimeProfile": "degraded",
|
||||
"runtimeFlags": [
|
||||
"DEMO_MODE=true",
|
||||
"DEMO_READ_ONLY=false",
|
||||
"UNSAFE_ENABLE_MOCK_INTEGRATION=true"
|
||||
],
|
||||
"persona": "Cora Creator",
|
||||
"sessionId": "qa-v2-whole-product-08",
|
||||
"timestamp": "2026-08-31T18:00:33.334Z",
|
||||
"viewport": "mobile-375",
|
||||
"input": "mouse",
|
||||
"zoom": 100
|
||||
"candidateSha": "2d5edf46513b96c8b9f973d4a121b396d688e9bb",
|
||||
"url": null,
|
||||
"actualPort": null,
|
||||
"runtimeProfile": null,
|
||||
"runtimeFlags": [],
|
||||
"persona": null,
|
||||
"sessionId": null,
|
||||
"timestamp": null,
|
||||
"viewport": null,
|
||||
"input": null,
|
||||
"zoom": null
|
||||
},
|
||||
"findings": [
|
||||
{
|
||||
"id": "RV2-P1-001",
|
||||
"fingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"severity": "P1",
|
||||
"area": "routing/authentication",
|
||||
"title": "Locale rewrite causes an infinite browser redirect before the application renders",
|
||||
"summary": "Chromium repeatedly requests the same entry route and ends on ERR_TOO_MANY_REDIRECTS, preventing the assigned browser flow.",
|
||||
"caseIds": [
|
||||
"WP-008-JOURNEY",
|
||||
"WP-008-THRESHOLDS",
|
||||
"WP-008-PERSISTENCE-ACCESS",
|
||||
"WP-008-FAILURE-EVIDENCE"
|
||||
],
|
||||
"evidence": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-08/entry-375x812-100-mouse.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-08/network-scoped.txt"
|
||||
]
|
||||
}
|
||||
],
|
||||
"artifacts": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-08/console-scoped.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-08/entry-375x812-100-mouse.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-08/entry-title.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-08/entry-url.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-08/errors-scoped.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-08/network-scoped.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-08/session-info.json"
|
||||
],
|
||||
"findings": [],
|
||||
"artifacts": [],
|
||||
"widgetChecks": [],
|
||||
"performance": {
|
||||
"measurements": [],
|
||||
"limitations": [
|
||||
"The application never rendered, so assigned feature, mutation, persistence, permission, viewport, and performance checks were blocked.",
|
||||
"No credentials were submitted and no product state was mutated.",
|
||||
"The packet's retry did not produce a separate artifact; the same finding has independent reproductions in the preflight reports."
|
||||
]
|
||||
"limitations": []
|
||||
},
|
||||
"independentReproductions": [
|
||||
{
|
||||
"findingFingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"agentId": "qa-v2-preflight-01",
|
||||
"outcome": "reproduced",
|
||||
"evidence": [],
|
||||
"notes": "See preflight-01 for an independent Luna Max reproduction."
|
||||
}
|
||||
],
|
||||
"notes": "Report-only black-box run. No defect was fixed and no secret was recorded."
|
||||
"independentReproductions": [],
|
||||
"notes": "Not executed."
|
||||
}
|
||||
-->
|
||||
|
||||
@@ -80,7 +37,7 @@
|
||||
|
||||
| Metadata | Value |
|
||||
| --- | --- |
|
||||
| Status | blocked |
|
||||
| Status | not-reached |
|
||||
| Wave | whole-product |
|
||||
| PR refs | #6356, #6482 |
|
||||
| Personas | Cora Creator, Ash Assistant |
|
||||
@@ -91,63 +48,39 @@
|
||||
| Input | mouse, touch, keyboard |
|
||||
| Widget kinds | None |
|
||||
| Artifact directory | [/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-08](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-08) |
|
||||
| Candidate SHA | f57a660088d6777c86aca22977354fa8b810e2be |
|
||||
| URL / actual port | http://127.0.0.1:46777 / 46777 |
|
||||
| Runtime profile / flags | degraded; DEMO_MODE=true, DEMO_READ_ONLY=false, UNSAFE_ENABLE_MOCK_INTEGRATION=true |
|
||||
| Executed persona | Cora Creator |
|
||||
| Browser session ID | qa-v2-whole-product-08 |
|
||||
| Timestamp | 2026-08-31T18:00:33.334Z |
|
||||
| Executed viewport / input / zoom | mobile-375 / mouse / 100% |
|
||||
| Candidate SHA | 2d5edf46513b96c8b9f973d4a121b396d688e9bb |
|
||||
| URL / actual port | not-recorded |
|
||||
| Runtime profile / flags | not-recorded |
|
||||
| Executed persona | not-recorded |
|
||||
| Browser session ID | not-recorded |
|
||||
| Timestamp | not-recorded |
|
||||
| Executed viewport / input / zoom | not-recorded |
|
||||
|
||||
## Dogfood evidence
|
||||
|
||||
| Case ID | Status | Evidence | Observed | Expected |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| WP-008-JOURNEY | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-08) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Complete the persona journey across all assigned boards and profiles without bypassing product navigation. |
|
||||
| WP-008-THRESHOLDS | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-08) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Repeat critical steps across every assigned viewport, zoom, and input and inspect clipping, overflow, and focus. |
|
||||
| WP-008-PERSISTENCE-ACCESS | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-08) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify mutations persist and role, outsider, permission, and read-only boundaries remain intact. |
|
||||
| WP-008-FAILURE-EVIDENCE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-08) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Exercise applicable cancellation, degraded, retry, cleanup, console, network, and timestamped artifact evidence. |
|
||||
| WP-008-JOURNEY | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-08/WP-008-JOURNEY.png) | Not executed | Complete the persona journey across all assigned boards and profiles without bypassing product navigation. |
|
||||
| WP-008-THRESHOLDS | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-08/WP-008-THRESHOLDS.png) | Not executed | Repeat critical steps across every assigned viewport, zoom, and input and inspect clipping, overflow, and focus. |
|
||||
| WP-008-PERSISTENCE-ACCESS | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-08/WP-008-PERSISTENCE-ACCESS.png) | Not executed | Verify mutations persist and role, outsider, permission, and read-only boundaries remain intact. |
|
||||
| WP-008-FAILURE-EVIDENCE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-08/WP-008-FAILURE-EVIDENCE.png) | Not executed | Exercise applicable cancellation, degraded, retry, cleanup, console, network, and timestamped artifact evidence. |
|
||||
|
||||
## Performance measurements and limitations
|
||||
|
||||
No valid feature timing could be recorded because no application document rendered. Cold/warm, polling, rendering, memory, and recovery measurements remain blocked.
|
||||
Record structured measurements in `performance.measurements` with units, thresholds, status, and evidence. Record every environmental or tooling limitation in `performance.limitations`; leave measurements empty instead of inventing a result.
|
||||
|
||||
## Independent reproductions
|
||||
|
||||
The common routing failure was independently reproduced by qa-v2-preflight-01; the corresponding tracked packet contains its own browser evidence.
|
||||
Record a second agent's result in `independentReproductions` with the finding fingerprint, agent ID, outcome, evidence, and notes. An unattempted reproduction remains `not-reached`.
|
||||
|
||||
## Findings
|
||||
|
||||
### RV2-P1-001 — P1: locale rewrite causes an infinite browser redirect
|
||||
|
||||
Preconditions: candidate f57a660088d6777c86aca22977354fa8b810e2be, degraded, mobile-375, 100% zoom, mouse, fresh named Chromium session qa-v2-whole-product-08.
|
||||
|
||||
1. Launch a fresh Chromium context with the Chromium argument --no-sandbox.
|
||||
2. Set the assigned viewport and open http://127.0.0.1:46777 or its authentication entry.
|
||||
3. Observe repeated document requests to the same route.
|
||||
4. Wait until Chromium displays ERR_TOO_MANY_REDIRECTS or chrome-error://chromewebdata/.
|
||||
5. Compare the result with the independently reproduced preflight evidence.
|
||||
|
||||
Expected: the application renders the assigned entry, permitting authentication and the packet flow. Actual: the redirect loop prevents the application from rendering. Reproducibility: reproduced independently by the preflight agents. Console output was empty; network and visual evidence are linked below.
|
||||
|
||||
## Artifacts
|
||||
|
||||
- [console-scoped.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-08/console-scoped.txt)
|
||||
- [entry-375x812-100-mouse.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-08/entry-375x812-100-mouse.png)
|
||||
- [entry-title.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-08/entry-title.txt)
|
||||
- [entry-url.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-08/entry-url.txt)
|
||||
- [errors-scoped.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-08/errors-scoped.txt)
|
||||
- [network-scoped.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-08/network-scoped.txt)
|
||||
- [session-info.json](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-08/session-info.json)
|
||||
|
||||
## Mutations and persistence
|
||||
|
||||
No credentials were submitted and no product mutation occurred. Reload and fresh-session retries reproduced the routing failure, so application persistence was not reachable.
|
||||
No findings recorded. Add structured findings to the metadata block and mirror them here.
|
||||
|
||||
## Blockers and gaps
|
||||
|
||||
Every non-evidence case listed as blocked remains untested beyond the routing entry. No blocked cell is treated as passed.
|
||||
Not executed.
|
||||
|
||||
## Cleanup
|
||||
|
||||
The named browser session was closed by the browser agent. Artifacts remain under the untracked packet directory; no secret values were captured.
|
||||
Record created resources, cleanup outcome, console errors, and network failures. Never include secret values.
|
||||
@@ -1,75 +1,35 @@
|
||||
<!-- release-v2-qa-report
|
||||
{
|
||||
"packetId": "whole-product-09",
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"caseStatuses": {
|
||||
"WP-009-JOURNEY": "blocked",
|
||||
"WP-009-THRESHOLDS": "blocked",
|
||||
"WP-009-PERSISTENCE-ACCESS": "blocked",
|
||||
"WP-009-FAILURE-EVIDENCE": "blocked"
|
||||
"WP-009-JOURNEY": "not-reached",
|
||||
"WP-009-THRESHOLDS": "not-reached",
|
||||
"WP-009-PERSISTENCE-ACCESS": "not-reached",
|
||||
"WP-009-FAILURE-EVIDENCE": "not-reached"
|
||||
},
|
||||
"execution": {
|
||||
"candidateSha": "f57a660088d6777c86aca22977354fa8b810e2be",
|
||||
"url": "http://127.0.0.1:46777",
|
||||
"actualPort": 46777,
|
||||
"runtimeProfile": "degraded",
|
||||
"runtimeFlags": [
|
||||
"DEMO_MODE=true",
|
||||
"DEMO_READ_ONLY=false",
|
||||
"UNSAFE_ENABLE_MOCK_INTEGRATION=true"
|
||||
],
|
||||
"persona": "Kira Keyboard",
|
||||
"sessionId": "qa-v2-whole-product-09",
|
||||
"timestamp": "2026-08-31T18:05:08.871Z",
|
||||
"viewport": "mobile-320",
|
||||
"input": "keyboard",
|
||||
"zoom": 100
|
||||
"candidateSha": "2d5edf46513b96c8b9f973d4a121b396d688e9bb",
|
||||
"url": null,
|
||||
"actualPort": null,
|
||||
"runtimeProfile": null,
|
||||
"runtimeFlags": [],
|
||||
"persona": null,
|
||||
"sessionId": null,
|
||||
"timestamp": null,
|
||||
"viewport": null,
|
||||
"input": null,
|
||||
"zoom": null
|
||||
},
|
||||
"findings": [
|
||||
{
|
||||
"id": "RV2-P1-001",
|
||||
"fingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"severity": "P1",
|
||||
"area": "routing/authentication",
|
||||
"title": "Locale rewrite causes an infinite browser redirect before the application renders",
|
||||
"summary": "Chromium repeatedly requests the same entry route and ends on ERR_TOO_MANY_REDIRECTS, preventing the assigned browser flow.",
|
||||
"caseIds": [
|
||||
"WP-009-JOURNEY",
|
||||
"WP-009-THRESHOLDS",
|
||||
"WP-009-PERSISTENCE-ACCESS",
|
||||
"WP-009-FAILURE-EVIDENCE"
|
||||
],
|
||||
"evidence": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-09/entry-320x568-100-keyboard.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-09/network-320x568-100-scoped.txt"
|
||||
]
|
||||
}
|
||||
],
|
||||
"artifacts": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-09/console-320x568-100-scoped.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-09/entry-320x568-100-keyboard.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-09/errors-320x568-100-scoped.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-09/network-320x568-100-scoped.txt"
|
||||
],
|
||||
"findings": [],
|
||||
"artifacts": [],
|
||||
"widgetChecks": [],
|
||||
"performance": {
|
||||
"measurements": [],
|
||||
"limitations": [
|
||||
"The application never rendered, so assigned feature, mutation, persistence, permission, viewport, and performance checks were blocked.",
|
||||
"No credentials were submitted and no product state was mutated.",
|
||||
"The packet's retry did not produce a separate artifact; the same finding has independent reproductions in the preflight reports."
|
||||
]
|
||||
"limitations": []
|
||||
},
|
||||
"independentReproductions": [
|
||||
{
|
||||
"findingFingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"agentId": "qa-v2-preflight-01",
|
||||
"outcome": "reproduced",
|
||||
"evidence": [],
|
||||
"notes": "See preflight-01 for an independent Luna Max reproduction."
|
||||
}
|
||||
],
|
||||
"notes": "Report-only black-box run. No defect was fixed and no secret was recorded."
|
||||
"independentReproductions": [],
|
||||
"notes": "Not executed."
|
||||
}
|
||||
-->
|
||||
|
||||
@@ -77,7 +37,7 @@
|
||||
|
||||
| Metadata | Value |
|
||||
| --- | --- |
|
||||
| Status | blocked |
|
||||
| Status | not-reached |
|
||||
| Wave | whole-product |
|
||||
| PR refs | #6356, #6503, #6502, #6450, #6482, #6569, #6545 |
|
||||
| Personas | Kira Keyboard, Casey Chaos |
|
||||
@@ -88,60 +48,39 @@
|
||||
| Input | keyboard |
|
||||
| Widget kinds | None |
|
||||
| Artifact directory | [/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-09](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-09) |
|
||||
| Candidate SHA | f57a660088d6777c86aca22977354fa8b810e2be |
|
||||
| URL / actual port | http://127.0.0.1:46777 / 46777 |
|
||||
| Runtime profile / flags | degraded; DEMO_MODE=true, DEMO_READ_ONLY=false, UNSAFE_ENABLE_MOCK_INTEGRATION=true |
|
||||
| Executed persona | Kira Keyboard |
|
||||
| Browser session ID | qa-v2-whole-product-09 |
|
||||
| Timestamp | 2026-08-31T18:05:08.871Z |
|
||||
| Executed viewport / input / zoom | mobile-320 / keyboard / 100% |
|
||||
| Candidate SHA | 2d5edf46513b96c8b9f973d4a121b396d688e9bb |
|
||||
| URL / actual port | not-recorded |
|
||||
| Runtime profile / flags | not-recorded |
|
||||
| Executed persona | not-recorded |
|
||||
| Browser session ID | not-recorded |
|
||||
| Timestamp | not-recorded |
|
||||
| Executed viewport / input / zoom | not-recorded |
|
||||
|
||||
## Dogfood evidence
|
||||
|
||||
| Case ID | Status | Evidence | Observed | Expected |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| WP-009-JOURNEY | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-09) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Complete the persona journey across all assigned boards and profiles without bypassing product navigation. |
|
||||
| WP-009-THRESHOLDS | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-09) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Repeat critical steps across every assigned viewport, zoom, and input and inspect clipping, overflow, and focus. |
|
||||
| WP-009-PERSISTENCE-ACCESS | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-09) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify mutations persist and role, outsider, permission, and read-only boundaries remain intact. |
|
||||
| WP-009-FAILURE-EVIDENCE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-09) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Exercise applicable cancellation, degraded, retry, cleanup, console, network, and timestamped artifact evidence. |
|
||||
| WP-009-JOURNEY | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-09/WP-009-JOURNEY.png) | Not executed | Complete the persona journey across all assigned boards and profiles without bypassing product navigation. |
|
||||
| WP-009-THRESHOLDS | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-09/WP-009-THRESHOLDS.png) | Not executed | Repeat critical steps across every assigned viewport, zoom, and input and inspect clipping, overflow, and focus. |
|
||||
| WP-009-PERSISTENCE-ACCESS | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-09/WP-009-PERSISTENCE-ACCESS.png) | Not executed | Verify mutations persist and role, outsider, permission, and read-only boundaries remain intact. |
|
||||
| WP-009-FAILURE-EVIDENCE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-09/WP-009-FAILURE-EVIDENCE.png) | Not executed | Exercise applicable cancellation, degraded, retry, cleanup, console, network, and timestamped artifact evidence. |
|
||||
|
||||
## Performance measurements and limitations
|
||||
|
||||
No valid feature timing could be recorded because no application document rendered. Cold/warm, polling, rendering, memory, and recovery measurements remain blocked.
|
||||
Record structured measurements in `performance.measurements` with units, thresholds, status, and evidence. Record every environmental or tooling limitation in `performance.limitations`; leave measurements empty instead of inventing a result.
|
||||
|
||||
## Independent reproductions
|
||||
|
||||
The common routing failure was independently reproduced by qa-v2-preflight-01; the corresponding tracked packet contains its own browser evidence.
|
||||
Record a second agent's result in `independentReproductions` with the finding fingerprint, agent ID, outcome, evidence, and notes. An unattempted reproduction remains `not-reached`.
|
||||
|
||||
## Findings
|
||||
|
||||
### RV2-P1-001 — P1: locale rewrite causes an infinite browser redirect
|
||||
|
||||
Preconditions: candidate f57a660088d6777c86aca22977354fa8b810e2be, degraded, mobile-320, 100% zoom, keyboard, fresh named Chromium session qa-v2-whole-product-09.
|
||||
|
||||
1. Launch a fresh Chromium context with the Chromium argument --no-sandbox.
|
||||
2. Set the assigned viewport and open http://127.0.0.1:46777 or its authentication entry.
|
||||
3. Observe repeated document requests to the same route.
|
||||
4. Wait until Chromium displays ERR_TOO_MANY_REDIRECTS or chrome-error://chromewebdata/.
|
||||
5. Compare the result with the independently reproduced preflight evidence.
|
||||
|
||||
Expected: the application renders the assigned entry, permitting authentication and the packet flow. Actual: the redirect loop prevents the application from rendering. Reproducibility: reproduced independently by the preflight agents. Console output was empty; network and visual evidence are linked below.
|
||||
|
||||
## Artifacts
|
||||
|
||||
- [console-320x568-100-scoped.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-09/console-320x568-100-scoped.txt)
|
||||
- [entry-320x568-100-keyboard.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-09/entry-320x568-100-keyboard.png)
|
||||
- [errors-320x568-100-scoped.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-09/errors-320x568-100-scoped.txt)
|
||||
- [network-320x568-100-scoped.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/whole-product-09/network-320x568-100-scoped.txt)
|
||||
|
||||
## Mutations and persistence
|
||||
|
||||
No credentials were submitted and no product mutation occurred. Reload and fresh-session retries reproduced the routing failure, so application persistence was not reachable.
|
||||
No findings recorded. Add structured findings to the metadata block and mirror them here.
|
||||
|
||||
## Blockers and gaps
|
||||
|
||||
Every non-evidence case listed as blocked remains untested beyond the routing entry. No blocked cell is treated as passed.
|
||||
Not executed.
|
||||
|
||||
## Cleanup
|
||||
|
||||
The named browser session was closed by the browser agent. Artifacts remain under the untracked packet directory; no secret values were captured.
|
||||
Record created resources, cleanup outcome, console errors, and network failures. Never include secret values.
|
||||
@@ -1,369 +1,307 @@
|
||||
<!-- release-v2-qa-report
|
||||
{
|
||||
"packetId": "widgets-01",
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"caseStatuses": {
|
||||
"WG-001-RENDER-SIZE": "blocked",
|
||||
"WG-001-STATES-RECOVERY": "blocked",
|
||||
"WG-001-OPTIONS-PERSISTENCE": "blocked",
|
||||
"WG-001-ACCESS-READONLY": "blocked",
|
||||
"WG-001-EVIDENCE": "blocked"
|
||||
"WG-001-RENDER-SIZE": "not-reached",
|
||||
"WG-001-STATES-RECOVERY": "not-reached",
|
||||
"WG-001-OPTIONS-PERSISTENCE": "not-reached",
|
||||
"WG-001-ACCESS-READONLY": "not-reached",
|
||||
"WG-001-EVIDENCE": "not-reached"
|
||||
},
|
||||
"execution": {
|
||||
"candidateSha": "f57a660088d6777c86aca22977354fa8b810e2be",
|
||||
"url": "http://127.0.0.1:37137",
|
||||
"actualPort": 37137,
|
||||
"runtimeProfile": "main-writable",
|
||||
"runtimeFlags": [
|
||||
"DEMO_MODE=true",
|
||||
"DEMO_READ_ONLY=false",
|
||||
"UNSAFE_ENABLE_MOCK_INTEGRATION=true"
|
||||
],
|
||||
"persona": "Brooke Minimalist",
|
||||
"sessionId": "qa-v2-widgets-01",
|
||||
"timestamp": "2026-08-31T15:54:37.376Z",
|
||||
"viewport": "mobile-320",
|
||||
"input": "mouse",
|
||||
"zoom": 100
|
||||
"candidateSha": "2d5edf46513b96c8b9f973d4a121b396d688e9bb",
|
||||
"url": null,
|
||||
"actualPort": null,
|
||||
"runtimeProfile": null,
|
||||
"runtimeFlags": [],
|
||||
"persona": null,
|
||||
"sessionId": null,
|
||||
"timestamp": null,
|
||||
"viewport": null,
|
||||
"input": null,
|
||||
"zoom": null
|
||||
},
|
||||
"findings": [
|
||||
{
|
||||
"id": "RV2-P1-001",
|
||||
"fingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"severity": "P1",
|
||||
"area": "routing/authentication",
|
||||
"title": "Locale rewrite causes an infinite browser redirect before the application renders",
|
||||
"summary": "A fresh Chromium session repeatedly requests the same entry route and ends on ERR_TOO_MANY_REDIRECTS, preventing the assigned browser flow.",
|
||||
"caseIds": [
|
||||
"WG-001-RENDER-SIZE",
|
||||
"WG-001-STATES-RECOVERY",
|
||||
"WG-001-OPTIONS-PERSISTENCE",
|
||||
"WG-001-ACCESS-READONLY",
|
||||
"WG-001-EVIDENCE"
|
||||
],
|
||||
"evidence": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/initial-320x568-network-scoped.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/initial-320x568-network.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/initial-320x568-recorded-frame.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/initial-320x568.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/initial-320x568.webm",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/retry-320x568-network-before.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/retry-320x568-network-scoped.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/retry-320x568-network.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/retry-320x568.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/retry-320x568.webm"
|
||||
]
|
||||
}
|
||||
],
|
||||
"artifacts": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/initial-320x568-console-scoped.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/initial-320x568-console.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/initial-320x568-network-scoped.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/initial-320x568-network.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/initial-320x568-recorded-frame.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/initial-320x568-url.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/initial-320x568.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/initial-320x568.webm",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/retry-320x568-console-before.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/retry-320x568-console-scoped.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/retry-320x568-console.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/retry-320x568-network-before.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/retry-320x568-network-scoped.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/retry-320x568-network.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/retry-320x568-url.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/retry-320x568.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/retry-320x568.webm"
|
||||
],
|
||||
"findings": [],
|
||||
"artifacts": [],
|
||||
"widgetChecks": [
|
||||
{
|
||||
"widgetKind": "clock",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "clock",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "clock",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "clock",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "clock",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "clock",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "clock",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "clock",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "clock",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "weather",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "weather",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "weather",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "weather",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "weather",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "weather",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "weather",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "weather",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "weather",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "airQuality",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "airQuality",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "airQuality",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "airQuality",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "airQuality",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "airQuality",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "airQuality",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "airQuality",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "airQuality",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "countdown",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "countdown",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "countdown",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "countdown",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "countdown",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "countdown",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "countdown",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "countdown",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "countdown",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "timer",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "timer",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "timer",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "timer",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "timer",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "timer",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "timer",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "timer",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "timer",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
}
|
||||
],
|
||||
"performance": {
|
||||
"measurements": [],
|
||||
"limitations": [
|
||||
"The application never rendered, so assigned feature, mutation, persistence, permission, viewport, and performance checks were blocked.",
|
||||
"No credentials were submitted and no product state was mutated.",
|
||||
"The finding was retried in a fresh Chromium context; console output was empty while document requests repeated until Chromium stopped the loop."
|
||||
]
|
||||
"limitations": []
|
||||
},
|
||||
"independentReproductions": [
|
||||
{
|
||||
"findingFingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"agentId": "qa-v2-preflight-01",
|
||||
"outcome": "reproduced",
|
||||
"evidence": [],
|
||||
"notes": "See preflight-01 for an independent Luna Max reproduction."
|
||||
}
|
||||
],
|
||||
"notes": "Report-only black-box run. No defect was fixed and no secret was recorded."
|
||||
"independentReproductions": [],
|
||||
"notes": "Not executed."
|
||||
}
|
||||
-->
|
||||
|
||||
@@ -371,7 +309,7 @@
|
||||
|
||||
| Metadata | Value |
|
||||
| --- | --- |
|
||||
| Status | blocked |
|
||||
| Status | not-reached |
|
||||
| Wave | widgets |
|
||||
| PR refs | #6502, #6555 |
|
||||
| Personas | Brooke Minimalist |
|
||||
@@ -382,124 +320,90 @@
|
||||
| Input | mouse, touch, keyboard |
|
||||
| Widget kinds | clock, weather, airQuality, countdown, timer |
|
||||
| Artifact directory | [/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01) |
|
||||
| Candidate SHA | f57a660088d6777c86aca22977354fa8b810e2be |
|
||||
| URL / actual port | http://127.0.0.1:37137 / 37137 |
|
||||
| Runtime profile / flags | main-writable; DEMO_MODE=true, DEMO_READ_ONLY=false, UNSAFE_ENABLE_MOCK_INTEGRATION=true |
|
||||
| Executed persona | Brooke Minimalist |
|
||||
| Browser session ID | qa-v2-widgets-01 |
|
||||
| Timestamp | 2026-08-31T15:54:37.376Z |
|
||||
| Executed viewport / input / zoom | mobile-320 / mouse / 100% |
|
||||
| Candidate SHA | 2d5edf46513b96c8b9f973d4a121b396d688e9bb |
|
||||
| URL / actual port | not-recorded |
|
||||
| Runtime profile / flags | not-recorded |
|
||||
| Executed persona | not-recorded |
|
||||
| Browser session ID | not-recorded |
|
||||
| Timestamp | not-recorded |
|
||||
| Executed viewport / input / zoom | not-recorded |
|
||||
|
||||
## Dogfood evidence
|
||||
|
||||
| Case ID | Status | Evidence | Observed | Expected |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| WG-001-RENDER-SIZE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Render every assigned widget kind at every assigned viewport and exercise default, minimum, maximum, and compact sizes where supported. |
|
||||
| WG-001-STATES-RECOVERY | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify loading, populated, empty, error, stale, retry, and recovered states for every assigned widget kind. |
|
||||
| WG-001-OPTIONS-PERSISTENCE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Mutate meaningful options, save, reload, reset, and confirm each assigned widget kind persists correctly. |
|
||||
| WG-001-ACCESS-READONLY | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify Owner, Editor, Viewer, missing-integration, permission-denied, and global read-only behavior for every assigned widget kind. |
|
||||
| WG-001-EVIDENCE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Capture screenshot, console, network, overflow, clipping, focus, and cleanup evidence for every kind and viewport row. |
|
||||
| WG-001-RENDER-SIZE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/WG-001-RENDER-SIZE.png) | Not executed | Render every assigned widget kind at every assigned viewport and exercise default, minimum, maximum, and compact sizes where supported. |
|
||||
| WG-001-STATES-RECOVERY | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/WG-001-STATES-RECOVERY.png) | Not executed | Verify loading, populated, empty, error, stale, retry, and recovered states for every assigned widget kind. |
|
||||
| WG-001-OPTIONS-PERSISTENCE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/WG-001-OPTIONS-PERSISTENCE.png) | Not executed | Mutate meaningful options, save, reload, reset, and confirm each assigned widget kind persists correctly. |
|
||||
| WG-001-ACCESS-READONLY | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/WG-001-ACCESS-READONLY.png) | Not executed | Verify Owner, Editor, Viewer, missing-integration, permission-denied, and global read-only behavior for every assigned widget kind. |
|
||||
| WG-001-EVIDENCE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/WG-001-EVIDENCE.png) | Not executed | Capture screenshot, console, network, overflow, clipping, focus, and cleanup evidence for every kind and viewport row. |
|
||||
|
||||
## Widget kind × viewport checklist
|
||||
|
||||
| Widget kind | Viewport | Size | States | Permission/read-only | Options/persistence | Recovery | Evidence | Status |
|
||||
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
||||
| clock | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01) | blocked |
|
||||
| clock | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01) | blocked |
|
||||
| clock | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01) | blocked |
|
||||
| clock | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01) | blocked |
|
||||
| clock | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01) | blocked |
|
||||
| clock | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01) | blocked |
|
||||
| clock | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01) | blocked |
|
||||
| clock | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01) | blocked |
|
||||
| clock | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01) | blocked |
|
||||
| weather | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01) | blocked |
|
||||
| weather | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01) | blocked |
|
||||
| weather | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01) | blocked |
|
||||
| weather | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01) | blocked |
|
||||
| weather | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01) | blocked |
|
||||
| weather | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01) | blocked |
|
||||
| weather | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01) | blocked |
|
||||
| weather | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01) | blocked |
|
||||
| weather | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01) | blocked |
|
||||
| airQuality | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01) | blocked |
|
||||
| airQuality | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01) | blocked |
|
||||
| airQuality | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01) | blocked |
|
||||
| airQuality | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01) | blocked |
|
||||
| airQuality | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01) | blocked |
|
||||
| airQuality | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01) | blocked |
|
||||
| airQuality | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01) | blocked |
|
||||
| airQuality | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01) | blocked |
|
||||
| airQuality | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01) | blocked |
|
||||
| countdown | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01) | blocked |
|
||||
| countdown | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01) | blocked |
|
||||
| countdown | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01) | blocked |
|
||||
| countdown | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01) | blocked |
|
||||
| countdown | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01) | blocked |
|
||||
| countdown | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01) | blocked |
|
||||
| countdown | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01) | blocked |
|
||||
| countdown | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01) | blocked |
|
||||
| countdown | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01) | blocked |
|
||||
| timer | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01) | blocked |
|
||||
| timer | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01) | blocked |
|
||||
| timer | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01) | blocked |
|
||||
| timer | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01) | blocked |
|
||||
| timer | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01) | blocked |
|
||||
| timer | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01) | blocked |
|
||||
| timer | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01) | blocked |
|
||||
| timer | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01) | blocked |
|
||||
| timer | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01) | blocked |
|
||||
| clock | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/clock-mobile-320.png) | not-reached |
|
||||
| clock | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/clock-mobile-375.png) | not-reached |
|
||||
| clock | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/clock-boundary-767.png) | not-reached |
|
||||
| clock | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/clock-boundary-768.png) | not-reached |
|
||||
| clock | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/clock-tablet-1024.png) | not-reached |
|
||||
| clock | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/clock-boundary-1279.png) | not-reached |
|
||||
| clock | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/clock-desktop-1280.png) | not-reached |
|
||||
| clock | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/clock-desktop-1440.png) | not-reached |
|
||||
| clock | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/clock-desktop-1920.png) | not-reached |
|
||||
| weather | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/weather-mobile-320.png) | not-reached |
|
||||
| weather | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/weather-mobile-375.png) | not-reached |
|
||||
| weather | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/weather-boundary-767.png) | not-reached |
|
||||
| weather | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/weather-boundary-768.png) | not-reached |
|
||||
| weather | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/weather-tablet-1024.png) | not-reached |
|
||||
| weather | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/weather-boundary-1279.png) | not-reached |
|
||||
| weather | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/weather-desktop-1280.png) | not-reached |
|
||||
| weather | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/weather-desktop-1440.png) | not-reached |
|
||||
| weather | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/weather-desktop-1920.png) | not-reached |
|
||||
| airQuality | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/airQuality-mobile-320.png) | not-reached |
|
||||
| airQuality | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/airQuality-mobile-375.png) | not-reached |
|
||||
| airQuality | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/airQuality-boundary-767.png) | not-reached |
|
||||
| airQuality | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/airQuality-boundary-768.png) | not-reached |
|
||||
| airQuality | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/airQuality-tablet-1024.png) | not-reached |
|
||||
| airQuality | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/airQuality-boundary-1279.png) | not-reached |
|
||||
| airQuality | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/airQuality-desktop-1280.png) | not-reached |
|
||||
| airQuality | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/airQuality-desktop-1440.png) | not-reached |
|
||||
| airQuality | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/airQuality-desktop-1920.png) | not-reached |
|
||||
| countdown | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/countdown-mobile-320.png) | not-reached |
|
||||
| countdown | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/countdown-mobile-375.png) | not-reached |
|
||||
| countdown | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/countdown-boundary-767.png) | not-reached |
|
||||
| countdown | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/countdown-boundary-768.png) | not-reached |
|
||||
| countdown | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/countdown-tablet-1024.png) | not-reached |
|
||||
| countdown | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/countdown-boundary-1279.png) | not-reached |
|
||||
| countdown | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/countdown-desktop-1280.png) | not-reached |
|
||||
| countdown | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/countdown-desktop-1440.png) | not-reached |
|
||||
| countdown | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/countdown-desktop-1920.png) | not-reached |
|
||||
| timer | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/timer-mobile-320.png) | not-reached |
|
||||
| timer | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/timer-mobile-375.png) | not-reached |
|
||||
| timer | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/timer-boundary-767.png) | not-reached |
|
||||
| timer | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/timer-boundary-768.png) | not-reached |
|
||||
| timer | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/timer-tablet-1024.png) | not-reached |
|
||||
| timer | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/timer-boundary-1279.png) | not-reached |
|
||||
| timer | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/timer-desktop-1280.png) | not-reached |
|
||||
| timer | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/timer-desktop-1440.png) | not-reached |
|
||||
| timer | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/timer-desktop-1920.png) | not-reached |
|
||||
|
||||
## Performance measurements and limitations
|
||||
|
||||
No valid feature timing could be recorded because no application document rendered. Cold/warm, polling, rendering, memory, and recovery measurements remain blocked.
|
||||
Record structured measurements in `performance.measurements` with units, thresholds, status, and evidence. Record every environmental or tooling limitation in `performance.limitations`; leave measurements empty instead of inventing a result.
|
||||
|
||||
## Independent reproductions
|
||||
|
||||
The common routing failure was independently reproduced by qa-v2-preflight-01; the corresponding tracked packet contains its own browser evidence.
|
||||
Record a second agent's result in `independentReproductions` with the finding fingerprint, agent ID, outcome, evidence, and notes. An unattempted reproduction remains `not-reached`.
|
||||
|
||||
## Findings
|
||||
|
||||
### RV2-P1-001 — P1: locale rewrite causes an infinite browser redirect
|
||||
|
||||
Preconditions: candidate f57a660088d6777c86aca22977354fa8b810e2be, main-writable, mobile-320, 100% zoom, mouse, fresh named Chromium session qa-v2-widgets-01.
|
||||
|
||||
1. Launch a fresh Chromium context with the Chromium argument --no-sandbox.
|
||||
2. Set the assigned viewport and open http://127.0.0.1:37137 or its authentication entry.
|
||||
3. Observe repeated document requests to the same route.
|
||||
4. Wait until Chromium displays ERR_TOO_MANY_REDIRECTS or chrome-error://chromewebdata/.
|
||||
5. Close the context, retry in a fresh context, and observe the same result.
|
||||
|
||||
Expected: the application renders the assigned entry, permitting authentication and the packet flow. Actual: the redirect loop prevents the application from rendering. Reproducibility: reproduced on retry and independently by another Luna Max preflight agent. Console output was empty; network and visual evidence are linked below.
|
||||
|
||||
## Artifacts
|
||||
|
||||
- [initial-320x568-console-scoped.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/initial-320x568-console-scoped.txt)
|
||||
- [initial-320x568-console.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/initial-320x568-console.txt)
|
||||
- [initial-320x568-network-scoped.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/initial-320x568-network-scoped.txt)
|
||||
- [initial-320x568-network.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/initial-320x568-network.txt)
|
||||
- [initial-320x568-recorded-frame.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/initial-320x568-recorded-frame.png)
|
||||
- [initial-320x568-url.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/initial-320x568-url.txt)
|
||||
- [initial-320x568.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/initial-320x568.png)
|
||||
- [initial-320x568.webm](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/initial-320x568.webm)
|
||||
- [retry-320x568-console-before.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/retry-320x568-console-before.txt)
|
||||
- [retry-320x568-console-scoped.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/retry-320x568-console-scoped.txt)
|
||||
- [retry-320x568-console.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/retry-320x568-console.txt)
|
||||
- [retry-320x568-network-before.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/retry-320x568-network-before.txt)
|
||||
- [retry-320x568-network-scoped.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/retry-320x568-network-scoped.txt)
|
||||
- [retry-320x568-network.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/retry-320x568-network.txt)
|
||||
- [retry-320x568-url.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/retry-320x568-url.txt)
|
||||
- [retry-320x568.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/retry-320x568.png)
|
||||
- [retry-320x568.webm](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-01/retry-320x568.webm)
|
||||
|
||||
## Mutations and persistence
|
||||
|
||||
No credentials were submitted and no product mutation occurred. Reload and fresh-session retries reproduced the routing failure, so application persistence was not reachable.
|
||||
No findings recorded. Add structured findings to the metadata block and mirror them here.
|
||||
|
||||
## Blockers and gaps
|
||||
|
||||
Every non-evidence case listed as blocked remains untested beyond the routing entry. No blocked cell is treated as passed.
|
||||
Not executed.
|
||||
|
||||
## Cleanup
|
||||
|
||||
The named browser session was closed by the browser agent. Artifacts remain under the untracked packet directory; no secret values were captured.
|
||||
Record created resources, cleanup outcome, console errors, and network failures. Never include secret values.
|
||||
@@ -1,348 +1,307 @@
|
||||
<!-- release-v2-qa-report
|
||||
{
|
||||
"packetId": "widgets-02",
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"caseStatuses": {
|
||||
"WG-002-RENDER-SIZE": "blocked",
|
||||
"WG-002-STATES-RECOVERY": "blocked",
|
||||
"WG-002-OPTIONS-PERSISTENCE": "blocked",
|
||||
"WG-002-ACCESS-READONLY": "blocked",
|
||||
"WG-002-EVIDENCE": "blocked"
|
||||
"WG-002-RENDER-SIZE": "not-reached",
|
||||
"WG-002-STATES-RECOVERY": "not-reached",
|
||||
"WG-002-OPTIONS-PERSISTENCE": "not-reached",
|
||||
"WG-002-ACCESS-READONLY": "not-reached",
|
||||
"WG-002-EVIDENCE": "not-reached"
|
||||
},
|
||||
"execution": {
|
||||
"candidateSha": "f57a660088d6777c86aca22977354fa8b810e2be",
|
||||
"url": "http://127.0.0.1:37137",
|
||||
"actualPort": 37137,
|
||||
"runtimeProfile": "main-writable",
|
||||
"runtimeFlags": [
|
||||
"DEMO_MODE=true",
|
||||
"DEMO_READ_ONLY=false",
|
||||
"UNSAFE_ENABLE_MOCK_INTEGRATION=true"
|
||||
],
|
||||
"persona": "Cora Creator",
|
||||
"sessionId": "qa-v2-widgets-02",
|
||||
"timestamp": "2026-08-31T15:58:22.521Z",
|
||||
"viewport": "mobile-320",
|
||||
"input": "mouse",
|
||||
"zoom": 100
|
||||
"candidateSha": "2d5edf46513b96c8b9f973d4a121b396d688e9bb",
|
||||
"url": null,
|
||||
"actualPort": null,
|
||||
"runtimeProfile": null,
|
||||
"runtimeFlags": [],
|
||||
"persona": null,
|
||||
"sessionId": null,
|
||||
"timestamp": null,
|
||||
"viewport": null,
|
||||
"input": null,
|
||||
"zoom": null
|
||||
},
|
||||
"findings": [
|
||||
{
|
||||
"id": "RV2-P1-001",
|
||||
"fingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"severity": "P1",
|
||||
"area": "routing/authentication",
|
||||
"title": "Locale rewrite causes an infinite browser redirect before the application renders",
|
||||
"summary": "A fresh Chromium session repeatedly requests the same entry route and ends on ERR_TOO_MANY_REDIRECTS, preventing the assigned browser flow.",
|
||||
"caseIds": [
|
||||
"WG-002-RENDER-SIZE",
|
||||
"WG-002-STATES-RECOVERY",
|
||||
"WG-002-OPTIONS-PERSISTENCE",
|
||||
"WG-002-ACCESS-READONLY",
|
||||
"WG-002-EVIDENCE"
|
||||
],
|
||||
"evidence": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/screenshots/redirect-initial-320x568.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/screenshots/redirect-retry-320x568.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/videos/redirect-retry-320x568.webm"
|
||||
]
|
||||
}
|
||||
],
|
||||
"artifacts": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/screenshots/redirect-initial-320x568.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/screenshots/redirect-retry-320x568.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/videos/redirect-retry-320x568.webm"
|
||||
],
|
||||
"findings": [],
|
||||
"artifacts": [],
|
||||
"widgetChecks": [
|
||||
{
|
||||
"widgetKind": "app",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "app",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "app",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "app",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "app",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "app",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "app",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "app",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "app",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "iframe",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "iframe",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "iframe",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "iframe",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "iframe",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "iframe",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "iframe",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "iframe",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "iframe",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "video",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "video",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "video",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "video",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "video",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "video",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "video",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "video",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "video",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "minecraftServerStatus",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "minecraftServerStatus",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "minecraftServerStatus",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "minecraftServerStatus",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "minecraftServerStatus",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "minecraftServerStatus",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "minecraftServerStatus",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "minecraftServerStatus",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "minecraftServerStatus",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "stockPrice",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "stockPrice",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "stockPrice",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "stockPrice",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "stockPrice",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "stockPrice",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "stockPrice",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "stockPrice",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "stockPrice",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
}
|
||||
],
|
||||
"performance": {
|
||||
"measurements": [],
|
||||
"limitations": [
|
||||
"The application never rendered, so assigned feature, mutation, persistence, permission, viewport, and performance checks were blocked.",
|
||||
"No credentials were submitted and no product state was mutated.",
|
||||
"The finding was retried in a fresh Chromium context; console output was empty while document requests repeated until Chromium stopped the loop."
|
||||
]
|
||||
"limitations": []
|
||||
},
|
||||
"independentReproductions": [
|
||||
{
|
||||
"findingFingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"agentId": "qa-v2-preflight-01",
|
||||
"outcome": "reproduced",
|
||||
"evidence": [],
|
||||
"notes": "See preflight-01 for an independent Luna Max reproduction."
|
||||
}
|
||||
],
|
||||
"notes": "Report-only black-box run. No defect was fixed and no secret was recorded."
|
||||
"independentReproductions": [],
|
||||
"notes": "Not executed."
|
||||
}
|
||||
-->
|
||||
|
||||
@@ -350,7 +309,7 @@
|
||||
|
||||
| Metadata | Value |
|
||||
| --- | --- |
|
||||
| Status | blocked |
|
||||
| Status | not-reached |
|
||||
| Wave | widgets |
|
||||
| PR refs | #6502, #6555 |
|
||||
| Personas | Cora Creator |
|
||||
@@ -361,110 +320,90 @@
|
||||
| Input | mouse, touch, keyboard |
|
||||
| Widget kinds | app, iframe, video, minecraftServerStatus, stockPrice |
|
||||
| Artifact directory | [/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02) |
|
||||
| Candidate SHA | f57a660088d6777c86aca22977354fa8b810e2be |
|
||||
| URL / actual port | http://127.0.0.1:37137 / 37137 |
|
||||
| Runtime profile / flags | main-writable; DEMO_MODE=true, DEMO_READ_ONLY=false, UNSAFE_ENABLE_MOCK_INTEGRATION=true |
|
||||
| Executed persona | Cora Creator |
|
||||
| Browser session ID | qa-v2-widgets-02 |
|
||||
| Timestamp | 2026-08-31T15:58:22.521Z |
|
||||
| Executed viewport / input / zoom | mobile-320 / mouse / 100% |
|
||||
| Candidate SHA | 2d5edf46513b96c8b9f973d4a121b396d688e9bb |
|
||||
| URL / actual port | not-recorded |
|
||||
| Runtime profile / flags | not-recorded |
|
||||
| Executed persona | not-recorded |
|
||||
| Browser session ID | not-recorded |
|
||||
| Timestamp | not-recorded |
|
||||
| Executed viewport / input / zoom | not-recorded |
|
||||
|
||||
## Dogfood evidence
|
||||
|
||||
| Case ID | Status | Evidence | Observed | Expected |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| WG-002-RENDER-SIZE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Render every assigned widget kind at every assigned viewport and exercise default, minimum, maximum, and compact sizes where supported. |
|
||||
| WG-002-STATES-RECOVERY | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify loading, populated, empty, error, stale, retry, and recovered states for every assigned widget kind. |
|
||||
| WG-002-OPTIONS-PERSISTENCE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Mutate meaningful options, save, reload, reset, and confirm each assigned widget kind persists correctly. |
|
||||
| WG-002-ACCESS-READONLY | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify Owner, Editor, Viewer, missing-integration, permission-denied, and global read-only behavior for every assigned widget kind. |
|
||||
| WG-002-EVIDENCE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Capture screenshot, console, network, overflow, clipping, focus, and cleanup evidence for every kind and viewport row. |
|
||||
| WG-002-RENDER-SIZE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/WG-002-RENDER-SIZE.png) | Not executed | Render every assigned widget kind at every assigned viewport and exercise default, minimum, maximum, and compact sizes where supported. |
|
||||
| WG-002-STATES-RECOVERY | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/WG-002-STATES-RECOVERY.png) | Not executed | Verify loading, populated, empty, error, stale, retry, and recovered states for every assigned widget kind. |
|
||||
| WG-002-OPTIONS-PERSISTENCE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/WG-002-OPTIONS-PERSISTENCE.png) | Not executed | Mutate meaningful options, save, reload, reset, and confirm each assigned widget kind persists correctly. |
|
||||
| WG-002-ACCESS-READONLY | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/WG-002-ACCESS-READONLY.png) | Not executed | Verify Owner, Editor, Viewer, missing-integration, permission-denied, and global read-only behavior for every assigned widget kind. |
|
||||
| WG-002-EVIDENCE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/WG-002-EVIDENCE.png) | Not executed | Capture screenshot, console, network, overflow, clipping, focus, and cleanup evidence for every kind and viewport row. |
|
||||
|
||||
## Widget kind × viewport checklist
|
||||
|
||||
| Widget kind | Viewport | Size | States | Permission/read-only | Options/persistence | Recovery | Evidence | Status |
|
||||
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
||||
| app | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02) | blocked |
|
||||
| app | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02) | blocked |
|
||||
| app | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02) | blocked |
|
||||
| app | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02) | blocked |
|
||||
| app | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02) | blocked |
|
||||
| app | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02) | blocked |
|
||||
| app | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02) | blocked |
|
||||
| app | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02) | blocked |
|
||||
| app | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02) | blocked |
|
||||
| iframe | mobile-320 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02) | blocked |
|
||||
| iframe | mobile-375 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02) | blocked |
|
||||
| iframe | boundary-767 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02) | blocked |
|
||||
| iframe | boundary-768 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02) | blocked |
|
||||
| iframe | tablet-1024 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02) | blocked |
|
||||
| iframe | boundary-1279 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02) | blocked |
|
||||
| iframe | desktop-1280 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02) | blocked |
|
||||
| iframe | desktop-1440 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02) | blocked |
|
||||
| iframe | desktop-1920 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02) | blocked |
|
||||
| video | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02) | blocked |
|
||||
| video | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02) | blocked |
|
||||
| video | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02) | blocked |
|
||||
| video | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02) | blocked |
|
||||
| video | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02) | blocked |
|
||||
| video | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02) | blocked |
|
||||
| video | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02) | blocked |
|
||||
| video | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02) | blocked |
|
||||
| video | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02) | blocked |
|
||||
| minecraftServerStatus | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02) | blocked |
|
||||
| minecraftServerStatus | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02) | blocked |
|
||||
| minecraftServerStatus | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02) | blocked |
|
||||
| minecraftServerStatus | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02) | blocked |
|
||||
| minecraftServerStatus | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02) | blocked |
|
||||
| minecraftServerStatus | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02) | blocked |
|
||||
| minecraftServerStatus | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02) | blocked |
|
||||
| minecraftServerStatus | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02) | blocked |
|
||||
| minecraftServerStatus | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02) | blocked |
|
||||
| stockPrice | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02) | blocked |
|
||||
| stockPrice | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02) | blocked |
|
||||
| stockPrice | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02) | blocked |
|
||||
| stockPrice | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02) | blocked |
|
||||
| stockPrice | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02) | blocked |
|
||||
| stockPrice | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02) | blocked |
|
||||
| stockPrice | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02) | blocked |
|
||||
| stockPrice | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02) | blocked |
|
||||
| stockPrice | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02) | blocked |
|
||||
| app | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/app-mobile-320.png) | not-reached |
|
||||
| app | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/app-mobile-375.png) | not-reached |
|
||||
| app | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/app-boundary-767.png) | not-reached |
|
||||
| app | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/app-boundary-768.png) | not-reached |
|
||||
| app | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/app-tablet-1024.png) | not-reached |
|
||||
| app | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/app-boundary-1279.png) | not-reached |
|
||||
| app | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/app-desktop-1280.png) | not-reached |
|
||||
| app | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/app-desktop-1440.png) | not-reached |
|
||||
| app | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/app-desktop-1920.png) | not-reached |
|
||||
| iframe | mobile-320 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/iframe-mobile-320.png) | not-reached |
|
||||
| iframe | mobile-375 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/iframe-mobile-375.png) | not-reached |
|
||||
| iframe | boundary-767 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/iframe-boundary-767.png) | not-reached |
|
||||
| iframe | boundary-768 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/iframe-boundary-768.png) | not-reached |
|
||||
| iframe | tablet-1024 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/iframe-tablet-1024.png) | not-reached |
|
||||
| iframe | boundary-1279 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/iframe-boundary-1279.png) | not-reached |
|
||||
| iframe | desktop-1280 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/iframe-desktop-1280.png) | not-reached |
|
||||
| iframe | desktop-1440 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/iframe-desktop-1440.png) | not-reached |
|
||||
| iframe | desktop-1920 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/iframe-desktop-1920.png) | not-reached |
|
||||
| video | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/video-mobile-320.png) | not-reached |
|
||||
| video | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/video-mobile-375.png) | not-reached |
|
||||
| video | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/video-boundary-767.png) | not-reached |
|
||||
| video | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/video-boundary-768.png) | not-reached |
|
||||
| video | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/video-tablet-1024.png) | not-reached |
|
||||
| video | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/video-boundary-1279.png) | not-reached |
|
||||
| video | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/video-desktop-1280.png) | not-reached |
|
||||
| video | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/video-desktop-1440.png) | not-reached |
|
||||
| video | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/video-desktop-1920.png) | not-reached |
|
||||
| minecraftServerStatus | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/minecraftServerStatus-mobile-320.png) | not-reached |
|
||||
| minecraftServerStatus | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/minecraftServerStatus-mobile-375.png) | not-reached |
|
||||
| minecraftServerStatus | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/minecraftServerStatus-boundary-767.png) | not-reached |
|
||||
| minecraftServerStatus | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/minecraftServerStatus-boundary-768.png) | not-reached |
|
||||
| minecraftServerStatus | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/minecraftServerStatus-tablet-1024.png) | not-reached |
|
||||
| minecraftServerStatus | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/minecraftServerStatus-boundary-1279.png) | not-reached |
|
||||
| minecraftServerStatus | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/minecraftServerStatus-desktop-1280.png) | not-reached |
|
||||
| minecraftServerStatus | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/minecraftServerStatus-desktop-1440.png) | not-reached |
|
||||
| minecraftServerStatus | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/minecraftServerStatus-desktop-1920.png) | not-reached |
|
||||
| stockPrice | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/stockPrice-mobile-320.png) | not-reached |
|
||||
| stockPrice | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/stockPrice-mobile-375.png) | not-reached |
|
||||
| stockPrice | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/stockPrice-boundary-767.png) | not-reached |
|
||||
| stockPrice | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/stockPrice-boundary-768.png) | not-reached |
|
||||
| stockPrice | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/stockPrice-tablet-1024.png) | not-reached |
|
||||
| stockPrice | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/stockPrice-boundary-1279.png) | not-reached |
|
||||
| stockPrice | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/stockPrice-desktop-1280.png) | not-reached |
|
||||
| stockPrice | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/stockPrice-desktop-1440.png) | not-reached |
|
||||
| stockPrice | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/stockPrice-desktop-1920.png) | not-reached |
|
||||
|
||||
## Performance measurements and limitations
|
||||
|
||||
No valid feature timing could be recorded because no application document rendered. Cold/warm, polling, rendering, memory, and recovery measurements remain blocked.
|
||||
Record structured measurements in `performance.measurements` with units, thresholds, status, and evidence. Record every environmental or tooling limitation in `performance.limitations`; leave measurements empty instead of inventing a result.
|
||||
|
||||
## Independent reproductions
|
||||
|
||||
The common routing failure was independently reproduced by qa-v2-preflight-01; the corresponding tracked packet contains its own browser evidence.
|
||||
Record a second agent's result in `independentReproductions` with the finding fingerprint, agent ID, outcome, evidence, and notes. An unattempted reproduction remains `not-reached`.
|
||||
|
||||
## Findings
|
||||
|
||||
### RV2-P1-001 — P1: locale rewrite causes an infinite browser redirect
|
||||
|
||||
Preconditions: candidate f57a660088d6777c86aca22977354fa8b810e2be, main-writable, mobile-320, 100% zoom, mouse, fresh named Chromium session qa-v2-widgets-02.
|
||||
|
||||
1. Launch a fresh Chromium context with the Chromium argument --no-sandbox.
|
||||
2. Set the assigned viewport and open http://127.0.0.1:37137 or its authentication entry.
|
||||
3. Observe repeated document requests to the same route.
|
||||
4. Wait until Chromium displays ERR_TOO_MANY_REDIRECTS or chrome-error://chromewebdata/.
|
||||
5. Close the context, retry in a fresh context, and observe the same result.
|
||||
|
||||
Expected: the application renders the assigned entry, permitting authentication and the packet flow. Actual: the redirect loop prevents the application from rendering. Reproducibility: reproduced on retry and independently by another Luna Max preflight agent. Console output was empty; network and visual evidence are linked below.
|
||||
|
||||
## Artifacts
|
||||
|
||||
- [redirect-initial-320x568.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/screenshots/redirect-initial-320x568.png)
|
||||
- [redirect-retry-320x568.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/screenshots/redirect-retry-320x568.png)
|
||||
- [redirect-retry-320x568.webm](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-02/videos/redirect-retry-320x568.webm)
|
||||
|
||||
## Mutations and persistence
|
||||
|
||||
No credentials were submitted and no product mutation occurred. Reload and fresh-session retries reproduced the routing failure, so application persistence was not reachable.
|
||||
No findings recorded. Add structured findings to the metadata block and mirror them here.
|
||||
|
||||
## Blockers and gaps
|
||||
|
||||
Every non-evidence case listed as blocked remains untested beyond the routing entry. No blocked cell is treated as passed.
|
||||
Not executed.
|
||||
|
||||
## Cleanup
|
||||
|
||||
The named browser session was closed by the browser agent. Artifacts remain under the untracked packet directory; no secret values were captured.
|
||||
Record created resources, cleanup outcome, console errors, and network failures. Never include secret values.
|
||||
@@ -1,352 +1,307 @@
|
||||
<!-- release-v2-qa-report
|
||||
{
|
||||
"packetId": "widgets-03",
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"caseStatuses": {
|
||||
"WG-003-RENDER-SIZE": "blocked",
|
||||
"WG-003-STATES-RECOVERY": "blocked",
|
||||
"WG-003-OPTIONS-PERSISTENCE": "blocked",
|
||||
"WG-003-ACCESS-READONLY": "blocked",
|
||||
"WG-003-EVIDENCE": "blocked"
|
||||
"WG-003-RENDER-SIZE": "not-reached",
|
||||
"WG-003-STATES-RECOVERY": "not-reached",
|
||||
"WG-003-OPTIONS-PERSISTENCE": "not-reached",
|
||||
"WG-003-ACCESS-READONLY": "not-reached",
|
||||
"WG-003-EVIDENCE": "not-reached"
|
||||
},
|
||||
"execution": {
|
||||
"candidateSha": "f57a660088d6777c86aca22977354fa8b810e2be",
|
||||
"url": "http://127.0.0.1:37137",
|
||||
"actualPort": 37137,
|
||||
"runtimeProfile": "main-writable",
|
||||
"runtimeFlags": [
|
||||
"DEMO_MODE=true",
|
||||
"DEMO_READ_ONLY=false",
|
||||
"UNSAFE_ENABLE_MOCK_INTEGRATION=true"
|
||||
],
|
||||
"persona": "Cora Creator",
|
||||
"sessionId": "qa-v2-widgets-03",
|
||||
"timestamp": "2026-08-31T16:03:07.150Z",
|
||||
"viewport": "mobile-320",
|
||||
"input": "mouse",
|
||||
"zoom": 100
|
||||
"candidateSha": "2d5edf46513b96c8b9f973d4a121b396d688e9bb",
|
||||
"url": null,
|
||||
"actualPort": null,
|
||||
"runtimeProfile": null,
|
||||
"runtimeFlags": [],
|
||||
"persona": null,
|
||||
"sessionId": null,
|
||||
"timestamp": null,
|
||||
"viewport": null,
|
||||
"input": null,
|
||||
"zoom": null
|
||||
},
|
||||
"findings": [
|
||||
{
|
||||
"id": "RV2-P1-001",
|
||||
"fingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"severity": "P1",
|
||||
"area": "routing/authentication",
|
||||
"title": "Locale rewrite causes an infinite browser redirect before the application renders",
|
||||
"summary": "Chromium repeatedly requests the same entry route and ends on ERR_TOO_MANY_REDIRECTS, preventing the assigned browser flow.",
|
||||
"caseIds": [
|
||||
"WG-003-RENDER-SIZE",
|
||||
"WG-003-STATES-RECOVERY",
|
||||
"WG-003-OPTIONS-PERSISTENCE",
|
||||
"WG-003-ACCESS-READONLY",
|
||||
"WG-003-EVIDENCE"
|
||||
],
|
||||
"evidence": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/initial-320x568-network-scoped.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/initial-320x568-recorded-frame.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/initial-320x568.png"
|
||||
]
|
||||
}
|
||||
],
|
||||
"artifacts": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/initial-320x568-console-scoped.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/initial-320x568-errors.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/initial-320x568-network-scoped.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/initial-320x568-recorded-frame.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/initial-320x568-snapshot.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/initial-320x568-url.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/initial-320x568.png"
|
||||
],
|
||||
"findings": [],
|
||||
"artifacts": [],
|
||||
"widgetChecks": [
|
||||
{
|
||||
"widgetKind": "notebook",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "notebook",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "notebook",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "notebook",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "notebook",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "notebook",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "notebook",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "notebook",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "notebook",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "anchorNote",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "anchorNote",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "anchorNote",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "anchorNote",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "anchorNote",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "anchorNote",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "anchorNote",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "anchorNote",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "anchorNote",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "bookmarks",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "bookmarks",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "bookmarks",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "bookmarks",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "bookmarks",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "bookmarks",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "bookmarks",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "bookmarks",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "bookmarks",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "rssFeed",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "rssFeed",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "rssFeed",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "rssFeed",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "rssFeed",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "rssFeed",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "rssFeed",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "rssFeed",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "rssFeed",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "timetable",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "timetable",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "timetable",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "timetable",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "timetable",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "timetable",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "timetable",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "timetable",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "timetable",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
}
|
||||
],
|
||||
"performance": {
|
||||
"measurements": [],
|
||||
"limitations": [
|
||||
"The application never rendered, so assigned feature, mutation, persistence, permission, viewport, and performance checks were blocked.",
|
||||
"No credentials were submitted and no product state was mutated.",
|
||||
"The packet's retry did not produce a separate artifact; the same finding has independent reproductions in the preflight reports."
|
||||
]
|
||||
"limitations": []
|
||||
},
|
||||
"independentReproductions": [
|
||||
{
|
||||
"findingFingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"agentId": "qa-v2-preflight-01",
|
||||
"outcome": "reproduced",
|
||||
"evidence": [],
|
||||
"notes": "See preflight-01 for an independent Luna Max reproduction."
|
||||
}
|
||||
],
|
||||
"notes": "Report-only black-box run. No defect was fixed and no secret was recorded."
|
||||
"independentReproductions": [],
|
||||
"notes": "Not executed."
|
||||
}
|
||||
-->
|
||||
|
||||
@@ -354,7 +309,7 @@
|
||||
|
||||
| Metadata | Value |
|
||||
| --- | --- |
|
||||
| Status | blocked |
|
||||
| Status | not-reached |
|
||||
| Wave | widgets |
|
||||
| PR refs | #6502, #6555 |
|
||||
| Personas | Cora Creator |
|
||||
@@ -365,114 +320,90 @@
|
||||
| Input | mouse, touch, keyboard |
|
||||
| Widget kinds | notebook, anchorNote, bookmarks, rssFeed, timetable |
|
||||
| Artifact directory | [/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03) |
|
||||
| Candidate SHA | f57a660088d6777c86aca22977354fa8b810e2be |
|
||||
| URL / actual port | http://127.0.0.1:37137 / 37137 |
|
||||
| Runtime profile / flags | main-writable; DEMO_MODE=true, DEMO_READ_ONLY=false, UNSAFE_ENABLE_MOCK_INTEGRATION=true |
|
||||
| Executed persona | Cora Creator |
|
||||
| Browser session ID | qa-v2-widgets-03 |
|
||||
| Timestamp | 2026-08-31T16:03:07.150Z |
|
||||
| Executed viewport / input / zoom | mobile-320 / mouse / 100% |
|
||||
| Candidate SHA | 2d5edf46513b96c8b9f973d4a121b396d688e9bb |
|
||||
| URL / actual port | not-recorded |
|
||||
| Runtime profile / flags | not-recorded |
|
||||
| Executed persona | not-recorded |
|
||||
| Browser session ID | not-recorded |
|
||||
| Timestamp | not-recorded |
|
||||
| Executed viewport / input / zoom | not-recorded |
|
||||
|
||||
## Dogfood evidence
|
||||
|
||||
| Case ID | Status | Evidence | Observed | Expected |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| WG-003-RENDER-SIZE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Render every assigned widget kind at every assigned viewport and exercise default, minimum, maximum, and compact sizes where supported. |
|
||||
| WG-003-STATES-RECOVERY | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify loading, populated, empty, error, stale, retry, and recovered states for every assigned widget kind. |
|
||||
| WG-003-OPTIONS-PERSISTENCE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Mutate meaningful options, save, reload, reset, and confirm each assigned widget kind persists correctly. |
|
||||
| WG-003-ACCESS-READONLY | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify Owner, Editor, Viewer, missing-integration, permission-denied, and global read-only behavior for every assigned widget kind. |
|
||||
| WG-003-EVIDENCE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Capture screenshot, console, network, overflow, clipping, focus, and cleanup evidence for every kind and viewport row. |
|
||||
| WG-003-RENDER-SIZE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/WG-003-RENDER-SIZE.png) | Not executed | Render every assigned widget kind at every assigned viewport and exercise default, minimum, maximum, and compact sizes where supported. |
|
||||
| WG-003-STATES-RECOVERY | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/WG-003-STATES-RECOVERY.png) | Not executed | Verify loading, populated, empty, error, stale, retry, and recovered states for every assigned widget kind. |
|
||||
| WG-003-OPTIONS-PERSISTENCE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/WG-003-OPTIONS-PERSISTENCE.png) | Not executed | Mutate meaningful options, save, reload, reset, and confirm each assigned widget kind persists correctly. |
|
||||
| WG-003-ACCESS-READONLY | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/WG-003-ACCESS-READONLY.png) | Not executed | Verify Owner, Editor, Viewer, missing-integration, permission-denied, and global read-only behavior for every assigned widget kind. |
|
||||
| WG-003-EVIDENCE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/WG-003-EVIDENCE.png) | Not executed | Capture screenshot, console, network, overflow, clipping, focus, and cleanup evidence for every kind and viewport row. |
|
||||
|
||||
## Widget kind × viewport checklist
|
||||
|
||||
| Widget kind | Viewport | Size | States | Permission/read-only | Options/persistence | Recovery | Evidence | Status |
|
||||
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
||||
| notebook | mobile-320 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03) | blocked |
|
||||
| notebook | mobile-375 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03) | blocked |
|
||||
| notebook | boundary-767 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03) | blocked |
|
||||
| notebook | boundary-768 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03) | blocked |
|
||||
| notebook | tablet-1024 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03) | blocked |
|
||||
| notebook | boundary-1279 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03) | blocked |
|
||||
| notebook | desktop-1280 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03) | blocked |
|
||||
| notebook | desktop-1440 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03) | blocked |
|
||||
| notebook | desktop-1920 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03) | blocked |
|
||||
| anchorNote | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03) | blocked |
|
||||
| anchorNote | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03) | blocked |
|
||||
| anchorNote | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03) | blocked |
|
||||
| anchorNote | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03) | blocked |
|
||||
| anchorNote | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03) | blocked |
|
||||
| anchorNote | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03) | blocked |
|
||||
| anchorNote | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03) | blocked |
|
||||
| anchorNote | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03) | blocked |
|
||||
| anchorNote | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03) | blocked |
|
||||
| bookmarks | mobile-320 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03) | blocked |
|
||||
| bookmarks | mobile-375 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03) | blocked |
|
||||
| bookmarks | boundary-767 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03) | blocked |
|
||||
| bookmarks | boundary-768 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03) | blocked |
|
||||
| bookmarks | tablet-1024 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03) | blocked |
|
||||
| bookmarks | boundary-1279 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03) | blocked |
|
||||
| bookmarks | desktop-1280 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03) | blocked |
|
||||
| bookmarks | desktop-1440 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03) | blocked |
|
||||
| bookmarks | desktop-1920 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03) | blocked |
|
||||
| rssFeed | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03) | blocked |
|
||||
| rssFeed | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03) | blocked |
|
||||
| rssFeed | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03) | blocked |
|
||||
| rssFeed | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03) | blocked |
|
||||
| rssFeed | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03) | blocked |
|
||||
| rssFeed | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03) | blocked |
|
||||
| rssFeed | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03) | blocked |
|
||||
| rssFeed | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03) | blocked |
|
||||
| rssFeed | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03) | blocked |
|
||||
| timetable | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03) | blocked |
|
||||
| timetable | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03) | blocked |
|
||||
| timetable | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03) | blocked |
|
||||
| timetable | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03) | blocked |
|
||||
| timetable | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03) | blocked |
|
||||
| timetable | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03) | blocked |
|
||||
| timetable | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03) | blocked |
|
||||
| timetable | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03) | blocked |
|
||||
| timetable | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03) | blocked |
|
||||
| notebook | mobile-320 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/notebook-mobile-320.png) | not-reached |
|
||||
| notebook | mobile-375 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/notebook-mobile-375.png) | not-reached |
|
||||
| notebook | boundary-767 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/notebook-boundary-767.png) | not-reached |
|
||||
| notebook | boundary-768 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/notebook-boundary-768.png) | not-reached |
|
||||
| notebook | tablet-1024 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/notebook-tablet-1024.png) | not-reached |
|
||||
| notebook | boundary-1279 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/notebook-boundary-1279.png) | not-reached |
|
||||
| notebook | desktop-1280 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/notebook-desktop-1280.png) | not-reached |
|
||||
| notebook | desktop-1440 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/notebook-desktop-1440.png) | not-reached |
|
||||
| notebook | desktop-1920 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/notebook-desktop-1920.png) | not-reached |
|
||||
| anchorNote | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/anchorNote-mobile-320.png) | not-reached |
|
||||
| anchorNote | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/anchorNote-mobile-375.png) | not-reached |
|
||||
| anchorNote | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/anchorNote-boundary-767.png) | not-reached |
|
||||
| anchorNote | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/anchorNote-boundary-768.png) | not-reached |
|
||||
| anchorNote | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/anchorNote-tablet-1024.png) | not-reached |
|
||||
| anchorNote | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/anchorNote-boundary-1279.png) | not-reached |
|
||||
| anchorNote | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/anchorNote-desktop-1280.png) | not-reached |
|
||||
| anchorNote | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/anchorNote-desktop-1440.png) | not-reached |
|
||||
| anchorNote | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/anchorNote-desktop-1920.png) | not-reached |
|
||||
| bookmarks | mobile-320 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/bookmarks-mobile-320.png) | not-reached |
|
||||
| bookmarks | mobile-375 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/bookmarks-mobile-375.png) | not-reached |
|
||||
| bookmarks | boundary-767 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/bookmarks-boundary-767.png) | not-reached |
|
||||
| bookmarks | boundary-768 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/bookmarks-boundary-768.png) | not-reached |
|
||||
| bookmarks | tablet-1024 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/bookmarks-tablet-1024.png) | not-reached |
|
||||
| bookmarks | boundary-1279 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/bookmarks-boundary-1279.png) | not-reached |
|
||||
| bookmarks | desktop-1280 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/bookmarks-desktop-1280.png) | not-reached |
|
||||
| bookmarks | desktop-1440 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/bookmarks-desktop-1440.png) | not-reached |
|
||||
| bookmarks | desktop-1920 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/bookmarks-desktop-1920.png) | not-reached |
|
||||
| rssFeed | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/rssFeed-mobile-320.png) | not-reached |
|
||||
| rssFeed | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/rssFeed-mobile-375.png) | not-reached |
|
||||
| rssFeed | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/rssFeed-boundary-767.png) | not-reached |
|
||||
| rssFeed | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/rssFeed-boundary-768.png) | not-reached |
|
||||
| rssFeed | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/rssFeed-tablet-1024.png) | not-reached |
|
||||
| rssFeed | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/rssFeed-boundary-1279.png) | not-reached |
|
||||
| rssFeed | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/rssFeed-desktop-1280.png) | not-reached |
|
||||
| rssFeed | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/rssFeed-desktop-1440.png) | not-reached |
|
||||
| rssFeed | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/rssFeed-desktop-1920.png) | not-reached |
|
||||
| timetable | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/timetable-mobile-320.png) | not-reached |
|
||||
| timetable | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/timetable-mobile-375.png) | not-reached |
|
||||
| timetable | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/timetable-boundary-767.png) | not-reached |
|
||||
| timetable | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/timetable-boundary-768.png) | not-reached |
|
||||
| timetable | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/timetable-tablet-1024.png) | not-reached |
|
||||
| timetable | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/timetable-boundary-1279.png) | not-reached |
|
||||
| timetable | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/timetable-desktop-1280.png) | not-reached |
|
||||
| timetable | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/timetable-desktop-1440.png) | not-reached |
|
||||
| timetable | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/timetable-desktop-1920.png) | not-reached |
|
||||
|
||||
## Performance measurements and limitations
|
||||
|
||||
No valid feature timing could be recorded because no application document rendered. Cold/warm, polling, rendering, memory, and recovery measurements remain blocked.
|
||||
Record structured measurements in `performance.measurements` with units, thresholds, status, and evidence. Record every environmental or tooling limitation in `performance.limitations`; leave measurements empty instead of inventing a result.
|
||||
|
||||
## Independent reproductions
|
||||
|
||||
The common routing failure was independently reproduced by qa-v2-preflight-01; the corresponding tracked packet contains its own browser evidence.
|
||||
Record a second agent's result in `independentReproductions` with the finding fingerprint, agent ID, outcome, evidence, and notes. An unattempted reproduction remains `not-reached`.
|
||||
|
||||
## Findings
|
||||
|
||||
### RV2-P1-001 — P1: locale rewrite causes an infinite browser redirect
|
||||
|
||||
Preconditions: candidate f57a660088d6777c86aca22977354fa8b810e2be, main-writable, mobile-320, 100% zoom, mouse, fresh named Chromium session qa-v2-widgets-03.
|
||||
|
||||
1. Launch a fresh Chromium context with the Chromium argument --no-sandbox.
|
||||
2. Set the assigned viewport and open http://127.0.0.1:37137 or its authentication entry.
|
||||
3. Observe repeated document requests to the same route.
|
||||
4. Wait until Chromium displays ERR_TOO_MANY_REDIRECTS or chrome-error://chromewebdata/.
|
||||
5. Compare the result with the independently reproduced preflight evidence.
|
||||
|
||||
Expected: the application renders the assigned entry, permitting authentication and the packet flow. Actual: the redirect loop prevents the application from rendering. Reproducibility: reproduced independently by the preflight agents. Console output was empty; network and visual evidence are linked below.
|
||||
|
||||
## Artifacts
|
||||
|
||||
- [initial-320x568-console-scoped.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/initial-320x568-console-scoped.txt)
|
||||
- [initial-320x568-errors.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/initial-320x568-errors.txt)
|
||||
- [initial-320x568-network-scoped.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/initial-320x568-network-scoped.txt)
|
||||
- [initial-320x568-recorded-frame.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/initial-320x568-recorded-frame.png)
|
||||
- [initial-320x568-snapshot.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/initial-320x568-snapshot.txt)
|
||||
- [initial-320x568-url.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/initial-320x568-url.txt)
|
||||
- [initial-320x568.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-03/initial-320x568.png)
|
||||
|
||||
## Mutations and persistence
|
||||
|
||||
No credentials were submitted and no product mutation occurred. Reload and fresh-session retries reproduced the routing failure, so application persistence was not reachable.
|
||||
No findings recorded. Add structured findings to the metadata block and mirror them here.
|
||||
|
||||
## Blockers and gaps
|
||||
|
||||
Every non-evidence case listed as blocked remains untested beyond the routing entry. No blocked cell is treated as passed.
|
||||
Not executed.
|
||||
|
||||
## Cleanup
|
||||
|
||||
The named browser session was closed by the browser agent. Artifacts remain under the untracked packet directory; no secret values were captured.
|
||||
Record created resources, cleanup outcome, console errors, and network failures. Never include secret values.
|
||||
@@ -1,358 +1,307 @@
|
||||
<!-- release-v2-qa-report
|
||||
{
|
||||
"packetId": "widgets-04",
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"caseStatuses": {
|
||||
"WG-004-RENDER-SIZE": "blocked",
|
||||
"WG-004-STATES-RECOVERY": "blocked",
|
||||
"WG-004-OPTIONS-PERSISTENCE": "blocked",
|
||||
"WG-004-ACCESS-READONLY": "blocked",
|
||||
"WG-004-EVIDENCE": "blocked"
|
||||
"WG-004-RENDER-SIZE": "not-reached",
|
||||
"WG-004-STATES-RECOVERY": "not-reached",
|
||||
"WG-004-OPTIONS-PERSISTENCE": "not-reached",
|
||||
"WG-004-ACCESS-READONLY": "not-reached",
|
||||
"WG-004-EVIDENCE": "not-reached"
|
||||
},
|
||||
"execution": {
|
||||
"candidateSha": "f57a660088d6777c86aca22977354fa8b810e2be",
|
||||
"url": "http://127.0.0.1:37137",
|
||||
"actualPort": 37137,
|
||||
"runtimeProfile": "main-writable",
|
||||
"runtimeFlags": [
|
||||
"DEMO_MODE=true",
|
||||
"DEMO_READ_ONLY=false",
|
||||
"UNSAFE_ENABLE_MOCK_INTEGRATION=true"
|
||||
],
|
||||
"persona": "Ingrid Infra",
|
||||
"sessionId": "qa-v2-widgets-04",
|
||||
"timestamp": "2026-08-31T16:05:32.566Z",
|
||||
"viewport": "mobile-320",
|
||||
"input": "mouse",
|
||||
"zoom": 100
|
||||
"candidateSha": "2d5edf46513b96c8b9f973d4a121b396d688e9bb",
|
||||
"url": null,
|
||||
"actualPort": null,
|
||||
"runtimeProfile": null,
|
||||
"runtimeFlags": [],
|
||||
"persona": null,
|
||||
"sessionId": null,
|
||||
"timestamp": null,
|
||||
"viewport": null,
|
||||
"input": null,
|
||||
"zoom": null
|
||||
},
|
||||
"findings": [
|
||||
{
|
||||
"id": "RV2-P1-001",
|
||||
"fingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"severity": "P1",
|
||||
"area": "routing/authentication",
|
||||
"title": "Locale rewrite causes an infinite browser redirect before the application renders",
|
||||
"summary": "A fresh Chromium session repeatedly requests the same entry route and ends on ERR_TOO_MANY_REDIRECTS; a fresh-context retry does the same.",
|
||||
"caseIds": [
|
||||
"WG-004-RENDER-SIZE",
|
||||
"WG-004-STATES-RECOVERY",
|
||||
"WG-004-OPTIONS-PERSISTENCE",
|
||||
"WG-004-ACCESS-READONLY",
|
||||
"WG-004-EVIDENCE"
|
||||
],
|
||||
"evidence": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/logs/redirect-fresh-retry-320x568-100-network.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/logs/redirect-initial-320x568-100-network.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/screenshots/redirect-fresh-retry-320x568-100-before.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/screenshots/redirect-fresh-retry-320x568-100-result.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/videos/redirect-fresh-retry-320x568-100.webm",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/videos/redirect-initial-320x568-100.webm"
|
||||
]
|
||||
}
|
||||
],
|
||||
"artifacts": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/logs/redirect-fresh-retry-320x568-100-console.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/logs/redirect-fresh-retry-320x568-100-errors.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/logs/redirect-fresh-retry-320x568-100-network.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/logs/redirect-initial-320x568-100-console.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/logs/redirect-initial-320x568-100-errors.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/logs/redirect-initial-320x568-100-network.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/screenshots/redirect-fresh-retry-320x568-100-before.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/screenshots/redirect-fresh-retry-320x568-100-result.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/videos/redirect-fresh-retry-320x568-100.webm",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/videos/redirect-initial-320x568-100.webm"
|
||||
],
|
||||
"findings": [],
|
||||
"artifacts": [],
|
||||
"widgetChecks": [
|
||||
{
|
||||
"widgetKind": "downloads",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "downloads",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "downloads",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "downloads",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "downloads",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "downloads",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "downloads",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "downloads",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "downloads",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "dockerContainers",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "dockerContainers",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "dockerContainers",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "dockerContainers",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "dockerContainers",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "dockerContainers",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "dockerContainers",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "dockerContainers",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "dockerContainers",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "indexerManager",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "indexerManager",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "indexerManager",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "indexerManager",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "indexerManager",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "indexerManager",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "indexerManager",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "indexerManager",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "indexerManager",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "dnsHoleSummary",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "dnsHoleSummary",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "dnsHoleSummary",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "dnsHoleSummary",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "dnsHoleSummary",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "dnsHoleSummary",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "dnsHoleSummary",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "dnsHoleSummary",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "dnsHoleSummary",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "dnsHoleControls",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "dnsHoleControls",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "dnsHoleControls",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "dnsHoleControls",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "dnsHoleControls",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "dnsHoleControls",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "dnsHoleControls",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "dnsHoleControls",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "dnsHoleControls",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
}
|
||||
],
|
||||
"performance": {
|
||||
"measurements": [],
|
||||
"limitations": [
|
||||
"The application never rendered, so assigned feature, mutation, persistence, permission, viewport, and performance checks were blocked.",
|
||||
"No credentials were submitted and no product state was mutated.",
|
||||
"The finding was retried in a fresh Chromium context; console output was empty while document requests repeated until Chromium stopped the loop."
|
||||
]
|
||||
"limitations": []
|
||||
},
|
||||
"independentReproductions": [
|
||||
{
|
||||
"findingFingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"agentId": "qa-v2-preflight-01",
|
||||
"outcome": "reproduced",
|
||||
"evidence": [],
|
||||
"notes": "See preflight-01 for an independent Luna Max reproduction."
|
||||
}
|
||||
],
|
||||
"notes": "Report-only black-box run. No defect was fixed and no secret was recorded."
|
||||
"independentReproductions": [],
|
||||
"notes": "Not executed."
|
||||
}
|
||||
-->
|
||||
|
||||
@@ -360,7 +309,7 @@
|
||||
|
||||
| Metadata | Value |
|
||||
| --- | --- |
|
||||
| Status | blocked |
|
||||
| Status | not-reached |
|
||||
| Wave | widgets |
|
||||
| PR refs | #6502, #6555 |
|
||||
| Personas | Ingrid Infra |
|
||||
@@ -371,117 +320,90 @@
|
||||
| Input | mouse, touch, keyboard |
|
||||
| Widget kinds | downloads, dockerContainers, indexerManager, dnsHoleSummary, dnsHoleControls |
|
||||
| Artifact directory | [/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04) |
|
||||
| Candidate SHA | f57a660088d6777c86aca22977354fa8b810e2be |
|
||||
| URL / actual port | http://127.0.0.1:37137 / 37137 |
|
||||
| Runtime profile / flags | main-writable; DEMO_MODE=true, DEMO_READ_ONLY=false, UNSAFE_ENABLE_MOCK_INTEGRATION=true |
|
||||
| Executed persona | Ingrid Infra |
|
||||
| Browser session ID | qa-v2-widgets-04 |
|
||||
| Timestamp | 2026-08-31T16:05:32.566Z |
|
||||
| Executed viewport / input / zoom | mobile-320 / mouse / 100% |
|
||||
| Candidate SHA | 2d5edf46513b96c8b9f973d4a121b396d688e9bb |
|
||||
| URL / actual port | not-recorded |
|
||||
| Runtime profile / flags | not-recorded |
|
||||
| Executed persona | not-recorded |
|
||||
| Browser session ID | not-recorded |
|
||||
| Timestamp | not-recorded |
|
||||
| Executed viewport / input / zoom | not-recorded |
|
||||
|
||||
## Dogfood evidence
|
||||
|
||||
| Case ID | Status | Evidence | Observed | Expected |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| WG-004-RENDER-SIZE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Render every assigned widget kind at every assigned viewport and exercise default, minimum, maximum, and compact sizes where supported. |
|
||||
| WG-004-STATES-RECOVERY | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify loading, populated, empty, error, stale, retry, and recovered states for every assigned widget kind. |
|
||||
| WG-004-OPTIONS-PERSISTENCE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Mutate meaningful options, save, reload, reset, and confirm each assigned widget kind persists correctly. |
|
||||
| WG-004-ACCESS-READONLY | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify Owner, Editor, Viewer, missing-integration, permission-denied, and global read-only behavior for every assigned widget kind. |
|
||||
| WG-004-EVIDENCE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Capture screenshot, console, network, overflow, clipping, focus, and cleanup evidence for every kind and viewport row. |
|
||||
| WG-004-RENDER-SIZE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/WG-004-RENDER-SIZE.png) | Not executed | Render every assigned widget kind at every assigned viewport and exercise default, minimum, maximum, and compact sizes where supported. |
|
||||
| WG-004-STATES-RECOVERY | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/WG-004-STATES-RECOVERY.png) | Not executed | Verify loading, populated, empty, error, stale, retry, and recovered states for every assigned widget kind. |
|
||||
| WG-004-OPTIONS-PERSISTENCE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/WG-004-OPTIONS-PERSISTENCE.png) | Not executed | Mutate meaningful options, save, reload, reset, and confirm each assigned widget kind persists correctly. |
|
||||
| WG-004-ACCESS-READONLY | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/WG-004-ACCESS-READONLY.png) | Not executed | Verify Owner, Editor, Viewer, missing-integration, permission-denied, and global read-only behavior for every assigned widget kind. |
|
||||
| WG-004-EVIDENCE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/WG-004-EVIDENCE.png) | Not executed | Capture screenshot, console, network, overflow, clipping, focus, and cleanup evidence for every kind and viewport row. |
|
||||
|
||||
## Widget kind × viewport checklist
|
||||
|
||||
| Widget kind | Viewport | Size | States | Permission/read-only | Options/persistence | Recovery | Evidence | Status |
|
||||
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
||||
| downloads | mobile-320 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04) | blocked |
|
||||
| downloads | mobile-375 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04) | blocked |
|
||||
| downloads | boundary-767 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04) | blocked |
|
||||
| downloads | boundary-768 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04) | blocked |
|
||||
| downloads | tablet-1024 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04) | blocked |
|
||||
| downloads | boundary-1279 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04) | blocked |
|
||||
| downloads | desktop-1280 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04) | blocked |
|
||||
| downloads | desktop-1440 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04) | blocked |
|
||||
| downloads | desktop-1920 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04) | blocked |
|
||||
| dockerContainers | mobile-320 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04) | blocked |
|
||||
| dockerContainers | mobile-375 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04) | blocked |
|
||||
| dockerContainers | boundary-767 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04) | blocked |
|
||||
| dockerContainers | boundary-768 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04) | blocked |
|
||||
| dockerContainers | tablet-1024 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04) | blocked |
|
||||
| dockerContainers | boundary-1279 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04) | blocked |
|
||||
| dockerContainers | desktop-1280 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04) | blocked |
|
||||
| dockerContainers | desktop-1440 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04) | blocked |
|
||||
| dockerContainers | desktop-1920 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04) | blocked |
|
||||
| indexerManager | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04) | blocked |
|
||||
| indexerManager | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04) | blocked |
|
||||
| indexerManager | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04) | blocked |
|
||||
| indexerManager | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04) | blocked |
|
||||
| indexerManager | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04) | blocked |
|
||||
| indexerManager | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04) | blocked |
|
||||
| indexerManager | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04) | blocked |
|
||||
| indexerManager | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04) | blocked |
|
||||
| indexerManager | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04) | blocked |
|
||||
| dnsHoleSummary | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04) | blocked |
|
||||
| dnsHoleSummary | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04) | blocked |
|
||||
| dnsHoleSummary | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04) | blocked |
|
||||
| dnsHoleSummary | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04) | blocked |
|
||||
| dnsHoleSummary | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04) | blocked |
|
||||
| dnsHoleSummary | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04) | blocked |
|
||||
| dnsHoleSummary | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04) | blocked |
|
||||
| dnsHoleSummary | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04) | blocked |
|
||||
| dnsHoleSummary | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04) | blocked |
|
||||
| dnsHoleControls | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04) | blocked |
|
||||
| dnsHoleControls | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04) | blocked |
|
||||
| dnsHoleControls | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04) | blocked |
|
||||
| dnsHoleControls | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04) | blocked |
|
||||
| dnsHoleControls | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04) | blocked |
|
||||
| dnsHoleControls | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04) | blocked |
|
||||
| dnsHoleControls | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04) | blocked |
|
||||
| dnsHoleControls | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04) | blocked |
|
||||
| dnsHoleControls | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04) | blocked |
|
||||
| downloads | mobile-320 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/downloads-mobile-320.png) | not-reached |
|
||||
| downloads | mobile-375 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/downloads-mobile-375.png) | not-reached |
|
||||
| downloads | boundary-767 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/downloads-boundary-767.png) | not-reached |
|
||||
| downloads | boundary-768 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/downloads-boundary-768.png) | not-reached |
|
||||
| downloads | tablet-1024 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/downloads-tablet-1024.png) | not-reached |
|
||||
| downloads | boundary-1279 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/downloads-boundary-1279.png) | not-reached |
|
||||
| downloads | desktop-1280 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/downloads-desktop-1280.png) | not-reached |
|
||||
| downloads | desktop-1440 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/downloads-desktop-1440.png) | not-reached |
|
||||
| downloads | desktop-1920 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/downloads-desktop-1920.png) | not-reached |
|
||||
| dockerContainers | mobile-320 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/dockerContainers-mobile-320.png) | not-reached |
|
||||
| dockerContainers | mobile-375 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/dockerContainers-mobile-375.png) | not-reached |
|
||||
| dockerContainers | boundary-767 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/dockerContainers-boundary-767.png) | not-reached |
|
||||
| dockerContainers | boundary-768 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/dockerContainers-boundary-768.png) | not-reached |
|
||||
| dockerContainers | tablet-1024 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/dockerContainers-tablet-1024.png) | not-reached |
|
||||
| dockerContainers | boundary-1279 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/dockerContainers-boundary-1279.png) | not-reached |
|
||||
| dockerContainers | desktop-1280 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/dockerContainers-desktop-1280.png) | not-reached |
|
||||
| dockerContainers | desktop-1440 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/dockerContainers-desktop-1440.png) | not-reached |
|
||||
| dockerContainers | desktop-1920 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/dockerContainers-desktop-1920.png) | not-reached |
|
||||
| indexerManager | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/indexerManager-mobile-320.png) | not-reached |
|
||||
| indexerManager | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/indexerManager-mobile-375.png) | not-reached |
|
||||
| indexerManager | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/indexerManager-boundary-767.png) | not-reached |
|
||||
| indexerManager | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/indexerManager-boundary-768.png) | not-reached |
|
||||
| indexerManager | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/indexerManager-tablet-1024.png) | not-reached |
|
||||
| indexerManager | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/indexerManager-boundary-1279.png) | not-reached |
|
||||
| indexerManager | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/indexerManager-desktop-1280.png) | not-reached |
|
||||
| indexerManager | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/indexerManager-desktop-1440.png) | not-reached |
|
||||
| indexerManager | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/indexerManager-desktop-1920.png) | not-reached |
|
||||
| dnsHoleSummary | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/dnsHoleSummary-mobile-320.png) | not-reached |
|
||||
| dnsHoleSummary | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/dnsHoleSummary-mobile-375.png) | not-reached |
|
||||
| dnsHoleSummary | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/dnsHoleSummary-boundary-767.png) | not-reached |
|
||||
| dnsHoleSummary | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/dnsHoleSummary-boundary-768.png) | not-reached |
|
||||
| dnsHoleSummary | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/dnsHoleSummary-tablet-1024.png) | not-reached |
|
||||
| dnsHoleSummary | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/dnsHoleSummary-boundary-1279.png) | not-reached |
|
||||
| dnsHoleSummary | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/dnsHoleSummary-desktop-1280.png) | not-reached |
|
||||
| dnsHoleSummary | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/dnsHoleSummary-desktop-1440.png) | not-reached |
|
||||
| dnsHoleSummary | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/dnsHoleSummary-desktop-1920.png) | not-reached |
|
||||
| dnsHoleControls | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/dnsHoleControls-mobile-320.png) | not-reached |
|
||||
| dnsHoleControls | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/dnsHoleControls-mobile-375.png) | not-reached |
|
||||
| dnsHoleControls | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/dnsHoleControls-boundary-767.png) | not-reached |
|
||||
| dnsHoleControls | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/dnsHoleControls-boundary-768.png) | not-reached |
|
||||
| dnsHoleControls | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/dnsHoleControls-tablet-1024.png) | not-reached |
|
||||
| dnsHoleControls | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/dnsHoleControls-boundary-1279.png) | not-reached |
|
||||
| dnsHoleControls | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/dnsHoleControls-desktop-1280.png) | not-reached |
|
||||
| dnsHoleControls | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/dnsHoleControls-desktop-1440.png) | not-reached |
|
||||
| dnsHoleControls | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/dnsHoleControls-desktop-1920.png) | not-reached |
|
||||
|
||||
## Performance measurements and limitations
|
||||
|
||||
No valid feature timing could be recorded because no application document rendered. Cold/warm, polling, rendering, memory, and recovery measurements remain blocked.
|
||||
Record structured measurements in `performance.measurements` with units, thresholds, status, and evidence. Record every environmental or tooling limitation in `performance.limitations`; leave measurements empty instead of inventing a result.
|
||||
|
||||
## Independent reproductions
|
||||
|
||||
The common routing failure was independently reproduced by qa-v2-preflight-01; the corresponding tracked packet contains its own browser evidence.
|
||||
Record a second agent's result in `independentReproductions` with the finding fingerprint, agent ID, outcome, evidence, and notes. An unattempted reproduction remains `not-reached`.
|
||||
|
||||
## Findings
|
||||
|
||||
### RV2-P1-001 — P1: locale rewrite causes an infinite browser redirect
|
||||
|
||||
Preconditions: candidate f57a660088d6777c86aca22977354fa8b810e2be, main-writable, mobile-320, 100% zoom, mouse, fresh named Chromium session qa-v2-widgets-04.
|
||||
|
||||
1. Launch a fresh Chromium context with the Chromium argument --no-sandbox.
|
||||
2. Set the assigned viewport and open http://127.0.0.1:37137 or its authentication entry.
|
||||
3. Observe repeated document requests to the same route.
|
||||
4. Wait until Chromium displays ERR_TOO_MANY_REDIRECTS or chrome-error://chromewebdata/.
|
||||
5. Close the context, retry in a fresh context, and observe the same result.
|
||||
|
||||
Expected: the application renders the assigned entry, permitting authentication and the packet flow. Actual: the redirect loop prevents the application from rendering. Reproducibility: reproduced on retry and independently by the preflight agents. Console output was empty; network and visual evidence are linked below.
|
||||
|
||||
## Artifacts
|
||||
|
||||
- [redirect-fresh-retry-320x568-100-console.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/logs/redirect-fresh-retry-320x568-100-console.txt)
|
||||
- [redirect-fresh-retry-320x568-100-errors.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/logs/redirect-fresh-retry-320x568-100-errors.txt)
|
||||
- [redirect-fresh-retry-320x568-100-network.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/logs/redirect-fresh-retry-320x568-100-network.txt)
|
||||
- [redirect-initial-320x568-100-console.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/logs/redirect-initial-320x568-100-console.txt)
|
||||
- [redirect-initial-320x568-100-errors.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/logs/redirect-initial-320x568-100-errors.txt)
|
||||
- [redirect-initial-320x568-100-network.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/logs/redirect-initial-320x568-100-network.txt)
|
||||
- [redirect-fresh-retry-320x568-100-before.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/screenshots/redirect-fresh-retry-320x568-100-before.png)
|
||||
- [redirect-fresh-retry-320x568-100-result.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/screenshots/redirect-fresh-retry-320x568-100-result.png)
|
||||
- [redirect-fresh-retry-320x568-100.webm](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/videos/redirect-fresh-retry-320x568-100.webm)
|
||||
- [redirect-initial-320x568-100.webm](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-04/videos/redirect-initial-320x568-100.webm)
|
||||
|
||||
## Mutations and persistence
|
||||
|
||||
No credentials were submitted and no product mutation occurred. Reload and fresh-session retries reproduced the routing failure, so application persistence was not reachable.
|
||||
No findings recorded. Add structured findings to the metadata block and mirror them here.
|
||||
|
||||
## Blockers and gaps
|
||||
|
||||
Every non-evidence case listed as blocked remains untested beyond the routing entry. No blocked cell is treated as passed.
|
||||
Not executed.
|
||||
|
||||
## Cleanup
|
||||
|
||||
The named browser session was closed by the browser agent. Artifacts remain under the untracked packet directory; no secret values were captured.
|
||||
Record created resources, cleanup outcome, console errors, and network failures. Never include secret values.
|
||||
@@ -1,348 +1,307 @@
|
||||
<!-- release-v2-qa-report
|
||||
{
|
||||
"packetId": "widgets-05",
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"caseStatuses": {
|
||||
"WG-005-RENDER-SIZE": "blocked",
|
||||
"WG-005-STATES-RECOVERY": "blocked",
|
||||
"WG-005-OPTIONS-PERSISTENCE": "blocked",
|
||||
"WG-005-ACCESS-READONLY": "blocked",
|
||||
"WG-005-EVIDENCE": "blocked"
|
||||
"WG-005-RENDER-SIZE": "not-reached",
|
||||
"WG-005-STATES-RECOVERY": "not-reached",
|
||||
"WG-005-OPTIONS-PERSISTENCE": "not-reached",
|
||||
"WG-005-ACCESS-READONLY": "not-reached",
|
||||
"WG-005-EVIDENCE": "not-reached"
|
||||
},
|
||||
"execution": {
|
||||
"candidateSha": "f57a660088d6777c86aca22977354fa8b810e2be",
|
||||
"url": "http://127.0.0.1:37137",
|
||||
"actualPort": 37137,
|
||||
"runtimeProfile": "main-writable",
|
||||
"runtimeFlags": [
|
||||
"DEMO_MODE=true",
|
||||
"DEMO_READ_ONLY=false",
|
||||
"UNSAFE_ENABLE_MOCK_INTEGRATION=true"
|
||||
],
|
||||
"persona": "Ingrid Infra",
|
||||
"sessionId": "qa-v2-widgets-05",
|
||||
"timestamp": "2026-08-31T16:07:56.618Z",
|
||||
"viewport": "mobile-320",
|
||||
"input": "mouse",
|
||||
"zoom": 100
|
||||
"candidateSha": "2d5edf46513b96c8b9f973d4a121b396d688e9bb",
|
||||
"url": null,
|
||||
"actualPort": null,
|
||||
"runtimeProfile": null,
|
||||
"runtimeFlags": [],
|
||||
"persona": null,
|
||||
"sessionId": null,
|
||||
"timestamp": null,
|
||||
"viewport": null,
|
||||
"input": null,
|
||||
"zoom": null
|
||||
},
|
||||
"findings": [
|
||||
{
|
||||
"id": "RV2-P1-001",
|
||||
"fingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"severity": "P1",
|
||||
"area": "routing/authentication",
|
||||
"title": "Locale rewrite causes an infinite browser redirect before the application renders",
|
||||
"summary": "Chromium repeatedly requests the same entry route and ends on ERR_TOO_MANY_REDIRECTS, preventing the assigned browser flow.",
|
||||
"caseIds": [
|
||||
"WG-005-RENDER-SIZE",
|
||||
"WG-005-STATES-RECOVERY",
|
||||
"WG-005-OPTIONS-PERSISTENCE",
|
||||
"WG-005-ACCESS-READONLY",
|
||||
"WG-005-EVIDENCE"
|
||||
],
|
||||
"evidence": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/initial-320x568-network-scoped.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/initial-320x568-redirect.png"
|
||||
]
|
||||
}
|
||||
],
|
||||
"artifacts": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/initial-320x568-console-scoped.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/initial-320x568-errors.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/initial-320x568-network-scoped.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/initial-320x568-redirect.png"
|
||||
],
|
||||
"findings": [],
|
||||
"artifacts": [],
|
||||
"widgetChecks": [
|
||||
{
|
||||
"widgetKind": "smartHome-entityState",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "smartHome-entityState",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "smartHome-entityState",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "smartHome-entityState",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "smartHome-entityState",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "smartHome-entityState",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "smartHome-entityState",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "smartHome-entityState",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "smartHome-entityState",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "smartHome-executeAutomation",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "smartHome-executeAutomation",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "smartHome-executeAutomation",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "smartHome-executeAutomation",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "smartHome-executeAutomation",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "smartHome-executeAutomation",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "smartHome-executeAutomation",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "smartHome-executeAutomation",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "smartHome-executeAutomation",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "healthMonitoring",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "healthMonitoring",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "healthMonitoring",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "healthMonitoring",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "healthMonitoring",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "healthMonitoring",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "healthMonitoring",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "healthMonitoring",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "healthMonitoring",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "systemResources",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "systemResources",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "systemResources",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "systemResources",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "systemResources",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "systemResources",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "systemResources",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "systemResources",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "systemResources",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "systemDisks",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "systemDisks",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "systemDisks",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "systemDisks",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "systemDisks",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "systemDisks",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "systemDisks",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "systemDisks",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "systemDisks",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
}
|
||||
],
|
||||
"performance": {
|
||||
"measurements": [],
|
||||
"limitations": [
|
||||
"The application never rendered, so assigned feature, mutation, persistence, permission, viewport, and performance checks were blocked.",
|
||||
"No credentials were submitted and no product state was mutated.",
|
||||
"The packet's retry did not produce a separate artifact; the same finding has independent reproductions in the preflight reports."
|
||||
]
|
||||
"limitations": []
|
||||
},
|
||||
"independentReproductions": [
|
||||
{
|
||||
"findingFingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"agentId": "qa-v2-preflight-01",
|
||||
"outcome": "reproduced",
|
||||
"evidence": [],
|
||||
"notes": "See preflight-01 for an independent Luna Max reproduction."
|
||||
}
|
||||
],
|
||||
"notes": "Report-only black-box run. No defect was fixed and no secret was recorded."
|
||||
"independentReproductions": [],
|
||||
"notes": "Not executed."
|
||||
}
|
||||
-->
|
||||
|
||||
@@ -350,7 +309,7 @@
|
||||
|
||||
| Metadata | Value |
|
||||
| --- | --- |
|
||||
| Status | blocked |
|
||||
| Status | not-reached |
|
||||
| Wave | widgets |
|
||||
| PR refs | #6502, #6555 |
|
||||
| Personas | Ingrid Infra |
|
||||
@@ -361,111 +320,90 @@
|
||||
| Input | mouse, touch, keyboard |
|
||||
| Widget kinds | smartHome-entityState, smartHome-executeAutomation, healthMonitoring, systemResources, systemDisks |
|
||||
| Artifact directory | [/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05) |
|
||||
| Candidate SHA | f57a660088d6777c86aca22977354fa8b810e2be |
|
||||
| URL / actual port | http://127.0.0.1:37137 / 37137 |
|
||||
| Runtime profile / flags | main-writable; DEMO_MODE=true, DEMO_READ_ONLY=false, UNSAFE_ENABLE_MOCK_INTEGRATION=true |
|
||||
| Executed persona | Ingrid Infra |
|
||||
| Browser session ID | qa-v2-widgets-05 |
|
||||
| Timestamp | 2026-08-31T16:07:56.618Z |
|
||||
| Executed viewport / input / zoom | mobile-320 / mouse / 100% |
|
||||
| Candidate SHA | 2d5edf46513b96c8b9f973d4a121b396d688e9bb |
|
||||
| URL / actual port | not-recorded |
|
||||
| Runtime profile / flags | not-recorded |
|
||||
| Executed persona | not-recorded |
|
||||
| Browser session ID | not-recorded |
|
||||
| Timestamp | not-recorded |
|
||||
| Executed viewport / input / zoom | not-recorded |
|
||||
|
||||
## Dogfood evidence
|
||||
|
||||
| Case ID | Status | Evidence | Observed | Expected |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| WG-005-RENDER-SIZE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Render every assigned widget kind at every assigned viewport and exercise default, minimum, maximum, and compact sizes where supported. |
|
||||
| WG-005-STATES-RECOVERY | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify loading, populated, empty, error, stale, retry, and recovered states for every assigned widget kind. |
|
||||
| WG-005-OPTIONS-PERSISTENCE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Mutate meaningful options, save, reload, reset, and confirm each assigned widget kind persists correctly. |
|
||||
| WG-005-ACCESS-READONLY | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify Owner, Editor, Viewer, missing-integration, permission-denied, and global read-only behavior for every assigned widget kind. |
|
||||
| WG-005-EVIDENCE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Capture screenshot, console, network, overflow, clipping, focus, and cleanup evidence for every kind and viewport row. |
|
||||
| WG-005-RENDER-SIZE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/WG-005-RENDER-SIZE.png) | Not executed | Render every assigned widget kind at every assigned viewport and exercise default, minimum, maximum, and compact sizes where supported. |
|
||||
| WG-005-STATES-RECOVERY | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/WG-005-STATES-RECOVERY.png) | Not executed | Verify loading, populated, empty, error, stale, retry, and recovered states for every assigned widget kind. |
|
||||
| WG-005-OPTIONS-PERSISTENCE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/WG-005-OPTIONS-PERSISTENCE.png) | Not executed | Mutate meaningful options, save, reload, reset, and confirm each assigned widget kind persists correctly. |
|
||||
| WG-005-ACCESS-READONLY | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/WG-005-ACCESS-READONLY.png) | Not executed | Verify Owner, Editor, Viewer, missing-integration, permission-denied, and global read-only behavior for every assigned widget kind. |
|
||||
| WG-005-EVIDENCE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/WG-005-EVIDENCE.png) | Not executed | Capture screenshot, console, network, overflow, clipping, focus, and cleanup evidence for every kind and viewport row. |
|
||||
|
||||
## Widget kind × viewport checklist
|
||||
|
||||
| Widget kind | Viewport | Size | States | Permission/read-only | Options/persistence | Recovery | Evidence | Status |
|
||||
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
||||
| smartHome-entityState | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05) | blocked |
|
||||
| smartHome-entityState | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05) | blocked |
|
||||
| smartHome-entityState | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05) | blocked |
|
||||
| smartHome-entityState | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05) | blocked |
|
||||
| smartHome-entityState | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05) | blocked |
|
||||
| smartHome-entityState | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05) | blocked |
|
||||
| smartHome-entityState | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05) | blocked |
|
||||
| smartHome-entityState | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05) | blocked |
|
||||
| smartHome-entityState | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05) | blocked |
|
||||
| smartHome-executeAutomation | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05) | blocked |
|
||||
| smartHome-executeAutomation | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05) | blocked |
|
||||
| smartHome-executeAutomation | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05) | blocked |
|
||||
| smartHome-executeAutomation | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05) | blocked |
|
||||
| smartHome-executeAutomation | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05) | blocked |
|
||||
| smartHome-executeAutomation | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05) | blocked |
|
||||
| smartHome-executeAutomation | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05) | blocked |
|
||||
| smartHome-executeAutomation | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05) | blocked |
|
||||
| smartHome-executeAutomation | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05) | blocked |
|
||||
| healthMonitoring | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05) | blocked |
|
||||
| healthMonitoring | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05) | blocked |
|
||||
| healthMonitoring | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05) | blocked |
|
||||
| healthMonitoring | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05) | blocked |
|
||||
| healthMonitoring | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05) | blocked |
|
||||
| healthMonitoring | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05) | blocked |
|
||||
| healthMonitoring | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05) | blocked |
|
||||
| healthMonitoring | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05) | blocked |
|
||||
| healthMonitoring | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05) | blocked |
|
||||
| systemResources | mobile-320 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05) | blocked |
|
||||
| systemResources | mobile-375 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05) | blocked |
|
||||
| systemResources | boundary-767 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05) | blocked |
|
||||
| systemResources | boundary-768 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05) | blocked |
|
||||
| systemResources | tablet-1024 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05) | blocked |
|
||||
| systemResources | boundary-1279 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05) | blocked |
|
||||
| systemResources | desktop-1280 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05) | blocked |
|
||||
| systemResources | desktop-1440 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05) | blocked |
|
||||
| systemResources | desktop-1920 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05) | blocked |
|
||||
| systemDisks | mobile-320 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05) | blocked |
|
||||
| systemDisks | mobile-375 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05) | blocked |
|
||||
| systemDisks | boundary-767 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05) | blocked |
|
||||
| systemDisks | boundary-768 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05) | blocked |
|
||||
| systemDisks | tablet-1024 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05) | blocked |
|
||||
| systemDisks | boundary-1279 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05) | blocked |
|
||||
| systemDisks | desktop-1280 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05) | blocked |
|
||||
| systemDisks | desktop-1440 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05) | blocked |
|
||||
| systemDisks | desktop-1920 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05) | blocked |
|
||||
| smartHome-entityState | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/smartHome-entityState-mobile-320.png) | not-reached |
|
||||
| smartHome-entityState | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/smartHome-entityState-mobile-375.png) | not-reached |
|
||||
| smartHome-entityState | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/smartHome-entityState-boundary-767.png) | not-reached |
|
||||
| smartHome-entityState | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/smartHome-entityState-boundary-768.png) | not-reached |
|
||||
| smartHome-entityState | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/smartHome-entityState-tablet-1024.png) | not-reached |
|
||||
| smartHome-entityState | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/smartHome-entityState-boundary-1279.png) | not-reached |
|
||||
| smartHome-entityState | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/smartHome-entityState-desktop-1280.png) | not-reached |
|
||||
| smartHome-entityState | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/smartHome-entityState-desktop-1440.png) | not-reached |
|
||||
| smartHome-entityState | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/smartHome-entityState-desktop-1920.png) | not-reached |
|
||||
| smartHome-executeAutomation | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/smartHome-executeAutomation-mobile-320.png) | not-reached |
|
||||
| smartHome-executeAutomation | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/smartHome-executeAutomation-mobile-375.png) | not-reached |
|
||||
| smartHome-executeAutomation | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/smartHome-executeAutomation-boundary-767.png) | not-reached |
|
||||
| smartHome-executeAutomation | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/smartHome-executeAutomation-boundary-768.png) | not-reached |
|
||||
| smartHome-executeAutomation | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/smartHome-executeAutomation-tablet-1024.png) | not-reached |
|
||||
| smartHome-executeAutomation | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/smartHome-executeAutomation-boundary-1279.png) | not-reached |
|
||||
| smartHome-executeAutomation | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/smartHome-executeAutomation-desktop-1280.png) | not-reached |
|
||||
| smartHome-executeAutomation | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/smartHome-executeAutomation-desktop-1440.png) | not-reached |
|
||||
| smartHome-executeAutomation | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/smartHome-executeAutomation-desktop-1920.png) | not-reached |
|
||||
| healthMonitoring | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/healthMonitoring-mobile-320.png) | not-reached |
|
||||
| healthMonitoring | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/healthMonitoring-mobile-375.png) | not-reached |
|
||||
| healthMonitoring | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/healthMonitoring-boundary-767.png) | not-reached |
|
||||
| healthMonitoring | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/healthMonitoring-boundary-768.png) | not-reached |
|
||||
| healthMonitoring | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/healthMonitoring-tablet-1024.png) | not-reached |
|
||||
| healthMonitoring | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/healthMonitoring-boundary-1279.png) | not-reached |
|
||||
| healthMonitoring | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/healthMonitoring-desktop-1280.png) | not-reached |
|
||||
| healthMonitoring | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/healthMonitoring-desktop-1440.png) | not-reached |
|
||||
| healthMonitoring | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/healthMonitoring-desktop-1920.png) | not-reached |
|
||||
| systemResources | mobile-320 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/systemResources-mobile-320.png) | not-reached |
|
||||
| systemResources | mobile-375 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/systemResources-mobile-375.png) | not-reached |
|
||||
| systemResources | boundary-767 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/systemResources-boundary-767.png) | not-reached |
|
||||
| systemResources | boundary-768 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/systemResources-boundary-768.png) | not-reached |
|
||||
| systemResources | tablet-1024 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/systemResources-tablet-1024.png) | not-reached |
|
||||
| systemResources | boundary-1279 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/systemResources-boundary-1279.png) | not-reached |
|
||||
| systemResources | desktop-1280 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/systemResources-desktop-1280.png) | not-reached |
|
||||
| systemResources | desktop-1440 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/systemResources-desktop-1440.png) | not-reached |
|
||||
| systemResources | desktop-1920 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/systemResources-desktop-1920.png) | not-reached |
|
||||
| systemDisks | mobile-320 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/systemDisks-mobile-320.png) | not-reached |
|
||||
| systemDisks | mobile-375 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/systemDisks-mobile-375.png) | not-reached |
|
||||
| systemDisks | boundary-767 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/systemDisks-boundary-767.png) | not-reached |
|
||||
| systemDisks | boundary-768 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/systemDisks-boundary-768.png) | not-reached |
|
||||
| systemDisks | tablet-1024 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/systemDisks-tablet-1024.png) | not-reached |
|
||||
| systemDisks | boundary-1279 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/systemDisks-boundary-1279.png) | not-reached |
|
||||
| systemDisks | desktop-1280 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/systemDisks-desktop-1280.png) | not-reached |
|
||||
| systemDisks | desktop-1440 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/systemDisks-desktop-1440.png) | not-reached |
|
||||
| systemDisks | desktop-1920 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/systemDisks-desktop-1920.png) | not-reached |
|
||||
|
||||
## Performance measurements and limitations
|
||||
|
||||
No valid feature timing could be recorded because no application document rendered. Cold/warm, polling, rendering, memory, and recovery measurements remain blocked.
|
||||
Record structured measurements in `performance.measurements` with units, thresholds, status, and evidence. Record every environmental or tooling limitation in `performance.limitations`; leave measurements empty instead of inventing a result.
|
||||
|
||||
## Independent reproductions
|
||||
|
||||
The common routing failure was independently reproduced by qa-v2-preflight-01; the corresponding tracked packet contains its own browser evidence.
|
||||
Record a second agent's result in `independentReproductions` with the finding fingerprint, agent ID, outcome, evidence, and notes. An unattempted reproduction remains `not-reached`.
|
||||
|
||||
## Findings
|
||||
|
||||
### RV2-P1-001 — P1: locale rewrite causes an infinite browser redirect
|
||||
|
||||
Preconditions: candidate f57a660088d6777c86aca22977354fa8b810e2be, main-writable, mobile-320, 100% zoom, mouse, fresh named Chromium session qa-v2-widgets-05.
|
||||
|
||||
1. Launch a fresh Chromium context with the Chromium argument --no-sandbox.
|
||||
2. Set the assigned viewport and open http://127.0.0.1:37137 or its authentication entry.
|
||||
3. Observe repeated document requests to the same route.
|
||||
4. Wait until Chromium displays ERR_TOO_MANY_REDIRECTS or chrome-error://chromewebdata/.
|
||||
5. Compare the result with the independently reproduced preflight evidence.
|
||||
|
||||
Expected: the application renders the assigned entry, permitting authentication and the packet flow. Actual: the redirect loop prevents the application from rendering. Reproducibility: reproduced independently by the preflight agents. Console output was empty; network and visual evidence are linked below.
|
||||
|
||||
## Artifacts
|
||||
|
||||
- [initial-320x568-console-scoped.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/initial-320x568-console-scoped.txt)
|
||||
- [initial-320x568-errors.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/initial-320x568-errors.txt)
|
||||
- [initial-320x568-network-scoped.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/initial-320x568-network-scoped.txt)
|
||||
- [initial-320x568-redirect.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-05/initial-320x568-redirect.png)
|
||||
|
||||
## Mutations and persistence
|
||||
|
||||
No credentials were submitted and no product mutation occurred. Reload and fresh-session retries reproduced the routing failure, so application persistence was not reachable.
|
||||
No findings recorded. Add structured findings to the metadata block and mirror them here.
|
||||
|
||||
## Blockers and gaps
|
||||
|
||||
Every non-evidence case listed as blocked remains untested beyond the routing entry. No blocked cell is treated as passed.
|
||||
Not executed.
|
||||
|
||||
## Cleanup
|
||||
|
||||
The named browser session was closed by the browser agent. Artifacts remain under the untracked packet directory; no secret values were captured.
|
||||
Record created resources, cleanup outcome, console errors, and network failures. Never include secret values.
|
||||
@@ -1,350 +1,307 @@
|
||||
<!-- release-v2-qa-report
|
||||
{
|
||||
"packetId": "widgets-06",
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"caseStatuses": {
|
||||
"WG-006-RENDER-SIZE": "blocked",
|
||||
"WG-006-STATES-RECOVERY": "blocked",
|
||||
"WG-006-OPTIONS-PERSISTENCE": "blocked",
|
||||
"WG-006-ACCESS-READONLY": "blocked",
|
||||
"WG-006-EVIDENCE": "blocked"
|
||||
"WG-006-RENDER-SIZE": "not-reached",
|
||||
"WG-006-STATES-RECOVERY": "not-reached",
|
||||
"WG-006-OPTIONS-PERSISTENCE": "not-reached",
|
||||
"WG-006-ACCESS-READONLY": "not-reached",
|
||||
"WG-006-EVIDENCE": "not-reached"
|
||||
},
|
||||
"execution": {
|
||||
"candidateSha": "f57a660088d6777c86aca22977354fa8b810e2be",
|
||||
"url": "http://127.0.0.1:37137",
|
||||
"actualPort": 37137,
|
||||
"runtimeProfile": "main-writable",
|
||||
"runtimeFlags": [
|
||||
"DEMO_MODE=true",
|
||||
"DEMO_READ_ONLY=false",
|
||||
"UNSAFE_ENABLE_MOCK_INTEGRATION=true"
|
||||
],
|
||||
"persona": "Ingrid Infra",
|
||||
"sessionId": "qa-v2-widgets-06",
|
||||
"timestamp": "2026-08-31T16:11:37.513Z",
|
||||
"viewport": "mobile-320",
|
||||
"input": "mouse",
|
||||
"zoom": 100
|
||||
"candidateSha": "2d5edf46513b96c8b9f973d4a121b396d688e9bb",
|
||||
"url": null,
|
||||
"actualPort": null,
|
||||
"runtimeProfile": null,
|
||||
"runtimeFlags": [],
|
||||
"persona": null,
|
||||
"sessionId": null,
|
||||
"timestamp": null,
|
||||
"viewport": null,
|
||||
"input": null,
|
||||
"zoom": null
|
||||
},
|
||||
"findings": [
|
||||
{
|
||||
"id": "RV2-P1-001",
|
||||
"fingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"severity": "P1",
|
||||
"area": "routing/authentication",
|
||||
"title": "Locale rewrite causes an infinite browser redirect before the application renders",
|
||||
"summary": "Chromium repeatedly requests the same entry route and ends on ERR_TOO_MANY_REDIRECTS, preventing the assigned browser flow.",
|
||||
"caseIds": [
|
||||
"WG-006-RENDER-SIZE",
|
||||
"WG-006-STATES-RECOVERY",
|
||||
"WG-006-OPTIONS-PERSISTENCE",
|
||||
"WG-006-ACCESS-READONLY",
|
||||
"WG-006-EVIDENCE"
|
||||
],
|
||||
"evidence": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/initial-320x568-network-scoped.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/initial-320x568-redirect.png"
|
||||
]
|
||||
}
|
||||
],
|
||||
"artifacts": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/initial-320x568-console-scoped.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/initial-320x568-errors.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/initial-320x568-network-scoped.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/initial-320x568-redirect.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/initial-320x568-snapshot.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/initial-320x568-url.txt"
|
||||
],
|
||||
"findings": [],
|
||||
"artifacts": [],
|
||||
"widgetChecks": [
|
||||
{
|
||||
"widgetKind": "firewall",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "firewall",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "firewall",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "firewall",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "firewall",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "firewall",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "firewall",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "firewall",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "firewall",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "notifications",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "notifications",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "notifications",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "notifications",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "notifications",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "notifications",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "notifications",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "notifications",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "notifications",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "networkControllerSummary",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "networkControllerSummary",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "networkControllerSummary",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "networkControllerSummary",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "networkControllerSummary",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "networkControllerSummary",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "networkControllerSummary",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "networkControllerSummary",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "networkControllerSummary",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "networkControllerStatus",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "networkControllerStatus",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "networkControllerStatus",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "networkControllerStatus",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "networkControllerStatus",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "networkControllerStatus",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "networkControllerStatus",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "networkControllerStatus",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "networkControllerStatus",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "uptimeKuma",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "uptimeKuma",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "uptimeKuma",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "uptimeKuma",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "uptimeKuma",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "uptimeKuma",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "uptimeKuma",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "uptimeKuma",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "uptimeKuma",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
}
|
||||
],
|
||||
"performance": {
|
||||
"measurements": [],
|
||||
"limitations": [
|
||||
"The application never rendered, so assigned feature, mutation, persistence, permission, viewport, and performance checks were blocked.",
|
||||
"No credentials were submitted and no product state was mutated.",
|
||||
"The packet's retry did not produce a separate artifact; the same finding has independent reproductions in the preflight reports."
|
||||
]
|
||||
"limitations": []
|
||||
},
|
||||
"independentReproductions": [
|
||||
{
|
||||
"findingFingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"agentId": "qa-v2-preflight-01",
|
||||
"outcome": "reproduced",
|
||||
"evidence": [],
|
||||
"notes": "See preflight-01 for an independent Luna Max reproduction."
|
||||
}
|
||||
],
|
||||
"notes": "Report-only black-box run. No defect was fixed and no secret was recorded."
|
||||
"independentReproductions": [],
|
||||
"notes": "Not executed."
|
||||
}
|
||||
-->
|
||||
|
||||
@@ -352,7 +309,7 @@
|
||||
|
||||
| Metadata | Value |
|
||||
| --- | --- |
|
||||
| Status | blocked |
|
||||
| Status | not-reached |
|
||||
| Wave | widgets |
|
||||
| PR refs | #6502, #6555 |
|
||||
| Personas | Ingrid Infra |
|
||||
@@ -363,113 +320,90 @@
|
||||
| Input | mouse, touch, keyboard |
|
||||
| Widget kinds | firewall, notifications, networkControllerSummary, networkControllerStatus, uptimeKuma |
|
||||
| Artifact directory | [/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06) |
|
||||
| Candidate SHA | f57a660088d6777c86aca22977354fa8b810e2be |
|
||||
| URL / actual port | http://127.0.0.1:37137 / 37137 |
|
||||
| Runtime profile / flags | main-writable; DEMO_MODE=true, DEMO_READ_ONLY=false, UNSAFE_ENABLE_MOCK_INTEGRATION=true |
|
||||
| Executed persona | Ingrid Infra |
|
||||
| Browser session ID | qa-v2-widgets-06 |
|
||||
| Timestamp | 2026-08-31T16:11:37.513Z |
|
||||
| Executed viewport / input / zoom | mobile-320 / mouse / 100% |
|
||||
| Candidate SHA | 2d5edf46513b96c8b9f973d4a121b396d688e9bb |
|
||||
| URL / actual port | not-recorded |
|
||||
| Runtime profile / flags | not-recorded |
|
||||
| Executed persona | not-recorded |
|
||||
| Browser session ID | not-recorded |
|
||||
| Timestamp | not-recorded |
|
||||
| Executed viewport / input / zoom | not-recorded |
|
||||
|
||||
## Dogfood evidence
|
||||
|
||||
| Case ID | Status | Evidence | Observed | Expected |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| WG-006-RENDER-SIZE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Render every assigned widget kind at every assigned viewport and exercise default, minimum, maximum, and compact sizes where supported. |
|
||||
| WG-006-STATES-RECOVERY | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify loading, populated, empty, error, stale, retry, and recovered states for every assigned widget kind. |
|
||||
| WG-006-OPTIONS-PERSISTENCE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Mutate meaningful options, save, reload, reset, and confirm each assigned widget kind persists correctly. |
|
||||
| WG-006-ACCESS-READONLY | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify Owner, Editor, Viewer, missing-integration, permission-denied, and global read-only behavior for every assigned widget kind. |
|
||||
| WG-006-EVIDENCE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Capture screenshot, console, network, overflow, clipping, focus, and cleanup evidence for every kind and viewport row. |
|
||||
| WG-006-RENDER-SIZE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/WG-006-RENDER-SIZE.png) | Not executed | Render every assigned widget kind at every assigned viewport and exercise default, minimum, maximum, and compact sizes where supported. |
|
||||
| WG-006-STATES-RECOVERY | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/WG-006-STATES-RECOVERY.png) | Not executed | Verify loading, populated, empty, error, stale, retry, and recovered states for every assigned widget kind. |
|
||||
| WG-006-OPTIONS-PERSISTENCE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/WG-006-OPTIONS-PERSISTENCE.png) | Not executed | Mutate meaningful options, save, reload, reset, and confirm each assigned widget kind persists correctly. |
|
||||
| WG-006-ACCESS-READONLY | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/WG-006-ACCESS-READONLY.png) | Not executed | Verify Owner, Editor, Viewer, missing-integration, permission-denied, and global read-only behavior for every assigned widget kind. |
|
||||
| WG-006-EVIDENCE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/WG-006-EVIDENCE.png) | Not executed | Capture screenshot, console, network, overflow, clipping, focus, and cleanup evidence for every kind and viewport row. |
|
||||
|
||||
## Widget kind × viewport checklist
|
||||
|
||||
| Widget kind | Viewport | Size | States | Permission/read-only | Options/persistence | Recovery | Evidence | Status |
|
||||
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
||||
| firewall | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06) | blocked |
|
||||
| firewall | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06) | blocked |
|
||||
| firewall | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06) | blocked |
|
||||
| firewall | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06) | blocked |
|
||||
| firewall | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06) | blocked |
|
||||
| firewall | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06) | blocked |
|
||||
| firewall | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06) | blocked |
|
||||
| firewall | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06) | blocked |
|
||||
| firewall | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06) | blocked |
|
||||
| notifications | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06) | blocked |
|
||||
| notifications | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06) | blocked |
|
||||
| notifications | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06) | blocked |
|
||||
| notifications | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06) | blocked |
|
||||
| notifications | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06) | blocked |
|
||||
| notifications | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06) | blocked |
|
||||
| notifications | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06) | blocked |
|
||||
| notifications | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06) | blocked |
|
||||
| notifications | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06) | blocked |
|
||||
| networkControllerSummary | mobile-320 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06) | blocked |
|
||||
| networkControllerSummary | mobile-375 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06) | blocked |
|
||||
| networkControllerSummary | boundary-767 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06) | blocked |
|
||||
| networkControllerSummary | boundary-768 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06) | blocked |
|
||||
| networkControllerSummary | tablet-1024 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06) | blocked |
|
||||
| networkControllerSummary | boundary-1279 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06) | blocked |
|
||||
| networkControllerSummary | desktop-1280 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06) | blocked |
|
||||
| networkControllerSummary | desktop-1440 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06) | blocked |
|
||||
| networkControllerSummary | desktop-1920 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06) | blocked |
|
||||
| networkControllerStatus | mobile-320 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06) | blocked |
|
||||
| networkControllerStatus | mobile-375 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06) | blocked |
|
||||
| networkControllerStatus | boundary-767 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06) | blocked |
|
||||
| networkControllerStatus | boundary-768 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06) | blocked |
|
||||
| networkControllerStatus | tablet-1024 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06) | blocked |
|
||||
| networkControllerStatus | boundary-1279 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06) | blocked |
|
||||
| networkControllerStatus | desktop-1280 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06) | blocked |
|
||||
| networkControllerStatus | desktop-1440 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06) | blocked |
|
||||
| networkControllerStatus | desktop-1920 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06) | blocked |
|
||||
| uptimeKuma | mobile-320 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06) | blocked |
|
||||
| uptimeKuma | mobile-375 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06) | blocked |
|
||||
| uptimeKuma | boundary-767 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06) | blocked |
|
||||
| uptimeKuma | boundary-768 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06) | blocked |
|
||||
| uptimeKuma | tablet-1024 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06) | blocked |
|
||||
| uptimeKuma | boundary-1279 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06) | blocked |
|
||||
| uptimeKuma | desktop-1280 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06) | blocked |
|
||||
| uptimeKuma | desktop-1440 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06) | blocked |
|
||||
| uptimeKuma | desktop-1920 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06) | blocked |
|
||||
| firewall | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/firewall-mobile-320.png) | not-reached |
|
||||
| firewall | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/firewall-mobile-375.png) | not-reached |
|
||||
| firewall | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/firewall-boundary-767.png) | not-reached |
|
||||
| firewall | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/firewall-boundary-768.png) | not-reached |
|
||||
| firewall | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/firewall-tablet-1024.png) | not-reached |
|
||||
| firewall | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/firewall-boundary-1279.png) | not-reached |
|
||||
| firewall | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/firewall-desktop-1280.png) | not-reached |
|
||||
| firewall | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/firewall-desktop-1440.png) | not-reached |
|
||||
| firewall | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/firewall-desktop-1920.png) | not-reached |
|
||||
| notifications | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/notifications-mobile-320.png) | not-reached |
|
||||
| notifications | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/notifications-mobile-375.png) | not-reached |
|
||||
| notifications | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/notifications-boundary-767.png) | not-reached |
|
||||
| notifications | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/notifications-boundary-768.png) | not-reached |
|
||||
| notifications | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/notifications-tablet-1024.png) | not-reached |
|
||||
| notifications | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/notifications-boundary-1279.png) | not-reached |
|
||||
| notifications | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/notifications-desktop-1280.png) | not-reached |
|
||||
| notifications | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/notifications-desktop-1440.png) | not-reached |
|
||||
| notifications | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/notifications-desktop-1920.png) | not-reached |
|
||||
| networkControllerSummary | mobile-320 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/networkControllerSummary-mobile-320.png) | not-reached |
|
||||
| networkControllerSummary | mobile-375 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/networkControllerSummary-mobile-375.png) | not-reached |
|
||||
| networkControllerSummary | boundary-767 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/networkControllerSummary-boundary-767.png) | not-reached |
|
||||
| networkControllerSummary | boundary-768 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/networkControllerSummary-boundary-768.png) | not-reached |
|
||||
| networkControllerSummary | tablet-1024 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/networkControllerSummary-tablet-1024.png) | not-reached |
|
||||
| networkControllerSummary | boundary-1279 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/networkControllerSummary-boundary-1279.png) | not-reached |
|
||||
| networkControllerSummary | desktop-1280 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/networkControllerSummary-desktop-1280.png) | not-reached |
|
||||
| networkControllerSummary | desktop-1440 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/networkControllerSummary-desktop-1440.png) | not-reached |
|
||||
| networkControllerSummary | desktop-1920 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/networkControllerSummary-desktop-1920.png) | not-reached |
|
||||
| networkControllerStatus | mobile-320 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/networkControllerStatus-mobile-320.png) | not-reached |
|
||||
| networkControllerStatus | mobile-375 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/networkControllerStatus-mobile-375.png) | not-reached |
|
||||
| networkControllerStatus | boundary-767 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/networkControllerStatus-boundary-767.png) | not-reached |
|
||||
| networkControllerStatus | boundary-768 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/networkControllerStatus-boundary-768.png) | not-reached |
|
||||
| networkControllerStatus | tablet-1024 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/networkControllerStatus-tablet-1024.png) | not-reached |
|
||||
| networkControllerStatus | boundary-1279 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/networkControllerStatus-boundary-1279.png) | not-reached |
|
||||
| networkControllerStatus | desktop-1280 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/networkControllerStatus-desktop-1280.png) | not-reached |
|
||||
| networkControllerStatus | desktop-1440 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/networkControllerStatus-desktop-1440.png) | not-reached |
|
||||
| networkControllerStatus | desktop-1920 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/networkControllerStatus-desktop-1920.png) | not-reached |
|
||||
| uptimeKuma | mobile-320 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/uptimeKuma-mobile-320.png) | not-reached |
|
||||
| uptimeKuma | mobile-375 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/uptimeKuma-mobile-375.png) | not-reached |
|
||||
| uptimeKuma | boundary-767 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/uptimeKuma-boundary-767.png) | not-reached |
|
||||
| uptimeKuma | boundary-768 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/uptimeKuma-boundary-768.png) | not-reached |
|
||||
| uptimeKuma | tablet-1024 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/uptimeKuma-tablet-1024.png) | not-reached |
|
||||
| uptimeKuma | boundary-1279 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/uptimeKuma-boundary-1279.png) | not-reached |
|
||||
| uptimeKuma | desktop-1280 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/uptimeKuma-desktop-1280.png) | not-reached |
|
||||
| uptimeKuma | desktop-1440 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/uptimeKuma-desktop-1440.png) | not-reached |
|
||||
| uptimeKuma | desktop-1920 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/uptimeKuma-desktop-1920.png) | not-reached |
|
||||
|
||||
## Performance measurements and limitations
|
||||
|
||||
No valid feature timing could be recorded because no application document rendered. Cold/warm, polling, rendering, memory, and recovery measurements remain blocked.
|
||||
Record structured measurements in `performance.measurements` with units, thresholds, status, and evidence. Record every environmental or tooling limitation in `performance.limitations`; leave measurements empty instead of inventing a result.
|
||||
|
||||
## Independent reproductions
|
||||
|
||||
The common routing failure was independently reproduced by qa-v2-preflight-01; the corresponding tracked packet contains its own browser evidence.
|
||||
Record a second agent's result in `independentReproductions` with the finding fingerprint, agent ID, outcome, evidence, and notes. An unattempted reproduction remains `not-reached`.
|
||||
|
||||
## Findings
|
||||
|
||||
### RV2-P1-001 — P1: locale rewrite causes an infinite browser redirect
|
||||
|
||||
Preconditions: candidate f57a660088d6777c86aca22977354fa8b810e2be, main-writable, mobile-320, 100% zoom, mouse, fresh named Chromium session qa-v2-widgets-06.
|
||||
|
||||
1. Launch a fresh Chromium context with the Chromium argument --no-sandbox.
|
||||
2. Set the assigned viewport and open http://127.0.0.1:37137 or its authentication entry.
|
||||
3. Observe repeated document requests to the same route.
|
||||
4. Wait until Chromium displays ERR_TOO_MANY_REDIRECTS or chrome-error://chromewebdata/.
|
||||
5. Compare the result with the independently reproduced preflight evidence.
|
||||
|
||||
Expected: the application renders the assigned entry, permitting authentication and the packet flow. Actual: the redirect loop prevents the application from rendering. Reproducibility: reproduced independently by the preflight agents. Console output was empty; network and visual evidence are linked below.
|
||||
|
||||
## Artifacts
|
||||
|
||||
- [initial-320x568-console-scoped.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/initial-320x568-console-scoped.txt)
|
||||
- [initial-320x568-errors.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/initial-320x568-errors.txt)
|
||||
- [initial-320x568-network-scoped.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/initial-320x568-network-scoped.txt)
|
||||
- [initial-320x568-redirect.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/initial-320x568-redirect.png)
|
||||
- [initial-320x568-snapshot.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/initial-320x568-snapshot.txt)
|
||||
- [initial-320x568-url.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-06/initial-320x568-url.txt)
|
||||
|
||||
## Mutations and persistence
|
||||
|
||||
No credentials were submitted and no product mutation occurred. Reload and fresh-session retries reproduced the routing failure, so application persistence was not reachable.
|
||||
No findings recorded. Add structured findings to the metadata block and mirror them here.
|
||||
|
||||
## Blockers and gaps
|
||||
|
||||
Every non-evidence case listed as blocked remains untested beyond the routing entry. No blocked cell is treated as passed.
|
||||
Not executed.
|
||||
|
||||
## Cleanup
|
||||
|
||||
The named browser session was closed by the browser agent. Artifacts remain under the untracked packet directory; no secret values were captured.
|
||||
Record created resources, cleanup outcome, console errors, and network failures. Never include secret values.
|
||||
@@ -1,348 +1,307 @@
|
||||
<!-- release-v2-qa-report
|
||||
{
|
||||
"packetId": "widgets-07",
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"caseStatuses": {
|
||||
"WG-007-RENDER-SIZE": "blocked",
|
||||
"WG-007-STATES-RECOVERY": "blocked",
|
||||
"WG-007-OPTIONS-PERSISTENCE": "blocked",
|
||||
"WG-007-ACCESS-READONLY": "blocked",
|
||||
"WG-007-EVIDENCE": "blocked"
|
||||
"WG-007-RENDER-SIZE": "not-reached",
|
||||
"WG-007-STATES-RECOVERY": "not-reached",
|
||||
"WG-007-OPTIONS-PERSISTENCE": "not-reached",
|
||||
"WG-007-ACCESS-READONLY": "not-reached",
|
||||
"WG-007-EVIDENCE": "not-reached"
|
||||
},
|
||||
"execution": {
|
||||
"candidateSha": "f57a660088d6777c86aca22977354fa8b810e2be",
|
||||
"url": "http://127.0.0.1:37137",
|
||||
"actualPort": 37137,
|
||||
"runtimeProfile": "main-writable",
|
||||
"runtimeFlags": [
|
||||
"DEMO_MODE=true",
|
||||
"DEMO_READ_ONLY=false",
|
||||
"UNSAFE_ENABLE_MOCK_INTEGRATION=true"
|
||||
],
|
||||
"persona": "Ingrid Infra",
|
||||
"sessionId": "qa-v2-widgets-07",
|
||||
"timestamp": "2026-08-31T16:12:58.557Z",
|
||||
"viewport": "mobile-320",
|
||||
"input": "mouse",
|
||||
"zoom": 100
|
||||
"candidateSha": "2d5edf46513b96c8b9f973d4a121b396d688e9bb",
|
||||
"url": null,
|
||||
"actualPort": null,
|
||||
"runtimeProfile": null,
|
||||
"runtimeFlags": [],
|
||||
"persona": null,
|
||||
"sessionId": null,
|
||||
"timestamp": null,
|
||||
"viewport": null,
|
||||
"input": null,
|
||||
"zoom": null
|
||||
},
|
||||
"findings": [
|
||||
{
|
||||
"id": "RV2-P1-001",
|
||||
"fingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"severity": "P1",
|
||||
"area": "routing/authentication",
|
||||
"title": "Locale rewrite causes an infinite browser redirect before the application renders",
|
||||
"summary": "Chromium repeatedly requests the same entry route and ends on ERR_TOO_MANY_REDIRECTS, preventing the assigned browser flow.",
|
||||
"caseIds": [
|
||||
"WG-007-RENDER-SIZE",
|
||||
"WG-007-STATES-RECOVERY",
|
||||
"WG-007-OPTIONS-PERSISTENCE",
|
||||
"WG-007-ACCESS-READONLY",
|
||||
"WG-007-EVIDENCE"
|
||||
],
|
||||
"evidence": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/redirect-320x568-100.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/redirect-network-320x568-100.txt"
|
||||
]
|
||||
}
|
||||
],
|
||||
"artifacts": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/redirect-320x568-100.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/redirect-console-320x568-100.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/redirect-errors-320x568-100.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/redirect-network-320x568-100.txt"
|
||||
],
|
||||
"findings": [],
|
||||
"artifacts": [],
|
||||
"widgetChecks": [
|
||||
{
|
||||
"widgetKind": "beszelSystemTable",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "beszelSystemTable",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "beszelSystemTable",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "beszelSystemTable",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "beszelSystemTable",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "beszelSystemTable",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "beszelSystemTable",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "beszelSystemTable",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "beszelSystemTable",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "beszelSystemGrid",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "beszelSystemGrid",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "beszelSystemGrid",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "beszelSystemGrid",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "beszelSystemGrid",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "beszelSystemGrid",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "beszelSystemGrid",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "beszelSystemGrid",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "beszelSystemGrid",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "beszelAlerts",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "beszelAlerts",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "beszelAlerts",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "beszelAlerts",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "beszelAlerts",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "beszelAlerts",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "beszelAlerts",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "beszelAlerts",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "beszelAlerts",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "beszelSystemStats",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "beszelSystemStats",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "beszelSystemStats",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "beszelSystemStats",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "beszelSystemStats",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "beszelSystemStats",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "beszelSystemStats",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "beszelSystemStats",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "beszelSystemStats",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "wud",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "wud",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "wud",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "wud",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "wud",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "wud",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "wud",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "wud",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "wud",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
}
|
||||
],
|
||||
"performance": {
|
||||
"measurements": [],
|
||||
"limitations": [
|
||||
"The application never rendered, so assigned feature, mutation, persistence, permission, viewport, and performance checks were blocked.",
|
||||
"No credentials were submitted and no product state was mutated.",
|
||||
"The packet's retry did not produce a separate artifact; the same finding has independent reproductions in the preflight reports."
|
||||
]
|
||||
"limitations": []
|
||||
},
|
||||
"independentReproductions": [
|
||||
{
|
||||
"findingFingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"agentId": "qa-v2-preflight-01",
|
||||
"outcome": "reproduced",
|
||||
"evidence": [],
|
||||
"notes": "See preflight-01 for an independent Luna Max reproduction."
|
||||
}
|
||||
],
|
||||
"notes": "Report-only black-box run. No defect was fixed and no secret was recorded."
|
||||
"independentReproductions": [],
|
||||
"notes": "Not executed."
|
||||
}
|
||||
-->
|
||||
|
||||
@@ -350,7 +309,7 @@
|
||||
|
||||
| Metadata | Value |
|
||||
| --- | --- |
|
||||
| Status | blocked |
|
||||
| Status | not-reached |
|
||||
| Wave | widgets |
|
||||
| PR refs | #6502, #6555 |
|
||||
| Personas | Ingrid Infra |
|
||||
@@ -361,111 +320,90 @@
|
||||
| Input | mouse, touch, keyboard |
|
||||
| Widget kinds | beszelSystemTable, beszelSystemGrid, beszelAlerts, beszelSystemStats, wud |
|
||||
| Artifact directory | [/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07) |
|
||||
| Candidate SHA | f57a660088d6777c86aca22977354fa8b810e2be |
|
||||
| URL / actual port | http://127.0.0.1:37137 / 37137 |
|
||||
| Runtime profile / flags | main-writable; DEMO_MODE=true, DEMO_READ_ONLY=false, UNSAFE_ENABLE_MOCK_INTEGRATION=true |
|
||||
| Executed persona | Ingrid Infra |
|
||||
| Browser session ID | qa-v2-widgets-07 |
|
||||
| Timestamp | 2026-08-31T16:12:58.557Z |
|
||||
| Executed viewport / input / zoom | mobile-320 / mouse / 100% |
|
||||
| Candidate SHA | 2d5edf46513b96c8b9f973d4a121b396d688e9bb |
|
||||
| URL / actual port | not-recorded |
|
||||
| Runtime profile / flags | not-recorded |
|
||||
| Executed persona | not-recorded |
|
||||
| Browser session ID | not-recorded |
|
||||
| Timestamp | not-recorded |
|
||||
| Executed viewport / input / zoom | not-recorded |
|
||||
|
||||
## Dogfood evidence
|
||||
|
||||
| Case ID | Status | Evidence | Observed | Expected |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| WG-007-RENDER-SIZE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Render every assigned widget kind at every assigned viewport and exercise default, minimum, maximum, and compact sizes where supported. |
|
||||
| WG-007-STATES-RECOVERY | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify loading, populated, empty, error, stale, retry, and recovered states for every assigned widget kind. |
|
||||
| WG-007-OPTIONS-PERSISTENCE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Mutate meaningful options, save, reload, reset, and confirm each assigned widget kind persists correctly. |
|
||||
| WG-007-ACCESS-READONLY | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify Owner, Editor, Viewer, missing-integration, permission-denied, and global read-only behavior for every assigned widget kind. |
|
||||
| WG-007-EVIDENCE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Capture screenshot, console, network, overflow, clipping, focus, and cleanup evidence for every kind and viewport row. |
|
||||
| WG-007-RENDER-SIZE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/WG-007-RENDER-SIZE.png) | Not executed | Render every assigned widget kind at every assigned viewport and exercise default, minimum, maximum, and compact sizes where supported. |
|
||||
| WG-007-STATES-RECOVERY | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/WG-007-STATES-RECOVERY.png) | Not executed | Verify loading, populated, empty, error, stale, retry, and recovered states for every assigned widget kind. |
|
||||
| WG-007-OPTIONS-PERSISTENCE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/WG-007-OPTIONS-PERSISTENCE.png) | Not executed | Mutate meaningful options, save, reload, reset, and confirm each assigned widget kind persists correctly. |
|
||||
| WG-007-ACCESS-READONLY | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/WG-007-ACCESS-READONLY.png) | Not executed | Verify Owner, Editor, Viewer, missing-integration, permission-denied, and global read-only behavior for every assigned widget kind. |
|
||||
| WG-007-EVIDENCE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/WG-007-EVIDENCE.png) | Not executed | Capture screenshot, console, network, overflow, clipping, focus, and cleanup evidence for every kind and viewport row. |
|
||||
|
||||
## Widget kind × viewport checklist
|
||||
|
||||
| Widget kind | Viewport | Size | States | Permission/read-only | Options/persistence | Recovery | Evidence | Status |
|
||||
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
||||
| beszelSystemTable | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07) | blocked |
|
||||
| beszelSystemTable | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07) | blocked |
|
||||
| beszelSystemTable | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07) | blocked |
|
||||
| beszelSystemTable | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07) | blocked |
|
||||
| beszelSystemTable | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07) | blocked |
|
||||
| beszelSystemTable | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07) | blocked |
|
||||
| beszelSystemTable | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07) | blocked |
|
||||
| beszelSystemTable | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07) | blocked |
|
||||
| beszelSystemTable | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07) | blocked |
|
||||
| beszelSystemGrid | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07) | blocked |
|
||||
| beszelSystemGrid | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07) | blocked |
|
||||
| beszelSystemGrid | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07) | blocked |
|
||||
| beszelSystemGrid | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07) | blocked |
|
||||
| beszelSystemGrid | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07) | blocked |
|
||||
| beszelSystemGrid | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07) | blocked |
|
||||
| beszelSystemGrid | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07) | blocked |
|
||||
| beszelSystemGrid | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07) | blocked |
|
||||
| beszelSystemGrid | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07) | blocked |
|
||||
| beszelAlerts | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07) | blocked |
|
||||
| beszelAlerts | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07) | blocked |
|
||||
| beszelAlerts | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07) | blocked |
|
||||
| beszelAlerts | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07) | blocked |
|
||||
| beszelAlerts | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07) | blocked |
|
||||
| beszelAlerts | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07) | blocked |
|
||||
| beszelAlerts | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07) | blocked |
|
||||
| beszelAlerts | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07) | blocked |
|
||||
| beszelAlerts | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07) | blocked |
|
||||
| beszelSystemStats | mobile-320 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07) | blocked |
|
||||
| beszelSystemStats | mobile-375 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07) | blocked |
|
||||
| beszelSystemStats | boundary-767 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07) | blocked |
|
||||
| beszelSystemStats | boundary-768 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07) | blocked |
|
||||
| beszelSystemStats | tablet-1024 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07) | blocked |
|
||||
| beszelSystemStats | boundary-1279 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07) | blocked |
|
||||
| beszelSystemStats | desktop-1280 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07) | blocked |
|
||||
| beszelSystemStats | desktop-1440 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07) | blocked |
|
||||
| beszelSystemStats | desktop-1920 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07) | blocked |
|
||||
| wud | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07) | blocked |
|
||||
| wud | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07) | blocked |
|
||||
| wud | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07) | blocked |
|
||||
| wud | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07) | blocked |
|
||||
| wud | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07) | blocked |
|
||||
| wud | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07) | blocked |
|
||||
| wud | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07) | blocked |
|
||||
| wud | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07) | blocked |
|
||||
| wud | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07) | blocked |
|
||||
| beszelSystemTable | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/beszelSystemTable-mobile-320.png) | not-reached |
|
||||
| beszelSystemTable | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/beszelSystemTable-mobile-375.png) | not-reached |
|
||||
| beszelSystemTable | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/beszelSystemTable-boundary-767.png) | not-reached |
|
||||
| beszelSystemTable | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/beszelSystemTable-boundary-768.png) | not-reached |
|
||||
| beszelSystemTable | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/beszelSystemTable-tablet-1024.png) | not-reached |
|
||||
| beszelSystemTable | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/beszelSystemTable-boundary-1279.png) | not-reached |
|
||||
| beszelSystemTable | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/beszelSystemTable-desktop-1280.png) | not-reached |
|
||||
| beszelSystemTable | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/beszelSystemTable-desktop-1440.png) | not-reached |
|
||||
| beszelSystemTable | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/beszelSystemTable-desktop-1920.png) | not-reached |
|
||||
| beszelSystemGrid | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/beszelSystemGrid-mobile-320.png) | not-reached |
|
||||
| beszelSystemGrid | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/beszelSystemGrid-mobile-375.png) | not-reached |
|
||||
| beszelSystemGrid | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/beszelSystemGrid-boundary-767.png) | not-reached |
|
||||
| beszelSystemGrid | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/beszelSystemGrid-boundary-768.png) | not-reached |
|
||||
| beszelSystemGrid | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/beszelSystemGrid-tablet-1024.png) | not-reached |
|
||||
| beszelSystemGrid | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/beszelSystemGrid-boundary-1279.png) | not-reached |
|
||||
| beszelSystemGrid | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/beszelSystemGrid-desktop-1280.png) | not-reached |
|
||||
| beszelSystemGrid | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/beszelSystemGrid-desktop-1440.png) | not-reached |
|
||||
| beszelSystemGrid | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/beszelSystemGrid-desktop-1920.png) | not-reached |
|
||||
| beszelAlerts | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/beszelAlerts-mobile-320.png) | not-reached |
|
||||
| beszelAlerts | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/beszelAlerts-mobile-375.png) | not-reached |
|
||||
| beszelAlerts | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/beszelAlerts-boundary-767.png) | not-reached |
|
||||
| beszelAlerts | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/beszelAlerts-boundary-768.png) | not-reached |
|
||||
| beszelAlerts | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/beszelAlerts-tablet-1024.png) | not-reached |
|
||||
| beszelAlerts | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/beszelAlerts-boundary-1279.png) | not-reached |
|
||||
| beszelAlerts | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/beszelAlerts-desktop-1280.png) | not-reached |
|
||||
| beszelAlerts | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/beszelAlerts-desktop-1440.png) | not-reached |
|
||||
| beszelAlerts | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/beszelAlerts-desktop-1920.png) | not-reached |
|
||||
| beszelSystemStats | mobile-320 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/beszelSystemStats-mobile-320.png) | not-reached |
|
||||
| beszelSystemStats | mobile-375 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/beszelSystemStats-mobile-375.png) | not-reached |
|
||||
| beszelSystemStats | boundary-767 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/beszelSystemStats-boundary-767.png) | not-reached |
|
||||
| beszelSystemStats | boundary-768 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/beszelSystemStats-boundary-768.png) | not-reached |
|
||||
| beszelSystemStats | tablet-1024 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/beszelSystemStats-tablet-1024.png) | not-reached |
|
||||
| beszelSystemStats | boundary-1279 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/beszelSystemStats-boundary-1279.png) | not-reached |
|
||||
| beszelSystemStats | desktop-1280 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/beszelSystemStats-desktop-1280.png) | not-reached |
|
||||
| beszelSystemStats | desktop-1440 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/beszelSystemStats-desktop-1440.png) | not-reached |
|
||||
| beszelSystemStats | desktop-1920 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/beszelSystemStats-desktop-1920.png) | not-reached |
|
||||
| wud | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/wud-mobile-320.png) | not-reached |
|
||||
| wud | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/wud-mobile-375.png) | not-reached |
|
||||
| wud | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/wud-boundary-767.png) | not-reached |
|
||||
| wud | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/wud-boundary-768.png) | not-reached |
|
||||
| wud | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/wud-tablet-1024.png) | not-reached |
|
||||
| wud | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/wud-boundary-1279.png) | not-reached |
|
||||
| wud | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/wud-desktop-1280.png) | not-reached |
|
||||
| wud | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/wud-desktop-1440.png) | not-reached |
|
||||
| wud | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/wud-desktop-1920.png) | not-reached |
|
||||
|
||||
## Performance measurements and limitations
|
||||
|
||||
No valid feature timing could be recorded because no application document rendered. Cold/warm, polling, rendering, memory, and recovery measurements remain blocked.
|
||||
Record structured measurements in `performance.measurements` with units, thresholds, status, and evidence. Record every environmental or tooling limitation in `performance.limitations`; leave measurements empty instead of inventing a result.
|
||||
|
||||
## Independent reproductions
|
||||
|
||||
The common routing failure was independently reproduced by qa-v2-preflight-01; the corresponding tracked packet contains its own browser evidence.
|
||||
Record a second agent's result in `independentReproductions` with the finding fingerprint, agent ID, outcome, evidence, and notes. An unattempted reproduction remains `not-reached`.
|
||||
|
||||
## Findings
|
||||
|
||||
### RV2-P1-001 — P1: locale rewrite causes an infinite browser redirect
|
||||
|
||||
Preconditions: candidate f57a660088d6777c86aca22977354fa8b810e2be, main-writable, mobile-320, 100% zoom, mouse, fresh named Chromium session qa-v2-widgets-07.
|
||||
|
||||
1. Launch a fresh Chromium context with the Chromium argument --no-sandbox.
|
||||
2. Set the assigned viewport and open http://127.0.0.1:37137 or its authentication entry.
|
||||
3. Observe repeated document requests to the same route.
|
||||
4. Wait until Chromium displays ERR_TOO_MANY_REDIRECTS or chrome-error://chromewebdata/.
|
||||
5. Compare the result with the independently reproduced preflight evidence.
|
||||
|
||||
Expected: the application renders the assigned entry, permitting authentication and the packet flow. Actual: the redirect loop prevents the application from rendering. Reproducibility: reproduced independently by the preflight agents. Console output was empty; network and visual evidence are linked below.
|
||||
|
||||
## Artifacts
|
||||
|
||||
- [redirect-320x568-100.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/redirect-320x568-100.png)
|
||||
- [redirect-console-320x568-100.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/redirect-console-320x568-100.txt)
|
||||
- [redirect-errors-320x568-100.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/redirect-errors-320x568-100.txt)
|
||||
- [redirect-network-320x568-100.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-07/redirect-network-320x568-100.txt)
|
||||
|
||||
## Mutations and persistence
|
||||
|
||||
No credentials were submitted and no product mutation occurred. Reload and fresh-session retries reproduced the routing failure, so application persistence was not reachable.
|
||||
No findings recorded. Add structured findings to the metadata block and mirror them here.
|
||||
|
||||
## Blockers and gaps
|
||||
|
||||
Every non-evidence case listed as blocked remains untested beyond the routing entry. No blocked cell is treated as passed.
|
||||
Not executed.
|
||||
|
||||
## Cleanup
|
||||
|
||||
The named browser session was closed by the browser agent. Artifacts remain under the untracked packet directory; no secret values were captured.
|
||||
Record created resources, cleanup outcome, console errors, and network failures. Never include secret values.
|
||||
@@ -1,361 +1,307 @@
|
||||
<!-- release-v2-qa-report
|
||||
{
|
||||
"packetId": "widgets-08",
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"caseStatuses": {
|
||||
"WG-008-RENDER-SIZE": "blocked",
|
||||
"WG-008-STATES-RECOVERY": "blocked",
|
||||
"WG-008-OPTIONS-PERSISTENCE": "blocked",
|
||||
"WG-008-ACCESS-READONLY": "blocked",
|
||||
"WG-008-EVIDENCE": "blocked"
|
||||
"WG-008-RENDER-SIZE": "not-reached",
|
||||
"WG-008-STATES-RECOVERY": "not-reached",
|
||||
"WG-008-OPTIONS-PERSISTENCE": "not-reached",
|
||||
"WG-008-ACCESS-READONLY": "not-reached",
|
||||
"WG-008-EVIDENCE": "not-reached"
|
||||
},
|
||||
"execution": {
|
||||
"candidateSha": "f57a660088d6777c86aca22977354fa8b810e2be",
|
||||
"url": "http://127.0.0.1:37137",
|
||||
"actualPort": 37137,
|
||||
"runtimeProfile": "main-writable",
|
||||
"runtimeFlags": [
|
||||
"DEMO_MODE=true",
|
||||
"DEMO_READ_ONLY=false",
|
||||
"UNSAFE_ENABLE_MOCK_INTEGRATION=true"
|
||||
],
|
||||
"persona": "Ingrid Infra",
|
||||
"sessionId": "qa-v2-widgets-08",
|
||||
"timestamp": "2026-08-31T16:20:06.432Z",
|
||||
"viewport": "mobile-320",
|
||||
"input": "mouse",
|
||||
"zoom": 100
|
||||
"candidateSha": "2d5edf46513b96c8b9f973d4a121b396d688e9bb",
|
||||
"url": null,
|
||||
"actualPort": null,
|
||||
"runtimeProfile": null,
|
||||
"runtimeFlags": [],
|
||||
"persona": null,
|
||||
"sessionId": null,
|
||||
"timestamp": null,
|
||||
"viewport": null,
|
||||
"input": null,
|
||||
"zoom": null
|
||||
},
|
||||
"findings": [
|
||||
{
|
||||
"id": "RV2-P1-001",
|
||||
"fingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"severity": "P1",
|
||||
"area": "routing/authentication",
|
||||
"title": "Locale rewrite causes an infinite browser redirect before the application renders",
|
||||
"summary": "A fresh Chromium session repeatedly requests the same entry route and ends on ERR_TOO_MANY_REDIRECTS; a fresh-context retry does the same.",
|
||||
"caseIds": [
|
||||
"WG-008-RENDER-SIZE",
|
||||
"WG-008-STATES-RECOVERY",
|
||||
"WG-008-OPTIONS-PERSISTENCE",
|
||||
"WG-008-ACCESS-READONLY",
|
||||
"WG-008-EVIDENCE"
|
||||
],
|
||||
"evidence": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/redirect-320x568-100-fresh.network.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/redirect-320x568-100-fresh.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/redirect-320x568-100.network-local.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/redirect-320x568-100.network.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/redirect-320x568-100.png"
|
||||
]
|
||||
}
|
||||
],
|
||||
"artifacts": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/redirect-320x568-100-fresh.console.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/redirect-320x568-100-fresh.errors.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/redirect-320x568-100-fresh.network.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/redirect-320x568-100-fresh.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/redirect-320x568-100-fresh.url.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/redirect-320x568-100-fresh.viewport.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/redirect-320x568-100.console.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/redirect-320x568-100.errors.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/redirect-320x568-100.network-local.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/redirect-320x568-100.network.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/redirect-320x568-100.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/redirect-320x568-100.title.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/redirect-320x568-100.url.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/redirect-320x568-100.viewport.txt"
|
||||
],
|
||||
"findings": [],
|
||||
"artifacts": [],
|
||||
"widgetChecks": [
|
||||
{
|
||||
"widgetKind": "ups",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "ups",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "ups",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "ups",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "ups",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "ups",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "ups",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "ups",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "ups",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "vpn",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "vpn",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "vpn",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "vpn",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "vpn",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "vpn",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "vpn",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "vpn",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "vpn",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "speedtestTracker",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "speedtestTracker",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "speedtestTracker",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "speedtestTracker",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "speedtestTracker",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "speedtestTracker",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "speedtestTracker",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "speedtestTracker",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "speedtestTracker",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "traefik",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "traefik",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "traefik",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "traefik",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "traefik",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "traefik",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "traefik",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "traefik",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "traefik",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "umami",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "umami",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "umami",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "umami",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "umami",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "umami",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "umami",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "umami",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "umami",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
}
|
||||
],
|
||||
"performance": {
|
||||
"measurements": [],
|
||||
"limitations": [
|
||||
"The application never rendered, so assigned feature, mutation, persistence, permission, viewport, and performance checks were blocked.",
|
||||
"No credentials were submitted and no product state was mutated.",
|
||||
"The finding was retried in a fresh Chromium context; console output was empty while document requests repeated until Chromium stopped the loop."
|
||||
]
|
||||
"limitations": []
|
||||
},
|
||||
"independentReproductions": [
|
||||
{
|
||||
"findingFingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"agentId": "qa-v2-preflight-01",
|
||||
"outcome": "reproduced",
|
||||
"evidence": [],
|
||||
"notes": "See preflight-01 for an independent Luna Max reproduction."
|
||||
}
|
||||
],
|
||||
"notes": "Report-only black-box run. No defect was fixed and no secret was recorded."
|
||||
"independentReproductions": [],
|
||||
"notes": "Not executed."
|
||||
}
|
||||
-->
|
||||
|
||||
@@ -363,7 +309,7 @@
|
||||
|
||||
| Metadata | Value |
|
||||
| --- | --- |
|
||||
| Status | blocked |
|
||||
| Status | not-reached |
|
||||
| Wave | widgets |
|
||||
| PR refs | #6502, #6555 |
|
||||
| Personas | Ingrid Infra |
|
||||
@@ -374,121 +320,90 @@
|
||||
| Input | mouse, touch, keyboard |
|
||||
| Widget kinds | ups, vpn, speedtestTracker, traefik, umami |
|
||||
| Artifact directory | [/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08) |
|
||||
| Candidate SHA | f57a660088d6777c86aca22977354fa8b810e2be |
|
||||
| URL / actual port | http://127.0.0.1:37137 / 37137 |
|
||||
| Runtime profile / flags | main-writable; DEMO_MODE=true, DEMO_READ_ONLY=false, UNSAFE_ENABLE_MOCK_INTEGRATION=true |
|
||||
| Executed persona | Ingrid Infra |
|
||||
| Browser session ID | qa-v2-widgets-08 |
|
||||
| Timestamp | 2026-08-31T16:20:06.432Z |
|
||||
| Executed viewport / input / zoom | mobile-320 / mouse / 100% |
|
||||
| Candidate SHA | 2d5edf46513b96c8b9f973d4a121b396d688e9bb |
|
||||
| URL / actual port | not-recorded |
|
||||
| Runtime profile / flags | not-recorded |
|
||||
| Executed persona | not-recorded |
|
||||
| Browser session ID | not-recorded |
|
||||
| Timestamp | not-recorded |
|
||||
| Executed viewport / input / zoom | not-recorded |
|
||||
|
||||
## Dogfood evidence
|
||||
|
||||
| Case ID | Status | Evidence | Observed | Expected |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| WG-008-RENDER-SIZE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Render every assigned widget kind at every assigned viewport and exercise default, minimum, maximum, and compact sizes where supported. |
|
||||
| WG-008-STATES-RECOVERY | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify loading, populated, empty, error, stale, retry, and recovered states for every assigned widget kind. |
|
||||
| WG-008-OPTIONS-PERSISTENCE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Mutate meaningful options, save, reload, reset, and confirm each assigned widget kind persists correctly. |
|
||||
| WG-008-ACCESS-READONLY | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify Owner, Editor, Viewer, missing-integration, permission-denied, and global read-only behavior for every assigned widget kind. |
|
||||
| WG-008-EVIDENCE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Capture screenshot, console, network, overflow, clipping, focus, and cleanup evidence for every kind and viewport row. |
|
||||
| WG-008-RENDER-SIZE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/WG-008-RENDER-SIZE.png) | Not executed | Render every assigned widget kind at every assigned viewport and exercise default, minimum, maximum, and compact sizes where supported. |
|
||||
| WG-008-STATES-RECOVERY | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/WG-008-STATES-RECOVERY.png) | Not executed | Verify loading, populated, empty, error, stale, retry, and recovered states for every assigned widget kind. |
|
||||
| WG-008-OPTIONS-PERSISTENCE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/WG-008-OPTIONS-PERSISTENCE.png) | Not executed | Mutate meaningful options, save, reload, reset, and confirm each assigned widget kind persists correctly. |
|
||||
| WG-008-ACCESS-READONLY | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/WG-008-ACCESS-READONLY.png) | Not executed | Verify Owner, Editor, Viewer, missing-integration, permission-denied, and global read-only behavior for every assigned widget kind. |
|
||||
| WG-008-EVIDENCE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/WG-008-EVIDENCE.png) | Not executed | Capture screenshot, console, network, overflow, clipping, focus, and cleanup evidence for every kind and viewport row. |
|
||||
|
||||
## Widget kind × viewport checklist
|
||||
|
||||
| Widget kind | Viewport | Size | States | Permission/read-only | Options/persistence | Recovery | Evidence | Status |
|
||||
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
||||
| ups | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08) | blocked |
|
||||
| ups | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08) | blocked |
|
||||
| ups | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08) | blocked |
|
||||
| ups | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08) | blocked |
|
||||
| ups | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08) | blocked |
|
||||
| ups | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08) | blocked |
|
||||
| ups | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08) | blocked |
|
||||
| ups | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08) | blocked |
|
||||
| ups | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08) | blocked |
|
||||
| vpn | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08) | blocked |
|
||||
| vpn | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08) | blocked |
|
||||
| vpn | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08) | blocked |
|
||||
| vpn | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08) | blocked |
|
||||
| vpn | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08) | blocked |
|
||||
| vpn | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08) | blocked |
|
||||
| vpn | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08) | blocked |
|
||||
| vpn | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08) | blocked |
|
||||
| vpn | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08) | blocked |
|
||||
| speedtestTracker | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08) | blocked |
|
||||
| speedtestTracker | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08) | blocked |
|
||||
| speedtestTracker | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08) | blocked |
|
||||
| speedtestTracker | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08) | blocked |
|
||||
| speedtestTracker | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08) | blocked |
|
||||
| speedtestTracker | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08) | blocked |
|
||||
| speedtestTracker | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08) | blocked |
|
||||
| speedtestTracker | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08) | blocked |
|
||||
| speedtestTracker | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08) | blocked |
|
||||
| traefik | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08) | blocked |
|
||||
| traefik | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08) | blocked |
|
||||
| traefik | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08) | blocked |
|
||||
| traefik | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08) | blocked |
|
||||
| traefik | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08) | blocked |
|
||||
| traefik | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08) | blocked |
|
||||
| traefik | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08) | blocked |
|
||||
| traefik | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08) | blocked |
|
||||
| traefik | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08) | blocked |
|
||||
| umami | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08) | blocked |
|
||||
| umami | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08) | blocked |
|
||||
| umami | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08) | blocked |
|
||||
| umami | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08) | blocked |
|
||||
| umami | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08) | blocked |
|
||||
| umami | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08) | blocked |
|
||||
| umami | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08) | blocked |
|
||||
| umami | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08) | blocked |
|
||||
| umami | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08) | blocked |
|
||||
| ups | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/ups-mobile-320.png) | not-reached |
|
||||
| ups | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/ups-mobile-375.png) | not-reached |
|
||||
| ups | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/ups-boundary-767.png) | not-reached |
|
||||
| ups | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/ups-boundary-768.png) | not-reached |
|
||||
| ups | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/ups-tablet-1024.png) | not-reached |
|
||||
| ups | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/ups-boundary-1279.png) | not-reached |
|
||||
| ups | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/ups-desktop-1280.png) | not-reached |
|
||||
| ups | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/ups-desktop-1440.png) | not-reached |
|
||||
| ups | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/ups-desktop-1920.png) | not-reached |
|
||||
| vpn | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/vpn-mobile-320.png) | not-reached |
|
||||
| vpn | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/vpn-mobile-375.png) | not-reached |
|
||||
| vpn | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/vpn-boundary-767.png) | not-reached |
|
||||
| vpn | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/vpn-boundary-768.png) | not-reached |
|
||||
| vpn | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/vpn-tablet-1024.png) | not-reached |
|
||||
| vpn | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/vpn-boundary-1279.png) | not-reached |
|
||||
| vpn | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/vpn-desktop-1280.png) | not-reached |
|
||||
| vpn | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/vpn-desktop-1440.png) | not-reached |
|
||||
| vpn | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/vpn-desktop-1920.png) | not-reached |
|
||||
| speedtestTracker | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/speedtestTracker-mobile-320.png) | not-reached |
|
||||
| speedtestTracker | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/speedtestTracker-mobile-375.png) | not-reached |
|
||||
| speedtestTracker | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/speedtestTracker-boundary-767.png) | not-reached |
|
||||
| speedtestTracker | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/speedtestTracker-boundary-768.png) | not-reached |
|
||||
| speedtestTracker | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/speedtestTracker-tablet-1024.png) | not-reached |
|
||||
| speedtestTracker | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/speedtestTracker-boundary-1279.png) | not-reached |
|
||||
| speedtestTracker | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/speedtestTracker-desktop-1280.png) | not-reached |
|
||||
| speedtestTracker | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/speedtestTracker-desktop-1440.png) | not-reached |
|
||||
| speedtestTracker | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/speedtestTracker-desktop-1920.png) | not-reached |
|
||||
| traefik | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/traefik-mobile-320.png) | not-reached |
|
||||
| traefik | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/traefik-mobile-375.png) | not-reached |
|
||||
| traefik | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/traefik-boundary-767.png) | not-reached |
|
||||
| traefik | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/traefik-boundary-768.png) | not-reached |
|
||||
| traefik | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/traefik-tablet-1024.png) | not-reached |
|
||||
| traefik | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/traefik-boundary-1279.png) | not-reached |
|
||||
| traefik | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/traefik-desktop-1280.png) | not-reached |
|
||||
| traefik | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/traefik-desktop-1440.png) | not-reached |
|
||||
| traefik | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/traefik-desktop-1920.png) | not-reached |
|
||||
| umami | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/umami-mobile-320.png) | not-reached |
|
||||
| umami | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/umami-mobile-375.png) | not-reached |
|
||||
| umami | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/umami-boundary-767.png) | not-reached |
|
||||
| umami | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/umami-boundary-768.png) | not-reached |
|
||||
| umami | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/umami-tablet-1024.png) | not-reached |
|
||||
| umami | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/umami-boundary-1279.png) | not-reached |
|
||||
| umami | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/umami-desktop-1280.png) | not-reached |
|
||||
| umami | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/umami-desktop-1440.png) | not-reached |
|
||||
| umami | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/umami-desktop-1920.png) | not-reached |
|
||||
|
||||
## Performance measurements and limitations
|
||||
|
||||
No valid feature timing could be recorded because no application document rendered. Cold/warm, polling, rendering, memory, and recovery measurements remain blocked.
|
||||
Record structured measurements in `performance.measurements` with units, thresholds, status, and evidence. Record every environmental or tooling limitation in `performance.limitations`; leave measurements empty instead of inventing a result.
|
||||
|
||||
## Independent reproductions
|
||||
|
||||
The common routing failure was independently reproduced by qa-v2-preflight-01; the corresponding tracked packet contains its own browser evidence.
|
||||
Record a second agent's result in `independentReproductions` with the finding fingerprint, agent ID, outcome, evidence, and notes. An unattempted reproduction remains `not-reached`.
|
||||
|
||||
## Findings
|
||||
|
||||
### RV2-P1-001 — P1: locale rewrite causes an infinite browser redirect
|
||||
|
||||
Preconditions: candidate f57a660088d6777c86aca22977354fa8b810e2be, main-writable, mobile-320, 100% zoom, mouse, fresh named Chromium session qa-v2-widgets-08.
|
||||
|
||||
1. Launch a fresh Chromium context with the Chromium argument --no-sandbox.
|
||||
2. Set the assigned viewport and open http://127.0.0.1:37137 or its authentication entry.
|
||||
3. Observe repeated document requests to the same route.
|
||||
4. Wait until Chromium displays ERR_TOO_MANY_REDIRECTS or chrome-error://chromewebdata/.
|
||||
5. Close the context, retry in a fresh context, and observe the same result.
|
||||
|
||||
Expected: the application renders the assigned entry, permitting authentication and the packet flow. Actual: the redirect loop prevents the application from rendering. Reproducibility: reproduced on retry and independently by the preflight agents. Console output was empty; network and visual evidence are linked below.
|
||||
|
||||
## Artifacts
|
||||
|
||||
- [redirect-320x568-100-fresh.console.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/redirect-320x568-100-fresh.console.txt)
|
||||
- [redirect-320x568-100-fresh.errors.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/redirect-320x568-100-fresh.errors.txt)
|
||||
- [redirect-320x568-100-fresh.network.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/redirect-320x568-100-fresh.network.txt)
|
||||
- [redirect-320x568-100-fresh.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/redirect-320x568-100-fresh.png)
|
||||
- [redirect-320x568-100-fresh.url.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/redirect-320x568-100-fresh.url.txt)
|
||||
- [redirect-320x568-100-fresh.viewport.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/redirect-320x568-100-fresh.viewport.txt)
|
||||
- [redirect-320x568-100.console.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/redirect-320x568-100.console.txt)
|
||||
- [redirect-320x568-100.errors.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/redirect-320x568-100.errors.txt)
|
||||
- [redirect-320x568-100.network-local.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/redirect-320x568-100.network-local.txt)
|
||||
- [redirect-320x568-100.network.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/redirect-320x568-100.network.txt)
|
||||
- [redirect-320x568-100.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/redirect-320x568-100.png)
|
||||
- [redirect-320x568-100.title.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/redirect-320x568-100.title.txt)
|
||||
- [redirect-320x568-100.url.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/redirect-320x568-100.url.txt)
|
||||
- [redirect-320x568-100.viewport.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-08/redirect-320x568-100.viewport.txt)
|
||||
|
||||
## Mutations and persistence
|
||||
|
||||
No credentials were submitted and no product mutation occurred. Reload and fresh-session retries reproduced the routing failure, so application persistence was not reachable.
|
||||
No findings recorded. Add structured findings to the metadata block and mirror them here.
|
||||
|
||||
## Blockers and gaps
|
||||
|
||||
Every non-evidence case listed as blocked remains untested beyond the routing entry. No blocked cell is treated as passed.
|
||||
Not executed.
|
||||
|
||||
## Cleanup
|
||||
|
||||
The named browser session was closed by the browser agent. Artifacts remain under the untracked packet directory; no secret values were captured.
|
||||
Record created resources, cleanup outcome, console errors, and network failures. Never include secret values.
|
||||
@@ -1,356 +1,307 @@
|
||||
<!-- release-v2-qa-report
|
||||
{
|
||||
"packetId": "widgets-09",
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"caseStatuses": {
|
||||
"WG-009-RENDER-SIZE": "blocked",
|
||||
"WG-009-STATES-RECOVERY": "blocked",
|
||||
"WG-009-OPTIONS-PERSISTENCE": "blocked",
|
||||
"WG-009-ACCESS-READONLY": "blocked",
|
||||
"WG-009-EVIDENCE": "blocked"
|
||||
"WG-009-RENDER-SIZE": "not-reached",
|
||||
"WG-009-STATES-RECOVERY": "not-reached",
|
||||
"WG-009-OPTIONS-PERSISTENCE": "not-reached",
|
||||
"WG-009-ACCESS-READONLY": "not-reached",
|
||||
"WG-009-EVIDENCE": "not-reached"
|
||||
},
|
||||
"execution": {
|
||||
"candidateSha": "f57a660088d6777c86aca22977354fa8b810e2be",
|
||||
"url": "http://127.0.0.1:37137",
|
||||
"actualPort": 37137,
|
||||
"runtimeProfile": "main-writable",
|
||||
"runtimeFlags": [
|
||||
"DEMO_MODE=true",
|
||||
"DEMO_READ_ONLY=false",
|
||||
"UNSAFE_ENABLE_MOCK_INTEGRATION=true"
|
||||
],
|
||||
"persona": "Maya Media",
|
||||
"sessionId": "qa-v2-widgets-09",
|
||||
"timestamp": "2026-08-31T16:19:53.769Z",
|
||||
"viewport": "mobile-320",
|
||||
"input": "mouse",
|
||||
"zoom": 100
|
||||
"candidateSha": "2d5edf46513b96c8b9f973d4a121b396d688e9bb",
|
||||
"url": null,
|
||||
"actualPort": null,
|
||||
"runtimeProfile": null,
|
||||
"runtimeFlags": [],
|
||||
"persona": null,
|
||||
"sessionId": null,
|
||||
"timestamp": null,
|
||||
"viewport": null,
|
||||
"input": null,
|
||||
"zoom": null
|
||||
},
|
||||
"findings": [
|
||||
{
|
||||
"id": "RV2-P1-001",
|
||||
"fingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"severity": "P1",
|
||||
"area": "routing/authentication",
|
||||
"title": "Locale rewrite causes an infinite browser redirect before the application renders",
|
||||
"summary": "Chromium repeatedly requests the same entry route and ends on ERR_TOO_MANY_REDIRECTS, preventing the assigned browser flow.",
|
||||
"caseIds": [
|
||||
"WG-009-RENDER-SIZE",
|
||||
"WG-009-STATES-RECOVERY",
|
||||
"WG-009-OPTIONS-PERSISTENCE",
|
||||
"WG-009-ACCESS-READONLY",
|
||||
"WG-009-EVIDENCE"
|
||||
],
|
||||
"evidence": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/redirect-320x568-100.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/redirect-final-320x568-100.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/redirect-final-network-320x568-100.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/redirect-network-320x568-100.txt"
|
||||
]
|
||||
}
|
||||
],
|
||||
"artifacts": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/redirect-320x568-100.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/redirect-console-320x568-100.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/redirect-errors-320x568-100.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/redirect-final-320x568-100.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/redirect-final-console-320x568-100.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/redirect-final-errors-320x568-100.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/redirect-final-network-320x568-100.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/redirect-network-320x568-100.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/redirect-snapshot-320x568-100.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/redirect-url-320x568-100.txt"
|
||||
],
|
||||
"findings": [],
|
||||
"artifacts": [],
|
||||
"widgetChecks": [
|
||||
{
|
||||
"widgetKind": "calendar",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "calendar",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "calendar",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "calendar",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "calendar",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "calendar",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "calendar",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "calendar",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "calendar",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "mediaServer",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "mediaServer",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "mediaServer",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "mediaServer",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "mediaServer",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "mediaServer",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "mediaServer",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "mediaServer",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "mediaServer",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "mediaRequests-requestList",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "mediaRequests-requestList",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "mediaRequests-requestList",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "mediaRequests-requestList",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "mediaRequests-requestList",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "mediaRequests-requestList",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "mediaRequests-requestList",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "mediaRequests-requestList",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "mediaRequests-requestList",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "mediaRequests-requestStats",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "mediaRequests-requestStats",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "mediaRequests-requestStats",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "mediaRequests-requestStats",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "mediaRequests-requestStats",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "mediaRequests-requestStats",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "mediaRequests-requestStats",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "mediaRequests-requestStats",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "mediaRequests-requestStats",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "mediaMissing",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "mediaMissing",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "mediaMissing",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "mediaMissing",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "mediaMissing",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "mediaMissing",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "mediaMissing",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "mediaMissing",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "mediaMissing",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
}
|
||||
],
|
||||
"performance": {
|
||||
"measurements": [],
|
||||
"limitations": [
|
||||
"The application never rendered, so assigned feature, mutation, persistence, permission, viewport, and performance checks were blocked.",
|
||||
"No credentials were submitted and no product state was mutated.",
|
||||
"The packet's retry did not produce a separate artifact; the same finding has independent reproductions in the preflight reports."
|
||||
]
|
||||
"limitations": []
|
||||
},
|
||||
"independentReproductions": [
|
||||
{
|
||||
"findingFingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"agentId": "qa-v2-preflight-01",
|
||||
"outcome": "reproduced",
|
||||
"evidence": [],
|
||||
"notes": "See preflight-01 for an independent Luna Max reproduction."
|
||||
}
|
||||
],
|
||||
"notes": "Report-only black-box run. No defect was fixed and no secret was recorded."
|
||||
"independentReproductions": [],
|
||||
"notes": "Not executed."
|
||||
}
|
||||
-->
|
||||
|
||||
@@ -358,7 +309,7 @@
|
||||
|
||||
| Metadata | Value |
|
||||
| --- | --- |
|
||||
| Status | blocked |
|
||||
| Status | not-reached |
|
||||
| Wave | widgets |
|
||||
| PR refs | #6502, #6555 |
|
||||
| Personas | Maya Media |
|
||||
@@ -369,117 +320,90 @@
|
||||
| Input | mouse, touch, keyboard |
|
||||
| Widget kinds | calendar, mediaServer, mediaRequests-requestList, mediaRequests-requestStats, mediaMissing |
|
||||
| Artifact directory | [/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09) |
|
||||
| Candidate SHA | f57a660088d6777c86aca22977354fa8b810e2be |
|
||||
| URL / actual port | http://127.0.0.1:37137 / 37137 |
|
||||
| Runtime profile / flags | main-writable; DEMO_MODE=true, DEMO_READ_ONLY=false, UNSAFE_ENABLE_MOCK_INTEGRATION=true |
|
||||
| Executed persona | Maya Media |
|
||||
| Browser session ID | qa-v2-widgets-09 |
|
||||
| Timestamp | 2026-08-31T16:19:53.769Z |
|
||||
| Executed viewport / input / zoom | mobile-320 / mouse / 100% |
|
||||
| Candidate SHA | 2d5edf46513b96c8b9f973d4a121b396d688e9bb |
|
||||
| URL / actual port | not-recorded |
|
||||
| Runtime profile / flags | not-recorded |
|
||||
| Executed persona | not-recorded |
|
||||
| Browser session ID | not-recorded |
|
||||
| Timestamp | not-recorded |
|
||||
| Executed viewport / input / zoom | not-recorded |
|
||||
|
||||
## Dogfood evidence
|
||||
|
||||
| Case ID | Status | Evidence | Observed | Expected |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| WG-009-RENDER-SIZE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Render every assigned widget kind at every assigned viewport and exercise default, minimum, maximum, and compact sizes where supported. |
|
||||
| WG-009-STATES-RECOVERY | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify loading, populated, empty, error, stale, retry, and recovered states for every assigned widget kind. |
|
||||
| WG-009-OPTIONS-PERSISTENCE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Mutate meaningful options, save, reload, reset, and confirm each assigned widget kind persists correctly. |
|
||||
| WG-009-ACCESS-READONLY | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify Owner, Editor, Viewer, missing-integration, permission-denied, and global read-only behavior for every assigned widget kind. |
|
||||
| WG-009-EVIDENCE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Capture screenshot, console, network, overflow, clipping, focus, and cleanup evidence for every kind and viewport row. |
|
||||
| WG-009-RENDER-SIZE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/WG-009-RENDER-SIZE.png) | Not executed | Render every assigned widget kind at every assigned viewport and exercise default, minimum, maximum, and compact sizes where supported. |
|
||||
| WG-009-STATES-RECOVERY | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/WG-009-STATES-RECOVERY.png) | Not executed | Verify loading, populated, empty, error, stale, retry, and recovered states for every assigned widget kind. |
|
||||
| WG-009-OPTIONS-PERSISTENCE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/WG-009-OPTIONS-PERSISTENCE.png) | Not executed | Mutate meaningful options, save, reload, reset, and confirm each assigned widget kind persists correctly. |
|
||||
| WG-009-ACCESS-READONLY | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/WG-009-ACCESS-READONLY.png) | Not executed | Verify Owner, Editor, Viewer, missing-integration, permission-denied, and global read-only behavior for every assigned widget kind. |
|
||||
| WG-009-EVIDENCE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/WG-009-EVIDENCE.png) | Not executed | Capture screenshot, console, network, overflow, clipping, focus, and cleanup evidence for every kind and viewport row. |
|
||||
|
||||
## Widget kind × viewport checklist
|
||||
|
||||
| Widget kind | Viewport | Size | States | Permission/read-only | Options/persistence | Recovery | Evidence | Status |
|
||||
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
||||
| calendar | mobile-320 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09) | blocked |
|
||||
| calendar | mobile-375 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09) | blocked |
|
||||
| calendar | boundary-767 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09) | blocked |
|
||||
| calendar | boundary-768 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09) | blocked |
|
||||
| calendar | tablet-1024 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09) | blocked |
|
||||
| calendar | boundary-1279 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09) | blocked |
|
||||
| calendar | desktop-1280 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09) | blocked |
|
||||
| calendar | desktop-1440 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09) | blocked |
|
||||
| calendar | desktop-1920 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09) | blocked |
|
||||
| mediaServer | mobile-320 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09) | blocked |
|
||||
| mediaServer | mobile-375 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09) | blocked |
|
||||
| mediaServer | boundary-767 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09) | blocked |
|
||||
| mediaServer | boundary-768 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09) | blocked |
|
||||
| mediaServer | tablet-1024 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09) | blocked |
|
||||
| mediaServer | boundary-1279 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09) | blocked |
|
||||
| mediaServer | desktop-1280 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09) | blocked |
|
||||
| mediaServer | desktop-1440 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09) | blocked |
|
||||
| mediaServer | desktop-1920 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09) | blocked |
|
||||
| mediaRequests-requestList | mobile-320 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09) | blocked |
|
||||
| mediaRequests-requestList | mobile-375 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09) | blocked |
|
||||
| mediaRequests-requestList | boundary-767 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09) | blocked |
|
||||
| mediaRequests-requestList | boundary-768 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09) | blocked |
|
||||
| mediaRequests-requestList | tablet-1024 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09) | blocked |
|
||||
| mediaRequests-requestList | boundary-1279 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09) | blocked |
|
||||
| mediaRequests-requestList | desktop-1280 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09) | blocked |
|
||||
| mediaRequests-requestList | desktop-1440 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09) | blocked |
|
||||
| mediaRequests-requestList | desktop-1920 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09) | blocked |
|
||||
| mediaRequests-requestStats | mobile-320 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09) | blocked |
|
||||
| mediaRequests-requestStats | mobile-375 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09) | blocked |
|
||||
| mediaRequests-requestStats | boundary-767 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09) | blocked |
|
||||
| mediaRequests-requestStats | boundary-768 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09) | blocked |
|
||||
| mediaRequests-requestStats | tablet-1024 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09) | blocked |
|
||||
| mediaRequests-requestStats | boundary-1279 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09) | blocked |
|
||||
| mediaRequests-requestStats | desktop-1280 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09) | blocked |
|
||||
| mediaRequests-requestStats | desktop-1440 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09) | blocked |
|
||||
| mediaRequests-requestStats | desktop-1920 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09) | blocked |
|
||||
| mediaMissing | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09) | blocked |
|
||||
| mediaMissing | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09) | blocked |
|
||||
| mediaMissing | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09) | blocked |
|
||||
| mediaMissing | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09) | blocked |
|
||||
| mediaMissing | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09) | blocked |
|
||||
| mediaMissing | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09) | blocked |
|
||||
| mediaMissing | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09) | blocked |
|
||||
| mediaMissing | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09) | blocked |
|
||||
| mediaMissing | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09) | blocked |
|
||||
| calendar | mobile-320 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/calendar-mobile-320.png) | not-reached |
|
||||
| calendar | mobile-375 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/calendar-mobile-375.png) | not-reached |
|
||||
| calendar | boundary-767 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/calendar-boundary-767.png) | not-reached |
|
||||
| calendar | boundary-768 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/calendar-boundary-768.png) | not-reached |
|
||||
| calendar | tablet-1024 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/calendar-tablet-1024.png) | not-reached |
|
||||
| calendar | boundary-1279 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/calendar-boundary-1279.png) | not-reached |
|
||||
| calendar | desktop-1280 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/calendar-desktop-1280.png) | not-reached |
|
||||
| calendar | desktop-1440 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/calendar-desktop-1440.png) | not-reached |
|
||||
| calendar | desktop-1920 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/calendar-desktop-1920.png) | not-reached |
|
||||
| mediaServer | mobile-320 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/mediaServer-mobile-320.png) | not-reached |
|
||||
| mediaServer | mobile-375 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/mediaServer-mobile-375.png) | not-reached |
|
||||
| mediaServer | boundary-767 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/mediaServer-boundary-767.png) | not-reached |
|
||||
| mediaServer | boundary-768 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/mediaServer-boundary-768.png) | not-reached |
|
||||
| mediaServer | tablet-1024 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/mediaServer-tablet-1024.png) | not-reached |
|
||||
| mediaServer | boundary-1279 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/mediaServer-boundary-1279.png) | not-reached |
|
||||
| mediaServer | desktop-1280 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/mediaServer-desktop-1280.png) | not-reached |
|
||||
| mediaServer | desktop-1440 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/mediaServer-desktop-1440.png) | not-reached |
|
||||
| mediaServer | desktop-1920 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/mediaServer-desktop-1920.png) | not-reached |
|
||||
| mediaRequests-requestList | mobile-320 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/mediaRequests-requestList-mobile-320.png) | not-reached |
|
||||
| mediaRequests-requestList | mobile-375 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/mediaRequests-requestList-mobile-375.png) | not-reached |
|
||||
| mediaRequests-requestList | boundary-767 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/mediaRequests-requestList-boundary-767.png) | not-reached |
|
||||
| mediaRequests-requestList | boundary-768 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/mediaRequests-requestList-boundary-768.png) | not-reached |
|
||||
| mediaRequests-requestList | tablet-1024 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/mediaRequests-requestList-tablet-1024.png) | not-reached |
|
||||
| mediaRequests-requestList | boundary-1279 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/mediaRequests-requestList-boundary-1279.png) | not-reached |
|
||||
| mediaRequests-requestList | desktop-1280 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/mediaRequests-requestList-desktop-1280.png) | not-reached |
|
||||
| mediaRequests-requestList | desktop-1440 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/mediaRequests-requestList-desktop-1440.png) | not-reached |
|
||||
| mediaRequests-requestList | desktop-1920 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/mediaRequests-requestList-desktop-1920.png) | not-reached |
|
||||
| mediaRequests-requestStats | mobile-320 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/mediaRequests-requestStats-mobile-320.png) | not-reached |
|
||||
| mediaRequests-requestStats | mobile-375 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/mediaRequests-requestStats-mobile-375.png) | not-reached |
|
||||
| mediaRequests-requestStats | boundary-767 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/mediaRequests-requestStats-boundary-767.png) | not-reached |
|
||||
| mediaRequests-requestStats | boundary-768 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/mediaRequests-requestStats-boundary-768.png) | not-reached |
|
||||
| mediaRequests-requestStats | tablet-1024 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/mediaRequests-requestStats-tablet-1024.png) | not-reached |
|
||||
| mediaRequests-requestStats | boundary-1279 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/mediaRequests-requestStats-boundary-1279.png) | not-reached |
|
||||
| mediaRequests-requestStats | desktop-1280 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/mediaRequests-requestStats-desktop-1280.png) | not-reached |
|
||||
| mediaRequests-requestStats | desktop-1440 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/mediaRequests-requestStats-desktop-1440.png) | not-reached |
|
||||
| mediaRequests-requestStats | desktop-1920 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/mediaRequests-requestStats-desktop-1920.png) | not-reached |
|
||||
| mediaMissing | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/mediaMissing-mobile-320.png) | not-reached |
|
||||
| mediaMissing | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/mediaMissing-mobile-375.png) | not-reached |
|
||||
| mediaMissing | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/mediaMissing-boundary-767.png) | not-reached |
|
||||
| mediaMissing | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/mediaMissing-boundary-768.png) | not-reached |
|
||||
| mediaMissing | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/mediaMissing-tablet-1024.png) | not-reached |
|
||||
| mediaMissing | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/mediaMissing-boundary-1279.png) | not-reached |
|
||||
| mediaMissing | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/mediaMissing-desktop-1280.png) | not-reached |
|
||||
| mediaMissing | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/mediaMissing-desktop-1440.png) | not-reached |
|
||||
| mediaMissing | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/mediaMissing-desktop-1920.png) | not-reached |
|
||||
|
||||
## Performance measurements and limitations
|
||||
|
||||
No valid feature timing could be recorded because no application document rendered. Cold/warm, polling, rendering, memory, and recovery measurements remain blocked.
|
||||
Record structured measurements in `performance.measurements` with units, thresholds, status, and evidence. Record every environmental or tooling limitation in `performance.limitations`; leave measurements empty instead of inventing a result.
|
||||
|
||||
## Independent reproductions
|
||||
|
||||
The common routing failure was independently reproduced by qa-v2-preflight-01; the corresponding tracked packet contains its own browser evidence.
|
||||
Record a second agent's result in `independentReproductions` with the finding fingerprint, agent ID, outcome, evidence, and notes. An unattempted reproduction remains `not-reached`.
|
||||
|
||||
## Findings
|
||||
|
||||
### RV2-P1-001 — P1: locale rewrite causes an infinite browser redirect
|
||||
|
||||
Preconditions: candidate f57a660088d6777c86aca22977354fa8b810e2be, main-writable, mobile-320, 100% zoom, mouse, fresh named Chromium session qa-v2-widgets-09.
|
||||
|
||||
1. Launch a fresh Chromium context with the Chromium argument --no-sandbox.
|
||||
2. Set the assigned viewport and open http://127.0.0.1:37137 or its authentication entry.
|
||||
3. Observe repeated document requests to the same route.
|
||||
4. Wait until Chromium displays ERR_TOO_MANY_REDIRECTS or chrome-error://chromewebdata/.
|
||||
5. Compare the result with the independently reproduced preflight evidence.
|
||||
|
||||
Expected: the application renders the assigned entry, permitting authentication and the packet flow. Actual: the redirect loop prevents the application from rendering. Reproducibility: reproduced independently by the preflight agents. Console output was empty; network and visual evidence are linked below.
|
||||
|
||||
## Artifacts
|
||||
|
||||
- [redirect-320x568-100.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/redirect-320x568-100.png)
|
||||
- [redirect-console-320x568-100.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/redirect-console-320x568-100.txt)
|
||||
- [redirect-errors-320x568-100.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/redirect-errors-320x568-100.txt)
|
||||
- [redirect-final-320x568-100.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/redirect-final-320x568-100.png)
|
||||
- [redirect-final-console-320x568-100.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/redirect-final-console-320x568-100.txt)
|
||||
- [redirect-final-errors-320x568-100.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/redirect-final-errors-320x568-100.txt)
|
||||
- [redirect-final-network-320x568-100.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/redirect-final-network-320x568-100.txt)
|
||||
- [redirect-network-320x568-100.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/redirect-network-320x568-100.txt)
|
||||
- [redirect-snapshot-320x568-100.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/redirect-snapshot-320x568-100.txt)
|
||||
- [redirect-url-320x568-100.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-09/redirect-url-320x568-100.txt)
|
||||
|
||||
## Mutations and persistence
|
||||
|
||||
No credentials were submitted and no product mutation occurred. Reload and fresh-session retries reproduced the routing failure, so application persistence was not reachable.
|
||||
No findings recorded. Add structured findings to the metadata block and mirror them here.
|
||||
|
||||
## Blockers and gaps
|
||||
|
||||
Every non-evidence case listed as blocked remains untested beyond the routing entry. No blocked cell is treated as passed.
|
||||
Not executed.
|
||||
|
||||
## Cleanup
|
||||
|
||||
The named browser session was closed by the browser agent. Artifacts remain under the untracked packet directory; no secret values were captured.
|
||||
Record created resources, cleanup outcome, console errors, and network failures. Never include secret values.
|
||||
@@ -1,346 +1,307 @@
|
||||
<!-- release-v2-qa-report
|
||||
{
|
||||
"packetId": "widgets-10",
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"caseStatuses": {
|
||||
"WG-010-RENDER-SIZE": "blocked",
|
||||
"WG-010-STATES-RECOVERY": "blocked",
|
||||
"WG-010-OPTIONS-PERSISTENCE": "blocked",
|
||||
"WG-010-ACCESS-READONLY": "blocked",
|
||||
"WG-010-EVIDENCE": "blocked"
|
||||
"WG-010-RENDER-SIZE": "not-reached",
|
||||
"WG-010-STATES-RECOVERY": "not-reached",
|
||||
"WG-010-OPTIONS-PERSISTENCE": "not-reached",
|
||||
"WG-010-ACCESS-READONLY": "not-reached",
|
||||
"WG-010-EVIDENCE": "not-reached"
|
||||
},
|
||||
"execution": {
|
||||
"candidateSha": "f57a660088d6777c86aca22977354fa8b810e2be",
|
||||
"url": "http://127.0.0.1:37137",
|
||||
"actualPort": 37137,
|
||||
"runtimeProfile": "main-writable",
|
||||
"runtimeFlags": [
|
||||
"DEMO_MODE=true",
|
||||
"DEMO_READ_ONLY=false",
|
||||
"UNSAFE_ENABLE_MOCK_INTEGRATION=true"
|
||||
],
|
||||
"persona": "Maya Media",
|
||||
"sessionId": "qa-v2-widgets-10",
|
||||
"timestamp": "2026-08-31T16:28:44.862Z",
|
||||
"viewport": "mobile-320",
|
||||
"input": "mouse",
|
||||
"zoom": 100
|
||||
"candidateSha": "2d5edf46513b96c8b9f973d4a121b396d688e9bb",
|
||||
"url": null,
|
||||
"actualPort": null,
|
||||
"runtimeProfile": null,
|
||||
"runtimeFlags": [],
|
||||
"persona": null,
|
||||
"sessionId": null,
|
||||
"timestamp": null,
|
||||
"viewport": null,
|
||||
"input": null,
|
||||
"zoom": null
|
||||
},
|
||||
"findings": [
|
||||
{
|
||||
"id": "RV2-P1-001",
|
||||
"fingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"severity": "P1",
|
||||
"area": "routing/authentication",
|
||||
"title": "Locale rewrite causes an infinite browser redirect before the application renders",
|
||||
"summary": "Chromium repeatedly requests the same entry route and ends on ERR_TOO_MANY_REDIRECTS, preventing the assigned browser flow.",
|
||||
"caseIds": [
|
||||
"WG-010-RENDER-SIZE",
|
||||
"WG-010-STATES-RECOVERY",
|
||||
"WG-010-OPTIONS-PERSISTENCE",
|
||||
"WG-010-ACCESS-READONLY",
|
||||
"WG-010-EVIDENCE"
|
||||
],
|
||||
"evidence": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/widgets-10-redirect-320x568-100.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/widgets-10-redirect-network.txt"
|
||||
]
|
||||
}
|
||||
],
|
||||
"artifacts": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/widgets-10-redirect-320x568-100.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/widgets-10-redirect-network.txt"
|
||||
],
|
||||
"findings": [],
|
||||
"artifacts": [],
|
||||
"widgetChecks": [
|
||||
{
|
||||
"widgetKind": "mediaReleases",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "mediaReleases",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "mediaReleases",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "mediaReleases",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "mediaReleases",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "mediaReleases",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "mediaReleases",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "mediaReleases",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "mediaReleases",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "mediaTranscoding",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "mediaTranscoding",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "mediaTranscoding",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "mediaTranscoding",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "mediaTranscoding",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "mediaTranscoding",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "mediaTranscoding",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "mediaTranscoding",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "mediaTranscoding",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "immich-serverStats",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "immich-serverStats",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "immich-serverStats",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "immich-serverStats",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "immich-serverStats",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "immich-serverStats",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "immich-serverStats",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "immich-serverStats",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "immich-serverStats",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "immich-albumCarousel",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "immich-albumCarousel",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "immich-albumCarousel",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "immich-albumCarousel",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "immich-albumCarousel",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "immich-albumCarousel",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "immich-albumCarousel",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "immich-albumCarousel",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "immich-albumCarousel",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "audioStats",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "audioStats",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "audioStats",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "audioStats",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "audioStats",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "audioStats",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "audioStats",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "audioStats",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "audioStats",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
}
|
||||
],
|
||||
"performance": {
|
||||
"measurements": [],
|
||||
"limitations": [
|
||||
"The application never rendered, so assigned feature, mutation, persistence, permission, viewport, and performance checks were blocked.",
|
||||
"No credentials were submitted and no product state was mutated.",
|
||||
"The packet's retry did not produce a separate artifact; the same finding has independent reproductions in the preflight reports."
|
||||
]
|
||||
"limitations": []
|
||||
},
|
||||
"independentReproductions": [
|
||||
{
|
||||
"findingFingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"agentId": "qa-v2-preflight-01",
|
||||
"outcome": "reproduced",
|
||||
"evidence": [],
|
||||
"notes": "See preflight-01 for an independent Luna Max reproduction."
|
||||
}
|
||||
],
|
||||
"notes": "Report-only black-box run. No defect was fixed and no secret was recorded."
|
||||
"independentReproductions": [],
|
||||
"notes": "Not executed."
|
||||
}
|
||||
-->
|
||||
|
||||
@@ -348,7 +309,7 @@
|
||||
|
||||
| Metadata | Value |
|
||||
| --- | --- |
|
||||
| Status | blocked |
|
||||
| Status | not-reached |
|
||||
| Wave | widgets |
|
||||
| PR refs | #6502, #6555 |
|
||||
| Personas | Maya Media |
|
||||
@@ -359,109 +320,90 @@
|
||||
| Input | mouse, touch, keyboard |
|
||||
| Widget kinds | mediaReleases, mediaTranscoding, immich-serverStats, immich-albumCarousel, audioStats |
|
||||
| Artifact directory | [/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10) |
|
||||
| Candidate SHA | f57a660088d6777c86aca22977354fa8b810e2be |
|
||||
| URL / actual port | http://127.0.0.1:37137 / 37137 |
|
||||
| Runtime profile / flags | main-writable; DEMO_MODE=true, DEMO_READ_ONLY=false, UNSAFE_ENABLE_MOCK_INTEGRATION=true |
|
||||
| Executed persona | Maya Media |
|
||||
| Browser session ID | qa-v2-widgets-10 |
|
||||
| Timestamp | 2026-08-31T16:28:44.862Z |
|
||||
| Executed viewport / input / zoom | mobile-320 / mouse / 100% |
|
||||
| Candidate SHA | 2d5edf46513b96c8b9f973d4a121b396d688e9bb |
|
||||
| URL / actual port | not-recorded |
|
||||
| Runtime profile / flags | not-recorded |
|
||||
| Executed persona | not-recorded |
|
||||
| Browser session ID | not-recorded |
|
||||
| Timestamp | not-recorded |
|
||||
| Executed viewport / input / zoom | not-recorded |
|
||||
|
||||
## Dogfood evidence
|
||||
|
||||
| Case ID | Status | Evidence | Observed | Expected |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| WG-010-RENDER-SIZE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Render every assigned widget kind at every assigned viewport and exercise default, minimum, maximum, and compact sizes where supported. |
|
||||
| WG-010-STATES-RECOVERY | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify loading, populated, empty, error, stale, retry, and recovered states for every assigned widget kind. |
|
||||
| WG-010-OPTIONS-PERSISTENCE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Mutate meaningful options, save, reload, reset, and confirm each assigned widget kind persists correctly. |
|
||||
| WG-010-ACCESS-READONLY | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify Owner, Editor, Viewer, missing-integration, permission-denied, and global read-only behavior for every assigned widget kind. |
|
||||
| WG-010-EVIDENCE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Capture screenshot, console, network, overflow, clipping, focus, and cleanup evidence for every kind and viewport row. |
|
||||
| WG-010-RENDER-SIZE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/WG-010-RENDER-SIZE.png) | Not executed | Render every assigned widget kind at every assigned viewport and exercise default, minimum, maximum, and compact sizes where supported. |
|
||||
| WG-010-STATES-RECOVERY | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/WG-010-STATES-RECOVERY.png) | Not executed | Verify loading, populated, empty, error, stale, retry, and recovered states for every assigned widget kind. |
|
||||
| WG-010-OPTIONS-PERSISTENCE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/WG-010-OPTIONS-PERSISTENCE.png) | Not executed | Mutate meaningful options, save, reload, reset, and confirm each assigned widget kind persists correctly. |
|
||||
| WG-010-ACCESS-READONLY | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/WG-010-ACCESS-READONLY.png) | Not executed | Verify Owner, Editor, Viewer, missing-integration, permission-denied, and global read-only behavior for every assigned widget kind. |
|
||||
| WG-010-EVIDENCE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/WG-010-EVIDENCE.png) | Not executed | Capture screenshot, console, network, overflow, clipping, focus, and cleanup evidence for every kind and viewport row. |
|
||||
|
||||
## Widget kind × viewport checklist
|
||||
|
||||
| Widget kind | Viewport | Size | States | Permission/read-only | Options/persistence | Recovery | Evidence | Status |
|
||||
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
||||
| mediaReleases | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10) | blocked |
|
||||
| mediaReleases | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10) | blocked |
|
||||
| mediaReleases | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10) | blocked |
|
||||
| mediaReleases | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10) | blocked |
|
||||
| mediaReleases | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10) | blocked |
|
||||
| mediaReleases | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10) | blocked |
|
||||
| mediaReleases | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10) | blocked |
|
||||
| mediaReleases | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10) | blocked |
|
||||
| mediaReleases | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10) | blocked |
|
||||
| mediaTranscoding | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10) | blocked |
|
||||
| mediaTranscoding | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10) | blocked |
|
||||
| mediaTranscoding | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10) | blocked |
|
||||
| mediaTranscoding | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10) | blocked |
|
||||
| mediaTranscoding | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10) | blocked |
|
||||
| mediaTranscoding | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10) | blocked |
|
||||
| mediaTranscoding | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10) | blocked |
|
||||
| mediaTranscoding | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10) | blocked |
|
||||
| mediaTranscoding | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10) | blocked |
|
||||
| immich-serverStats | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10) | blocked |
|
||||
| immich-serverStats | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10) | blocked |
|
||||
| immich-serverStats | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10) | blocked |
|
||||
| immich-serverStats | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10) | blocked |
|
||||
| immich-serverStats | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10) | blocked |
|
||||
| immich-serverStats | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10) | blocked |
|
||||
| immich-serverStats | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10) | blocked |
|
||||
| immich-serverStats | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10) | blocked |
|
||||
| immich-serverStats | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10) | blocked |
|
||||
| immich-albumCarousel | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10) | blocked |
|
||||
| immich-albumCarousel | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10) | blocked |
|
||||
| immich-albumCarousel | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10) | blocked |
|
||||
| immich-albumCarousel | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10) | blocked |
|
||||
| immich-albumCarousel | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10) | blocked |
|
||||
| immich-albumCarousel | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10) | blocked |
|
||||
| immich-albumCarousel | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10) | blocked |
|
||||
| immich-albumCarousel | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10) | blocked |
|
||||
| immich-albumCarousel | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10) | blocked |
|
||||
| audioStats | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10) | blocked |
|
||||
| audioStats | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10) | blocked |
|
||||
| audioStats | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10) | blocked |
|
||||
| audioStats | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10) | blocked |
|
||||
| audioStats | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10) | blocked |
|
||||
| audioStats | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10) | blocked |
|
||||
| audioStats | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10) | blocked |
|
||||
| audioStats | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10) | blocked |
|
||||
| audioStats | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10) | blocked |
|
||||
| mediaReleases | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/mediaReleases-mobile-320.png) | not-reached |
|
||||
| mediaReleases | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/mediaReleases-mobile-375.png) | not-reached |
|
||||
| mediaReleases | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/mediaReleases-boundary-767.png) | not-reached |
|
||||
| mediaReleases | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/mediaReleases-boundary-768.png) | not-reached |
|
||||
| mediaReleases | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/mediaReleases-tablet-1024.png) | not-reached |
|
||||
| mediaReleases | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/mediaReleases-boundary-1279.png) | not-reached |
|
||||
| mediaReleases | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/mediaReleases-desktop-1280.png) | not-reached |
|
||||
| mediaReleases | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/mediaReleases-desktop-1440.png) | not-reached |
|
||||
| mediaReleases | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/mediaReleases-desktop-1920.png) | not-reached |
|
||||
| mediaTranscoding | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/mediaTranscoding-mobile-320.png) | not-reached |
|
||||
| mediaTranscoding | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/mediaTranscoding-mobile-375.png) | not-reached |
|
||||
| mediaTranscoding | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/mediaTranscoding-boundary-767.png) | not-reached |
|
||||
| mediaTranscoding | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/mediaTranscoding-boundary-768.png) | not-reached |
|
||||
| mediaTranscoding | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/mediaTranscoding-tablet-1024.png) | not-reached |
|
||||
| mediaTranscoding | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/mediaTranscoding-boundary-1279.png) | not-reached |
|
||||
| mediaTranscoding | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/mediaTranscoding-desktop-1280.png) | not-reached |
|
||||
| mediaTranscoding | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/mediaTranscoding-desktop-1440.png) | not-reached |
|
||||
| mediaTranscoding | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/mediaTranscoding-desktop-1920.png) | not-reached |
|
||||
| immich-serverStats | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/immich-serverStats-mobile-320.png) | not-reached |
|
||||
| immich-serverStats | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/immich-serverStats-mobile-375.png) | not-reached |
|
||||
| immich-serverStats | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/immich-serverStats-boundary-767.png) | not-reached |
|
||||
| immich-serverStats | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/immich-serverStats-boundary-768.png) | not-reached |
|
||||
| immich-serverStats | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/immich-serverStats-tablet-1024.png) | not-reached |
|
||||
| immich-serverStats | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/immich-serverStats-boundary-1279.png) | not-reached |
|
||||
| immich-serverStats | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/immich-serverStats-desktop-1280.png) | not-reached |
|
||||
| immich-serverStats | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/immich-serverStats-desktop-1440.png) | not-reached |
|
||||
| immich-serverStats | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/immich-serverStats-desktop-1920.png) | not-reached |
|
||||
| immich-albumCarousel | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/immich-albumCarousel-mobile-320.png) | not-reached |
|
||||
| immich-albumCarousel | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/immich-albumCarousel-mobile-375.png) | not-reached |
|
||||
| immich-albumCarousel | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/immich-albumCarousel-boundary-767.png) | not-reached |
|
||||
| immich-albumCarousel | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/immich-albumCarousel-boundary-768.png) | not-reached |
|
||||
| immich-albumCarousel | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/immich-albumCarousel-tablet-1024.png) | not-reached |
|
||||
| immich-albumCarousel | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/immich-albumCarousel-boundary-1279.png) | not-reached |
|
||||
| immich-albumCarousel | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/immich-albumCarousel-desktop-1280.png) | not-reached |
|
||||
| immich-albumCarousel | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/immich-albumCarousel-desktop-1440.png) | not-reached |
|
||||
| immich-albumCarousel | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/immich-albumCarousel-desktop-1920.png) | not-reached |
|
||||
| audioStats | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/audioStats-mobile-320.png) | not-reached |
|
||||
| audioStats | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/audioStats-mobile-375.png) | not-reached |
|
||||
| audioStats | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/audioStats-boundary-767.png) | not-reached |
|
||||
| audioStats | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/audioStats-boundary-768.png) | not-reached |
|
||||
| audioStats | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/audioStats-tablet-1024.png) | not-reached |
|
||||
| audioStats | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/audioStats-boundary-1279.png) | not-reached |
|
||||
| audioStats | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/audioStats-desktop-1280.png) | not-reached |
|
||||
| audioStats | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/audioStats-desktop-1440.png) | not-reached |
|
||||
| audioStats | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/audioStats-desktop-1920.png) | not-reached |
|
||||
|
||||
## Performance measurements and limitations
|
||||
|
||||
No valid feature timing could be recorded because no application document rendered. Cold/warm, polling, rendering, memory, and recovery measurements remain blocked.
|
||||
Record structured measurements in `performance.measurements` with units, thresholds, status, and evidence. Record every environmental or tooling limitation in `performance.limitations`; leave measurements empty instead of inventing a result.
|
||||
|
||||
## Independent reproductions
|
||||
|
||||
The common routing failure was independently reproduced by qa-v2-preflight-01; the corresponding tracked packet contains its own browser evidence.
|
||||
Record a second agent's result in `independentReproductions` with the finding fingerprint, agent ID, outcome, evidence, and notes. An unattempted reproduction remains `not-reached`.
|
||||
|
||||
## Findings
|
||||
|
||||
### RV2-P1-001 — P1: locale rewrite causes an infinite browser redirect
|
||||
|
||||
Preconditions: candidate f57a660088d6777c86aca22977354fa8b810e2be, main-writable, mobile-320, 100% zoom, mouse, fresh named Chromium session qa-v2-widgets-10.
|
||||
|
||||
1. Launch a fresh Chromium context with the Chromium argument --no-sandbox.
|
||||
2. Set the assigned viewport and open http://127.0.0.1:37137 or its authentication entry.
|
||||
3. Observe repeated document requests to the same route.
|
||||
4. Wait until Chromium displays ERR_TOO_MANY_REDIRECTS or chrome-error://chromewebdata/.
|
||||
5. Compare the result with the independently reproduced preflight evidence.
|
||||
|
||||
Expected: the application renders the assigned entry, permitting authentication and the packet flow. Actual: the redirect loop prevents the application from rendering. Reproducibility: reproduced independently by the preflight agents. Console output was empty; network and visual evidence are linked below.
|
||||
|
||||
## Artifacts
|
||||
|
||||
- [widgets-10-redirect-320x568-100.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/widgets-10-redirect-320x568-100.png)
|
||||
- [widgets-10-redirect-network.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-10/widgets-10-redirect-network.txt)
|
||||
|
||||
## Mutations and persistence
|
||||
|
||||
No credentials were submitted and no product mutation occurred. Reload and fresh-session retries reproduced the routing failure, so application persistence was not reachable.
|
||||
No findings recorded. Add structured findings to the metadata block and mirror them here.
|
||||
|
||||
## Blockers and gaps
|
||||
|
||||
Every non-evidence case listed as blocked remains untested beyond the routing entry. No blocked cell is treated as passed.
|
||||
Not executed.
|
||||
|
||||
## Cleanup
|
||||
|
||||
The named browser session was closed by the browser agent. Artifacts remain under the untracked packet directory; no secret values were captured.
|
||||
Record created resources, cleanup outcome, console errors, and network failures. Never include secret values.
|
||||
@@ -1,347 +1,307 @@
|
||||
<!-- release-v2-qa-report
|
||||
{
|
||||
"packetId": "widgets-11",
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"caseStatuses": {
|
||||
"WG-011-RENDER-SIZE": "blocked",
|
||||
"WG-011-STATES-RECOVERY": "blocked",
|
||||
"WG-011-OPTIONS-PERSISTENCE": "blocked",
|
||||
"WG-011-ACCESS-READONLY": "blocked",
|
||||
"WG-011-EVIDENCE": "blocked"
|
||||
"WG-011-RENDER-SIZE": "not-reached",
|
||||
"WG-011-STATES-RECOVERY": "not-reached",
|
||||
"WG-011-OPTIONS-PERSISTENCE": "not-reached",
|
||||
"WG-011-ACCESS-READONLY": "not-reached",
|
||||
"WG-011-EVIDENCE": "not-reached"
|
||||
},
|
||||
"execution": {
|
||||
"candidateSha": "f57a660088d6777c86aca22977354fa8b810e2be",
|
||||
"url": "http://127.0.0.1:37137",
|
||||
"actualPort": 37137,
|
||||
"runtimeProfile": "main-writable",
|
||||
"runtimeFlags": [
|
||||
"DEMO_MODE=true",
|
||||
"DEMO_READ_ONLY=false",
|
||||
"UNSAFE_ENABLE_MOCK_INTEGRATION=true"
|
||||
],
|
||||
"persona": "Ingrid Infra",
|
||||
"sessionId": "qa-v2-widgets-11",
|
||||
"timestamp": "2026-08-31T16:25:06.485Z",
|
||||
"viewport": "mobile-320",
|
||||
"input": "mouse",
|
||||
"zoom": 100
|
||||
"candidateSha": "2d5edf46513b96c8b9f973d4a121b396d688e9bb",
|
||||
"url": null,
|
||||
"actualPort": null,
|
||||
"runtimeProfile": null,
|
||||
"runtimeFlags": [],
|
||||
"persona": null,
|
||||
"sessionId": null,
|
||||
"timestamp": null,
|
||||
"viewport": null,
|
||||
"input": null,
|
||||
"zoom": null
|
||||
},
|
||||
"findings": [
|
||||
{
|
||||
"id": "RV2-P1-001",
|
||||
"fingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"severity": "P1",
|
||||
"area": "routing/authentication",
|
||||
"title": "Locale rewrite causes an infinite browser redirect before the application renders",
|
||||
"summary": "Chromium repeatedly requests the same entry route and ends on ERR_TOO_MANY_REDIRECTS, preventing the assigned browser flow.",
|
||||
"caseIds": [
|
||||
"WG-011-RENDER-SIZE",
|
||||
"WG-011-STATES-RECOVERY",
|
||||
"WG-011-OPTIONS-PERSISTENCE",
|
||||
"WG-011-ACCESS-READONLY",
|
||||
"WG-011-EVIDENCE"
|
||||
],
|
||||
"evidence": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/redirect-320x568-100.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/redirect-network-320x568-100.txt"
|
||||
]
|
||||
}
|
||||
],
|
||||
"artifacts": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/redirect-320x568-100.png",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/redirect-console-320x568-100.txt",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/redirect-network-320x568-100.txt"
|
||||
],
|
||||
"findings": [],
|
||||
"artifacts": [],
|
||||
"widgetChecks": [
|
||||
{
|
||||
"widgetKind": "paperlessNgx",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "paperlessNgx",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "paperlessNgx",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "paperlessNgx",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "paperlessNgx",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "paperlessNgx",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "paperlessNgx",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "paperlessNgx",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "paperlessNgx",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "patchmon",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "patchmon",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "patchmon",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "patchmon",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "patchmon",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "patchmon",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "patchmon",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "patchmon",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "patchmon",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "bazarr",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "bazarr",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "bazarr",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "bazarr",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "bazarr",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "bazarr",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "bazarr",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "bazarr",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "bazarr",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "tracearr",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "tracearr",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "tracearr",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "tracearr",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "tracearr",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "tracearr",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "tracearr",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "tracearr",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "tracearr",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "releases",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "releases",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "releases",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "releases",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "releases",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "releases",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "releases",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "releases",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "releases",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
}
|
||||
],
|
||||
"performance": {
|
||||
"measurements": [],
|
||||
"limitations": [
|
||||
"The application never rendered, so assigned feature, mutation, persistence, permission, viewport, and performance checks were blocked.",
|
||||
"No credentials were submitted and no product state was mutated.",
|
||||
"The packet's retry did not produce a separate artifact; the same finding has independent reproductions in the preflight reports."
|
||||
]
|
||||
"limitations": []
|
||||
},
|
||||
"independentReproductions": [
|
||||
{
|
||||
"findingFingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"agentId": "qa-v2-preflight-01",
|
||||
"outcome": "reproduced",
|
||||
"evidence": [],
|
||||
"notes": "See preflight-01 for an independent Luna Max reproduction."
|
||||
}
|
||||
],
|
||||
"notes": "Report-only black-box run. No defect was fixed and no secret was recorded."
|
||||
"independentReproductions": [],
|
||||
"notes": "Not executed."
|
||||
}
|
||||
-->
|
||||
|
||||
@@ -349,7 +309,7 @@
|
||||
|
||||
| Metadata | Value |
|
||||
| --- | --- |
|
||||
| Status | blocked |
|
||||
| Status | not-reached |
|
||||
| Wave | widgets |
|
||||
| PR refs | #6502, #6555 |
|
||||
| Personas | Ingrid Infra |
|
||||
@@ -360,110 +320,90 @@
|
||||
| Input | mouse, touch, keyboard |
|
||||
| Widget kinds | paperlessNgx, patchmon, bazarr, tracearr, releases |
|
||||
| Artifact directory | [/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11) |
|
||||
| Candidate SHA | f57a660088d6777c86aca22977354fa8b810e2be |
|
||||
| URL / actual port | http://127.0.0.1:37137 / 37137 |
|
||||
| Runtime profile / flags | main-writable; DEMO_MODE=true, DEMO_READ_ONLY=false, UNSAFE_ENABLE_MOCK_INTEGRATION=true |
|
||||
| Executed persona | Ingrid Infra |
|
||||
| Browser session ID | qa-v2-widgets-11 |
|
||||
| Timestamp | 2026-08-31T16:25:06.485Z |
|
||||
| Executed viewport / input / zoom | mobile-320 / mouse / 100% |
|
||||
| Candidate SHA | 2d5edf46513b96c8b9f973d4a121b396d688e9bb |
|
||||
| URL / actual port | not-recorded |
|
||||
| Runtime profile / flags | not-recorded |
|
||||
| Executed persona | not-recorded |
|
||||
| Browser session ID | not-recorded |
|
||||
| Timestamp | not-recorded |
|
||||
| Executed viewport / input / zoom | not-recorded |
|
||||
|
||||
## Dogfood evidence
|
||||
|
||||
| Case ID | Status | Evidence | Observed | Expected |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| WG-011-RENDER-SIZE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Render every assigned widget kind at every assigned viewport and exercise default, minimum, maximum, and compact sizes where supported. |
|
||||
| WG-011-STATES-RECOVERY | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify loading, populated, empty, error, stale, retry, and recovered states for every assigned widget kind. |
|
||||
| WG-011-OPTIONS-PERSISTENCE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Mutate meaningful options, save, reload, reset, and confirm each assigned widget kind persists correctly. |
|
||||
| WG-011-ACCESS-READONLY | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify Owner, Editor, Viewer, missing-integration, permission-denied, and global read-only behavior for every assigned widget kind. |
|
||||
| WG-011-EVIDENCE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Capture screenshot, console, network, overflow, clipping, focus, and cleanup evidence for every kind and viewport row. |
|
||||
| WG-011-RENDER-SIZE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/WG-011-RENDER-SIZE.png) | Not executed | Render every assigned widget kind at every assigned viewport and exercise default, minimum, maximum, and compact sizes where supported. |
|
||||
| WG-011-STATES-RECOVERY | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/WG-011-STATES-RECOVERY.png) | Not executed | Verify loading, populated, empty, error, stale, retry, and recovered states for every assigned widget kind. |
|
||||
| WG-011-OPTIONS-PERSISTENCE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/WG-011-OPTIONS-PERSISTENCE.png) | Not executed | Mutate meaningful options, save, reload, reset, and confirm each assigned widget kind persists correctly. |
|
||||
| WG-011-ACCESS-READONLY | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/WG-011-ACCESS-READONLY.png) | Not executed | Verify Owner, Editor, Viewer, missing-integration, permission-denied, and global read-only behavior for every assigned widget kind. |
|
||||
| WG-011-EVIDENCE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/WG-011-EVIDENCE.png) | Not executed | Capture screenshot, console, network, overflow, clipping, focus, and cleanup evidence for every kind and viewport row. |
|
||||
|
||||
## Widget kind × viewport checklist
|
||||
|
||||
| Widget kind | Viewport | Size | States | Permission/read-only | Options/persistence | Recovery | Evidence | Status |
|
||||
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
||||
| paperlessNgx | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11) | blocked |
|
||||
| paperlessNgx | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11) | blocked |
|
||||
| paperlessNgx | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11) | blocked |
|
||||
| paperlessNgx | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11) | blocked |
|
||||
| paperlessNgx | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11) | blocked |
|
||||
| paperlessNgx | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11) | blocked |
|
||||
| paperlessNgx | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11) | blocked |
|
||||
| paperlessNgx | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11) | blocked |
|
||||
| paperlessNgx | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11) | blocked |
|
||||
| patchmon | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11) | blocked |
|
||||
| patchmon | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11) | blocked |
|
||||
| patchmon | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11) | blocked |
|
||||
| patchmon | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11) | blocked |
|
||||
| patchmon | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11) | blocked |
|
||||
| patchmon | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11) | blocked |
|
||||
| patchmon | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11) | blocked |
|
||||
| patchmon | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11) | blocked |
|
||||
| patchmon | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11) | blocked |
|
||||
| bazarr | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11) | blocked |
|
||||
| bazarr | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11) | blocked |
|
||||
| bazarr | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11) | blocked |
|
||||
| bazarr | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11) | blocked |
|
||||
| bazarr | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11) | blocked |
|
||||
| bazarr | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11) | blocked |
|
||||
| bazarr | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11) | blocked |
|
||||
| bazarr | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11) | blocked |
|
||||
| bazarr | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11) | blocked |
|
||||
| tracearr | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11) | blocked |
|
||||
| tracearr | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11) | blocked |
|
||||
| tracearr | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11) | blocked |
|
||||
| tracearr | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11) | blocked |
|
||||
| tracearr | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11) | blocked |
|
||||
| tracearr | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11) | blocked |
|
||||
| tracearr | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11) | blocked |
|
||||
| tracearr | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11) | blocked |
|
||||
| tracearr | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11) | blocked |
|
||||
| releases | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11) | blocked |
|
||||
| releases | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11) | blocked |
|
||||
| releases | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11) | blocked |
|
||||
| releases | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11) | blocked |
|
||||
| releases | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11) | blocked |
|
||||
| releases | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11) | blocked |
|
||||
| releases | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11) | blocked |
|
||||
| releases | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11) | blocked |
|
||||
| releases | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11) | blocked |
|
||||
| paperlessNgx | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/paperlessNgx-mobile-320.png) | not-reached |
|
||||
| paperlessNgx | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/paperlessNgx-mobile-375.png) | not-reached |
|
||||
| paperlessNgx | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/paperlessNgx-boundary-767.png) | not-reached |
|
||||
| paperlessNgx | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/paperlessNgx-boundary-768.png) | not-reached |
|
||||
| paperlessNgx | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/paperlessNgx-tablet-1024.png) | not-reached |
|
||||
| paperlessNgx | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/paperlessNgx-boundary-1279.png) | not-reached |
|
||||
| paperlessNgx | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/paperlessNgx-desktop-1280.png) | not-reached |
|
||||
| paperlessNgx | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/paperlessNgx-desktop-1440.png) | not-reached |
|
||||
| paperlessNgx | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/paperlessNgx-desktop-1920.png) | not-reached |
|
||||
| patchmon | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/patchmon-mobile-320.png) | not-reached |
|
||||
| patchmon | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/patchmon-mobile-375.png) | not-reached |
|
||||
| patchmon | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/patchmon-boundary-767.png) | not-reached |
|
||||
| patchmon | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/patchmon-boundary-768.png) | not-reached |
|
||||
| patchmon | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/patchmon-tablet-1024.png) | not-reached |
|
||||
| patchmon | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/patchmon-boundary-1279.png) | not-reached |
|
||||
| patchmon | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/patchmon-desktop-1280.png) | not-reached |
|
||||
| patchmon | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/patchmon-desktop-1440.png) | not-reached |
|
||||
| patchmon | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/patchmon-desktop-1920.png) | not-reached |
|
||||
| bazarr | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/bazarr-mobile-320.png) | not-reached |
|
||||
| bazarr | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/bazarr-mobile-375.png) | not-reached |
|
||||
| bazarr | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/bazarr-boundary-767.png) | not-reached |
|
||||
| bazarr | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/bazarr-boundary-768.png) | not-reached |
|
||||
| bazarr | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/bazarr-tablet-1024.png) | not-reached |
|
||||
| bazarr | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/bazarr-boundary-1279.png) | not-reached |
|
||||
| bazarr | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/bazarr-desktop-1280.png) | not-reached |
|
||||
| bazarr | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/bazarr-desktop-1440.png) | not-reached |
|
||||
| bazarr | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/bazarr-desktop-1920.png) | not-reached |
|
||||
| tracearr | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/tracearr-mobile-320.png) | not-reached |
|
||||
| tracearr | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/tracearr-mobile-375.png) | not-reached |
|
||||
| tracearr | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/tracearr-boundary-767.png) | not-reached |
|
||||
| tracearr | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/tracearr-boundary-768.png) | not-reached |
|
||||
| tracearr | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/tracearr-tablet-1024.png) | not-reached |
|
||||
| tracearr | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/tracearr-boundary-1279.png) | not-reached |
|
||||
| tracearr | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/tracearr-desktop-1280.png) | not-reached |
|
||||
| tracearr | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/tracearr-desktop-1440.png) | not-reached |
|
||||
| tracearr | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/tracearr-desktop-1920.png) | not-reached |
|
||||
| releases | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/releases-mobile-320.png) | not-reached |
|
||||
| releases | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/releases-mobile-375.png) | not-reached |
|
||||
| releases | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/releases-boundary-767.png) | not-reached |
|
||||
| releases | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/releases-boundary-768.png) | not-reached |
|
||||
| releases | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/releases-tablet-1024.png) | not-reached |
|
||||
| releases | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/releases-boundary-1279.png) | not-reached |
|
||||
| releases | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/releases-desktop-1280.png) | not-reached |
|
||||
| releases | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/releases-desktop-1440.png) | not-reached |
|
||||
| releases | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/releases-desktop-1920.png) | not-reached |
|
||||
|
||||
## Performance measurements and limitations
|
||||
|
||||
No valid feature timing could be recorded because no application document rendered. Cold/warm, polling, rendering, memory, and recovery measurements remain blocked.
|
||||
Record structured measurements in `performance.measurements` with units, thresholds, status, and evidence. Record every environmental or tooling limitation in `performance.limitations`; leave measurements empty instead of inventing a result.
|
||||
|
||||
## Independent reproductions
|
||||
|
||||
The common routing failure was independently reproduced by qa-v2-preflight-01; the corresponding tracked packet contains its own browser evidence.
|
||||
Record a second agent's result in `independentReproductions` with the finding fingerprint, agent ID, outcome, evidence, and notes. An unattempted reproduction remains `not-reached`.
|
||||
|
||||
## Findings
|
||||
|
||||
### RV2-P1-001 — P1: locale rewrite causes an infinite browser redirect
|
||||
|
||||
Preconditions: candidate f57a660088d6777c86aca22977354fa8b810e2be, main-writable, mobile-320, 100% zoom, mouse, fresh named Chromium session qa-v2-widgets-11.
|
||||
|
||||
1. Launch a fresh Chromium context with the Chromium argument --no-sandbox.
|
||||
2. Set the assigned viewport and open http://127.0.0.1:37137 or its authentication entry.
|
||||
3. Observe repeated document requests to the same route.
|
||||
4. Wait until Chromium displays ERR_TOO_MANY_REDIRECTS or chrome-error://chromewebdata/.
|
||||
5. Compare the result with the independently reproduced preflight evidence.
|
||||
|
||||
Expected: the application renders the assigned entry, permitting authentication and the packet flow. Actual: the redirect loop prevents the application from rendering. Reproducibility: reproduced independently by the preflight agents. Console output was empty; network and visual evidence are linked below.
|
||||
|
||||
## Artifacts
|
||||
|
||||
- [redirect-320x568-100.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/redirect-320x568-100.png)
|
||||
- [redirect-console-320x568-100.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/redirect-console-320x568-100.txt)
|
||||
- [redirect-network-320x568-100.txt](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-11/redirect-network-320x568-100.txt)
|
||||
|
||||
## Mutations and persistence
|
||||
|
||||
No credentials were submitted and no product mutation occurred. Reload and fresh-session retries reproduced the routing failure, so application persistence was not reachable.
|
||||
No findings recorded. Add structured findings to the metadata block and mirror them here.
|
||||
|
||||
## Blockers and gaps
|
||||
|
||||
Every non-evidence case listed as blocked remains untested beyond the routing entry. No blocked cell is treated as passed.
|
||||
Not executed.
|
||||
|
||||
## Cleanup
|
||||
|
||||
The named browser session was closed by the browser agent. Artifacts remain under the untracked packet directory; no secret values were captured.
|
||||
Record created resources, cleanup outcome, console errors, and network failures. Never include secret values.
|
||||
@@ -1,293 +1,253 @@
|
||||
<!-- release-v2-qa-report
|
||||
{
|
||||
"packetId": "widgets-12",
|
||||
"status": "blocked",
|
||||
"status": "not-reached",
|
||||
"caseStatuses": {
|
||||
"WG-012-RENDER-SIZE": "blocked",
|
||||
"WG-012-STATES-RECOVERY": "blocked",
|
||||
"WG-012-OPTIONS-PERSISTENCE": "blocked",
|
||||
"WG-012-ACCESS-READONLY": "blocked",
|
||||
"WG-012-EVIDENCE": "blocked"
|
||||
"WG-012-RENDER-SIZE": "not-reached",
|
||||
"WG-012-STATES-RECOVERY": "not-reached",
|
||||
"WG-012-OPTIONS-PERSISTENCE": "not-reached",
|
||||
"WG-012-ACCESS-READONLY": "not-reached",
|
||||
"WG-012-EVIDENCE": "not-reached"
|
||||
},
|
||||
"execution": {
|
||||
"candidateSha": "f57a660088d6777c86aca22977354fa8b810e2be",
|
||||
"url": "http://127.0.0.1:37137",
|
||||
"actualPort": 37137,
|
||||
"runtimeProfile": "main-writable",
|
||||
"runtimeFlags": [
|
||||
"DEMO_MODE=true",
|
||||
"DEMO_READ_ONLY=false",
|
||||
"UNSAFE_ENABLE_MOCK_INTEGRATION=true"
|
||||
],
|
||||
"persona": "Ash Assistant",
|
||||
"sessionId": "qa-v2-widgets-12",
|
||||
"timestamp": "2026-08-31T16:33:58.002Z",
|
||||
"viewport": "mobile-320",
|
||||
"input": "mouse",
|
||||
"zoom": 100
|
||||
"candidateSha": "2d5edf46513b96c8b9f973d4a121b396d688e9bb",
|
||||
"url": null,
|
||||
"actualPort": null,
|
||||
"runtimeProfile": null,
|
||||
"runtimeFlags": [],
|
||||
"persona": null,
|
||||
"sessionId": null,
|
||||
"timestamp": null,
|
||||
"viewport": null,
|
||||
"input": null,
|
||||
"zoom": null
|
||||
},
|
||||
"findings": [
|
||||
{
|
||||
"id": "RV2-P1-001",
|
||||
"fingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"severity": "P1",
|
||||
"area": "routing/authentication",
|
||||
"title": "Locale rewrite causes an infinite browser redirect before the application renders",
|
||||
"summary": "Chromium repeatedly requests the same entry route and ends on ERR_TOO_MANY_REDIRECTS, preventing the assigned browser flow.",
|
||||
"caseIds": [
|
||||
"WG-012-RENDER-SIZE",
|
||||
"WG-012-STATES-RECOVERY",
|
||||
"WG-012-OPTIONS-PERSISTENCE",
|
||||
"WG-012-ACCESS-READONLY",
|
||||
"WG-012-EVIDENCE"
|
||||
],
|
||||
"evidence": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12/redirect-320x568-100.network.md",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12/redirect-320x568-100.png"
|
||||
]
|
||||
}
|
||||
],
|
||||
"artifacts": [
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12/redirect-320x568-100.console.md",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12/redirect-320x568-100.network.md",
|
||||
"/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12/redirect-320x568-100.png"
|
||||
],
|
||||
"findings": [],
|
||||
"artifacts": [],
|
||||
"widgetChecks": [
|
||||
{
|
||||
"widgetKind": "coolify",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "coolify",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "coolify",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "coolify",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "coolify",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "coolify",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "coolify",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "coolify",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "coolify",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "archiveTeamWarrior",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "archiveTeamWarrior",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "archiveTeamWarrior",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "archiveTeamWarrior",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "archiveTeamWarrior",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "archiveTeamWarrior",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "archiveTeamWarrior",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "archiveTeamWarrior",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "archiveTeamWarrior",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "customApi",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "customApi",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "customApi",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "customApi",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "customApi",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "customApi",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "customApi",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "customApi",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "customApi",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "assistant",
|
||||
"viewport": "mobile-320",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "assistant",
|
||||
"viewport": "mobile-375",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "assistant",
|
||||
"viewport": "boundary-767",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "assistant",
|
||||
"viewport": "boundary-768",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "assistant",
|
||||
"viewport": "tablet-1024",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "assistant",
|
||||
"viewport": "boundary-1279",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "assistant",
|
||||
"viewport": "desktop-1280",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "assistant",
|
||||
"viewport": "desktop-1440",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
},
|
||||
{
|
||||
"widgetKind": "assistant",
|
||||
"viewport": "desktop-1920",
|
||||
"sizeRequirement": "every width 1-24 × every height 1-6",
|
||||
"status": "blocked"
|
||||
"status": "not-reached"
|
||||
}
|
||||
],
|
||||
"performance": {
|
||||
"measurements": [],
|
||||
"limitations": [
|
||||
"The application never rendered, so assigned feature, mutation, persistence, permission, viewport, and performance checks were blocked.",
|
||||
"No credentials were submitted and no product state was mutated.",
|
||||
"The packet's retry did not produce a separate artifact; the same finding has independent reproductions in the preflight reports."
|
||||
]
|
||||
"limitations": []
|
||||
},
|
||||
"independentReproductions": [
|
||||
{
|
||||
"findingFingerprint": "release-v2-auth-locale-redirect-loop",
|
||||
"agentId": "qa-v2-preflight-01",
|
||||
"outcome": "reproduced",
|
||||
"evidence": [],
|
||||
"notes": "See preflight-01 for an independent Luna Max reproduction."
|
||||
}
|
||||
],
|
||||
"notes": "Report-only black-box run. No defect was fixed and no secret was recorded."
|
||||
"independentReproductions": [],
|
||||
"notes": "Not executed."
|
||||
}
|
||||
-->
|
||||
|
||||
@@ -295,7 +255,7 @@
|
||||
|
||||
| Metadata | Value |
|
||||
| --- | --- |
|
||||
| Status | blocked |
|
||||
| Status | not-reached |
|
||||
| Wave | widgets |
|
||||
| PR refs | #6502, #6482, #6555 |
|
||||
| Personas | Ash Assistant, Cora Creator |
|
||||
@@ -306,101 +266,81 @@
|
||||
| Input | mouse, touch, keyboard |
|
||||
| Widget kinds | coolify, archiveTeamWarrior, customApi, assistant |
|
||||
| Artifact directory | [/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12) |
|
||||
| Candidate SHA | f57a660088d6777c86aca22977354fa8b810e2be |
|
||||
| URL / actual port | http://127.0.0.1:37137 / 37137 |
|
||||
| Runtime profile / flags | main-writable; DEMO_MODE=true, DEMO_READ_ONLY=false, UNSAFE_ENABLE_MOCK_INTEGRATION=true |
|
||||
| Executed persona | Ash Assistant |
|
||||
| Browser session ID | qa-v2-widgets-12 |
|
||||
| Timestamp | 2026-08-31T16:33:58.002Z |
|
||||
| Executed viewport / input / zoom | mobile-320 / mouse / 100% |
|
||||
| Candidate SHA | 2d5edf46513b96c8b9f973d4a121b396d688e9bb |
|
||||
| URL / actual port | not-recorded |
|
||||
| Runtime profile / flags | not-recorded |
|
||||
| Executed persona | not-recorded |
|
||||
| Browser session ID | not-recorded |
|
||||
| Timestamp | not-recorded |
|
||||
| Executed viewport / input / zoom | not-recorded |
|
||||
|
||||
## Dogfood evidence
|
||||
|
||||
| Case ID | Status | Evidence | Observed | Expected |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| WG-012-RENDER-SIZE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Render every assigned widget kind at every assigned viewport and exercise default, minimum, maximum, and compact sizes where supported. |
|
||||
| WG-012-STATES-RECOVERY | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify loading, populated, empty, error, stale, retry, and recovered states for every assigned widget kind. |
|
||||
| WG-012-OPTIONS-PERSISTENCE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Mutate meaningful options, save, reload, reset, and confirm each assigned widget kind persists correctly. |
|
||||
| WG-012-ACCESS-READONLY | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Verify Owner, Editor, Viewer, missing-integration, permission-denied, and global read-only behavior for every assigned widget kind. |
|
||||
| WG-012-EVIDENCE | blocked | [browser artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12) | The application entry repeated redirects until Chromium stopped navigation; the assigned flow was not reachable. | Capture screenshot, console, network, overflow, clipping, focus, and cleanup evidence for every kind and viewport row. |
|
||||
| WG-012-RENDER-SIZE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12/WG-012-RENDER-SIZE.png) | Not executed | Render every assigned widget kind at every assigned viewport and exercise default, minimum, maximum, and compact sizes where supported. |
|
||||
| WG-012-STATES-RECOVERY | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12/WG-012-STATES-RECOVERY.png) | Not executed | Verify loading, populated, empty, error, stale, retry, and recovered states for every assigned widget kind. |
|
||||
| WG-012-OPTIONS-PERSISTENCE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12/WG-012-OPTIONS-PERSISTENCE.png) | Not executed | Mutate meaningful options, save, reload, reset, and confirm each assigned widget kind persists correctly. |
|
||||
| WG-012-ACCESS-READONLY | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12/WG-012-ACCESS-READONLY.png) | Not executed | Verify Owner, Editor, Viewer, missing-integration, permission-denied, and global read-only behavior for every assigned widget kind. |
|
||||
| WG-012-EVIDENCE | not-reached | [planned screenshot](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12/WG-012-EVIDENCE.png) | Not executed | Capture screenshot, console, network, overflow, clipping, focus, and cleanup evidence for every kind and viewport row. |
|
||||
|
||||
## Widget kind × viewport checklist
|
||||
|
||||
| Widget kind | Viewport | Size | States | Permission/read-only | Options/persistence | Recovery | Evidence | Status |
|
||||
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
||||
| coolify | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12) | blocked |
|
||||
| coolify | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12) | blocked |
|
||||
| coolify | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12) | blocked |
|
||||
| coolify | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12) | blocked |
|
||||
| coolify | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12) | blocked |
|
||||
| coolify | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12) | blocked |
|
||||
| coolify | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12) | blocked |
|
||||
| coolify | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12) | blocked |
|
||||
| coolify | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12) | blocked |
|
||||
| archiveTeamWarrior | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12) | blocked |
|
||||
| archiveTeamWarrior | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12) | blocked |
|
||||
| archiveTeamWarrior | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12) | blocked |
|
||||
| archiveTeamWarrior | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12) | blocked |
|
||||
| archiveTeamWarrior | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12) | blocked |
|
||||
| archiveTeamWarrior | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12) | blocked |
|
||||
| archiveTeamWarrior | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12) | blocked |
|
||||
| archiveTeamWarrior | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12) | blocked |
|
||||
| archiveTeamWarrior | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12) | blocked |
|
||||
| customApi | mobile-320 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12) | blocked |
|
||||
| customApi | mobile-375 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12) | blocked |
|
||||
| customApi | boundary-767 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12) | blocked |
|
||||
| customApi | boundary-768 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12) | blocked |
|
||||
| customApi | tablet-1024 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12) | blocked |
|
||||
| customApi | boundary-1279 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12) | blocked |
|
||||
| customApi | desktop-1280 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12) | blocked |
|
||||
| customApi | desktop-1440 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12) | blocked |
|
||||
| customApi | desktop-1920 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12) | blocked |
|
||||
| assistant | mobile-320 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12) | blocked |
|
||||
| assistant | mobile-375 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12) | blocked |
|
||||
| assistant | boundary-767 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12) | blocked |
|
||||
| assistant | boundary-768 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12) | blocked |
|
||||
| assistant | tablet-1024 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12) | blocked |
|
||||
| assistant | boundary-1279 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12) | blocked |
|
||||
| assistant | desktop-1280 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12) | blocked |
|
||||
| assistant | desktop-1440 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12) | blocked |
|
||||
| assistant | desktop-1920 | every width 1-24 × every height 1-6 | blocked before render | blocked before authentication | not reached | redirect retry reproduced | [artifacts](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12) | blocked |
|
||||
| coolify | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12/coolify-mobile-320.png) | not-reached |
|
||||
| coolify | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12/coolify-mobile-375.png) | not-reached |
|
||||
| coolify | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12/coolify-boundary-767.png) | not-reached |
|
||||
| coolify | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12/coolify-boundary-768.png) | not-reached |
|
||||
| coolify | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12/coolify-tablet-1024.png) | not-reached |
|
||||
| coolify | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12/coolify-boundary-1279.png) | not-reached |
|
||||
| coolify | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12/coolify-desktop-1280.png) | not-reached |
|
||||
| coolify | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12/coolify-desktop-1440.png) | not-reached |
|
||||
| coolify | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12/coolify-desktop-1920.png) | not-reached |
|
||||
| archiveTeamWarrior | mobile-320 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12/archiveTeamWarrior-mobile-320.png) | not-reached |
|
||||
| archiveTeamWarrior | mobile-375 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12/archiveTeamWarrior-mobile-375.png) | not-reached |
|
||||
| archiveTeamWarrior | boundary-767 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12/archiveTeamWarrior-boundary-767.png) | not-reached |
|
||||
| archiveTeamWarrior | boundary-768 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12/archiveTeamWarrior-boundary-768.png) | not-reached |
|
||||
| archiveTeamWarrior | tablet-1024 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12/archiveTeamWarrior-tablet-1024.png) | not-reached |
|
||||
| archiveTeamWarrior | boundary-1279 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12/archiveTeamWarrior-boundary-1279.png) | not-reached |
|
||||
| archiveTeamWarrior | desktop-1280 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12/archiveTeamWarrior-desktop-1280.png) | not-reached |
|
||||
| archiveTeamWarrior | desktop-1440 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12/archiveTeamWarrior-desktop-1440.png) | not-reached |
|
||||
| archiveTeamWarrior | desktop-1920 | minimum / canonical / wide / tall / maximum / overflow / behavior-changing thresholds | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12/archiveTeamWarrior-desktop-1920.png) | not-reached |
|
||||
| customApi | mobile-320 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12/customApi-mobile-320.png) | not-reached |
|
||||
| customApi | mobile-375 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12/customApi-mobile-375.png) | not-reached |
|
||||
| customApi | boundary-767 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12/customApi-boundary-767.png) | not-reached |
|
||||
| customApi | boundary-768 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12/customApi-boundary-768.png) | not-reached |
|
||||
| customApi | tablet-1024 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12/customApi-tablet-1024.png) | not-reached |
|
||||
| customApi | boundary-1279 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12/customApi-boundary-1279.png) | not-reached |
|
||||
| customApi | desktop-1280 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12/customApi-desktop-1280.png) | not-reached |
|
||||
| customApi | desktop-1440 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12/customApi-desktop-1440.png) | not-reached |
|
||||
| customApi | desktop-1920 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12/customApi-desktop-1920.png) | not-reached |
|
||||
| assistant | mobile-320 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12/assistant-mobile-320.png) | not-reached |
|
||||
| assistant | mobile-375 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12/assistant-mobile-375.png) | not-reached |
|
||||
| assistant | boundary-767 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12/assistant-boundary-767.png) | not-reached |
|
||||
| assistant | boundary-768 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12/assistant-boundary-768.png) | not-reached |
|
||||
| assistant | tablet-1024 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12/assistant-tablet-1024.png) | not-reached |
|
||||
| assistant | boundary-1279 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12/assistant-boundary-1279.png) | not-reached |
|
||||
| assistant | desktop-1280 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12/assistant-desktop-1280.png) | not-reached |
|
||||
| assistant | desktop-1440 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12/assistant-desktop-1440.png) | not-reached |
|
||||
| assistant | desktop-1920 | every width 1-24 × every height 1-6 | loading / populated / empty / error | Owner / Editor / Viewer / read-only | mutate / save / reload / reset | fail / retry / healthy | [planned artifact](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12/assistant-desktop-1920.png) | not-reached |
|
||||
|
||||
## Performance measurements and limitations
|
||||
|
||||
No valid feature timing could be recorded because no application document rendered. Cold/warm, polling, rendering, memory, and recovery measurements remain blocked.
|
||||
Record structured measurements in `performance.measurements` with units, thresholds, status, and evidence. Record every environmental or tooling limitation in `performance.limitations`; leave measurements empty instead of inventing a result.
|
||||
|
||||
## Independent reproductions
|
||||
|
||||
The common routing failure was independently reproduced by qa-v2-preflight-01; the corresponding tracked packet contains its own browser evidence.
|
||||
Record a second agent's result in `independentReproductions` with the finding fingerprint, agent ID, outcome, evidence, and notes. An unattempted reproduction remains `not-reached`.
|
||||
|
||||
## Findings
|
||||
|
||||
### RV2-P1-001 — P1: locale rewrite causes an infinite browser redirect
|
||||
|
||||
Preconditions: candidate f57a660088d6777c86aca22977354fa8b810e2be, main-writable, mobile-320, 100% zoom, mouse, fresh named Chromium session qa-v2-widgets-12.
|
||||
|
||||
1. Launch a fresh Chromium context with the Chromium argument --no-sandbox.
|
||||
2. Set the assigned viewport and open http://127.0.0.1:37137 or its authentication entry.
|
||||
3. Observe repeated document requests to the same route.
|
||||
4. Wait until Chromium displays ERR_TOO_MANY_REDIRECTS or chrome-error://chromewebdata/.
|
||||
5. Compare the result with the independently reproduced preflight evidence.
|
||||
|
||||
Expected: the application renders the assigned entry, permitting authentication and the packet flow. Actual: the redirect loop prevents the application from rendering. Reproducibility: reproduced independently by the preflight agents. Console output was empty; network and visual evidence are linked below.
|
||||
|
||||
## Artifacts
|
||||
|
||||
- [redirect-320x568-100.console.md](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12/redirect-320x568-100.console.md)
|
||||
- [redirect-320x568-100.network.md](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12/redirect-320x568-100.network.md)
|
||||
- [redirect-320x568-100.png](/home/habs/.codex/worktrees/8ba8/homarr/.screenshots/release-v2/widgets-12/redirect-320x568-100.png)
|
||||
|
||||
## Mutations and persistence
|
||||
|
||||
No credentials were submitted and no product mutation occurred. Reload and fresh-session retries reproduced the routing failure, so application persistence was not reachable.
|
||||
No findings recorded. Add structured findings to the metadata block and mirror them here.
|
||||
|
||||
## Blockers and gaps
|
||||
|
||||
Every non-evidence case listed as blocked remains untested beyond the routing entry. No blocked cell is treated as passed.
|
||||
Not executed.
|
||||
|
||||
## Cleanup
|
||||
|
||||
The named browser session was closed by the browser agent. Artifacts remain under the untracked packet directory; no secret values were captured.
|
||||
Record created resources, cleanup outcome, console errors, and network failures. Never include secret values.
|
||||
Reference in new issue
Block a user