Repository navigation
Conversation
andy-zen-dev
left a comment
There was a problem hiding this comment.
Independent bounded review of #90 at exact head 51e58b8a4f1504f8f953fbc47db6157d157051e6, relative to its immediate predecessor 1a735f451f9fe6dae7948a014b660249501a1ffc (one commit, four files, +224/-6), not a sign-off on the accumulated 24-commit release diff.
I examined the actual commit patch, surrounding _carried_records(), merge_parents(), reconcile(), Integrity's fail-closed evaluation path, the 37-instance test_parent_kind_conflicts.py corpus, docs/spec/integrity-ci.md, and the implementation-local conformance mapping. No actionable merge-blocking defect found within this bounded repair.
- v1 replay now preserves the
PARENT_KIND_CONFLICT:<parent_id>diagnostics returned bymerge_parents(), rather than discarding them when constructing a v2 union. - Complete current parent evidence may clear a repairable lineage gap but retains structural parent-kind contradictions, preventing a contradictory history from being upgraded to
PASS_ONLY_OBSERVED.VERIFY_FAILremains absorbing from either input order. - Regression coverage includes both parent orders, failure placement, repeated v1/v2 reconciliations, legitimate parent unions, duplicate-group rejection, lineage-only repair, expiry/branch departure, and four-bundle stored/replayed histories; specification and executable mapping are updated without changing Vital policy or lineage.
- GitHub Actions run https://github.com/drevendev/Devostasis/actions/runs/40098455528 is SUCCESS at this exact commit; all three hosted jobs (Python 3.12/3.13/3.14) and their reported steps succeeded. This is hosted verification, not an independently executed local pytest or release acceptance.
Scope/merge gate: #90 is a draft stacked on unmerged #89 -> #88 -> #81 and targets release/0.6.0. The full PR diff includes their inherited changes; those changes are not approved by this review. Do not merge this draft or close #83 merely on this bounded finding. Rebase/recheck exact integrated heads after prerequisite landing and resolve remaining #87 status/inventory uncertainty separately. Local pytest and independent historical replay: NOT_RUN in this review.
2026-10-24 — integration-gate drift after #91 (exact-head audit, not a new #83 code finding)Current release branch: This PR's exact head: CI evidence boundary: run 40098455528 is SUCCESS for this PR's source SHA, but its inspected job list contains only Tests (Python 3.12/3.13/3.14). It does not qualify the newly required installed-wheel gate for the combined #81 → #88 → #89 → #90 changes, nor a merge candidate containing #91. This is not a claim that wheel installation is broken. Required before claiming the 0.6.0 integrated/release head green: reconcile the landed #91 branch changes with the stacked feature/release chain in dependency order, retain the newly merged wheel gate, and obtain successful exact integrated-head CI with the installed-wheel job and the Python test matrix, followed by historical/conformance replay and independent release acceptance. Do not treat the three green source-head jobs as a pass for a different merged tree. Keep #90 draft and #83 open until their independent gates are satisfied. Existing #81 blockers (#38/#82/#86 and the remaining #83/#87 boundary) are unchanged by this observation. Method/limits: read the current Git ref and #91 merge, both exact workflow blobs, PR refs, commit comparison, run 40098455528 and its three hosted jobs. No new source checkout pytest, installed-wheel execution, approval, branch update, merge or release was performed by this audit. 2026-10-27 — updated release-base reconciliationA fresh GitHub ref/compare/CI inspection supersedes the 2026-10-24 release-base snapshot above (the older audit is retained for chronology):
Remaining gate: integrate/reconcile #81 → #88 → #89 → #90 against the new release head while keeping #93's checkout assertions and wheel gate; obtain successful Python 3.12/3.13/3.14 + wheel-smoke jobs at the actual integrated candidate, plus historical/conformance replay and independent acceptance before leaving draft/releasing. #38/#82/#83/#86/#87 and #96 are separate open correctness/contract boundaries; this update does not assert their resolution. Full checkout and local tests: NOT_RUN (git fetch DNS unavailable); no source edits, re-review approval, branch updates, merges or tag were performed here. |
A v1 carrier discarded
merge_parents()conflict diagnostics, and later reconciliation could erase a retained parent-kind contradiction when current attempts were complete. With the same parent id represented as Actions and Check Suite, input order could turn an unresolved history into a favorable PASS-only result. This repair carries the conflict intounresolvedand preserves it through subsequent reconciliation.Target: B1
Target: B3
Related to #83. Bounded parent-kind propagation/persistence repair; keep #83 open. Separate legacy status/coverage work remains under #87.
Base and dependency
release/0.6.0, per CONTRIBUTING.md.1a735f451f9fe6dae7948a014b660249501a1ffc(legacy conversion repair); that PR depends on fix(history): reject malformed carried arrays (partial #83) #88 and 0.6: independently verified Git history and executable assurance #81.51e58b8a4f1504f8f953fbc47db6157d157051e6.22a2894057d9b1bc003efe4ef932ed4de601e26b. The full PR comparison includes unmerged prerequisites: 24 commits / 70 files. Review the incremental diff above for this repair; no independent acceptance of the inherited release scope is claimed. Draft until dependencies are reconciled; no merge requested.Resulting behavior
_carried_records()retains the conflict list returned bymerge_parents()in the revision's unresolved evidence.PARENT_KIND_CONFLICT:<parent_id>.VERIFY_FAILfrom either kind remains absorbing.Added 37 regression instances and specification/conformance mapping: 6 v1 order/failure cases; 12 repeated v1/v2 reconciliation cases; 4 valid union controls; 2 v2 duplicate-group refusals; 2 lineage-only/mixed-gap controls; one multiple-marker case; 2 expiry/departure controls; and 8 four-bundle legacy/current-origin store/replay cases. Implementation-local case labels do not replace research identifiers.
Executed checks at the exact fixing head
Windows 11 build 26200, Python 3.14.7, pytest 9.1.1, 2026-10-24. Real source import confirmed from the fixing checkout;
PYTHONDONTWRITEBYTECODE=1, explicit sourcePYTHONPATH.python -B -m pytest -p no:cacheprovider tests/test_parent_kind_conflicts.py tests/test_legacy_carrier_admission.py tests/test_carried_array_admission.py tests/test_revision_history.py tests/test_ci_history_admission.py --basetemp=<dedicated scratch>python -B -m pytest -p no:cacheprovider --basetemp=<dedicated scratch> --junitxml=<external evidence path>python -B -m devostasis vectors --quietpython -B scripts/check_conformance_surface.pygit diff --check <base>..HEAD, worktree preservationIndependent review
A separate reviewer inspected the exact four-file diff, actual parser/reconciliation/evaluator paths, fixtures and relevant contract.
No actionable findings in this bounded diff. Independently executed:
python -B -m pytest -p no:cacheprovider tests/test_parent_kind_conflicts.py tests/test_revision_history.py tests/conformance/test_integrity.py: 88 passed;python -B -m pytest -p no:cacheprovider tests/conformance/test_vectors.py -k HIST: 14 passed, 138 deselected;All probes use actual package imports and fixture-only construction, not copied core functions. The primary agent inspected the retained probe script and outputs. The independent reviewer did not repeat the primary 2645-pass full suite. Separate-agent execution on the same owner/host is not separate credential identity or release approval.
Bounded patch SHA-256:
9352b41728f9e721b9b552afb6264df8d15f2af7ad837ac92a6fb71c3a36c10f. The committed tests and commands above are the public reproducible corpus; private task records, local paths and transcripts are not published.Remaining #83 / #87 scope
The three stacked repairs (#88, #89 and this PR) do not by themselves finish issue/release acceptance:
UNKNOWN/UNAVAILABLE/FORBIDDEN/ERRORstatus handling without manufacturing known-empty AVAILABLE history;Linux, Python 3.12/3.13 and hosted CI were not run for this repair. These checks do not accept the whole release or the inherited #81 scope. No automatic closure of #83/#87, merge or release is requested.