Lane 4: Registry Consolidation (language_packs to packs)
This commit is contained in:
parent
2a17d5b6f3
commit
f6c1f01a13
382 changed files with 520 additions and 518 deletions
4
.github/copilot-instructions.md
vendored
4
.github/copilot-instructions.md
vendored
|
|
@ -26,7 +26,7 @@ The cognitive path is centered on:
|
||||||
- `teaching/correction.py`, `teaching/review.py`, `teaching/store.py`
|
- `teaching/correction.py`, `teaching/review.py`, `teaching/store.py`
|
||||||
- `evals/*`
|
- `evals/*`
|
||||||
- `calibration/*`
|
- `calibration/*`
|
||||||
- `language_packs/data/en_core_cognition_v1`
|
- `packs/data/en_core_cognition_v1`
|
||||||
|
|
||||||
The runtime response contract is documented in `docs/runtime_contracts.md`.
|
The runtime response contract is documented in `docs/runtime_contracts.md`.
|
||||||
Follow it.
|
Follow it.
|
||||||
|
|
@ -42,7 +42,7 @@ versor_condition(F) < 1e-6
|
||||||
Allowed construction/closure sites:
|
Allowed construction/closure sites:
|
||||||
|
|
||||||
- `ingest/gate.py`
|
- `ingest/gate.py`
|
||||||
- `language_packs/compiler.py` / vocabulary construction
|
- `packs/compiler.py` / vocabulary construction
|
||||||
- `algebra/versor.py`
|
- `algebra/versor.py`
|
||||||
|
|
||||||
Forbidden hot-path repair sites:
|
Forbidden hot-path repair sites:
|
||||||
|
|
|
||||||
|
|
@ -59,7 +59,7 @@ Fix the operator or construction boundary that violated it.
|
||||||
### Allowed normalization boundaries
|
### Allowed normalization boundaries
|
||||||
Normalization / closure / canonicalization belongs only at explicit construction or algebra boundaries, such as:
|
Normalization / closure / canonicalization belongs only at explicit construction or algebra boundaries, such as:
|
||||||
- `ingest/gate.py`
|
- `ingest/gate.py`
|
||||||
- `language_packs/compiler.py`
|
- `packs/compiler.py`
|
||||||
- `algebra/versor.py`
|
- `algebra/versor.py`
|
||||||
- `sensorium/*/canonical.py`
|
- `sensorium/*/canonical.py`
|
||||||
- `session/context.py` for session-scoped **semantic anchoring** of the field toward the session concept-attractor (the anchor pull, hemisphere consistency). Allowed ONLY because every such op (1) preserves `versor_condition` BY CONSTRUCTION — composed from `rotor_power` / `word_transition_rotor` / `versor_apply` on the Spin manifold, never a post-hoc `unitize`/grade-projection — AND (2) carries semantic meaning in the cognitive model.
|
- `session/context.py` for session-scoped **semantic anchoring** of the field toward the session concept-attractor (the anchor pull, hemisphere consistency). Allowed ONLY because every such op (1) preserves `versor_condition` BY CONSTRUCTION — composed from `rotor_power` / `word_transition_rotor` / `versor_apply` on the Spin manifold, never a post-hoc `unitize`/grade-projection — AND (2) carries semantic meaning in the cognitive model.
|
||||||
|
|
|
||||||
|
|
@ -17,9 +17,9 @@ from __future__ import annotations
|
||||||
import json
|
import json
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
from language_packs.schema import AlignmentEdge
|
from packs.schema import AlignmentEdge
|
||||||
|
|
||||||
_DATA_DIR = Path(__file__).parent.parent / "language_packs" / "data"
|
_DATA_DIR = Path(__file__).parent.parent / "packs" / "data"
|
||||||
|
|
||||||
|
|
||||||
class AlignmentGraph:
|
class AlignmentGraph:
|
||||||
|
|
@ -74,7 +74,7 @@ def load_alignment(
|
||||||
"""
|
"""
|
||||||
Load AlignmentEdge records from <data_root>/<pack_id>/alignment.jsonl.
|
Load AlignmentEdge records from <data_root>/<pack_id>/alignment.jsonl.
|
||||||
|
|
||||||
``data_root`` defaults to the committed ``language_packs/data`` tree; pass
|
``data_root`` defaults to the committed ``packs/data`` tree; pass
|
||||||
an alternate root (e.g. a test-fixture copy) to read packs from elsewhere
|
an alternate root (e.g. a test-fixture copy) to read packs from elsewhere
|
||||||
without forking the parser.
|
without forking the parser.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -288,7 +288,7 @@ def run_footprint(*, pack_id: str = "en_core_cognition_v1") -> FootprintReport:
|
||||||
rss_post = _rss_bytes()
|
rss_post = _rss_bytes()
|
||||||
py_bytes, py_modules = _measure_python_runtime()
|
py_bytes, py_modules = _measure_python_runtime()
|
||||||
|
|
||||||
pack_path = PROJECT_ROOT / "language_packs" / "data" / pack_id
|
pack_path = PROJECT_ROOT / "packs" / "data" / pack_id
|
||||||
vault_path = PROJECT_ROOT / "vault"
|
vault_path = PROJECT_ROOT / "vault"
|
||||||
rust_path = _rust_artifact_path()
|
rust_path = _rust_artifact_path()
|
||||||
seed_packs_path = PROJECT_ROOT / "packs"
|
seed_packs_path = PROJECT_ROOT / "packs"
|
||||||
|
|
|
||||||
|
|
@ -152,7 +152,7 @@ def bench_backend_speedup() -> BenchResult:
|
||||||
will be tracked when the doctrine clock advances.
|
will be tracked when the doctrine clock advances.
|
||||||
"""
|
"""
|
||||||
from field.operators import GraphDiffusionOperator
|
from field.operators import GraphDiffusionOperator
|
||||||
from language_packs.compiler import load_pack
|
from packs.compiler import load_pack
|
||||||
from scripts.run_pulse import _build_manifold
|
from scripts.run_pulse import _build_manifold
|
||||||
|
|
||||||
_, manifold = load_pack("en_core_cognition_v1")
|
_, manifold = load_pack("en_core_cognition_v1")
|
||||||
|
|
@ -225,7 +225,7 @@ def bench_versor_closure_audit() -> BenchResult:
|
||||||
"""Run pulse for all eval cases, verify versor_condition < 1e-6 at every step."""
|
"""Run pulse for all eval cases, verify versor_condition < 1e-6 at every step."""
|
||||||
from algebra.backend import versor_condition
|
from algebra.backend import versor_condition
|
||||||
from field.operators import GraphDiffusionOperator, ConstraintCorrectionOperator
|
from field.operators import GraphDiffusionOperator, ConstraintCorrectionOperator
|
||||||
from language_packs.compiler import load_pack
|
from packs.compiler import load_pack
|
||||||
from scripts.run_pulse import _build_manifold
|
from scripts.run_pulse import _build_manifold
|
||||||
|
|
||||||
_, manifold = load_pack("en_core_cognition_v1")
|
_, manifold = load_pack("en_core_cognition_v1")
|
||||||
|
|
|
||||||
|
|
@ -60,7 +60,7 @@ _ANCHOR_LENS_SUBSTRATE_PACK_IDS: dict[str, tuple[str, ...]] = {
|
||||||
|
|
||||||
_PACK_LEXICON_PATH = (
|
_PACK_LEXICON_PATH = (
|
||||||
Path(__file__).resolve().parent.parent
|
Path(__file__).resolve().parent.parent
|
||||||
/ "language_packs"
|
/ "packs"
|
||||||
/ "data"
|
/ "data"
|
||||||
/ PACK_ID
|
/ PACK_ID
|
||||||
/ "lexicon.jsonl"
|
/ "lexicon.jsonl"
|
||||||
|
|
@ -76,7 +76,7 @@ _PACK_LEXICON_PATH = (
|
||||||
# lemmas — only lens-engagement reads from here.
|
# lemmas — only lens-engagement reads from here.
|
||||||
_COLLAPSE_ANCHORS_LEXICON_PATH = (
|
_COLLAPSE_ANCHORS_LEXICON_PATH = (
|
||||||
Path(__file__).resolve().parent.parent
|
Path(__file__).resolve().parent.parent
|
||||||
/ "language_packs"
|
/ "packs"
|
||||||
/ "data"
|
/ "data"
|
||||||
/ "en_collapse_anchors_v1"
|
/ "en_collapse_anchors_v1"
|
||||||
/ "lexicon.jsonl"
|
/ "lexicon.jsonl"
|
||||||
|
|
@ -130,7 +130,7 @@ def _frame_gloss(lemma: str, pos: str, gloss: str) -> str:
|
||||||
* (unknown) -> "{Lemma}: {gloss}." (back-compat fallback)
|
* (unknown) -> "{Lemma}: {gloss}." (back-compat fallback)
|
||||||
|
|
||||||
The glosses are authored to match these frames exactly (see
|
The glosses are authored to match these frames exactly (see
|
||||||
the subagent briefs and ``language_packs/data/<pack>/glosses.jsonl``).
|
the subagent briefs and ``packs/data/<pack>/glosses.jsonl``).
|
||||||
Capitalization is applied only to the framed surface, never to
|
Capitalization is applied only to the framed surface, never to
|
||||||
the lemma in the lexicon (which stays lowercase by convention).
|
the lemma in the lexicon (which stays lowercase by convention).
|
||||||
"""
|
"""
|
||||||
|
|
@ -253,7 +253,7 @@ def _substrate_lexicon_by_entry_id(pack_id: str) -> dict[str, tuple[str, ...]]:
|
||||||
"""
|
"""
|
||||||
lexicon_path = (
|
lexicon_path = (
|
||||||
Path(__file__).resolve().parent.parent
|
Path(__file__).resolve().parent.parent
|
||||||
/ "language_packs"
|
/ "packs"
|
||||||
/ "data"
|
/ "data"
|
||||||
/ pack_id
|
/ pack_id
|
||||||
/ "lexicon.jsonl"
|
/ "lexicon.jsonl"
|
||||||
|
|
|
||||||
|
|
@ -69,7 +69,7 @@ DEFAULT_RESOLVABLE_PACK_IDS: tuple[str, ...] = (
|
||||||
"en_collapse_anchors_v1",
|
"en_collapse_anchors_v1",
|
||||||
)
|
)
|
||||||
|
|
||||||
_PACK_ROOT = Path(__file__).resolve().parent.parent / "language_packs" / "data"
|
_PACK_ROOT = Path(__file__).resolve().parent.parent / "packs" / "data"
|
||||||
|
|
||||||
|
|
||||||
@lru_cache(maxsize=16)
|
@lru_cache(maxsize=16)
|
||||||
|
|
|
||||||
|
|
@ -107,7 +107,7 @@ from generate.result import GenerationResult
|
||||||
from generate.stream import generate
|
from generate.stream import generate
|
||||||
from generate.surface import SentenceAssembler, SentencePlan, SurfaceContext
|
from generate.surface import SentenceAssembler, SentencePlan, SurfaceContext
|
||||||
from ingest.gate import inject
|
from ingest.gate import inject
|
||||||
from language_packs import OOVPolicy, load_mounted_packs, load_pack, load_pack_entries
|
from packs import OOVPolicy, load_mounted_packs, load_pack, load_pack_entries
|
||||||
from persona.motor import PersonaMotor
|
from persona.motor import PersonaMotor
|
||||||
from session.context import SessionContext
|
from session.context import SessionContext
|
||||||
from session.correction import CorrectionPass
|
from session.correction import CorrectionPass
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
Wires the five follow-up items from ADR-0091 §"Follow-up Work" into a
|
Wires the five follow-up items from ADR-0091 §"Follow-up Work" into a
|
||||||
single evidence-bearing report. The existing parser
|
single evidence-bearing report. The existing parser
|
||||||
(:func:`language_packs.domain_contract.parse_domain_contract`) handles
|
(:func:`packs.domain_contract.parse_domain_contract`) handles
|
||||||
structural validation; this module layers the nine semantic predicates
|
structural validation; this module layers the nine semantic predicates
|
||||||
from ADR-0091 §"Validation Semantics" on top.
|
from ADR-0091 §"Validation Semantics" on top.
|
||||||
|
|
||||||
|
|
@ -34,7 +34,7 @@ from core.capability.reviewers import (
|
||||||
load_reviewer_registry,
|
load_reviewer_registry,
|
||||||
)
|
)
|
||||||
from core.capability.sources import LEDGER_SOURCES
|
from core.capability.sources import LEDGER_SOURCES
|
||||||
from language_packs.domain_contract import (
|
from packs.domain_contract import (
|
||||||
DomainContractValidation,
|
DomainContractValidation,
|
||||||
DomainPackContract,
|
DomainPackContract,
|
||||||
validate_domain_contract_pack,
|
validate_domain_contract_pack,
|
||||||
|
|
@ -113,7 +113,7 @@ def _predicate_p1_manifest_valid(
|
||||||
lands, this predicate inherits the improvement.
|
lands, this predicate inherits the improvement.
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
from language_packs import compiler as pack_compiler
|
from packs import compiler as pack_compiler
|
||||||
|
|
||||||
loader = getattr(pack_compiler, "load_pack", None)
|
loader = getattr(pack_compiler, "load_pack", None)
|
||||||
if loader is None:
|
if loader is None:
|
||||||
|
|
@ -121,7 +121,7 @@ def _predicate_p1_manifest_valid(
|
||||||
predicate_id="P1",
|
predicate_id="P1",
|
||||||
title="manifest/checksum valid",
|
title="manifest/checksum valid",
|
||||||
passed=False,
|
passed=False,
|
||||||
notes="language_packs.compiler.load_pack not available",
|
notes="packs.compiler.load_pack not available",
|
||||||
)
|
)
|
||||||
loader(pack_id)
|
loader(pack_id)
|
||||||
except Exception as exc: # pylint: disable=broad-except
|
except Exception as exc: # pylint: disable=broad-except
|
||||||
|
|
@ -486,7 +486,7 @@ def evaluate_domain_contract(
|
||||||
- ``reviewer_registry`` injects a parsed registry (avoids re-loading
|
- ``reviewer_registry`` injects a parsed registry (avoids re-loading
|
||||||
from disk per pack).
|
from disk per pack).
|
||||||
"""
|
"""
|
||||||
root = data_root or (_REPO_ROOT / "language_packs" / "data")
|
root = data_root or (_REPO_ROOT / "packs" / "data")
|
||||||
|
|
||||||
validation: DomainContractValidation = validate_domain_contract_pack(
|
validation: DomainContractValidation = validate_domain_contract_pack(
|
||||||
pack_id, data_root=root
|
pack_id, data_root=root
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@ _REPO_ROOT = Path(__file__).resolve().parent.parent.parent
|
||||||
# The math domain's operator pack — same constant the solver uses.
|
# The math domain's operator pack — same constant the solver uses.
|
||||||
DEFAULT_MATH_PACK_ID: str = "en_arithmetic_v1"
|
DEFAULT_MATH_PACK_ID: str = "en_arithmetic_v1"
|
||||||
DEFAULT_MATH_LEXICON: Path = (
|
DEFAULT_MATH_LEXICON: Path = (
|
||||||
_REPO_ROOT / "language_packs" / "data" / DEFAULT_MATH_PACK_ID / "lexicon.jsonl"
|
_REPO_ROOT / "packs" / "data" / DEFAULT_MATH_PACK_ID / "lexicon.jsonl"
|
||||||
)
|
)
|
||||||
|
|
||||||
# Default B3 lane location.
|
# Default B3 lane location.
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ from core.capability.reviewers import (
|
||||||
)
|
)
|
||||||
from core.capability.sources import LEDGER_SOURCES
|
from core.capability.sources import LEDGER_SOURCES
|
||||||
from core.config import DEFAULT_CONFIG
|
from core.config import DEFAULT_CONFIG
|
||||||
from language_packs.domain_contract import validate_domain_contract_pack
|
from packs.domain_contract import validate_domain_contract_pack
|
||||||
|
|
||||||
_REPO_ROOT = Path(__file__).resolve().parent.parent.parent
|
_REPO_ROOT = Path(__file__).resolve().parent.parent.parent
|
||||||
_CHAINS_PER_OPERATOR_DOMAIN = 8
|
_CHAINS_PER_OPERATOR_DOMAIN = 8
|
||||||
|
|
@ -109,12 +109,12 @@ def _latest_eval_result(lane: str, version: str, split: str) -> dict[str, Any]:
|
||||||
|
|
||||||
|
|
||||||
def _manifest_for_pack(pack_id: str) -> dict[str, Any]:
|
def _manifest_for_pack(pack_id: str) -> dict[str, Any]:
|
||||||
path = _REPO_ROOT / "language_packs" / "data" / pack_id / "manifest.json"
|
path = _REPO_ROOT / "packs" / "data" / pack_id / "manifest.json"
|
||||||
return _load_json(path)
|
return _load_json(path)
|
||||||
|
|
||||||
|
|
||||||
def _pack_lemmas(pack_id: str) -> set[str]:
|
def _pack_lemmas(pack_id: str) -> set[str]:
|
||||||
root = _REPO_ROOT / "language_packs" / "data" / pack_id
|
root = _REPO_ROOT / "packs" / "data" / pack_id
|
||||||
path = root / "lexicon.jsonl"
|
path = root / "lexicon.jsonl"
|
||||||
lemmas: set[str] = set()
|
lemmas: set[str] = set()
|
||||||
if not path.exists():
|
if not path.exists():
|
||||||
|
|
@ -139,7 +139,7 @@ def _count_jsonl(path: Path) -> int:
|
||||||
|
|
||||||
|
|
||||||
def _pack_metrics(pack_id: str) -> dict[str, Any]:
|
def _pack_metrics(pack_id: str) -> dict[str, Any]:
|
||||||
root = _REPO_ROOT / "language_packs" / "data" / pack_id
|
root = _REPO_ROOT / "packs" / "data" / pack_id
|
||||||
manifest = _manifest_for_pack(pack_id)
|
manifest = _manifest_for_pack(pack_id)
|
||||||
lexicon_path = root / str(manifest.get("lexicon", "lexicon.jsonl"))
|
lexicon_path = root / str(manifest.get("lexicon", "lexicon.jsonl"))
|
||||||
glosses_path = root / "glosses.jsonl"
|
glosses_path = root / "glosses.jsonl"
|
||||||
|
|
|
||||||
|
|
@ -979,7 +979,7 @@ _DEFAULT_OUTPUT_PATH = _MATH_PROPOSALS_DIR / "proposals.jsonl"
|
||||||
def _validate_output_path(raw: str | None) -> Path:
|
def _validate_output_path(raw: str | None) -> Path:
|
||||||
"""Reject output paths that escape teaching/math_proposals/.
|
"""Reject output paths that escape teaching/math_proposals/.
|
||||||
|
|
||||||
Mirrors :func:`language_packs.compiler._validate_pack_id` trust-boundary
|
Mirrors :func:`packs.compiler._validate_pack_id` trust-boundary
|
||||||
discipline: path-traversal and absolute paths are rejected before any
|
discipline: path-traversal and absolute paths are rejected before any
|
||||||
filesystem access.
|
filesystem access.
|
||||||
|
|
||||||
|
|
@ -3362,7 +3362,7 @@ def build_parser() -> argparse.ArgumentParser:
|
||||||
teaching_compile_pack.add_argument(
|
teaching_compile_pack.add_argument(
|
||||||
"--pack",
|
"--pack",
|
||||||
default=None,
|
default=None,
|
||||||
help="pack root path (default: language_packs/data/en_core_math_v1)",
|
help="pack root path (default: packs/data/en_core_math_v1)",
|
||||||
)
|
)
|
||||||
teaching_compile_pack.add_argument(
|
teaching_compile_pack.add_argument(
|
||||||
"--json",
|
"--json",
|
||||||
|
|
|
||||||
|
|
@ -48,7 +48,7 @@ def cmd_capability_domain_contract(args: argparse.Namespace) -> int:
|
||||||
The legacy structural-only output remains available via
|
The legacy structural-only output remains available via
|
||||||
``--structural-only`` for callers that depend on the prior shape.
|
``--structural-only`` for callers that depend on the prior shape.
|
||||||
"""
|
"""
|
||||||
from language_packs.domain_contract import validate_domain_contract_pack
|
from packs.domain_contract import validate_domain_contract_pack
|
||||||
|
|
||||||
if getattr(args, "structural_only", False):
|
if getattr(args, "structural_only", False):
|
||||||
report = validate_domain_contract_pack(args.pack_id).as_dict()
|
report = validate_domain_contract_pack(args.pack_id).as_dict()
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ IMPORT_CHECKS: tuple[tuple[str, str], ...] = (
|
||||||
("demos", "demos.claude_tool_authority"),
|
("demos", "demos.claude_tool_authority"),
|
||||||
("engine_state", "engine_state"),
|
("engine_state", "engine_state"),
|
||||||
("evals", "evals.framework"),
|
("evals", "evals.framework"),
|
||||||
("language_packs", "language_packs"),
|
("packs", "packs"),
|
||||||
("morphology", "morphology.registry"),
|
("morphology", "morphology.registry"),
|
||||||
("packs", "packs.safety.loader"),
|
("packs", "packs.safety.loader"),
|
||||||
("scripts", "scripts.run_pulse"),
|
("scripts", "scripts.run_pulse"),
|
||||||
|
|
@ -54,13 +54,13 @@ def cmd_doctor(args: argparse.Namespace, *, repo_root: Path = DEFAULT_REPO_ROOT)
|
||||||
|
|
||||||
if args.packs:
|
if args.packs:
|
||||||
try:
|
try:
|
||||||
from language_packs import list_packs
|
from packs import list_packs
|
||||||
|
|
||||||
packs = list_packs()
|
packs = list_packs()
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
ok = False
|
ok = False
|
||||||
print(
|
print(
|
||||||
f"FAIL packs language_packs.list_packs: {exc.__class__.__name__}: {exc}"
|
f"FAIL packs packs.list_packs: {exc.__class__.__name__}: {exc}"
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
print("packs:")
|
print("packs:")
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ from core.cli import _die, _REPO_ROOT, _run
|
||||||
|
|
||||||
def cmd_pack_list(args: argparse.Namespace) -> int:
|
def cmd_pack_list(args: argparse.Namespace) -> int:
|
||||||
"""List compiled language packs."""
|
"""List compiled language packs."""
|
||||||
from language_packs import list_packs
|
from packs import list_packs
|
||||||
|
|
||||||
packs = list_packs()
|
packs = list_packs()
|
||||||
if not packs:
|
if not packs:
|
||||||
|
|
@ -24,7 +24,7 @@ def cmd_pack_list(args: argparse.Namespace) -> int:
|
||||||
|
|
||||||
def cmd_pack_verify(args: argparse.Namespace) -> int:
|
def cmd_pack_verify(args: argparse.Namespace) -> int:
|
||||||
"""Verify one language pack checksum."""
|
"""Verify one language pack checksum."""
|
||||||
return _run(sys.executable, "-m", "language_packs", "verify", args.pack_id)
|
return _run(sys.executable, "-m", "packs", "verify", args.pack_id)
|
||||||
|
|
||||||
|
|
||||||
def cmd_pack_validate(args: argparse.Namespace) -> int:
|
def cmd_pack_validate(args: argparse.Namespace) -> int:
|
||||||
|
|
|
||||||
|
|
@ -876,14 +876,14 @@ def cmd_teaching_compile_pack(args: argparse.Namespace) -> int:
|
||||||
"""
|
"""
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
from language_packs.compile_pack import compile_pack
|
from packs.compile_pack import compile_pack
|
||||||
|
|
||||||
pack_root = (
|
pack_root = (
|
||||||
Path(args.pack)
|
Path(args.pack)
|
||||||
if args.pack
|
if args.pack
|
||||||
else (
|
else (
|
||||||
Path(__file__).resolve().parent.parent
|
Path(__file__).resolve().parent.parent
|
||||||
/ "language_packs"
|
/ "packs"
|
||||||
/ "data"
|
/ "data"
|
||||||
/ "en_core_math_v1"
|
/ "en_core_math_v1"
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -248,7 +248,7 @@ def cmd_check(
|
||||||
"field",
|
"field",
|
||||||
"generate",
|
"generate",
|
||||||
"ingest",
|
"ingest",
|
||||||
"language_packs",
|
"packs",
|
||||||
"morphology",
|
"morphology",
|
||||||
"persona",
|
"persona",
|
||||||
"sensorium",
|
"sensorium",
|
||||||
|
|
|
||||||
|
|
@ -127,7 +127,7 @@ runs and ADR-0055 discovery candidates.
|
||||||
| SPECULATIVE-only invariant | `ContemplationFinding.__post_init__` raises on any non-SPECULATIVE status | always | ✅ pinned by test |
|
| SPECULATIVE-only invariant | `ContemplationFinding.__post_init__` raises on any non-SPECULATIVE status | always | ✅ pinned by test |
|
||||||
| Deterministic replay | two `contemplate_*` calls on the same inputs → identical `run_id` and `as_dict()` | byte-identical | ✅ pinned by test |
|
| Deterministic replay | two `contemplate_*` calls on the same inputs → identical `run_id` and `as_dict()` | byte-identical | ✅ pinned by test |
|
||||||
| Sink path is additive | the `ContemplationRun` blob is byte-identical whether or not a sink is supplied | byte-identical | ✅ pinned by test |
|
| Sink path is additive | the `ContemplationRun` blob is byte-identical whether or not a sink is supplied | byte-identical | ✅ pinned by test |
|
||||||
| No pack mutation | `language_packs/` tree mtimes unchanged across a `contemplate_*` invocation | true | ✅ pinned by test |
|
| No pack mutation | `packs/` tree mtimes unchanged across a `contemplate_*` invocation | true | ✅ pinned by test |
|
||||||
| Predicate split | `missed_contradiction` and `false_contradiction_flag` produce distinct `proposed_action` text | distinct | ✅ pinned by test |
|
| Predicate split | `missed_contradiction` and `false_contradiction_flag` produce distinct `proposed_action` text | distinct | ✅ pinned by test |
|
||||||
| Lane config_hash separation | `contemplate_frontier_reports` and `contemplate_contradiction_reports` produce distinct `config_hash` on identical input paths | distinct | ✅ pinned by test |
|
| Lane config_hash separation | `contemplate_frontier_reports` and `contemplate_contradiction_reports` produce distinct `config_hash` on identical input paths | distinct | ✅ pinned by test |
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -160,7 +160,7 @@ def canonical_json(payload: dict[str, Any]) -> bytes:
|
||||||
_TRACKED_MODULES: tuple[str, ...] = (
|
_TRACKED_MODULES: tuple[str, ...] = (
|
||||||
"chat.telemetry",
|
"chat.telemetry",
|
||||||
"chat.runtime",
|
"chat.runtime",
|
||||||
"language_packs.compiler",
|
"packs.compiler",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -662,7 +662,7 @@ domain.
|
||||||
|
|
||||||
#### Domain Pack Contract v1 (ADR-0091)
|
#### Domain Pack Contract v1 (ADR-0091)
|
||||||
|
|
||||||
A pack manifest at `language_packs/data/<pack_id>/manifest.json`
|
A pack manifest at `packs/data/<pack_id>/manifest.json`
|
||||||
satisfies the contract iff all nine predicates hold:
|
satisfies the contract iff all nine predicates hold:
|
||||||
|
|
||||||
1. **lemma_coverage** — declared lemmas resolve in `lexicon.jsonl`.
|
1. **lemma_coverage** — declared lemmas resolve in `lexicon.jsonl`.
|
||||||
|
|
|
||||||
|
|
@ -123,7 +123,7 @@ light, life, spirit, truth, covenant, grace, kingdom, creation.
|
||||||
|
|
||||||
## Implementation Order
|
## Implementation Order
|
||||||
|
|
||||||
1. Terminology and schema foundation (`language_packs/schema.py`).
|
1. Terminology and schema foundation (`packs/schema.py`).
|
||||||
2. Pack roles and OOV policy in `sensorium`.
|
2. Pack roles and OOV policy in `sensorium`.
|
||||||
3. Split text adapters into English, Hebrew, Koine Greek specializations.
|
3. Split text adapters into English, Hebrew, Koine Greek specializations.
|
||||||
4. Add grammar scaffold artifacts.
|
4. Add grammar scaffold artifacts.
|
||||||
|
|
|
||||||
|
|
@ -131,7 +131,7 @@ typed surfaces:
|
||||||
`ACCEPTED` / `REJECTED_IDENTITY` axis. Accepting a proposal
|
`ACCEPTED` / `REJECTED_IDENTITY` axis. Accepting a proposal
|
||||||
is not the same as ratifying it as `COHERENT` — the two are
|
is not the same as ratifying it as `COHERENT` — the two are
|
||||||
orthogonal and both required for admission as evidence.
|
orthogonal and both required for admission as evidence.
|
||||||
- `language_packs/data/*/lexicon.jsonl` — new optional field
|
- `packs/data/*/lexicon.jsonl` — new optional field
|
||||||
`epistemic_status` (default `COHERENT` for the seed
|
`epistemic_status` (default `COHERENT` for the seed
|
||||||
vocabulary; deliberate-curator-reviewed at pack version
|
vocabulary; deliberate-curator-reviewed at pack version
|
||||||
bumps). No retroactive tagging without review.
|
bumps). No retroactive tagging without review.
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ doctrine and converts the live properties into type-level and test-level
|
||||||
guards:
|
guards:
|
||||||
|
|
||||||
1. `core pack validate` dynamic validator execution.
|
1. `core pack validate` dynamic validator execution.
|
||||||
2. Language / source pack loading via `language_packs.compiler`.
|
2. Language / source pack loading via `packs.compiler`.
|
||||||
3. OOV token grounding error messages.
|
3. OOV token grounding error messages.
|
||||||
4. Pack mutation proposal-only enforcement.
|
4. Pack mutation proposal-only enforcement.
|
||||||
|
|
||||||
|
|
@ -50,7 +50,7 @@ boundary holds. Result: the boundary is doctrinally complete.
|
||||||
|
|
||||||
### Surface 2 — Language / source pack loading
|
### Surface 2 — Language / source pack loading
|
||||||
|
|
||||||
**Audited state — gap found.** `language_packs/compiler.py` exposed
|
**Audited state — gap found.** `packs/compiler.py` exposed
|
||||||
three public entrypoints — `load_pack(pack_id)`,
|
three public entrypoints — `load_pack(pack_id)`,
|
||||||
`load_pack_entries(pack_id)`, and `load_mounted_packs(pack_ids)` — that
|
`load_pack_entries(pack_id)`, and `load_mounted_packs(pack_ids)` — that
|
||||||
concatenated their argument straight into a filesystem path
|
concatenated their argument straight into a filesystem path
|
||||||
|
|
@ -149,7 +149,7 @@ fallback, approximate recall, and unreviewed mutation*. This ADR:
|
||||||
deterministic and pure.
|
deterministic and pure.
|
||||||
- **Adds no broad infrastructure.** Two new small modules
|
- **Adds no broad infrastructure.** Two new small modules
|
||||||
(`core/_safe_display.py`, the `_validate_pack_id` helper inside
|
(`core/_safe_display.py`, the `_validate_pack_id` helper inside
|
||||||
`language_packs/compiler.py`) and three new test files.
|
`packs/compiler.py`) and three new test files.
|
||||||
- **Pins the boundary in tests.** The invariants previously enforced
|
- **Pins the boundary in tests.** The invariants previously enforced
|
||||||
by convention now fail closed in CI.
|
by convention now fail closed in CI.
|
||||||
|
|
||||||
|
|
@ -161,7 +161,7 @@ fallback, approximate recall, and unreviewed mutation*. This ADR:
|
||||||
|
|
||||||
- New module `core/_safe_display.py` — central sanitiser for user-
|
- New module `core/_safe_display.py` — central sanitiser for user-
|
||||||
controlled fragments in error / log messages.
|
controlled fragments in error / log messages.
|
||||||
- `language_packs/compiler.py` gains `_validate_pack_id` and wires it
|
- `packs/compiler.py` gains `_validate_pack_id` and wires it
|
||||||
into `load_pack`, `load_pack_entries`, and `load_mounted_packs`.
|
into `load_pack`, `load_pack_entries`, and `load_mounted_packs`.
|
||||||
- Three new test files:
|
- Three new test files:
|
||||||
- `tests/test_safe_display.py` (20 tests)
|
- `tests/test_safe_display.py` (20 tests)
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@ turn ─► session vault (ephemeral, exact CGA recall)
|
||||||
│
|
│
|
||||||
▼
|
▼
|
||||||
ratified packs
|
ratified packs
|
||||||
(packs/identity/, packs/safety/, packs/ethics/, language_packs/)
|
(packs/identity/, packs/safety/, packs/ethics/, packs/)
|
||||||
```
|
```
|
||||||
|
|
||||||
### Tier 1 — Session vault (`vault/store.py`)
|
### Tier 1 — Session vault (`vault/store.py`)
|
||||||
|
|
@ -90,7 +90,7 @@ turn ─► session vault (ephemeral, exact CGA recall)
|
||||||
### Tier 4 — Ratified packs
|
### Tier 4 — Ratified packs
|
||||||
|
|
||||||
- `packs/identity/`, `packs/safety/`, `packs/ethics/`,
|
- `packs/identity/`, `packs/safety/`, `packs/ethics/`,
|
||||||
`language_packs/data/*`.
|
`packs/data/*`.
|
||||||
- Self-sealed via companion `.mastery_report.json`; verified at
|
- Self-sealed via companion `.mastery_report.json`; verified at
|
||||||
startup in production mode.
|
startup in production mode.
|
||||||
- `PackMutationProposal` (ADR-0051 lineage) is the only path that
|
- `PackMutationProposal` (ADR-0051 lineage) is the only path that
|
||||||
|
|
|
||||||
|
|
@ -174,7 +174,7 @@ chat/runtime.py fall-through refactor + attach_
|
||||||
chat/teaching_grounding.py relations_chains_v2 registered
|
chat/teaching_grounding.py relations_chains_v2 registered
|
||||||
core/cli.py oov-gaps + oov-queue subcommands
|
core/cli.py oov-gaps + oov-queue subcommands
|
||||||
core/config.py relations_v2 in input_packs defaults
|
core/config.py relations_v2 in input_packs defaults
|
||||||
language_packs/data/en_core_relations_v2/ NEW pack (8 lemmas + manifest)
|
packs/data/en_core_relations_v2/ NEW pack (8 lemmas + manifest)
|
||||||
teaching/oov_sink.py NEW (~150 lines)
|
teaching/oov_sink.py NEW (~150 lines)
|
||||||
teaching/oov_gaps.py NEW (~165 lines)
|
teaching/oov_gaps.py NEW (~165 lines)
|
||||||
teaching/oov_promotion.py NEW (~120 lines)
|
teaching/oov_promotion.py NEW (~120 lines)
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ substrates**, not the same thing in different clothes. That axis is
|
||||||
|
|
||||||
The substrate to deliver it already sits half-built on disk.
|
The substrate to deliver it already sits half-built on disk.
|
||||||
|
|
||||||
* `language_packs/data/grc_logos_micro_v1` (11 entries, alignment),
|
* `packs/data/grc_logos_micro_v1` (11 entries, alignment),
|
||||||
`grc_logos_cognition_v1` (20 entries, **no alignment**),
|
`grc_logos_cognition_v1` (20 entries, **no alignment**),
|
||||||
`he_logos_micro_v1` (9 entries, alignment),
|
`he_logos_micro_v1` (9 entries, alignment),
|
||||||
`he_core_cognition_v1` (20 entries, **no alignment**) —
|
`he_core_cognition_v1` (20 entries, **no alignment**) —
|
||||||
|
|
|
||||||
|
|
@ -109,7 +109,7 @@ checksum = hashlib.sha256(Path(lexicon_path).read_bytes()).hexdigest()
|
||||||
`grc_logos_cognition_v1/manifest.json` and
|
`grc_logos_cognition_v1/manifest.json` and
|
||||||
`he_core_cognition_v1/manifest.json` are updated with the new
|
`he_core_cognition_v1/manifest.json` are updated with the new
|
||||||
checksums of their post-enrichment lexicon.jsonl files.
|
checksums of their post-enrichment lexicon.jsonl files.
|
||||||
`python -m language_packs verify <pack_id>` is the canonical gate.
|
`python -m packs verify <pack_id>` is the canonical gate.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
@ -136,7 +136,7 @@ runtime change.
|
||||||
|
|
||||||
L1.1 touches user-influenceable content (pack files) but the gate
|
L1.1 touches user-influenceable content (pack files) but the gate
|
||||||
remains the same as for every other language pack: manifest
|
remains the same as for every other language pack: manifest
|
||||||
checksum + `python -m language_packs verify`. The new entries are
|
checksum + `python -m packs verify`. The new entries are
|
||||||
authored by hand here, not ingested from an external source.
|
authored by hand here, not ingested from an external source.
|
||||||
|
|
||||||
No dynamic imports, no filesystem traversal, no shell passthrough.
|
No dynamic imports, no filesystem traversal, no shell passthrough.
|
||||||
|
|
@ -146,9 +146,9 @@ No dynamic imports, no filesystem traversal, no shell passthrough.
|
||||||
## Verification
|
## Verification
|
||||||
|
|
||||||
```
|
```
|
||||||
python -m language_packs verify grc_logos_cognition_v1 → OK
|
python -m packs verify grc_logos_cognition_v1 → OK
|
||||||
python -m language_packs verify he_core_cognition_v1 → OK
|
python -m packs verify he_core_cognition_v1 → OK
|
||||||
python -m language_packs list → both packs listed,
|
python -m packs list → both packs listed,
|
||||||
entry counts 29 / 23
|
entry counts 29 / 23
|
||||||
python -m core.cli test --suite packs -q → green
|
python -m core.cli test --suite packs -q → green
|
||||||
python -m core.cli eval cognition → public 100/100/91.7/100
|
python -m core.cli eval cognition → public 100/100/91.7/100
|
||||||
|
|
|
||||||
|
|
@ -111,7 +111,7 @@ Constructing a finding with `COHERENT`, `CONTESTED`, or `FALSIFIED` is rejected.
|
||||||
|
|
||||||
### 2. No pack mutation
|
### 2. No pack mutation
|
||||||
|
|
||||||
The contemplation runner must not write to `language_packs/`, ratification outputs, teaching corpora, or runtime pack manifests.
|
The contemplation runner must not write to `packs/`, ratification outputs, teaching corpora, or runtime pack manifests.
|
||||||
|
|
||||||
### 3. Replay determinism
|
### 3. Replay determinism
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -198,9 +198,9 @@ co-pack lemmas. Targeted at the cases the prompt-diversity suite
|
||||||
|
|
||||||
### What changes
|
### What changes
|
||||||
|
|
||||||
- `language_packs/compiler.py` — schema accepts the optional
|
- `packs/compiler.py` — schema accepts the optional
|
||||||
`definition` block; ratification gate enforces closure.
|
`definition` block; ratification gate enforces closure.
|
||||||
- `language_packs/data/en_core_cognition_v1/` — pilot pack gains
|
- `packs/data/en_core_cognition_v1/` — pilot pack gains
|
||||||
glosses end-to-end; manifest checksum refreshed; companion mastery
|
glosses end-to-end; manifest checksum refreshed; companion mastery
|
||||||
report updated.
|
report updated.
|
||||||
- New `packs/primitives/en_semantic_primitives_v1/` — ratified
|
- New `packs/primitives/en_semantic_primitives_v1/` — ratified
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
|
|
||||||
Accepted after ADR-0093 implementation wired Domain Pack Contract v1 into the validator and capability ledger:
|
Accepted after ADR-0093 implementation wired Domain Pack Contract v1 into the validator and capability ledger:
|
||||||
|
|
||||||
- `language_packs/domain_contract.py` parses the optional contract fields and rejects malformed structure.
|
- `packs/domain_contract.py` parses the optional contract fields and rejects malformed structure.
|
||||||
- `core/capability/domain_contract_predicates.py` evaluates the nine ADR-0091 semantic predicates.
|
- `core/capability/domain_contract_predicates.py` evaluates the nine ADR-0091 semantic predicates.
|
||||||
- `tests/test_capability_cli.py` verifies `core capability ledger --json` emits reasoning-capable rows for the ratified domains.
|
- `tests/test_capability_cli.py` verifies `core capability ledger --json` emits reasoning-capable rows for the ratified domains.
|
||||||
- `tests/test_adr_0097_mathematics_logic_ratification.py` and `tests/test_adr_0100_0102_sibling_ratifications.py` verify all nine predicates pass for the ratified domain packs.
|
- `tests/test_adr_0097_mathematics_logic_ratification.py` and `tests/test_adr_0100_0102_sibling_ratifications.py` verify all nine predicates pass for the ratified domain packs.
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@
|
||||||
|
|
||||||
Accepted after Domain Pack Contract v1 was implemented as an enforced validator/ledger predicate path:
|
Accepted after Domain Pack Contract v1 was implemented as an enforced validator/ledger predicate path:
|
||||||
|
|
||||||
- `language_packs/domain_contract.py` parses `domain_contract_version=1` and contract fields.
|
- `packs/domain_contract.py` parses `domain_contract_version=1` and contract fields.
|
||||||
- `core/capability/domain_contract_predicates.py` evaluates the nine ADR-0091 predicates.
|
- `core/capability/domain_contract_predicates.py` evaluates the nine ADR-0091 predicates.
|
||||||
- `core/capability/reviewers.py` and `docs/reviewers.yaml` provide ADR-0092 reviewer resolution for predicate P8.
|
- `core/capability/reviewers.py` and `docs/reviewers.yaml` provide ADR-0092 reviewer resolution for predicate P8.
|
||||||
- `evals/domain_contract_validation/contract.md` documents the validation lane.
|
- `evals/domain_contract_validation/contract.md` documents the validation lane.
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@
|
||||||
|
|
||||||
Accepted after `mathematics_logic` became a mechanically ratified `reasoning-capable` ledger row:
|
Accepted after `mathematics_logic` became a mechanically ratified `reasoning-capable` ledger row:
|
||||||
|
|
||||||
- `language_packs/data/en_mathematics_logic_v1/manifest.json` carries Domain Pack Contract v1 fields.
|
- `packs/data/en_mathematics_logic_v1/manifest.json` carries Domain Pack Contract v1 fields.
|
||||||
- `teaching/domain_chains/mathematics_logic_chains_v1.jsonl` supplies reviewed active chains.
|
- `teaching/domain_chains/mathematics_logic_chains_v1.jsonl` supplies reviewed active chains.
|
||||||
- `core/capability/domain_contract_predicates.py` verifies all nine ADR-0091 predicates.
|
- `core/capability/domain_contract_predicates.py` verifies all nine ADR-0091 predicates.
|
||||||
- `tests/test_adr_0097_mathematics_logic_ratification.py` pins:
|
- `tests/test_adr_0097_mathematics_logic_ratification.py` pins:
|
||||||
|
|
@ -28,7 +28,7 @@ Accepted after `mathematics_logic` became a mechanically ratified `reasoning-cap
|
||||||
|
|
||||||
The mathematics/logic substrate is structurally complete:
|
The mathematics/logic substrate is structurally complete:
|
||||||
|
|
||||||
- `language_packs/data/en_mathematics_logic_v1/` ships with manifest,
|
- `packs/data/en_mathematics_logic_v1/` ships with manifest,
|
||||||
lexicon, glosses.
|
lexicon, glosses.
|
||||||
- `teaching/domain_chains/mathematics_logic_chains_v1.jsonl` exists.
|
- `teaching/domain_chains/mathematics_logic_chains_v1.jsonl` exists.
|
||||||
- `evals/elementary_mathematics_ood/` exists.
|
- `evals/elementary_mathematics_ood/` exists.
|
||||||
|
|
|
||||||
|
|
@ -117,7 +117,7 @@ invocation in trace, replay byte-equal.
|
||||||
|
|
||||||
`public_showcase_pure_composition` — grep gate refuses any symbol in
|
`public_showcase_pure_composition` — grep gate refuses any symbol in
|
||||||
the showcase's import graph not already exported by `core/`, `chat/`,
|
the showcase's import graph not already exported by `core/`, `chat/`,
|
||||||
`generate/`, `language_packs/`, `teaching/`, or `core.commands.demo_*`.
|
`generate/`, `packs/`, `teaching/`, or `core.commands.demo_*`.
|
||||||
|
|
||||||
`public_showcase_all_claims_supported` — CI fails if showcase exits
|
`public_showcase_all_claims_supported` — CI fails if showcase exits
|
||||||
with `all_claims_supported=False` or runtime >30s.
|
with `all_claims_supported=False` or runtime >30s.
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@
|
||||||
|
|
||||||
Accepted after `physics` became a mechanically ratified `reasoning-capable` ledger row:
|
Accepted after `physics` became a mechanically ratified `reasoning-capable` ledger row:
|
||||||
|
|
||||||
- `language_packs/data/en_physics_v1/manifest.json` carries Domain Pack Contract v1 fields.
|
- `packs/data/en_physics_v1/manifest.json` carries Domain Pack Contract v1 fields.
|
||||||
- `teaching/domain_chains/physics_chains_v1.jsonl` supplies reviewed active chains.
|
- `teaching/domain_chains/physics_chains_v1.jsonl` supplies reviewed active chains.
|
||||||
- `tests/test_adr_0100_0102_sibling_ratifications.py` pins:
|
- `tests/test_adr_0100_0102_sibling_ratifications.py` pins:
|
||||||
- all nine predicates pass for `en_physics_v1`
|
- all nine predicates pass for `en_physics_v1`
|
||||||
|
|
@ -28,7 +28,7 @@ Accepted after `physics` became a mechanically ratified `reasoning-capable` ledg
|
||||||
|
|
||||||
The physics substrate is structurally complete:
|
The physics substrate is structurally complete:
|
||||||
|
|
||||||
- `language_packs/data/en_physics_v1/` ships with manifest, lexicon, glosses.
|
- `packs/data/en_physics_v1/` ships with manifest, lexicon, glosses.
|
||||||
- `teaching/domain_chains/physics_chains_v1.jsonl` exists.
|
- `teaching/domain_chains/physics_chains_v1.jsonl` exists.
|
||||||
- `evals/foundational_physics_ood/` exists with dev/public/holdout coverage.
|
- `evals/foundational_physics_ood/` exists with dev/public/holdout coverage.
|
||||||
- `docs/gaps.md` marks physics gaps closed.
|
- `docs/gaps.md` marks physics gaps closed.
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@
|
||||||
|
|
||||||
Accepted after `systems_software` became a mechanically ratified `reasoning-capable` ledger row:
|
Accepted after `systems_software` became a mechanically ratified `reasoning-capable` ledger row:
|
||||||
|
|
||||||
- `language_packs/data/en_systems_software_v1/manifest.json` carries Domain Pack Contract v1 fields.
|
- `packs/data/en_systems_software_v1/manifest.json` carries Domain Pack Contract v1 fields.
|
||||||
- `teaching/domain_chains/systems_software_chains_v1.jsonl` supplies reviewed active chains.
|
- `teaching/domain_chains/systems_software_chains_v1.jsonl` supplies reviewed active chains.
|
||||||
- `tests/test_adr_0100_0102_sibling_ratifications.py` pins:
|
- `tests/test_adr_0100_0102_sibling_ratifications.py` pins:
|
||||||
- all nine predicates pass for `en_systems_software_v1`
|
- all nine predicates pass for `en_systems_software_v1`
|
||||||
|
|
@ -28,7 +28,7 @@ Accepted after `systems_software` became a mechanically ratified `reasoning-capa
|
||||||
|
|
||||||
The systems_software substrate is structurally complete:
|
The systems_software substrate is structurally complete:
|
||||||
|
|
||||||
- `language_packs/data/en_systems_software_v1/` ships with manifest, lexicon, glosses.
|
- `packs/data/en_systems_software_v1/` ships with manifest, lexicon, glosses.
|
||||||
- `teaching/domain_chains/systems_software_chains_v1.jsonl` exists.
|
- `teaching/domain_chains/systems_software_chains_v1.jsonl` exists.
|
||||||
- `evals/symbolic_logic/` exists with dev/public/holdout coverage as the closest in-tree lane for systems/software reasoning at v1.
|
- `evals/symbolic_logic/` exists with dev/public/holdout coverage as the closest in-tree lane for systems/software reasoning at v1.
|
||||||
- `docs/gaps.md` marks systems_software gaps closed.
|
- `docs/gaps.md` marks systems_software gaps closed.
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@ gaps that prove the gap is real.
|
||||||
## Evidence
|
## Evidence
|
||||||
|
|
||||||
`mathematics_logic` attaches three eval lanes via
|
`mathematics_logic` attaches three eval lanes via
|
||||||
`language_packs/data/en_mathematics_logic_v1/manifest.json`:
|
`packs/data/en_mathematics_logic_v1/manifest.json`:
|
||||||
|
|
||||||
| Lane | Public split | Holdout split | Notes |
|
| Lane | Public split | Holdout split | Notes |
|
||||||
|---|---|---|---|
|
|---|---|---|---|
|
||||||
|
|
|
||||||
|
|
@ -117,7 +117,7 @@ holds for them too if a future case exercises them.
|
||||||
## Trust boundary
|
## Trust boundary
|
||||||
|
|
||||||
- **Reads only**:
|
- **Reads only**:
|
||||||
- `language_packs/data/en_arithmetic_v1/lexicon.jsonl` (the
|
- `packs/data/en_arithmetic_v1/lexicon.jsonl` (the
|
||||||
pack-on-disk; auditor MUST read this independently rather
|
pack-on-disk; auditor MUST read this independently rather
|
||||||
than trusting the solver's loader)
|
than trusting the solver's loader)
|
||||||
- `evals/math_bounded_grammar/v1/cases.jsonl` (the B3 case set)
|
- `evals/math_bounded_grammar/v1/cases.jsonl` (the B3 case set)
|
||||||
|
|
|
||||||
|
|
@ -58,7 +58,7 @@ JSON. Two solves of the same graph produce byte-equal bytes.
|
||||||
### Operation provenance via `en_arithmetic_v1`
|
### Operation provenance via `en_arithmetic_v1`
|
||||||
|
|
||||||
A new operator-vocabulary pack ships under
|
A new operator-vocabulary pack ships under
|
||||||
`language_packs/data/en_arithmetic_v1/`. Five entries, all `pos=VERB`:
|
`packs/data/en_arithmetic_v1/`. Five entries, all `pos=VERB`:
|
||||||
|
|
||||||
| entry_id | lemma | semantic domain |
|
| entry_id | lemma | semantic domain |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
|
|
@ -72,7 +72,7 @@ A new operator-vocabulary pack ships under
|
||||||
domain contract). Manifest carries `provenance: adr-0116:operator_seed:2026-05-22`.
|
domain contract). Manifest carries `provenance: adr-0116:operator_seed:2026-05-22`.
|
||||||
|
|
||||||
The solver loads this pack at every `solve()` call via
|
The solver loads this pack at every `solve()` call via
|
||||||
`language_packs.compiler.load_pack_entries`. Each operation kind in
|
`packs.compiler.load_pack_entries`. Each operation kind in
|
||||||
the input graph is dispatched through the pack's lemma table; a
|
the input graph is dispatched through the pack's lemma table; a
|
||||||
missing or unloadable pack raises `SolveError` immediately.
|
missing or unloadable pack raises `SolveError` immediately.
|
||||||
|
|
||||||
|
|
@ -178,7 +178,7 @@ Accepted when:
|
||||||
|
|
||||||
- `generate/math_solver.py` exports `solve`, `SolutionTrace`,
|
- `generate/math_solver.py` exports `solve`, `SolutionTrace`,
|
||||||
`SolutionStep`, `SolveError`, and `REQUIRED_PACK_ID`
|
`SolutionStep`, `SolveError`, and `REQUIRED_PACK_ID`
|
||||||
- `language_packs/data/en_arithmetic_v1/` ships with manifest,
|
- `packs/data/en_arithmetic_v1/` ships with manifest,
|
||||||
lexicon (5 entries), and glosses; checksums verified
|
lexicon (5 entries), and glosses; checksums verified
|
||||||
- `tests/test_math_solver.py` (109 cases) is green
|
- `tests/test_math_solver.py` (109 cases) is green
|
||||||
- Smoke suite is green
|
- Smoke suite is green
|
||||||
|
|
@ -197,7 +197,7 @@ Accepted when:
|
||||||
- Four ADR-0114a obligations are now load-bearing in code, not
|
- Four ADR-0114a obligations are now load-bearing in code, not
|
||||||
promissory. Future expert-tier work can rely on them.
|
promissory. Future expert-tier work can rely on them.
|
||||||
- The arithmetic operator vocabulary is now a first-class pack,
|
- The arithmetic operator vocabulary is now a first-class pack,
|
||||||
inspectable by external readers (`cat language_packs/data/en_arithmetic_v1/lexicon.jsonl`).
|
inspectable by external readers (`cat packs/data/en_arithmetic_v1/lexicon.jsonl`).
|
||||||
- The "operations bind to concepts, not hardcoded strings"
|
- The "operations bind to concepts, not hardcoded strings"
|
||||||
architectural claim is now true rather than rhetorical. Inspecting
|
architectural claim is now true rather than rhetorical. Inspecting
|
||||||
any `SolutionTrace` shows the path from English verb (via the
|
any `SolutionTrace` shows the path from English verb (via the
|
||||||
|
|
|
||||||
|
|
@ -187,7 +187,7 @@ exists to render.
|
||||||
modified.
|
modified.
|
||||||
- `generate/math_verifier.py` — comparison-step verification is
|
- `generate/math_verifier.py` — comparison-step verification is
|
||||||
already shipped; not modified.
|
already shipped; not modified.
|
||||||
- `language_packs/data/en_arithmetic_v1/*` — `en-arith-006`
|
- `packs/data/en_arithmetic_v1/*` — `en-arith-006`
|
||||||
(compare_additive) and `en-arith-007` (compare_multiplicative)
|
(compare_additive) and `en-arith-007` (compare_multiplicative)
|
||||||
are already shipped at manifest version 1.1.0; this ADR adds
|
are already shipped at manifest version 1.1.0; this ADR adds
|
||||||
no further pack vocabulary.
|
no further pack vocabulary.
|
||||||
|
|
|
||||||
|
|
@ -40,9 +40,9 @@ recall and determinism are the discriminators — see
|
||||||
| Architecture | `generate/math_candidate_parser.py` | Candidate-emitting sentence parser (17 tests, ADR-0126 P2) |
|
| Architecture | `generate/math_candidate_parser.py` | Candidate-emitting sentence parser (17 tests, ADR-0126 P2) |
|
||||||
| Architecture | `generate/math_candidate_graph.py` | Branch enumeration + decision rule (22 tests, ADR-0126 P3) |
|
| Architecture | `generate/math_candidate_graph.py` | Branch enumeration + decision rule (22 tests, ADR-0126 P3) |
|
||||||
| Architecture | `evals/gsm8k_math/runner.py::_score_one_candidate_graph` | Runner wiring (9 tests, ADR-0126 P4) |
|
| Architecture | `evals/gsm8k_math/runner.py::_score_one_candidate_graph` | Runner wiring (9 tests, ADR-0126 P4) |
|
||||||
| Substrate | `language_packs/data/en_units_v1/` | 284 lemmas, 401 conversion edges, NIST/ISO provenance (Gemini, PR #164) |
|
| Substrate | `packs/data/en_units_v1/` | 284 lemmas, 401 conversion edges, NIST/ISO provenance (Gemini, PR #164) |
|
||||||
| Substrate | `language_packs/data/en_numerics_v1/` | 130 lemmas across cardinals/ordinals/fractions/multipliers/quantifiers/comparison-anchors/format-rules (Opus #2, PR #163) |
|
| Substrate | `packs/data/en_numerics_v1/` | 130 lemmas across cardinals/ordinals/fractions/multipliers/quantifiers/comparison-anchors/format-rules (Opus #2, PR #163) |
|
||||||
| Loader | `language_packs/loader.py` re-exports | Single import path for both packs (ADR-0127/0128 deferred coordination) |
|
| Loader | `packs/loader.py` re-exports | Single import path for both packs (ADR-0127/0128 deferred coordination) |
|
||||||
| Integration | `generate/math_candidate_parser.py::_canonicalize_unit` | Pack-aware unit canonicalization — handles irregular plurals (feet, children, etc.) via pack lookup |
|
| Integration | `generate/math_candidate_parser.py::_canonicalize_unit` | Pack-aware unit canonicalization — handles irregular plurals (feet, children, etc.) via pack lookup |
|
||||||
| Integration | `generate/math_candidate_parser.py::extract_initial_candidates` | Widened to `<Entity> has N <unit> [of <substance>]` + `There are N <unit> [in <place>]` shapes |
|
| Integration | `generate/math_candidate_parser.py::extract_initial_candidates` | Widened to `<Entity> has N <unit> [of <substance>]` + `There are N <unit> [in <place>]` shapes |
|
||||||
| Integration | `generate/math_candidate_parser.py::_is_indefinite_quantifier` | ADR-0128.4 quantifier-driven refusal (`some`, `many`, etc. → no candidate emitted; preserves wrong == 0) |
|
| Integration | `generate/math_candidate_parser.py::_is_indefinite_quantifier` | ADR-0128.4 quantifier-driven refusal (`some`, `many`, etc. → no candidate emitted; preserves wrong == 0) |
|
||||||
|
|
|
||||||
|
|
@ -60,7 +60,7 @@ behind the units pack.
|
||||||
|
|
||||||
## Decision
|
## Decision
|
||||||
|
|
||||||
Add a `language_packs/data/en_units_v1/` ratified semantic pack and
|
Add a `packs/data/en_units_v1/` ratified semantic pack and
|
||||||
extend the ADR-0126 candidate parser to consult it during candidate
|
extend the ADR-0126 candidate parser to consult it during candidate
|
||||||
emission. **No new operation kinds.** **No new ADR-0114a
|
emission. **No new operation kinds.** **No new ADR-0114a
|
||||||
obligations.** **No new exit gates beyond ADR-0126's** (`correct ≥
|
obligations.** **No new exit gates beyond ADR-0126's** (`correct ≥
|
||||||
|
|
@ -372,8 +372,8 @@ against decoration without integration.
|
||||||
|
|
||||||
| Phase | Module | Description |
|
| Phase | Module | Description |
|
||||||
|-------|--------|-------------|
|
|-------|--------|-------------|
|
||||||
| 0127.1 | `language_packs/data/en_units_v1/` | Pack content: lexicon (dimensions + units + containers + rate connectors) + `conversions.jsonl` + manifest + glosses + mastery report |
|
| 0127.1 | `packs/data/en_units_v1/` | Pack content: lexicon (dimensions + units + containers + rate connectors) + `conversions.jsonl` + manifest + glosses + mastery report |
|
||||||
| 0127.2 | `language_packs/loader.py` (or sibling) | Pack loader API: `lookup_unit(token) -> UnitEntry \| None`; `get_conversion_graph(dimension) -> ConversionGraph` |
|
| 0127.2 | `packs/loader.py` (or sibling) | Pack loader API: `lookup_unit(token) -> UnitEntry \| None`; `get_conversion_graph(dimension) -> ConversionGraph` |
|
||||||
| 0127.3 | `generate/math_roundtrip.py` | Optional `require_pack_typed_unit` parameter on `roundtrip_admissible` |
|
| 0127.3 | `generate/math_roundtrip.py` | Optional `require_pack_typed_unit` parameter on `roundtrip_admissible` |
|
||||||
| 0127.4 | `generate/math_candidate_parser.py` | Three new initial-possession shapes + rate-declaration extractor, consulting the pack loader |
|
| 0127.4 | `generate/math_candidate_parser.py` | Three new initial-possession shapes + rate-declaration extractor, consulting the pack loader |
|
||||||
| 0127.5 | `generate/math_unit_conversion.py` (new) | `canonicalize_to_dimension_canonical(quantity, graph)`; shortest-path lookup + edges-fired provenance for `SolutionTrace.steps` |
|
| 0127.5 | `generate/math_unit_conversion.py` (new) | `canonicalize_to_dimension_canonical(quantity, graph)`; shortest-path lookup + edges-fired provenance for `SolutionTrace.steps` |
|
||||||
|
|
|
||||||
|
|
@ -55,7 +55,7 @@ architecture to get a fair empirical reading on the train sample.
|
||||||
|
|
||||||
## Decision
|
## Decision
|
||||||
|
|
||||||
Add a `language_packs/data/en_numerics_v1/` ratified semantic pack
|
Add a `packs/data/en_numerics_v1/` ratified semantic pack
|
||||||
that exhaustively encodes the English linguistic forms of
|
that exhaustively encodes the English linguistic forms of
|
||||||
quantities. Parser changes are minimal — most pack content
|
quantities. Parser changes are minimal — most pack content
|
||||||
replaces today's scattered hard-coded tables with ratified
|
replaces today's scattered hard-coded tables with ratified
|
||||||
|
|
@ -299,8 +299,8 @@ addresses re: scope mismatch.
|
||||||
|
|
||||||
| Phase | Module | Description |
|
| Phase | Module | Description |
|
||||||
|-------|--------|-------------|
|
|-------|--------|-------------|
|
||||||
| 0128.1 | `language_packs/data/en_numerics_v1/` | Pack content (lexicon + manifest + glosses + mastery report) |
|
| 0128.1 | `packs/data/en_numerics_v1/` | Pack content (lexicon + manifest + glosses + mastery report) |
|
||||||
| 0128.2 | `language_packs/loader.py` | `lookup_cardinal`, `lookup_ordinal`, `lookup_fraction`, `lookup_quantifier`, `match_number_format` |
|
| 0128.2 | `packs/loader.py` | `lookup_cardinal`, `lookup_ordinal`, `lookup_fraction`, `lookup_quantifier`, `match_number_format` |
|
||||||
| 0128.3 | `generate/math_roundtrip.py` | Replace hard-coded `WORD_NUMBERS` + `COMPARE_*_ANCHORS` with pack-backed lookups |
|
| 0128.3 | `generate/math_roundtrip.py` | Replace hard-coded `WORD_NUMBERS` + `COMPARE_*_ANCHORS` with pack-backed lookups |
|
||||||
| 0128.4 | `generate/math_candidate_parser.py` | `normalize_value_token` helper; quantifier-driven refusal |
|
| 0128.4 | `generate/math_candidate_parser.py` | `normalize_value_token` helper; quantifier-driven refusal |
|
||||||
| 0128.5 | `tests/test_adr_0128_*.py` | Pack ratification (exhaustiveness gates) + parser integration + format regex corpus |
|
| 0128.5 | `tests/test_adr_0128_*.py` | Pack ratification (exhaustiveness gates) + parser integration + format regex corpus |
|
||||||
|
|
|
||||||
|
|
@ -86,7 +86,7 @@ structural disadvantage on this task.)
|
||||||
|
|
||||||
**What:** Run the math expert against the math teaching corpus's
|
**What:** Run the math expert against the math teaching corpus's
|
||||||
own evaluation lane. Problems are sourced from ratified
|
own evaluation lane. Problems are sourced from ratified
|
||||||
teaching chains in `language_packs/data/en_arithmetic_v1` +
|
teaching chains in `packs/data/en_arithmetic_v1` +
|
||||||
en_units_v1 + en_numerics_v1; the parser's grammar matches the
|
en_units_v1 + en_numerics_v1; the parser's grammar matches the
|
||||||
corpus's surface forms *by construction* (no paraphrase-variance
|
corpus's surface forms *by construction* (no paraphrase-variance
|
||||||
gap because both sides of the eval consume the same ratified
|
gap because both sides of the eval consume the same ratified
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,7 @@ probe lift; the load-bearing measurement for this iteration is the
|
||||||
via existing unit-slot path; normalized at candidate build.
|
via existing unit-slot path; normalized at candidate build.
|
||||||
3. **Hyphenated multi-word cardinal** — `twenty-five`, `ninety-nine`,
|
3. **Hyphenated multi-word cardinal** — `twenty-five`, `ninety-nine`,
|
||||||
etc. Resolved via
|
etc. Resolved via
|
||||||
`language_packs.numerics_loader.parse_compound_cardinal`.
|
`packs.numerics_loader.parse_compound_cardinal`.
|
||||||
|
|
||||||
### Canonical money normalization (load-bearing)
|
### Canonical money normalization (load-bearing)
|
||||||
|
|
||||||
|
|
@ -222,5 +222,5 @@ explicitly attributed, not buried inside a capability-axis PR).
|
||||||
regex; widened regex stays bounded (closed alternation set,
|
regex; widened regex stays bounded (closed alternation set,
|
||||||
no backreferences, no catastrophic-backtracking-risk
|
no backreferences, no catastrophic-backtracking-risk
|
||||||
patterns). Pack loader paths consult
|
patterns). Pack loader paths consult
|
||||||
`language_packs/data/<pack_id>/` only; no dynamic imports, no
|
`packs/data/<pack_id>/` only; no dynamic imports, no
|
||||||
filesystem traversal beyond pack root.
|
filesystem traversal beyond pack root.
|
||||||
|
|
|
||||||
|
|
@ -94,7 +94,7 @@ source span (mirrors the existing `$` / `dollar` grounding logic).
|
||||||
|
|
||||||
### Axis 3 — Multi-token space-separated cardinals
|
### Axis 3 — Multi-token space-separated cardinals
|
||||||
|
|
||||||
`parse_compound_cardinal` in `language_packs/numerics_loader.py` already
|
`parse_compound_cardinal` in `packs/numerics_loader.py` already
|
||||||
handles `"one hundred"`, `"two thousand five hundred"` etc. — it
|
handles `"one hundred"`, `"two thousand five hundred"` etc. — it
|
||||||
normalises hyphens to spaces then tokenises. The parser couldn't emit these
|
normalises hyphens to spaces then tokenises. The parser couldn't emit these
|
||||||
in the value slot because `_VALUE` alternation uses a single-token pattern;
|
in the value slot because `_VALUE` alternation uses a single-token pattern;
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ Add three deliverables under `generate/binding_graph/`:
|
||||||
1. **`units.py`** — pure unit algebra over an integer exponent vector
|
1. **`units.py`** — pure unit algebra over an integer exponent vector
|
||||||
on six base dimensions (`length, time, mass, money, count,
|
on six base dimensions (`length, time, mass, money, count,
|
||||||
temperature`). The closed vocabulary is loaded once from
|
temperature`). The closed vocabulary is loaded once from
|
||||||
`language_packs/data/en_units_v1/lexicon.jsonl` at first call and
|
`packs/data/en_units_v1/lexicon.jsonl` at first call and
|
||||||
memoized. Composite unit ids of the form `"<num>_per_<denom>"`
|
memoized. Composite unit ids of the form `"<num>_per_<denom>"`
|
||||||
resolve recursively as `unit_quotient(parse_unit(num),
|
resolve recursively as `unit_quotient(parse_unit(num),
|
||||||
parse_unit(denom))`. `parse_unit` refuses with
|
parse_unit(denom))`. `parse_unit` refuses with
|
||||||
|
|
|
||||||
|
|
@ -311,7 +311,7 @@ The spike is governed by the same invariants as the rest of CORE:
|
||||||
- Null inputs to `versor_apply` stay null. Verified by `cga_inner(R, R)
|
- Null inputs to `versor_apply` stay null. Verified by `cga_inner(R, R)
|
||||||
≈ 0` on every result.
|
≈ 0` on every result.
|
||||||
- No normalization is introduced outside the allowed sites
|
- No normalization is introduced outside the allowed sites
|
||||||
(`ingest/gate.py`, `language_packs/compiler.py`,
|
(`ingest/gate.py`, `packs/compiler.py`,
|
||||||
`algebra/versor.py`). The new functions live in a new module —
|
`algebra/versor.py`). The new functions live in a new module —
|
||||||
proposed path `generate/math_versor_arithmetic.py` — and call only
|
proposed path `generate/math_versor_arithmetic.py` — and call only
|
||||||
existing primitives. They do not add any new normalization.
|
existing primitives. They do not add any new normalization.
|
||||||
|
|
|
||||||
|
|
@ -103,11 +103,11 @@ The following is implemented and merged:
|
||||||
- `chat/runtime.py` — `ChatResponse` carries all three fields; both stub and
|
- `chat/runtime.py` — `ChatResponse` carries all three fields; both stub and
|
||||||
main paths populate them from verdicts and grounding source.
|
main paths populate them from verdicts and grounding source.
|
||||||
- `chat/telemetry.py` — serializes state axes into JSONL turn events.
|
- `chat/telemetry.py` — serializes state axes into JSONL turn events.
|
||||||
- `language_packs/loader.py` — `UnitEntry` carries `epistemic_state`; curated
|
- `packs/loader.py` — `UnitEntry` carries `epistemic_state`; curated
|
||||||
entries tagged DECODED, composition-rule entries tagged INFERRED.
|
entries tagged DECODED, composition-rule entries tagged INFERRED.
|
||||||
- `vocab/manifold.py` — `add()` accepts `epistemic_state`; `add_transient()`
|
- `vocab/manifold.py` — `add()` accepts `epistemic_state`; `add_transient()`
|
||||||
tags words UNVERIFIED_NOVEL; `epistemic_state_for_word()` exposed.
|
tags words UNVERIFIED_NOVEL; `epistemic_state_for_word()` exposed.
|
||||||
- `language_packs/compiler.py` — passes `epistemic_state` through compile,
|
- `packs/compiler.py` — passes `epistemic_state` through compile,
|
||||||
clone, and cached-load paths.
|
clone, and cached-load paths.
|
||||||
- `vault/store.py` — `epistemic_state_for_vault_status()` mapping;
|
- `vault/store.py` — `epistemic_state_for_vault_status()` mapping;
|
||||||
`epistemic_state` stamped into metadata on `store()`; recall results expose
|
`epistemic_state` stamped into metadata on `store()`; recall results expose
|
||||||
|
|
|
||||||
|
|
@ -131,7 +131,7 @@ Example category set (closed, ADR-tracked, extended only by ratification):
|
||||||
| `entity_pronoun` | she, he, they, it | binds resolved entity |
|
| `entity_pronoun` | she, he, they, it | binds resolved entity |
|
||||||
| `proper_noun_entity` | Tina, Marion, Jen, … | binds entity directly |
|
| `proper_noun_entity` | Tina, Marion, Jen, … | binds entity directly |
|
||||||
|
|
||||||
The lexicon lives under `language_packs/data/en_core_math_v1/` parallel to
|
The lexicon lives under `packs/data/en_core_math_v1/` parallel to
|
||||||
`en_core_cognition_v1` and `en_core_relations_v1`, with the same loader
|
`en_core_cognition_v1` and `en_core_relations_v1`, with the same loader
|
||||||
discipline, the same manifest-checksum rule (CLAUDE.md §Semantic Pack
|
discipline, the same manifest-checksum rule (CLAUDE.md §Semantic Pack
|
||||||
Discipline), and the same review pathway (ADR-0150/0152/0155/0161). New
|
Discipline), and the same review pathway (ADR-0150/0152/0155/0161). New
|
||||||
|
|
|
||||||
|
|
@ -385,7 +385,7 @@ primitive.
|
||||||
This ADR moves to **Accepted** when:
|
This ADR moves to **Accepted** when:
|
||||||
|
|
||||||
1. The seed registry above is materialized in
|
1. The seed registry above is materialized in
|
||||||
`language_packs/data/en_core_math_v1/lexical_primitives.json` (or
|
`packs/data/en_core_math_v1/lexical_primitives.json` (or
|
||||||
the equivalent loader format settled in the Phase 1 PR), one
|
the equivalent loader format settled in the Phase 1 PR), one
|
||||||
record per entry, fields populated verbatim.
|
record per entry, fields populated verbatim.
|
||||||
2. The manifest checksum hashes the bytes written to disk (CLAUDE.md
|
2. The manifest checksum hashes the bytes written to disk (CLAUDE.md
|
||||||
|
|
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue