Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
4bb56be
feat(english): build expanded Unicode public gonol and full-corpus or…
erinepshovel-code Oct 14, 2026
2cf9d50
ci: provide the pinned ordinal geometry dependency to the existing En…
erinepshovel-code Oct 14, 2026
0e0ea9e
Select ordinal English construction; retire previous default and expo…
erinepshovel-code Oct 14, 2026
4c9470d
Bind ordinal replacement in Stack provenance and restore retained lan…
erinepshovel-code Oct 14, 2026
4dea37a
Bind complete Unicode release and verified manifest claims; cover adm…
erinepshovel-code Oct 14, 2026
37adccb
Bound Unicode acquisition before reading or copying release inputs
erinepshovel-code Oct 14, 2026
174f96a
Bind final ordinal source bytes and test the actual merge tree
erinepshovel-code Oct 14, 2026
68d6fe2
Close selection and repin CI boundaries; separate auxiliary work grap…
erinepshovel-code Oct 14, 2026
b7f8672
docs(english-gonol): record SPACE attachment answer and separate tran…
erinepshovel-code Oct 14, 2026
69559d3
docs(english-gonol): record SPACE compound definition attachment answer
erinepshovel-code Oct 14, 2026
ee130be
docs(english-gonol): exclude native Mobius lift from ordinal requirem…
erinepshovel-code Oct 14, 2026
1434180
docs(english-gonol): inherit operator definitions on the ordinal base
erinepshovel-code Oct 14, 2026
7c91215
fix(english): bound artifact JSON reads
erinepshovel-code Oct 14, 2026
f44e9f0
fix(english): isolate ordinal UCNS test environment
erinepshovel-code Oct 14, 2026
06bf3e4
fix(english): bind admission closure to pinned baseline
erinepshovel-code Oct 14, 2026
878428a
test(english): cover bounded JSON artifact reads
erinepshovel-code Oct 14, 2026
3153700
test(english): pin workflow isolation and baseline closure
erinepshovel-code Oct 14, 2026
f1ae89a
fix(stack): admit immutable artifact identities in research graph
erinepshovel-code Oct 14, 2026
2bca0cb
fix(english): bind carrier and Unicode inputs in source graph
erinepshovel-code Oct 14, 2026
8a048fd
fix(stack): record Unicode artifact identities
erinepshovel-code Oct 14, 2026
2ebf149
docs(stack): project Unicode artifact provenance
erinepshovel-code Oct 14, 2026
34fdda5
test(stack): cover artifact provenance identities
erinepshovel-code Oct 14, 2026
2ba7131
feat(english): reconstruct inherited definitions over the ordinal base
erinepshovel-code Oct 14, 2026
3c8e405
chore(stack): bind selected English definition migration source
erinepshovel-code Oct 14, 2026
08ccfe6
fix(ci): reject unmatched ordinal input identities
erinepshovel-code Oct 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 23 additions & 3 deletions .github/workflows/english-gonol.yml
Original file line number Diff line number Diff line change
Expand Up @@ -73,13 +73,24 @@ jobs:
path: _deps/ucns-carrier
persist-credentials: false

- name: Checkout pinned ordinal geometry producer
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
with:
repository: The-Interdependency/ucns
ref: a7bfa0c96daca1f7445ba57c39fa6d8fd62e51eb
path: _deps/ucns-ordinal
persist-credentials: false

- name: Set up Python
uses: actions/setup-python@v7.0.0
with:
python-version: "3.12"

- name: Install construction prerequisites
run: python -m pip install --disable-pip-version-check pytest PyYAML
run: |
python -m pip install --disable-pip-version-check pytest PyYAML
python -m venv _deps/ordinal-venv
_deps/ordinal-venv/bin/python -m pip install --disable-pip-version-check pytest PyYAML ./_deps/ucns-ordinal

- name: Verify all pinned source identities
run: |
Expand All @@ -88,6 +99,7 @@ jobs:
test "$(git -C _deps/oewn rev-parse HEAD)" = "dc343f2683279ecbb13fab4e2fd778d7b162d287"
test "$(git -C _deps/edcm-metric-origin rev-parse HEAD)" = "0873c105799681ea1f7ccb3e619d1f7aebbd85e0"
test "$(git -C _deps/ucns-carrier rev-parse HEAD)" = "4f863ad37096b7baab8f62820ad5cb937b62a3a7"
test "$(git -C _deps/ucns-ordinal rev-parse HEAD)" = "a7bfa0c96daca1f7445ba57c39fa6d8fd62e51eb"

- name: Preflight full-corpus resources
run: |
Expand All @@ -105,9 +117,17 @@ jobs:
--ucns-source-root "$GITHUB_WORKSPACE/_deps/ucns-carrier" \
--out-dir "$ENGLISH_GONOL_FULL_CONSTRUCT_ROOT"

