Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
65 commits
Select commit Hold shift + click to select a range
d24d3f0
Route gonol skill to current geometry and EDCM scale authority
codex Sep 8, 2026
0c8e9fc
Repair exact inputs, evidence gates, and source distribution replay
codex Sep 11, 2026
87765a6
Refresh UCNS audit frontier and minimal-to-maximal next steps
codex Sep 11, 2026
2a844e3
fix(authority): remove EDCM executable from UCNS
erinepshovel-code Sep 11, 2026
3adac43
chore: refresh gonol-build from canonical skill-lib
erinepshovel-code Sep 11, 2026
d3ad3f9
ci: pin merged skill-lib authority
erinepshovel-code Sep 11, 2026
a42db1b
docs: bind gonol skill to merged authority
erinepshovel-code Sep 11, 2026
4463234
chore(skills): refresh canonical msdmd contract
erinepshovel-code Sep 11, 2026
64bf7ba
chore(skills): refresh canonical msdmd parser
erinepshovel-code Sep 11, 2026
653624e
chore(skills): refresh canonical msdmd TypeScript parser
erinepshovel-code Sep 11, 2026
c3b2d98
chore(release): license UCNS under MPL-2.0
erinepshovel-code Sep 11, 2026
678e09c
chore(release): declare MPL-2.0 package metadata
erinepshovel-code Sep 11, 2026
30a1c10
chore(skills): make msdmd vendored copy byte-exact
erinepshovel-code Sep 11, 2026
4f480d3
chore(skills): finish byte-exact msdmd propagation
erinepshovel-code Sep 11, 2026
9319766
chore(ci): diagnose exact vendored skill byte drift
erinepshovel-code Sep 11, 2026
072c4bc
chore(skills): make msdmd vendored copy byte-exact
erinepshovel-code Sep 11, 2026
82b1187
chore(ci): remove temporary byte-drift diagnostic
erinepshovel-code Sep 11, 2026
0580677
fix(release): bind license and reject distribution extras
erinepshovel-code Sep 11, 2026
757664a
Close receipt, contract-audit, and distribution review boundaries
erinepshovel-code Sep 12, 2026
8ec6707
Validate the exact generated sdist configuration bytes
erinepshovel-code Sep 12, 2026
c5cdef8
Bind the UCNS frontier report to the repaired implementation
erinepshovel-code Sep 12, 2026
73ab41b
Bind wheel installer metadata and keep receipts outside source
erinepshovel-code Sep 12, 2026
5238764
Refresh maintenance report to installer-metadata repair
erinepshovel-code Sep 12, 2026
db804f4
Bind source metadata, inherited checks, and descendant input identity
erinepshovel-code Sep 12, 2026
493bf71
Bind report to complete source and runtime evidence repairs
erinepshovel-code Sep 12, 2026
d59738d
Bind descendant lifetime and imports and close archive audit gaps
erinepshovel-code Sep 12, 2026
dd9566f
Bind maintenance report to reviewed implementation identity
erinepshovel-code Sep 12, 2026
30600fb
Supervise check lifetimes and reconcile the canonical parser contract
erinepshovel-code Sep 12, 2026
7aab321
Refresh the maintenance implementation and dependency identities
erinepshovel-code Sep 12, 2026
ef3816f
Pin the complete canonical parser public declaration
erinepshovel-code Sep 12, 2026
275e266
Bind the report to the accepted parser declaration candidate
erinepshovel-code Sep 12, 2026
6b232e9
Reconcile and execute both canonical parser implementations
erinepshovel-code Sep 12, 2026
033c2e8
Refresh exact parser and implementation provenance
erinepshovel-code Sep 12, 2026
e408e17
Resolve Node 24 capability through its versioned node executable
erinepshovel-code Sep 12, 2026
6239d63
Bind maintenance report to the capability repair
erinepshovel-code Sep 12, 2026
a805763
Close conditional-test and artifact receipt boundary gaps
erinepshovel-code Sep 12, 2026
1ae724b
Bind maintenance report to final boundary repairs
erinepshovel-code Sep 12, 2026
7a2a532
Close pytest collection configuration and header binding gaps
erinepshovel-code Sep 12, 2026
3f3d962
Bind report to bounded collection contract
erinepshovel-code Sep 12, 2026
b131ef1
Allow generated setup metadata without pytest overrides
erinepshovel-code Sep 12, 2026
163d18b
Refresh collection and package metadata repair identity
erinepshovel-code Sep 12, 2026
8409ec8
Bind collection, capability probes, and archive permissions to evidence
erinepshovel-code Sep 12, 2026
52e617b
Bind report to collection and probe lifecycle repairs
erinepshovel-code Sep 12, 2026
b2d5dfa
Close collection namespace and nested configuration escapes
erinepshovel-code Sep 12, 2026
5a455dd
Bind maintenance report to isolated collection inputs
erinepshovel-code Sep 12, 2026
b938475
Reject implicit collection hooks and descriptor-bound tests
erinepshovel-code Sep 12, 2026
2fa1954
Bind maintenance report to explicit check collection
erinepshovel-code Sep 12, 2026
65ab9b1
Bound collection declarations and require complete suite outcomes
erinepshovel-code Sep 12, 2026
f8909bb
Bind maintenance report to complete suite evidence
erinepshovel-code Sep 12, 2026
c9450d9
Reject imported collection opt-outs for declared checks
erinepshovel-code Sep 12, 2026
e0d0647
Bind maintenance report to collection opt-out checks
erinepshovel-code Sep 12, 2026
974ee0c
Resolve collection opt-outs and class binding ambiguity
erinepshovel-code Sep 12, 2026
949495b
Bind maintenance report to unambiguous declarations
erinepshovel-code Sep 12, 2026
0ff4fb7
Bind every source fixture and reject replaced check functions
erinepshovel-code Sep 12, 2026
7b8abe1
Bind maintenance report to complete fixture inventories
erinepshovel-code Sep 12, 2026
3f7219d
Bind executed test code and reject hidden source and archive inputs
erinepshovel-code Sep 12, 2026
4b08f33
Bind maintenance report to executed witness identity
erinepshovel-code Sep 12, 2026
5d0f2f3
Bind execution to source bytes and retain failed snapshot receipts
erinepshovel-code Sep 12, 2026
08ee40b
Bind maintenance report to source execution repairs
erinepshovel-code Sep 12, 2026
76d4ead
Budget nested nonactivation witness for cold source compilation
erinepshovel-code Sep 12, 2026
d0c13d5
Bind report to cold-cache witness budget
erinepshovel-code Sep 12, 2026
15e37de
Reject root helper imports and require every declared test to execute
erinepshovel-code Sep 12, 2026
5c01f81
Bind report to complete declared-witness execution
erinepshovel-code Sep 12, 2026
af02fa6
Reconcile every collected parameter item with its call outcome
erinepshovel-code Sep 12, 2026
13c212e
Bind report to per-item execution reconciliation
erinepshovel-code Sep 12, 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
4 changes: 2 additions & 2 deletions .agents/skills/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
This directory contains repo-local copies of canonical skills from
`The-Interdependency/skill-lib`.

