FFF
=================================== FAILURES ===================================
___ test_separation_preserves_original_and_later_work_and_closed_access[all] ___

app = <fastapi.applications.FastAPI object at 0x10cd14350>
tmp_path = PosixPath('/private/var/folders/kn/1_8nby0s6m7g8b2k6grh24wm0000gn/T/pytest-of-sandyrestall/pytest-69/test_separation_preserves_orig0')
scope = 'all'

    @pytest.mark.parametrize('scope',['all','subset','none'])
    def test_separation_preserves_original_and_later_work_and_closed_access(app,tmp_path,scope):
        c=client(app);a=merged(app,c,True);j=a['job'];b=a['target'];extra=work(c,customer(c,b['customer_id'])).json()
        edit(c,j,notes='A later saved work detail must remain')
        from test_portal_access import enabled,PASSWORD
        new_portal,_,_=enabled(app,c,b)
        ids=[j['id'],a['second']['id']] if scope=='all' else [j['id']] if scope=='subset' else []
        p=separation(c,a['merge']['id'],ids,name='restore_before_merge');assert p['can_confirm'],p['errors']
        before=table_rows(app.state.store.root,'oak');stats=c.get('/api/reports/operations?start=2026-01-01&end=2026-12-31').json()
>       r=correct(c,p);assert r.status_code==200,r.text;check(app)
                                                        ^^^^^^^^^^

tests/test_merge_corrections.py:50: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
tests/test_customer_moves.py:32: in check
    return validate(db,require)
           ^^^^^^^^^^^^^^^^^^^^
backend/customer_recovery.py:182: in validate
    corrections=validate_corrections(db,require,histories,transfers,jobs,chains)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
backend/merge_correction_recovery.py:81: in validate
    require(bool(before),'Correction feedback review is missing.')
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

ok = False, message = 'Correction feedback review is missing.'

>   def require(ok,message):assert ok,message
                            ^^^^^^^^^^^^^^^^^
E   AssertionError: Correction feedback review is missing.
E   assert False

tests/test_customer_moves.py:31: AssertionError
_ test_separation_preserves_original_and_later_work_and_closed_access[subset] __

app = <fastapi.applications.FastAPI object at 0x10d6d29f0>
tmp_path = PosixPath('/private/var/folders/kn/1_8nby0s6m7g8b2k6grh24wm0000gn/T/pytest-of-sandyrestall/pytest-69/test_separation_preserves_orig1')
scope = 'subset'

    @pytest.mark.parametrize('scope',['all','subset','none'])
    def test_separation_preserves_original_and_later_work_and_closed_access(app,tmp_path,scope):
        c=client(app);a=merged(app,c,True);j=a['job'];b=a['target'];extra=work(c,customer(c,b['customer_id'])).json()
        edit(c,j,notes='A later saved work detail must remain')
        from test_portal_access import enabled,PASSWORD
        new_portal,_,_=enabled(app,c,b)
        ids=[j['id'],a['second']['id']] if scope=='all' else [j['id']] if scope=='subset' else []
        p=separation(c,a['merge']['id'],ids,name='restore_before_merge');assert p['can_confirm'],p['errors']
        before=table_rows(app.state.store.root,'oak');stats=c.get('/api/reports/operations?start=2026-01-01&end=2026-12-31').json()
>       r=correct(c,p);assert r.status_code==200,r.text;check(app)
                                                        ^^^^^^^^^^

tests/test_merge_corrections.py:50: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
tests/test_customer_moves.py:32: in check
    return validate(db,require)
           ^^^^^^^^^^^^^^^^^^^^
backend/customer_recovery.py:182: in validate
    corrections=validate_corrections(db,require,histories,transfers,jobs,chains)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
backend/merge_correction_recovery.py:81: in validate
    require(bool(before),'Correction feedback review is missing.')
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

ok = False, message = 'Correction feedback review is missing.'

>   def require(ok,message):assert ok,message
                            ^^^^^^^^^^^^^^^^^
E   AssertionError: Correction feedback review is missing.
E   assert False

tests/test_customer_moves.py:31: AssertionError
__ test_separation_preserves_original_and_later_work_and_closed_access[none] ___

app = <fastapi.applications.FastAPI object at 0x10d95b6e0>
tmp_path = PosixPath('/private/var/folders/kn/1_8nby0s6m7g8b2k6grh24wm0000gn/T/pytest-of-sandyrestall/pytest-69/test_separation_preserves_orig2')
scope = 'none'

    @pytest.mark.parametrize('scope',['all','subset','none'])
    def test_separation_preserves_original_and_later_work_and_closed_access(app,tmp_path,scope):
        c=client(app);a=merged(app,c,True);j=a['job'];b=a['target'];extra=work(c,customer(c,b['customer_id'])).json()
        edit(c,j,notes='A later saved work detail must remain')
        from test_portal_access import enabled,PASSWORD
        new_portal,_,_=enabled(app,c,b)
        ids=[j['id'],a['second']['id']] if scope=='all' else [j['id']] if scope=='subset' else []
        p=separation(c,a['merge']['id'],ids,name='restore_before_merge');assert p['can_confirm'],p['errors']
        before=table_rows(app.state.store.root,'oak');stats=c.get('/api/reports/operations?start=2026-01-01&end=2026-12-31').json()
>       r=correct(c,p);assert r.status_code==200,r.text;check(app)
                                                        ^^^^^^^^^^

tests/test_merge_corrections.py:50: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
tests/test_customer_moves.py:32: in check
    return validate(db,require)
           ^^^^^^^^^^^^^^^^^^^^
backend/customer_recovery.py:182: in validate
    corrections=validate_corrections(db,require,histories,transfers,jobs,chains)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
backend/merge_correction_recovery.py:81: in validate
    require(bool(before),'Correction feedback review is missing.')
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

ok = False, message = 'Correction feedback review is missing.'

>   def require(ok,message):assert ok,message
                            ^^^^^^^^^^^^^^^^^
E   AssertionError: Correction feedback review is missing.
E   assert False

tests/test_customer_moves.py:31: AssertionError
=========================== short test summary info ============================
FAILED tests/test_merge_corrections.py::test_separation_preserves_original_and_later_work_and_closed_access[all]
FAILED tests/test_merge_corrections.py::test_separation_preserves_original_and_later_work_and_closed_access[subset]
FAILED tests/test_merge_corrections.py::test_separation_preserves_original_and_later_work_and_closed_access[none]
!!!!!!!!!!!!!!!!!!!!!!!!!! stopping after 3 failures !!!!!!!!!!!!!!!!!!!!!!!!!!!
3 failed, 1 warning in 2.52s