- name: English Gonol construction tests
- name: Historical English Gonol tests
working-directory: research/english-gonol
run: |
python -m pytest -q tests \
--ignore=tests/test_ordinal_construct.py \
--ignore=tests/test_ordinal_definitions.py \
--ignore=tests/test_active_construction.py

- name: Isolated ordinal construction tests
working-directory: research/english-gonol
run: python -m pytest -q tests
run: ../../_deps/ordinal-venv/bin/python -m pytest -q tests/test_ordinal_construct.py tests/test_ordinal_definitions.py tests/test_active_construction.py

- name: Retain full-corpus metric-origin evidence
uses: actions/upload-artifact@v7.0.1
Expand Down
213 changes: 213 additions & 0 deletions .github/workflows/english-ordinal-affixiation.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,213 @@
name: English ordinal affixiation
on:
workflow_dispatch:
pull_request:
paths:
- 'research/english-gonol/english_gonol/**'
- 'research/english-gonol/ACTIVE_CONSTRUCTION.json'
- 'research/english-gonol/BASE.json'
- 'stack-manifest.json'
- 'STACK_MANIFEST.md'
- 'research/english-gonol/tests/test_active_construction.py'
Comment thread
erinepshovel-code marked this conversation as resolved.
- 'research/english-gonol/tests/test_ordinal_construct.py'
- 'research/english-gonol/tests/test_ordinal_definitions.py'
- 'research/english-gonol/tests/test_ordinal_source_inputs.py'
- 'research/english-gonol/docs/ordinal-*'
Comment thread
erinepshovel-code marked this conversation as resolved.
- '.github/workflows/english-ordinal-affixiation.yml'
Comment on lines +15 to +16

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Gate edits to the committed migration witness

When a PR changes only experiments/ordinal-definitions/migration-witness.json, this full workflow is not triggered because the path filters cover ordinal docs, tests, and implementation files but not the committed witness. The general English workflow does run, but none of its fixture-based ordinal tests recomputes the witness's full-field counts, receipts, source hashes, or SURVIVED status, so those evidence claims can drift without either the selected-source check or a complete definition replay; watch this file and compare it against the reconstruction produced from the pinned inputs.

Useful? React with 👍 / 👎.