Source commit: `c14ee9d500579a4b5d6821f62c9d82ca96e73608`
Source commit: `5e7239b52dc5403d8d01fbc63341fe397719ec3f`

Repo-local copies are not the source of truth. Edit `skill-lib` first,
then propagate from the canonical source.

Installed skills:
Skills refreshed from the source commit above:

- `canon/`
- `domain-claims/`
Expand Down
52 changes: 37 additions & 15 deletions .agents/skills/gonol-build/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: gonol-build
description: Construction, closure, and replay contract for gonols across UCNS and EDCM. Load this when building or reviewing UCNS geometry used by gonols, or building EDCM character, word, definition, or recursive-relation gonols. UCNS owns geometry; EDCM owns text construction. The required EDCM order is characters -> words -> definitions -> recursive gonol relations. Pronunciation is not required unless an explicitly declared later experiment makes it part of the construction. Do not load for unrelated geometry, ordinary prose editing, or measurement over already-closed gonols.
description: Construction, closure, and replay contract for gonols across UCNS and EDCM. Load this when building or reviewing UCNS geometry used by gonols, or building EDCM character, word, definition, or recursive-relation gonols. UCNS owns geometry; EDCM owns text construction and admissible scale options. Closed gonols participate atomically at any admissible consuming scale; no universal adjacent-scale ladder is required. Pronunciation is not required unless an explicitly declared later experiment makes it part of the construction. Do not load for unrelated geometry, ordinary prose editing, or measurement over already-closed gonols.
---

