Skip to content

Commit 6469806

Browse files
fix(gonol): bind complete replay and qualify exact language inputs
1 parent 8c84d3d commit 6469806

13 files changed

Lines changed: 552 additions & 127 deletions

‎.github/workflows/english-gonol-full.yml‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ on:
1010
- "research/english-gonol/tests/test_full_construct_run.py"
1111
- "research/english-gonol/tests/test_source_order.py"
1212
- ".github/workflows/english-gonol-full.yml"
13+
- "requirements-language-tests.txt"
1314

1415
permissions:
1516
contents: read
@@ -43,10 +44,10 @@ jobs:
4344
- name: Set up Python
4445
uses: actions/setup-python@v7.0.0
4546
with:
46-
python-version: "3.12"
47+
python-version: "3.12.14"
4748

4849
- name: Install construction prerequisites
49-
run: python -m pip install --disable-pip-version-check pytest PyYAML
50+
run: python -m pip install --disable-pip-version-check --require-hashes -r requirements-language-tests.txt
5051

5152
- name: Preflight resources and exact producer identities
5253
shell: bash

‎.github/workflows/english-gonol.yml‎

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,24 +6,48 @@ on:
66
- "research/english-gonol/**"
77
- "libs/ucns/**"
88
- ".github/workflows/english-gonol.yml"
9+
- "tools/qualify_language_gonols.py"
10+
- "tools/tests/test_language_qualification.py"
11+
- "requirements-language-tests.txt"
912
pull_request:
1013
paths:
1114
- "research/english-gonol/**"
1215
- "libs/ucns/**"
1316
- ".github/workflows/english-gonol.yml"
17+
- "tools/qualify_language_gonols.py"
18+
- "tools/tests/test_language_qualification.py"
19+
- "requirements-language-tests.txt"
20+
21+
permissions:
22+
contents: read
1423

1524
jobs:
1625
english-gonol-tests:
1726
runs-on: ubuntu-latest
1827
steps:
19-
- uses: actions/checkout@v4
20-
- uses: actions/setup-python@v5
28+
- uses: actions/checkout@v7.0.1
29+
with:
30+
persist-credentials: false
31+
- uses: actions/setup-python@v7.0.0
2132
with:
22-
python-version: "3.12"
33+
python-version: "3.12.14"
34+
35+
- name: Checkout exact historical lexical test authority
36+
uses: actions/checkout@v7.0.1
37+
with:
38+
repository: The-Interdependency/ucns
39+
ref: d7c6f51304ed6c32d48badf63132bea6de8af497
40+
path: .ci/ucns-lexical
41+
persist-credentials: false
2342

2443
- name: Install pytest
25-
run: python -m pip install pytest
44+
run: python -m pip install --require-hashes -r requirements-language-tests.txt
2645

2746
- name: English Gonol construction tests
2847
working-directory: research/english-gonol
29-
run: python -m pytest -q tests
48+
env:
49+
ENGLISH_GONOL_UCNS_ROOT: ${{ github.workspace }}/.ci/ucns-lexical
50+
run: python -m pytest -q tests --junitxml="$RUNNER_TEMP/english-gonol.xml"
51+
52+
- name: Require every test to pass
53+
run: python tools/qualify_language_gonols.py check-tests "$RUNNER_TEMP/english-gonol.xml"

‎.github/workflows/python-gonol.yml‎

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ on:
1010
- "STACK_MANIFEST.md"
1111
- "stack-manifest.json"
1212
- ".github/workflows/python-gonol.yml"
13+
- "tools/qualify_language_gonols.py"
14+
- "tools/tests/test_language_qualification.py"
15+
- "requirements-language-tests.txt"
1316
push:
1417
branches: [main]
1518
paths:
@@ -20,6 +23,9 @@ on:
2023
- "STACK_MANIFEST.md"
2124
- "stack-manifest.json"
2225
- ".github/workflows/python-gonol.yml"
26+
- "tools/qualify_language_gonols.py"
27+
- "tools/tests/test_language_qualification.py"
28+
- "requirements-language-tests.txt"
2329