permissions:
contents: read
defaults:
run:
shell: bash
jobs:
full-corpus:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
with:
persist-credentials: false
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
with:
repository: The-Interdependency/ucns
ref: a7bfa0c96daca1f7445ba57c39fa6d8fd62e51eb
path: _inputs/ucns
persist-credentials: false
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
with:
repository: The-Interdependency/ucns
ref: 4f863ad37096b7baab8f62820ad5cb937b62a3a7
path: _inputs/admission-carrier
Comment thread
erinepshovel-code marked this conversation as resolved.
persist-credentials: false
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
with:
repository: globalwordnet/english-wordnet
ref: dc343f2683279ecbb13fab4e2fd778d7b162d287
path: _inputs/oewn
persist-credentials: false
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
with:
repository: The-Interdependency/skill-lib
ref: e74ce1ee8a2cea50b0a6acce7697a6d3d9b2e128
path: _inputs/skill-lib
persist-credentials: false
sparse-checkout: |
wdll
gonol-build
msdmd
meta-module-build
interdependent-work-graph
tools/skill_usage.py
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97
with:
python-version: '3.12.14'
- name: Preflight resources and install exact build dependencies
run: |
python - <<'PY'
import json, pathlib, platform, shutil, sqlite3
free = shutil.disk_usage('.').free
# Source, two verified SQLite bundles, dependencies and retained evidence.
assert free >= 4 * 1024**3, '4 GiB working space required before full build'
print(json.dumps({'python':platform.python_version(),'sqlite':sqlite3.sqlite_version,'free_bytes':free}))
PY
python -m pip install uv==0.11.18 PyYAML==6.0.2
uv sync --project _inputs/ucns --locked --python python --extra test
uv pip install --python _inputs/ucns/.venv/bin/python PyYAML==6.0.2
- name: Acquire declared Unicode release and license
env:
SOURCE_HEAD: ${{ github.event.pull_request.head.sha || github.sha }}
run: |
mkdir -p _inputs/ucd _evidence
for name in UnicodeData.txt DerivedCoreProperties.txt ReadMe.txt; do
curl --fail --location --retry 3 --proto '=https' --tlsv1.2 \
"https://www.unicode.org/Public/18.0.0/ucd/$name" -o "_inputs/ucd/$name"
done
curl --fail --location --retry 3 --proto '=https' --tlsv1.2 \
https://www.unicode.org/license.txt -o _inputs/ucd/LICENSE-Unicode.txt
sha256sum _inputs/ucd/* | tee _evidence/unicode-acquisition.sha256
git rev-parse HEAD > _evidence/stack-tested-merge.txt
printf '%s\n' "$SOURCE_HEAD" > _evidence/stack-head.txt
git -C _inputs/ucns rev-parse HEAD > _evidence/ucns-head.txt
git -C _inputs/oewn rev-parse HEAD > _evidence/corpus-head.txt
# CI source provenance is separate from the artifact verifier's data contract.
cp research/english-gonol/docs/ordinal-work-graph.json _evidence/source-work-graph.json
- name: Verify exact participant graph and unchanged source reader
env:
PYTHONPATH: research/english-gonol
run: |
git fetch --no-tags --depth=1 origin e3eb83764355b4b760a79323cda6a6d75c3a501a
_inputs/ucns/.venv/bin/python - <<'PY'
import ast,hashlib,json,pathlib,subprocess
graph=json.loads(pathlib.Path('research/english-gonol/docs/ordinal-work-graph.json').read_text())
body={k:graph[k] for k in ('repositories','boundaries')}
assert hashlib.sha256(json.dumps(body,sort_keys=True,separators=(',',':')).encode()).hexdigest()==graph['work_graph_sha256']
Comment on lines +100 to +102

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Validate the source graph's fixed boundary claims

When a provenance repin changes ordinal-work-graph.json, this check proves only that its repositories and boundaries reproduce its own digest; it never validates the graph schema/version or requires the non-transfer fields to remain false. A repin can therefore set authority_transfer or proof_status_transfer to true, recompute the digest, and pass this job while the root projections still declare non-transfer boundaries; validate the exact graph shape and reconcile its fixed boundaries with the root manifest before retaining it as evidence.

AGENTS.md reference: AGENTS.md:L72-L75

Useful? React with 👍 / 👎.

git_roots={
('The-Interdependency/ucns','a7bfa0c96daca1f7445ba57c39fa6d8fd62e51eb'):'_inputs/ucns',
('The-Interdependency/ucns','4f863ad37096b7baab8f62820ad5cb937b62a3a7'):'_inputs/admission-carrier',
('globalwordnet/english-wordnet','dc343f2683279ecbb13fab4e2fd778d7b162d287'):'_inputs/oewn',
('The-Interdependency/skill-lib','e74ce1ee8a2cea50b0a6acce7697a6d3d9b2e128'):'_inputs/skill-lib',
}
artifact_roots={
'unicode.org/Public/18.0.0/ucd/UnicodeData.txt':'_inputs/ucd/UnicodeData.txt',
'unicode.org/Public/18.0.0/ucd/DerivedCoreProperties.txt':'_inputs/ucd/DerivedCoreProperties.txt',
}
baseline_key=('The-Interdependency/stack','e3eb83764355b4b760a79323cda6a6d75c3a501a')
expected=set(git_roots) | {(name,None) for name in artifact_roots} | {baseline_key}
seen=set()
for item in graph['repositories']:
key=(item['repository'],item.get('commit'))
assert key in expected and key not in seen, f'unmapped or duplicate participant: {key}'
seen.add(key)
if key in git_roots:
assert subprocess.check_output(['git','-C',git_roots[key],'rev-parse','HEAD'],text=True).strip()==item['commit']
elif item['repository'] in artifact_roots:
raw=pathlib.Path(artifact_roots[item['repository']]).read_bytes()
assert hashlib.sha256(raw).hexdigest()==item['artifact_sha256']
Comment thread
erinepshovel-code marked this conversation as resolved.
Comment thread
erinepshovel-code marked this conversation as resolved.
elif key==baseline_key:
# The actual consumed files are byte-compared to this commit below.
assert subprocess.check_output(['git','rev-parse',item['commit']+'^{commit}'],text=True).strip()==item['commit']
else:
raise AssertionError(f'unverified participant: {key}')
assert seen==expected, 'participant graph omits acquired inputs'
active_base=json.loads(pathlib.Path('research/english-gonol/BASE.json').read_text())
selected=active_base['active_construction']['source_commit']
assert len(selected)==40 and all(c in '0123456789abcdef' for c in selected)
subprocess.run(['git','fetch','--no-tags','--depth=1','origin',selected],check=True)
for relative in ('english_gonol/ordinal_construct.py','english_gonol/__main__.py',
'english_gonol/ordinal_definitions.py',
'english_gonol/language/character_definitions.py',
'english_gonol/language/data/character_definitions_v1.json',
'ACTIVE_CONSTRUCTION.json','docs/ordinal-work-graph.json'):
Comment on lines +135 to +139

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Pin the definition loader's complete import closure

Fresh evidence after the earlier admission-closure fix is that the new ordinal_definitions.py imports language.character_definitions, which imports english_gonol/gonol.py, but this selected-source list omits gonol.py and the baseline IMPLEMENTATION_FILES inventory omits it as well. A PR can therefore change that import-time dependency, run altered bytes in the full build, and still pass the exact-source comparison while the graph claims the pinned ordinal-source identity; include the complete new import closure and repin the projections.

AGENTS.md reference: AGENTS.md:L72-L75

Useful? React with 👍 / 👎.

path='research/english-gonol/'+relative
assert pathlib.Path(path).read_bytes()==subprocess.check_output(['git','show',selected+':'+path]),path
base=next(r['commit'] for r in graph['repositories'] if r['repository']=='The-Interdependency/stack')
baseline_path='research/english-gonol/english_gonol/structural_construct.py'
baseline_source=subprocess.check_output(['git','show',base+':'+baseline_path],text=True)
tree=ast.parse(baseline_source)
assignment=next(node for node in tree.body if isinstance(node,(ast.Assign,ast.AnnAssign))
and ((isinstance(node,ast.Assign) and any(isinstance(t,ast.Name) and t.id=='IMPLEMENTATION_FILES' for t in node.targets))
or (isinstance(node,ast.AnnAssign) and isinstance(node.target,ast.Name) and node.target.id=='IMPLEMENTATION_FILES')))
IMPLEMENTATION_FILES=tuple(ast.literal_eval(assignment.value))
assert IMPLEMENTATION_FILES, 'pinned admission closure must be nonempty'
for name in IMPLEMENTATION_FILES:
path='research/english-gonol/english_gonol/'+name
assert pathlib.Path(path).read_bytes()==subprocess.check_output(['git','show',base+':'+path]),path
PY
- name: Unit and cross-repository geometry tests
env:
PYTHONPATH: research/english-gonol
run: |
_inputs/ucns/.venv/bin/python -m pytest -q \
_inputs/ucns/tests/test_ordinal_affixiation.py \
research/english-gonol/tests/test_ordinal_construct.py \
research/english-gonol/tests/test_ordinal_definitions.py \
research/english-gonol/tests/test_ordinal_source_inputs.py \
research/english-gonol/tests/test_active_construction.py \
| tee _evidence/tests.txt
- name: Build complete source admission then the replacement geometry
env:
PYTHONPATH: research/english-gonol
run: |
/usr/bin/time -v _inputs/ucns/.venv/bin/python -m english_gonol.structural_construct build \
--source-root _inputs/oewn/src/yaml \
--ucns-source-root _inputs/admission-carrier \
--out-dir _admission 2> _evidence/admission-resources.txt
/usr/bin/time -v _inputs/ucns/.venv/bin/python -m english_gonol build \
_admission _inputs/ucd _constructed \
2> _evidence/geometry-resources.txt | tee _evidence/full-verification.json
mkdir -p _constructed/licenses
cp _inputs/oewn/LICENSE.md _constructed/licenses/OEWN-LICENSE.md
cp _inputs/oewn/README.md _constructed/licenses/OEWN-README.md
cp _inputs/ucd/LICENSE-Unicode.txt _constructed/licenses/
cp _inputs/ucd/ReadMe.txt _constructed/licenses/Unicode-ReadMe.txt
cp _constructed/public-gonol.json _constructed/manifest.json _constructed/verification.json _evidence/
python - <<'PY'
import json,pathlib
p=json.loads(pathlib.Path('_constructed/public-gonol.json').read_text())
n=len(p['identities'])
lines=['index\tcodepoint\tscalar_json\tangle_turns']
lines += [f'{i}\tU+{ord(c):04X}\t{json.dumps(c,ensure_ascii=False)}\t{i}/{n}' for i,c in enumerate(p['identities'])]
pathlib.Path('_evidence/public-gonol.tsv').write_text('\n'.join(lines)+'\n')
print(json.dumps(p['admission_counts'],indent=2))
PY
- name: Exercise source-exact text query on the completed field
env:
PYTHONPATH: research/english-gonol
run: |
_inputs/ucns/.venv/bin/python -m english_gonol query \
_constructed 'the geometry' > _evidence/query.json
- name: Retain evidence even after a deterministic failure
if: always()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
with:
name: english-ordinal-evidence
path: _evidence/
if-no-files-found: error
retention-days: 30
- name: Retain the actual completed construction, including constitutive source
if: success()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
with:
name: english-ordinal-construction
path: _constructed/
if-no-files-found: error
retention-days: 30
Loading
Loading