# RUN-110 — no machine-local location and no account name written in this tree: src04 names its table inside the census package, the deny-lists read private names from the machine, and the handoff builder reads the census through its variable

**Arm:** 數學戰士「墜衡」 / AMRAL Research Lab
**Subject:** this tree's own files, scanned for machine-local locations and account names on Neo.K's instruction (2026-10-25) that every private detail goes, in private trees as in public ones
**Tools:** `src04_curve_arithmetic_recompute.py`, `build_results.py`, `export_verification.py`, [`build_handoff.py`](../../packages/build_handoff.py/), `src00_corpus_identity.py`, `tools_full_completeness.py`
**Logs:** `src04-curve-arithmetic.json`, `results.v1.json`

**Result.** No measured value changes.

1. `src04`'s log named its input table by the absolute path of the census package on this machine. It now names the table inside the package, `BSD_Phase1_Banwait_Huang_Exact_Census_v0.5_2026-08-12/inputs/metadata/old_base_curve_arithmetic.json`. Re-run, the log differs from the archived one in that field only.
2. The two deny-lists, `build_results.py`'s and the exporter's, wrote the account names they refuse into the code. They now read those names on the machine at run time:
   - the login name;
   - the local part of git's `user.email`;
   - a file outside every tree, named by `AMRAL_PRIVATE_TERMS_FILE` (default `~/.amral-private-terms`). Without the file, the build and the export stop instead of passing.

   The structural patterns (drive paths, home directories, mail, chat URLs) are unchanged. The lists can now refuse more than before, never less.
3. `handoff/build_handoff.py` read the census package from its absolute path. It now reads `BSD_CENSUS_PKG`, the variable the gates have used since RUN-069.

---

## 1. src04's input table

The field was `str(DATA)`. It is now the package's name followed by the table's path inside the package. `census_pkg` still finds the package exactly as before: through `BSD_CENSUS_PKG`, or else inside a handoff bundle.

Re-run with the variable set, the gate reproduces every other field of its log. The installed log keeps the archived file's line ending, and one line changes.

## 2. The deny-lists

`build_results.py` refused two account names by writing them into a regular expression. `export_verification.py` wrote two account names and one directory name into its list. A deny-list that has to spell out what it hides puts it into every clone of the tree.

Both now call `_private_terms()`, which collects the names from the machine at run time. Each name of three or more characters becomes its own case-insensitive pattern.

The file follows the convention the crystallization's checker and the layer-3 exporter use: `AMRAL_PRIVATE_TERMS_FILE`, one name per line. If the file is missing, the tool refuses to run, because a deny-list that cannot be read is not a pass.

Two runs confirm the change:

- **results.v1.json, rebuilt under the new list:** 687/692 as before. Only the date and the README hash change.
- **The exporter, run for both lines into a scratch directory:** BSD 519 files, Collatz 170 files. Neither run is refused, and none of the private names appears in either output.

## 3. Prose and defaults

- **README.** The table of the corpus's four locations named a private folder by its path. It now says what the folder is.
- **`src00`'s docstring** named the curated corpus by a local directory. It now names it by the archive site's paths.
- **`tools_full_completeness.py`'s docstring** said it writes to a scratch directory. It writes beside itself, and now says so.
- **`build_handoff.py`.** The comment beside `WORK` named the local directory.

## What this run does not change

- **Earlier commits.** They still hold these paths, including 6f9c8cc, which the ten crystallization papers pin. Rewriting history would change every pin after the first affected commit. That decision is Neo.K's.
- **Repository URLs.** The handoff packages and the external calibration's provenance name the repository by its GitHub address. They are left as they are until that decision is made.