2430
permissions:
2531
contents: read
@@ -28,18 +34,19 @@ jobs:
2834
contracts:
2935
runs-on: ubuntu-latest
3036
steps:
31-
- uses: actions/checkout@v6
37+
- uses: actions/checkout@v7.0.1
3238
with:
3339
fetch-depth: 0
34-
- uses: actions/setup-python@v6
40+
persist-credentials: false
41+
- uses: actions/setup-python@v7.0.0
3542
with:
36-
python-version: "3.12"
43+
python-version: "3.12.14"
3744
- name: Install pytest
38-
run: python -m pip install pytest
45+
run: python -m pip install --require-hashes -r requirements-language-tests.txt
3946
- name: Stack structural consistency
4047
run: python tools/check_stack_consistency.py
4148
- name: Checkout pinned UCNS Public Gonol authority
42-
uses: actions/checkout@v6
49+
uses: actions/checkout@v7.0.1
4350
with:
4451
repository: The-Interdependency/ucns
4552
ref: 62e08ee1cf3b5d7b6e48c927b1047509e6328b5c
@@ -49,4 +56,6 @@ jobs:
4956
working-directory: research/python-gonol
5057
env:
5158
UCNS_SOURCE_ROOT: ${{ github.workspace }}/.ci/ucns
52-
run: python -m pytest -q tests
59+
run: python -m pytest -q tests ../../tools/tests/test_language_qualification.py --junitxml="$RUNNER_TEMP/python-gonol.xml"
60+
- name: Require every test to pass
61+
run: python tools/qualify_language_gonols.py check-tests "$RUNNER_TEMP/python-gonol.xml"
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
# Language construction qualification
2+
3+
Status: execution pending. This protocol qualifies the current English v2
4+
corpus construction and Python source/control construction. Geometry,
5+
language understanding, runtime equivalence, and canon promotion remain hmmm.
6+
7+
## Frozen scope and evidence
8+
9+
- Stack starting source: `bcaba85900716e5209150a504660fa2ca5158299`.
10+
- Minimum repair: `14b6063` (tabs, physical source addresses, density rendering).
11+
- English: every file admitted by the existing OEWN 2025 loader, from
12+
`globalwordnet/english-wordnet@dc343f2683279ecbb13fab4e2fd778d7b162d287`.
13+
- English UCNS authority: `4f863ad37096b7baab8f62820ad5cb937b62a3a7`.
14+
- Historical lexical test authority: `d7c6f51304ed6c32d48badf63132bea6de8af497`.
15+
- Python UCNS authority: `62e08ee1cf3b5d7b6e48c927b1047509e6328b5c`.
16+
- Python corpus: every tracked `.py` file beneath CPython `Lib/test/` at the
17+
`v3.12.14` commit `2abcf904b8dac8c999d2b3aac76681abb333798a`. Exact source inventory is frozen before the run.
18+
Files that violate the existing encoding admission rule remain explicit
19+
rejection evidence with original byte hashes. Invalid syntax and off-carrier
20+
Unicode remain represented, with their existing witness flags and hmmm.
21+
22+
## Acceptance
23+
24+
1. Run every existing English and Python workspace test with exact dependencies;
25+
require actual call outcomes, zero skips, zero failures, and nonempty suites.
26+
2. Rebuild all admitted English input twice in separate processes and empty
27+
output directories. Verify SQLite integrity, logical replay, complete counts,
28+
unchanged source inventories, and identical logical receipts/manifests.
29+
3. Enumerate the complete Python corpus before construction. Each eligible file
30+
must have two independent process builds, exact source recovery, replay,
31+
matching canonical database content and manifest, and an explicit outcome.
32+
4. Check tab widths and physical addresses against independent source-based
33+
witnesses. Verify provenance and constitutive control data, and reject
34+
targeted changes to identity, order, source, relation and receipt fields.
35+
5. Generated databases remain local execution state. Commit compact provenance,
36+
outcome and digest receipts; do not substitute a sample for the declared scope.
37+
38+
## Resource preflight and stopping
39+
40+
Observed available resources before execution: 26 GiB free disk, 21.5 GiB RAM,
41+
Python 3.12.14. The recorded English run needs about 293 MiB output and 280 MiB
42+
RSS; two serial builds fit. Python file pairs are verified and removed one pair
43+
at a time, keeping compact per-file evidence. Preflight the largest input and
44+
storage estimate before starting. These are local persistent processes; no
45+
arbitrary scientific wall-clock cutoff is imposed. Stop on completion or a
46+
recorded computational/admission failure; retain failures and all hmmm.
47+
48+
## Usage and next steps
49+
50+
Run the workspace tests from their own directories. Supply
51+
`ENGLISH_GONOL_UCNS_ROOT` for the exact historical lexical producer and
52+
`UCNS_SOURCE_ROOT` for the Python producer. The full construction/replay runner
53+
and final receipt will be linked here after implementation and execution.
54+
55+
Passing this protocol qualifies its explicit construction profiles only.
56+
UCNS retains geometry authority; Stack retains active construction ownership;
57+
EDCM retains measurement authority. Independent repository graduation is outside
58+
this qualification.
59+
60+
## CPython provenance correction
61+
62+
The former `2d7d957248038635334b62b27f650220213d8e5d` pin cannot be fetched
63+
from the declared upstream (`not our ref`). The annotated `v3.12.14` tag
64+
`4b65faa0b452113bf130086fb1519be6d9cd9b06` resolves to
65+
`2abcf904b8dac8c999d2b3aac76681abb333798a`. BASE and the Python work graph
66+
now use that observed source identity; the graph digest is recomputed.
67+
No language profile or geometry authority changes. The root Stack manifest
68+
contains no CPython pin and its authority projection remains applicable.

