GCT is a reproducible experiment testing whether real language-model residual states carry reusable transport laws across controlled context transformations. The oracle is an axiomatic synthetic world; latent coherence is never treated as truth.
The original target is unquantized Qwen/Qwen3-4B; the completed second-family replication uses
pinned microsoft/Phi-4-mini-instruct in BF16 on an NVIDIA RTX 5060 Ti 16 GB. Model #2 reuses the
exact Model #1 scientific rows and frozen H1–H8 rules. Synthetic data are intentional experimental
data. Reported activation results must come from real checkpoints; the package contains no
production fake backend.
Python 3.11+ and a Blackwell-capable NVIDIA driver are required for the default run. The lock uses the official PyTorch CUDA 13.0 wheel index.
uv sync --extra dev
uv run gct doctorgct doctor fails with actionable guidance when CUDA, BF16, or Blackwell support is incompatible;
it never silently sends a full model run to CPU.
The engineering configuration exercises code paths and is not scientific validation:
uv run gct run --config configs/experiment_ci.yaml --resumeThe preregistered experiment is:
uv run gct run --config configs/experiment_full.yaml --resumeThe completed Model #2 replication and paired comparison are reproduced with:
uv run gct run --config configs/experiment_model2_phi4mini_full.yaml --resume
uv run gct compare models \
--baseline-run gct-v0.1-db5a41461117 \
--replication-run gct-v0.2-phi4mini-7a87777ac843
uv run gct verify gct-v0.2-phi4mini-7a87777ac843The v0.3 quotient/trajectory experiment runs on a fresh, disjoint cohort because its hypotheses were written after the v0.1/v0.2 results were known. Both pinned models consume byte-identical rows:
uv run gct dataset build --config configs/experiment_v3_qwen_full.yaml
uv run gct run --config configs/experiment_v3_qwen_full.yaml --resume
uv run gct run --config configs/experiment_v3_phi4mini_full.yaml --resume
uv run gct compare v3 --qwen-run <v3-qwen-run-id> --phi-run <v3-phi-run-id>
uv run gct verify <v3-qwen-run-id>
uv run gct verify <v3-phi-run-id>Individual v0.3 stages are also addressable, in the order the freeze discipline requires:
uv run gct preregister freeze-v3 --config configs/experiment_v3_qwen_full.yaml
uv run gct geometry select --config configs/experiment_v3_qwen_full.yaml # train + validation only
uv run gct geometry evaluate --config configs/experiment_v3_qwen_full.yaml # first test-row read
uv run gct stats run-v3 --config configs/experiment_v3_qwen_full.yaml
uv run gct report build-v3 --config configs/experiment_v3_qwen_full.yamlconfigs/experiment_v3_ci.yaml is an engineering-only configuration; it forbids scientific claims
and cannot emit a scientific root report.
configs/experiment_model2_phi4mini_ci.yaml is an engineering-only configuration and is rejected
as scientific evidence.
Individual and audit commands follow the same immutable run resolution:
uv run gct dataset build --config configs/experiment_full.yaml
uv run gct dataset validate --run runs/<run-id>
uv run gct activations extract --config configs/experiment_full.yaml --resume
uv run gct behavior evaluate --config configs/experiment_full.yaml --resume
uv run gct transport fit --config configs/experiment_full.yaml
uv run gct probes fit --config configs/experiment_full.yaml
uv run gct metrics evaluate --config configs/experiment_full.yaml
uv run gct stats run --config configs/experiment_full.yaml
uv run gct report build --config configs/experiment_full.yaml
uv run gct inspect run runs/<run-id>
uv run gct inspect sample <sample-id>
uv run gct verify runs/<run-id>v0.3 asked whether v0.1/v0.2 had looked for semantic conditionality in the wrong object, and tested a train-learned nuisance quotient, relational CKA depth geometry, and per-sample trajectory subspaces on a fresh 420-world cohort proven disjoint from the historical rows. All five structural endpoints are null in both model families, with every interval excluding zero on the side opposite the hypothesis, and Phi's v0.2 hidden-coordinate result did not replicate (R² −0.331 [−0.638, −0.079] against +0.288 [0.152, 0.387]). The unobservable controls passed in both models; V3-H8 is supported in both but the structural features alone predict nothing (R² −0.011), so it is an association rather than a mechanism.
A real nuisance subspace does exist — it beats matched-rank random and shuffled-pair nulls while retaining 94% of held-out variance — and quotienting it still does not make nuisance displacement smaller than substantive displacement. On renderer families held out of every fitting step, the learned subspace generalizes worse than a random subspace of the same rank, which only the matched-null control reveals.
The frozen interpretation matrix row that fired is V3-H1..H5 null in both families and V3-H6 does not replicate, licensing one action: prepare the negative-results manuscript and stop the automatic geometry escalation. See REPORT_V3_QWEN.md, REPORT_V3_PHI.md, REPORT_V3_CROSS_MODEL.md, PRE_REGISTRATION_V3.md, and PIVOT_AND_RESTART.md.
See REPRODUCIBILITY.md, METHODS.md,
METHODS_V3.md, and the machine-readable preregistration in the full config. Generated evidence is summarized in REPORT.md
for Model #1, REPORT_MODEL2.md for Phi, and REPORT_CROSS_MODEL.md for the paired stable-ID/base-
world comparison. The broad reusable-transport null replicated; Phi alone supported H5 residual-
coordinate decodability. H7/H8 remained unsupported, so the result is not evidence of causal use,
ontology, or universal truth geometry. The H6 identical-prompt arm passed in both families, but it
is degenerate by construction and could not have failed; see docs/LIMITATIONS.md.
One exploratory, non-confirmatory post-hoc analysis is recorded alongside those results. It fits the hidden pressure from the numeric literals the prompt already prints, with no model and no activations, to give the H5 residual R² a reference point:
uv run gct probes baseline --run gct-v0.1-db5a41461117It writes only under runs/<run-id>/exploratory/ and changes no endpoint status. Its numbers and
their reading are in EXPLORATORY_SURFACE_BASELINE.md.
uv run pytest -q
uv run ruff check .
uv run ruff format --check .
uv run mypy src/gct
GCT_RUN_REAL_MODEL_TEST=1 uv run pytest -q tests/integration/test_real_qwen.py -m real_model
GCT_RUN_REAL_MODEL_TEST=1 uv run pytest -q tests/integration/test_real_phi.py -m real_model
GCT_RUN_REAL_MODEL_TEST=1 uv run pytest -q tests/integration/test_real_v3.py -m real_model