# Gitea Variables Runbook

Short operator flow for KIS variable-backed workflows.

## Before you run

- Confirm these repo variables exist:
  - `KIS_APP_KEY_TEST`
  - `KIS_APP_SECRET_TEST`
  - `KIS_APP_KEY`
  - `KIS_APP_SECRET`
- Confirm the workflows reference `vars.KIS_APP_*`, not `secrets.KIS_APP_*`.
- Confirm the seed snapshot is available as either:
  - `GatherTradingData.json`, or
  - `GatherTradingData.xlsx` for runtime regeneration.
- If both are missing, the workflow can optionally fetch `GatherTradingData.xlsx` from Google Drive when `.clasprc.json` is present in the runner workspace.

## Run order

1. Trigger `.gitea/workflows/kis_data_collection.yml` with `workflow_dispatch`.
2. Confirm the mock credential step passes in `--dry-run` mode.
3. Confirm the real collection step writes:
   - `Temp/kis_data_collection_v1.json`
   - `outputs/kis_data_collection/kis_data_collection.db`
4. Trigger `.gitea/workflows/qualitative_sell_strategy.yml`.
5. Confirm the mock credential step passes in `--dry-run` mode.
6. Confirm the batch build step sees `KIS_APP_KEY` and `KIS_APP_SECRET`.

## If it fails

- If an API dispatch probe returns `401 Unauthorized`, the session does not have a repository write token and cannot trigger the workflow by API.
- If the job stops on `missing or empty`, the variable name exists in workflow text but the repo variable is missing or blank.
- If the job stops before Python starts, the runner may be using an old workflow revision.
- If Python raises `environment variables not found`, the repo variable exists but is not injected into the job environment.
- If the collector writes no SQLite output, check `GatherTradingData.json` presence and KIS API connectivity.
- If the job fails at `Prepare Raw Seed Snapshot`, provision the missing seed file in the repository tree or add a download step before collection.
- If the job fails while downloading `GatherTradingData.xlsx`, check Google Drive access, `.clasprc.json`, and the spreadsheet export permission for the service account / refresh token.

## What to attach when asking for help

- Job URL
- Failing step name
- First error line
- Whether the failure is in:
  - variable resolution
  - Python credential loading
  - API connectivity
  - SQLite write

## API-trigger path

If you have `GITEA_TOKEN_HOME` available, you can use the token harness:

```bash
python tools/validate_gitea_token_home_v1.py --dispatch --workflow kis_data_collection.yml --ref main
```

The token harness documents the direct API path and can be used when UI dispatch is not convenient.