‎requirements-language-tests.txt‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# Exact Linux/Python 3.12 qualification dependencies. Regenerate from downloaded wheels.
2+
iniconfig==2.3.0 --hash=sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12
3+
packaging==26.3 --hash=sha256:d7193f7c8e4e93f444fde0262bf90af30e16fa0ad0ad44cb553c87339b23cd1c
4+
pluggy==1.6.0 --hash=sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746
5+
pygments==2.21.0 --hash=sha256:2363c69b61c4a97c838da3b130dcd6468f4848992b21a82f2a63ec34377137d9
6+
pytest==8.4.2 --hash=sha256:872f880de3fc3a5bdc88a11b39c9710c3497a547cfa9320bc3c5e62fbf272e79
7+
pyyaml==6.0.3 --hash=sha256:ba1cc08a7ccde2d2ec775841541641e4548226580ab850948cbfda66a1befcdc

‎research/python-gonol/BASE.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
},
99
"project": "python-gonol",
1010
"python_language_profile": {
11-
"commit": "2d7d957248038635334b62b27f650220213d8e5d",
11+
"commit": "2abcf904b8dac8c999d2b3aac76681abb333798a",
1212
"profile": "Python 3.12 file input",
1313
"repository": "python/cpython",
1414
"tag": "v3.12.14"

‎research/python-gonol/README.md‎

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ position.
4545
One compact SQLite construct plus a small manifest:
4646

4747
```text
48-
construct.db characters, occurrences, control_identities, controls, newlines, meta
48+
construct.db characters, occurrences, control_identities, controls, newlines, source_bytes, meta
4949
manifest.json schema, source digests, counts, carrier pin, receipt_sha256, hmmm
5050
```
5151

@@ -76,12 +76,15 @@ verify_construct(Path("construct"), "/home/wayseer_interdependentway_org/src/ucn
7676

7777
## Acceptance gates
7878

79-
Version 1.1.0 corrects tab expansion and CR-only physical addresses. Rebuild
80-
1.0.0 constructs from their original sources; replay rejects the old version.
79+
Version 2.0.0 corrects tab expansion and CR-only physical addresses. Rebuild
80+
1.x constructs from their original sources; replay rejects the old version.
8181
Occurrence columns and `controls.start_column` are one-based source-scalar
8282
addresses. TAB widths use a separate zero-based expanded column, advancing
8383
through earlier tabs. LF, CR, and CRLF reset that expanded column; FF resets
84-
the indentation column. CRLF retains both source scalars on the preceding
84+
the indentation column. Version 2 also preserves original source bytes in the
85+
database and binds every row in a logical digest. Replay reconstructs the
86+
complete database in an isolated temporary directory and compares the entire
87+
manifest and logical digest. CRLF retains both source scalars on the preceding
8588
physical line and advances the next scalar to line + 1, column 1.
8689

8790
- `x=1\n` produces no not-on-pinned-carrier.

‎research/python-gonol/WORK_GRAPH.json‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,12 @@
3838
},
3939
{
4040
"authority": "Python 3.12.14 language and CPython recognition witness",
41-
"commit": "2d7d957248038635334b62b27f650220213d8e5d",
41+
"commit": "2abcf904b8dac8c999d2b3aac76681abb333798a",
4242
"relation": "exact Python language profile source at tag v3.12.14",
4343
"repository": "python/cpython"
4444
}
4545
],
4646
"schema": "the-interdependency.stack-manifest",
4747
"version": "1.0.0",
48-
"work_graph_sha256": "1460f0b437d8edc68d91280d4e8fdbef63d68e410857af8ba92897d4681748f2"
48+
"work_graph_sha256": "03d4fab2645602c3ba95d6453d302a53b64cde8ece89a4d688db80041dfd1cdc"
4949
}

‎research/python-gonol/docs/PYTHON_AFFIXIATION_BOUNDARY.md‎

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,14 +58,19 @@ for source-built participants.
5858
One compact SQLite construct plus a small manifest:
5959

6060
```text
61-
construct.db characters, occurrences, control_identities, controls, newlines, meta
61+
construct.db characters, occurrences, control_identities, controls, newlines, source_bytes, meta
6262
manifest.json schema, source digests, counts, carrier pin, receipt_sha256, hmmm
6363
```
6464

6565
No giant JSON receipt.
6666

6767
## Replay
6868

69+
Version 2 preserves original source bytes, including encoding markers, and
70+
reconstructs the complete construct in temporary storage during replay. Every
71+
table and manifest field must agree with that reconstruction. Version 1
72+
receipts must be rebuilt from original source.
73+
6974
Replay verifies, at minimum:
7075

7176
1. pinned Public Gonol digest and module digest;

0 commit comments

Comments
 (0)