"""Disposable Git boundary experiment. No real files, credentials, or remotes."""
import json, os, platform, shutil, subprocess, tempfile
from pathlib import Path

def run():
    executable = shutil.which('git')
    if not executable:
        raise SystemExit('Git is required')
    results = []
    with tempfile.TemporaryDirectory(prefix='ps-gitignore-') as directory:
        root = Path(directory)
        env = {'PATH': os.defpath, 'GIT_CONFIG_NOSYSTEM': '1',
               'GIT_CONFIG_GLOBAL': os.devnull, 'GIT_TERMINAL_PROMPT': '0',
               'GIT_AUTHOR_NAME': 'Fixture', 'GIT_AUTHOR_EMAIL': 'fixture@example.invalid',
               'GIT_COMMITTER_NAME': 'Fixture', 'GIT_COMMITTER_EMAIL': 'fixture@example.invalid'}
        def git(*args, allowed=(0,)):
            p = subprocess.run([executable, '-c', 'core.hooksPath=/dev/null',
                                '-c', 'commit.gpgsign=false', *args],
                               cwd=root, env=env, text=True, capture_output=True)
            if p.returncode not in allowed:
                raise RuntimeError('Fixture Git command failed: ' + args[0])
            return p
        def check(name, condition):
            assert condition, name
            results.append({'case': name, 'passed': True})
        git('init', '--quiet', '--template=')
        f = root / '.env'
        f.write_text('DEMO_ONLY=NOT_A_CREDENTIAL\n')
        git('add', '--', '.env'); git('commit', '--quiet', '-m', 'Dummy fixture only')
        old = git('rev-parse', 'HEAD').stdout.strip()
        (root / '.gitignore').write_text('.env\n.env.local\n')
        check('tracked_file_stays_indexed_after_ignore_rule', git('ls-files', '--', '.env').stdout.strip() == '.env')
        default = git('check-ignore', '-q', '--', '.env', allowed=(0, 1))
        raw = git('check-ignore', '--no-index', '-q', '--', '.env', allowed=(0, 1))
        check('pattern_match_is_not_index_state', default.returncode == 1 and raw.returncode == 0)
        f.write_text('DEMO_ONLY=EDITED_DUMMY\n')
        check('tracked_edit_still_in_diff', '.env' in git('diff', '--name-only').stdout.splitlines())
        (root / '.env.local').write_text('DEMO_ONLY=UNTRACKED_DUMMY\n')
        check('untracked_local_file_ignored', git('check-ignore', '-q', '--', '.env.local').returncode == 0 and not git('ls-files', '--', '.env.local').stdout)
        git('rm', '--cached', '--', '.env')
        check('untracking_preserves_locally_readable_file', f.read_text() == 'DEMO_ONLY=EDITED_DUMMY\n' and not git('ls-files', '--', '.env').stdout)
        git('add', '--', '.gitignore'); git('commit', '--quiet', '-m', 'Untrack dummy file')
        check('previous_commit_still_contains_dummy', git('cat-file', '-e', old + ':.env').returncode == 0)
        git('add', '-f', '--', '.env')
        check('forced_add_can_reintroduce_ignored_file', git('ls-files', '--', '.env').stdout.strip() == '.env')
        assert not git('remote').stdout
        version = git('--version').stdout.strip()
    return {'passed': len(results), 'cases': results, 'git': version,
            'python': platform.python_version(), 'platform': platform.system(),
            'network_used': False, 'real_credentials_used': False,
            'agent_product_or_paid_service_tested': False}

if __name__ == '__main__':
    print(json.dumps(run(), indent=2))