# gonol-build
Expand All @@ -11,8 +11,8 @@ Use this skill to keep gonol construction on the declared architecture and nothi

1. Resolve the current UCNS and EDCM authorities before building.
2. Before launching construction or replay whose completion materially depends on scarce resources, preflight the resources required to finish the declared scope.
3. Keep the EDCM order load-bearing: characters -> words -> definitions -> recursive gonol relations.
4. Close each completed gonol before it participates atomically at the next declared scale.
3. Resolve the EDCM constructor's declared scale option set and participant eligibility; do not impose a universal adjacent-scale ladder.
4. Close each completed gonol before it participates atomically at an admissible consuming scale.
5. If required UCNS geometry is unresolved, preserve that boundary as `hmmm`.
6. Replay the complete declared scope only where replay is required by the governing protocol.

Expand All @@ -29,18 +29,25 @@ Resolve the current UCNS and EDCM authorities before building. Do not move text
## EDCM construction contract

```text
characters -> words -> definitions -> recursive gonol relations
declared scale option set + eligible already-closed participants -> construction -> closure
```

This order is load-bearing.
EDCM owns the admissible scale options. Consult its exact current
`docs/GONOL_LANGUAGE_BOUNDARY.md` and `edcm/gonol.py` contract before selecting
participants. The sequence `characters -> words -> definitions -> recursive
gonol relations` may describe a particular construction, but is not a mandatory
ladder for all EDCM constructions.

- Every admitted character is a gonol.
- Ordered character gonols close into a word gonol.
- A closed word gonol is atomic at the consuming scale while its constituent identities, order, multiplicity, source positions, and provenance remain recoverable.
- Definition gonols are constructed from the applicable closed word gonols and exact source definition evidence.
- Ordered character gonols may close into a word gonol under its declared constructor.
- Any closed gonol is atomic at an admissible consuming scale while its constituent identities, order, multiplicity, source positions, and provenance remain recoverable.
- Definition gonols use eligible closed participants and exact source definition evidence; do not require word intermediates when EDCM admits another scale option.
- Recursive relations are constructed from already-closed gonols without reopening or erasing their internal structure.

Do not insert another required stage into this sequence unless the governing contract is explicitly changed.
Do not invent participant eligibility or another required stage. A permitted
character-to-definition construction must not be rejected solely because it
omits a word intermediate. Nor does this permit every scale combination: the
owning constructor's option set remains load-bearing.

## Pronunciation boundary

Expand All @@ -57,7 +64,7 @@ ordered eligible gonols
-> authorized UCNS geometric relation/application
-> closure
-> deterministic identity + provenance receipt
-> atomic participation at the next declared scale
-> atomic participation at an admissible consuming scale
```

Preserve exact source identity, occurrence order, multiplicity, and provenance. Do not normalize, deduplicate, infer relations, or substitute tokens, embeddings, hashes, or another representation for gonol identity unless the active contract explicitly authorizes it.
Expand All @@ -83,26 +90,41 @@ Replay establishes reproducibility of that construction only. It does not by its

## Usage guidance

The executable cross-source witness is owned by skill-lib at
`tools/check_edcm_boundary.py`, outside the propagated skill directory. In a
skill-lib checkout, run it against a clean EDCM checkout at the script's exact
`EDCM_COMMIT`:

```bash
python tools/check_edcm_boundary.py /path/to/edcm
```

It checks direct character-to-definition construction, replay, candidate standing,
and refusal of an undeclared scale. It is deliberately not vendored into UCNS or
other geometry consumers. This pinned witness is not a universal scale registry;
current construction must still resolve its owning EDCM option set.

For text construction, start in EDCM and consume current UCNS geometry.

```text
UCNS: geometry
EDCM: characters -> words -> definitions -> recursive gonol relations
EDCM: declared scale options, participant eligibility, text construction
```

When a word closes, use that word gonol atomically at the next scale. Ignore pronunciation unless a future explicit construction says otherwise.
When a gonol closes, use it atomically at any admissible consuming scale. Ignore pronunciation unless a future explicit construction says otherwise.

## Anti-patterns

- Moving text semantics into UCNS or inventing geometry in EDCM.
- Inserting another required EDCM stage without an explicit contract change.
- Vendoring the EDCM executable witness into a UCNS geometry repository.
- Imposing an adjacent-scale ladder or inventing an eligible scale option without EDCM authority.
- Letting pronunciation alter gonol identity, closure, ordering, or relations unless a later explicitly declared experiment makes phonology part of its construction.
- Normalizing, deduplicating, inferring relations, or substituting tokens, embeddings, or hashes for gonol identity unless the active contract explicitly authorizes it.
- Normalizing, deduplicating, inferring relations, or substituting tokens, embeddings, hashes for gonol identity unless the active contract explicitly authorizes it.
- Adding arbitrary wall-clock limits to a healthy admitted run.
- Treating replay as semantic quality, measurement validity, cognition, or extra-scope canon.

## hmmm

- exact UCNS geometric operations that remain unresolved in current implementation;
- any future construction that explicitly adds phonology or another stage;
- any recursive relation whose governing source or geometry is not yet established.
- any recursive relation whose governing source or geometry is not yet established.
11 changes: 10 additions & 1 deletion .agents/skills/msdmd/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,9 @@ claims to prove those obligations. See
referenced from external tooling).
- **Field lines**: indented one level beneath the id (two spaces of
visible indent inside the comment). Field names are lowercase
snake_case followed by `:` and a value.
snake_case followed by `:` and a value. Digits are allowed after the first
character, so `evidence_sha256` is valid; the first character must be a
lowercase letter or underscore.
- **Multiple blocks per file**: a module may declare more than one
block, of the same or different types. The parser concatenates
entries.
Expand Down Expand Up @@ -144,6 +146,13 @@ A reference implementation in pure stdlib Python lives at
Both commit to zero non-stdlib dependencies so you can copy them into
any project.

The Python and TypeScript reference helpers each own `MODULE_BUILD` and
field-preservation `CONTRACTS` beside their implementations. A consumer that
executes or updates a vendored helper should reconcile its exact dependency
declarations and provide a local resolving `CHECKS` witness. The dependency's canonical owner
and exact source identity remain explicit; local execution does not transfer
parser ownership to the consumer.

Extension detection refuses ambiguous suffixes rather than sniffing content.
For example, `.m` can mean Objective-C or MATLAB/Octave and therefore has no
automatic marker. A caller that already knows the language may still call
Expand Down
31 changes: 27 additions & 4 deletions .agents/skills/msdmd/parsers/universal.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,27 @@
# ratios: loc_comments=161:57 imports_exports=4:7 calls_definitions=55:10
# ratios: loc_comments=161:80 imports_exports=4:7 calls_definitions=55:10
# === MODULE_BUILD ===
# id: msdmd_python_reference_parser
# module_name: universal
# module_kind: instrument
# summary: parses canonical line-comment metadata without executing inspected source
# owner: The Interdependency skill-lib
# public_surface: COMMENT_MARKERS, RATIO_IDS, marker_for, parse_text, parse_file, walk_tree, parse_ratios, parse_ratios_file, ratios_placement
# internal_surface: marker and block matching helpers
# auth_boundary: none
# storage_boundary: read
# network_boundary: none
# user_data_boundary: read
# admin_only: false
# tests: tests/test_universal_parser.py
# rollout: exact-pinned reference parser propagation
# rollback: restore a previously accepted exact parser identity
# === END MODULE_BUILD ===
# === CONTRACTS ===
# id: msdmd_python_parser_preserves_field_names
# given: a valid metadata entry uses lowercase snake-case field names containing digits
# then: parsed entries retain those field names and string values without executing the inspected source
# class: evidence
# === END CONTRACTS ===
"""Universal msdmd parser — pure stdlib.

Implements the parser contract from ``msdmd/SKILL.md``: extracts every
Expand Down Expand Up @@ -100,7 +123,7 @@ def parse_text(text: str, block_name: str, marker: str = "#") -> list[dict]:
block_re = _block_regex(block_name, marker)
m = re.escape(marker)
id_re = re.compile(rf"^\s*{m}\s*id:\s*(?P<id>\S+)\s*$")
field_re = re.compile(rf"^\s*{m}\s+(?P<key>[a-z_]+):\s*(?P<val>.+?)\s*$")
field_re = re.compile(rf"^\s*{m}\s+(?P<key>[a-z_][a-z0-9_]*):\s*(?P<val>.+?)\s*$")
Comment thread
erinepshovel-code marked this conversation as resolved.

entries: list[dict] = []
for block in block_re.finditer(text):
Expand Down Expand Up @@ -189,7 +212,7 @@ def iter_source_files(path: Path) -> Iterable[Path]:
# boundary to literal line 2:
# <marker> ratios: loc_comments=N:M imports_exports=N:M calls_definitions=N:M
RATIO_IDS = ("loc_comments", "imports_exports", "calls_definitions")
_RATIOS_TOKEN_RE = re.compile(r"(?P<key>[a-z_]+)=(?P<val>\S+)")
_RATIOS_TOKEN_RE = re.compile(r"(?P<key>[a-z_][a-z0-9_]*)=(?P<val>\S+)")


def _ratios_line_re(marker: str) -> re.Pattern[str]:
Expand Down Expand Up @@ -253,4 +276,4 @@ def ratios_placement(text: str, marker: str = "#") -> tuple[bool, bool]:
last_ok = bool(line_re.match(raw.rstrip()))
break
return (opening_ok, last_ok)
# ratios: loc_comments=161:57 imports_exports=4:7 calls_definitions=55:10
# ratios: loc_comments=161:80 imports_exports=4:7 calls_definitions=55:10
27 changes: 25 additions & 2 deletions .agents/skills/msdmd/parsers/universal.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,27 @@
// ratios: loc_comments=hmmm imports_exports=hmmm calls_definitions=hmmm
// === MODULE_BUILD ===
// id: msdmd_typescript_reference_parser
// module_name: universal
// module_kind: instrument
// summary: parses canonical line-comment metadata without executing inspected source
// owner: The Interdependency skill-lib
// public_surface: Entry, WalkOptions, COMMENT_MARKERS, RATIO_IDS, markerFor, parseText, parseFile, walkTree, parseRatios, parseRatiosFile, ratiosPlacement
// internal_surface: marker and block matching helpers
// auth_boundary: none
// storage_boundary: read
// network_boundary: none
// user_data_boundary: read
// admin_only: false
// tests: tests/test_universal_parser.py::test_typescript_parser_field_contract
// rollout: exact-pinned reference parser propagation
// rollback: restore a previously accepted exact parser identity
// === END MODULE_BUILD ===
// === CONTRACTS ===
// id: msdmd_typescript_parser_preserves_field_names
// given: a valid metadata entry uses lowercase snake-case field names containing digits
// then: parsed entries retain those field names and string values without executing the inspected source
// class: evidence
// === END CONTRACTS ===
/**
* Universal msdmd parser — pure Node stdlib (fs, path).
*
Expand Down Expand Up @@ -86,7 +109,7 @@ export function parseText(
"gm",
);
const idRe = new RegExp(`^\\s*${m}\\s*id:\\s*(\\S+)\\s*$`);
const fieldRe = new RegExp(`^\\s*${m}\\s+([a-z_]+):\\s*(.+?)\\s*$`);
const fieldRe = new RegExp(`^\\s*${m}\\s+([a-z_][a-z0-9_]*):\\s*(.+?)\\s*$`);
Comment thread
erinepshovel-code marked this conversation as resolved.

const entries: Entry[] = [];
let match: RegExpExecArray | null;
Expand Down Expand Up @@ -185,7 +208,7 @@ function ratiosLineRe(marker: string): RegExp {

export function parseRatios(text: string, marker: string = "#"): Entry[] {
const lineRe = ratiosLineRe(marker);
const tokenRe = /([a-z_]+)=(\S+)/g;
const tokenRe = /([a-z_][a-z0-9_]*)=(\S+)/g;
const out: Entry[] = [];
for (const raw of text.split("\n")) {
const lm = lineRe.exec(raw.replace(/\s+$/, ""));
Expand Down
38 changes: 28 additions & 10 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ jobs:
uses: actions/checkout@v7.0.1
with:
repository: The-Interdependency/skill-lib
ref: c14ee9d500579a4b5d6821f62c9d82ca96e73608
ref: 5e7239b52dc5403d8d01fbc63341fe397719ec3f
path: .skill-lib-canon
sparse-checkout: |
msdmd
Expand All @@ -40,22 +40,40 @@ jobs:
- uses: actions/setup-python@v7.0.0
with:
python-version: ${{ matrix.python-version }}
- name: Install verification dependencies
run: python -m pip install --upgrade pip pytest build twine
- name: Install package
run: python -m pip install -e ".[test]"
- uses: actions/setup-node@v6
with:
node-version: "24.15.0"
- name: Install verification prerequisites
run: |
sudo apt-get update
sudo apt-get install -y libmpfr6
python -m pip install uv==0.11.18
- name: Check lock and install verification dependencies
run: |
uv lock --check
uv sync --locked --python python --extra test --extra build
- name: Check vendored skill-lib drift
run: >-
python .skill-lib-canon/tools/check_consumer_drift.py .
--canon-root .skill-lib-canon
--sha c14ee9d500579a4b5d6821f62c9d82ca96e73608
--sha 5e7239b52dc5403d8d01fbc63341fe397719ec3f
--strict-sha
--require-vendored
- name: Audit skill-lib contract graph
run: python tools/verify_skill_lib_contracts.py .
run: .venv/bin/python tools/verify_skill_lib_contracts.py .
- name: Run geometry tests
run: python -m pytest
env:
PYTEST_DISABLE_PLUGIN_AUTOLOAD: '1'
PYTHONDONTWRITEBYTECODE: '1'
run: |
.venv/bin/python - <<'PY'
from pathlib import Path
from tools._boundary_pytest import run_suite
raise SystemExit(run_suite(["tests", "-c", "pyproject.toml", "--noconftest", "--strict-config"], Path.cwd()))
PY
- name: Build package
run: python -m build
run: .venv/bin/python -m build
- name: Check distributions
run: python -m twine check dist/*
run: |
.venv/bin/python -m twine check dist/*
.venv/bin/python tools/verify_distributions.py . dist
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,4 @@
- Preserve exact arithmetic where exactness is load-bearing; lossy renderings remain explicitly secondary.
- Use `hmmm` for unresolved geometric constraints. Never fill a missing geometric law with semantic machinery or implementation convenience.
- Every behavior-bearing source module owns skill-lib `MODULE_BUILD` and `CONTRACTS`; executable tests own resolving `CHECKS`.
- Before claiming test-backed status run the complete geometry test suite, `python tools/verify_skill_lib_contracts.py .`, build, and Twine checks.
- Before claiming test-backed status run the complete geometry suite through the outcome gate documented in README, `.venv/bin/python tools/verify_skill_lib_contracts.py .`, build, and Twine checks. Use the project interpreter populated by `uv sync --locked --extra test --extra build` for these checks.
Loading