chore: migrate to dappco.re vanity import path
Some checks failed
Security Scan / security (push) Successful in 7s
Test / test (push) Failing after 22s

Module path: forge.lthn.ai/core/go-i18n -> dappco.re/go/core/i18n
Dependency:  forge.lthn.ai/core/go-log  -> dappco.re/go/core/log

go-inference remains on forge.lthn.ai (not yet migrated).
dappco.re/go/core/log uses replace directive until published.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Claude 2026-03-21 23:49:15 +00:00
parent 5bc988ecf9
commit 08c78757a5
No known key found for this signature in database
GPG key ID: AF404715446AEB41
22 changed files with 33 additions and 33 deletions

View file

@ -4,7 +4,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
## What This Is ## What This Is
Grammar-aware internationalisation engine for Go. Module: `forge.lthn.ai/core/go-i18n` Grammar-aware internationalisation engine for Go. Module: `dappco.re/go/core/i18n`
This is a **grammar engine** — it provides primitives for composing and reversing grammatically correct text. It is NOT a translation file manager. Consumers bring their own translations. This is a **grammar engine** — it provides primitives for composing and reversing grammatically correct text. It is NOT a translation file manager. Consumers bring their own translations.
@ -89,6 +89,6 @@ Non-English languages must provide comprehensive JSON tables since tiers 2 and 3
- UK English (colour, organisation, centre) - UK English (colour, organisation, centre)
- `go test ./...` must pass before commit - `go test ./...` must pass before commit
- Errors use `log.E(op, msg, err)` from `forge.lthn.ai/core/go-log`, not `fmt.Errorf` - Errors use `log.E(op, msg, err)` from `dappco.re/go/core/log`, not `fmt.Errorf`
- Conventional commits: `type(scope): description` - Conventional commits: `type(scope): description`
- Co-Author: `Co-Authored-By: Virgil <virgil@lethean.io>` - Co-Author: `Co-Authored-By: Virgil <virgil@lethean.io>`

View file

@ -1,4 +1,4 @@
[![Go Reference](https://pkg.go.dev/badge/forge.lthn.ai/core/go-i18n.svg)](https://pkg.go.dev/forge.lthn.ai/core/go-i18n) [![Go Reference](https://pkg.go.dev/badge/dappco.re/go/core/i18n.svg)](https://pkg.go.dev/dappco.re/go/core/i18n)
[![License: EUPL-1.2](https://img.shields.io/badge/License-EUPL--1.2-blue.svg)](LICENSE.md) [![License: EUPL-1.2](https://img.shields.io/badge/License-EUPL--1.2-blue.svg)](LICENSE.md)
[![Go Version](https://img.shields.io/badge/Go-1.26-00ADD8?style=flat&logo=go)](go.mod) [![Go Version](https://img.shields.io/badge/Go-1.26-00ADD8?style=flat&logo=go)](go.mod)
@ -6,14 +6,14 @@
Grammar engine for Go. Provides forward composition primitives (PastTense, Gerund, Pluralize, Article, composite progress and label functions), a `T()` translation entry point with namespace key handlers, and a reversal engine that recovers base forms and grammatical roles from inflected text. The reversal package produces `GrammarImprint` feature vectors for semantic similarity scoring, builds reference domain distributions, performs anomaly detection, and includes a 1B model pre-sort pipeline for training data classification. Consumers bring their own translation keys; this library provides the grammatical machinery. Grammar engine for Go. Provides forward composition primitives (PastTense, Gerund, Pluralize, Article, composite progress and label functions), a `T()` translation entry point with namespace key handlers, and a reversal engine that recovers base forms and grammatical roles from inflected text. The reversal package produces `GrammarImprint` feature vectors for semantic similarity scoring, builds reference domain distributions, performs anomaly detection, and includes a 1B model pre-sort pipeline for training data classification. Consumers bring their own translation keys; this library provides the grammatical machinery.
**Module**: `forge.lthn.ai/core/go-i18n` **Module**: `dappco.re/go/core/i18n`
**Licence**: EUPL-1.2 **Licence**: EUPL-1.2
**Language**: Go 1.25 **Language**: Go 1.25
## Quick Start ## Quick Start
```go ```go
import "forge.lthn.ai/core/go-i18n" import "dappco.re/go/core/i18n"
// Grammar primitives // Grammar primitives
fmt.Println(i18n.PastTense("delete")) // "deleted" fmt.Println(i18n.PastTense("delete")) // "deleted"

View file

@ -5,8 +5,8 @@ import (
"fmt" "fmt"
"time" "time"
log "dappco.re/go/core/log"
"forge.lthn.ai/core/go-inference" "forge.lthn.ai/core/go-inference"
log "forge.lthn.ai/core/go-log"
) )
// CalibrationSample is a single text entry for model comparison. // CalibrationSample is a single text entry for model comparison.

View file

@ -9,8 +9,8 @@ import (
"strings" "strings"
"time" "time"
log "dappco.re/go/core/log"
"forge.lthn.ai/core/go-inference" "forge.lthn.ai/core/go-inference"
log "forge.lthn.ai/core/go-log"
) )
// ClassifyStats reports metrics from a ClassifyCorpus run. // ClassifyStats reports metrics from a ClassifyCorpus run.

View file

@ -2,7 +2,7 @@
go-i18n is a grammar engine for Go. It is not a translation file manager. Consumers bring their own translation keys; the library provides grammatical primitives for composing and reversing grammatically correct text across multiple languages. go-i18n is a grammar engine for Go. It is not a translation file manager. Consumers bring their own translation keys; the library provides grammatical primitives for composing and reversing grammatically correct text across multiple languages.
Module: `forge.lthn.ai/core/go-i18n` Module: `dappco.re/go/core/i18n`
--- ---

View file

@ -5,7 +5,7 @@ description: Grammar-aware internationalisation for Go with forward composition
# go-i18n Grammar Engine # go-i18n Grammar Engine
`forge.lthn.ai/core/go-i18n` is a **grammar engine** for Go. Unlike flat key-value translation systems, it composes grammatically correct output from verbs, nouns, and articles -- and can reverse the process, decomposing inflected text back into base forms with grammatical metadata. `dappco.re/go/core/i18n` is a **grammar engine** for Go. Unlike flat key-value translation systems, it composes grammatically correct output from verbs, nouns, and articles -- and can reverse the process, decomposing inflected text back into base forms with grammatical metadata.
This is the foundation for the Poindexter classification pipeline and the LEM scoring system. This is the foundation for the Poindexter classification pipeline and the LEM scoring system.
@ -23,7 +23,7 @@ This is the foundation for the Poindexter classification pipeline and the LEM sc
## Quick Start ## Quick Start
```go ```go
import i18n "forge.lthn.ai/core/go-i18n" import i18n "dappco.re/go/core/i18n"
// Initialise the default service (uses embedded en.json) // Initialise the default service (uses embedded en.json)
svc, err := i18n.New() svc, err := i18n.New()
@ -38,7 +38,7 @@ i18n.Article("SSH") // "an"
``` ```
```go ```go
import "forge.lthn.ai/core/go-i18n/reversal" import "dappco.re/go/core/i18n/reversal"
// Reverse decomposition // Reverse decomposition
tok := reversal.NewTokeniser() tok := reversal.NewTokeniser()

6
go.mod
View file

@ -1,4 +1,4 @@
module forge.lthn.ai/core/go-i18n module dappco.re/go/core/i18n
go 1.26.0 go 1.26.0
@ -6,8 +6,8 @@ require golang.org/x/text v0.35.0
require ( require (
dappco.re/go/core v0.4.7 dappco.re/go/core v0.4.7
dappco.re/go/core/log v0.0.4
forge.lthn.ai/core/go-inference v0.1.4 forge.lthn.ai/core/go-inference v0.1.4
forge.lthn.ai/core/go-log v0.0.4
) )
require github.com/kr/text v0.2.0 // indirect require github.com/kr/text v0.2.0 // indirect
@ -18,3 +18,5 @@ require (
github.com/stretchr/testify v1.11.1 github.com/stretchr/testify v1.11.1
gopkg.in/yaml.v3 v3.0.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect
) )
replace dappco.re/go/core/log => ../go-log

6
go.sum
View file

@ -1,9 +1,7 @@
forge.lthn.ai/core/go v0.3.1 h1:5FMTsUhLcxSr07F9q3uG0Goy4zq4eLivoqi8shSY4UM= dappco.re/go/core v0.4.7 h1:KmIA/2lo6rl1NMtLrKqCWfMlUqpDZYH3q0/d10dTtGA=
forge.lthn.ai/core/go v0.3.1/go.mod h1:gE6c8h+PJ2287qNhVUJ5SOe1kopEwHEquvinstpuyJc= dappco.re/go/core v0.4.7/go.mod h1:f2/tBZ3+3IqDrg2F5F598llv0nmb/4gJVCFzM5geE4A=
forge.lthn.ai/core/go-inference v0.1.4 h1:fuAgWbqsEDajHniqAKyvHYbRcBrkGEiGSqR2pfTMRY0= forge.lthn.ai/core/go-inference v0.1.4 h1:fuAgWbqsEDajHniqAKyvHYbRcBrkGEiGSqR2pfTMRY0=
forge.lthn.ai/core/go-inference v0.1.4/go.mod h1:jfWz+IJX55wAH98+ic6FEqqGB6/P31CHlg7VY7pxREw= forge.lthn.ai/core/go-inference v0.1.4/go.mod h1:jfWz+IJX55wAH98+ic6FEqqGB6/P31CHlg7VY7pxREw=
forge.lthn.ai/core/go-log v0.0.4 h1:KTuCEPgFmuM8KJfnyQ8vPOU1Jg654W74h8IJvfQMfv0=
forge.lthn.ai/core/go-log v0.0.4/go.mod h1:r14MXKOD3LF/sI8XUJQhRk/SZHBE7jAFVuCfgkXoZPw=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=

View file

@ -6,7 +6,7 @@ import (
"sort" "sort"
"testing" "testing"
i18n "forge.lthn.ai/core/go-i18n" i18n "dappco.re/go/core/i18n"
"forge.lthn.ai/core/go-inference" "forge.lthn.ai/core/go-inference"
_ "forge.lthn.ai/core/go-mlx" // registers Metal backend _ "forge.lthn.ai/core/go-mlx" // registers Metal backend
) )

View file

@ -9,7 +9,7 @@ import (
"testing" "testing"
"time" "time"
i18n "forge.lthn.ai/core/go-i18n" i18n "dappco.re/go/core/i18n"
"forge.lthn.ai/core/go-inference" "forge.lthn.ai/core/go-inference"
_ "forge.lthn.ai/core/go-mlx" // registers Metal backend _ "forge.lthn.ai/core/go-mlx" // registers Metal backend
) )

View file

@ -1,9 +1,9 @@
module forge.lthn.ai/core/go-i18n/integration module dappco.re/go/core/i18n/integration
go 1.25.5 go 1.25.5
require ( require (
forge.lthn.ai/core/go-i18n v0.0.0-00010101000000-000000000000 dappco.re/go/core/i18n v0.0.0-00010101000000-000000000000
forge.lthn.ai/core/go-inference v0.0.0 forge.lthn.ai/core/go-inference v0.0.0
forge.lthn.ai/core/go-mlx v0.0.0-00010101000000-000000000000 forge.lthn.ai/core/go-mlx v0.0.0-00010101000000-000000000000
) )
@ -11,7 +11,7 @@ require (
require golang.org/x/text v0.33.0 // indirect require golang.org/x/text v0.33.0 // indirect
replace ( replace (
forge.lthn.ai/core/go-i18n => ../ dappco.re/go/core/i18n => ../
forge.lthn.ai/core/go-inference => ../../go-inference forge.lthn.ai/core/go-inference => ../../go-inference
forge.lthn.ai/core/go-mlx => ../../go-mlx forge.lthn.ai/core/go-mlx => ../../go-mlx
) )

View file

@ -7,7 +7,7 @@ import (
"strings" "strings"
"sync" "sync"
log "forge.lthn.ai/core/go-log" log "dappco.re/go/core/log"
) )
// FSLoader loads translations from a filesystem (embedded or disk). // FSLoader loads translations from a filesystem (embedded or disk).

View file

@ -3,7 +3,7 @@ package reversal
import ( import (
"testing" "testing"
i18n "forge.lthn.ai/core/go-i18n" i18n "dappco.re/go/core/i18n"
) )
func TestNewImprint(t *testing.T) { func TestNewImprint(t *testing.T) {

View file

@ -4,7 +4,7 @@ import (
"strings" "strings"
"unicode" "unicode"
i18n "forge.lthn.ai/core/go-i18n" i18n "dappco.re/go/core/i18n"
) )
// Multiplier generates deterministic grammatical variants of text // Multiplier generates deterministic grammatical variants of text

View file

@ -3,7 +3,7 @@ package reversal
import ( import (
"testing" "testing"
i18n "forge.lthn.ai/core/go-i18n" i18n "dappco.re/go/core/i18n"
) )
func TestMultiplier_Expand(t *testing.T) { func TestMultiplier_Expand(t *testing.T) {

View file

@ -5,7 +5,7 @@ import (
"math" "math"
"slices" "slices"
log "forge.lthn.ai/core/go-log" log "dappco.re/go/core/log"
) )
// ClassifiedText is a text sample with a domain label (from 1B model or ground truth). // ClassifiedText is a text sample with a domain label (from 1B model or ground truth).

View file

@ -4,7 +4,7 @@ import (
"math" "math"
"testing" "testing"
i18n "forge.lthn.ai/core/go-i18n" i18n "dappco.re/go/core/i18n"
) )
func initI18n(t *testing.T) *Tokeniser { func initI18n(t *testing.T) *Tokeniser {

View file

@ -3,7 +3,7 @@ package reversal
import ( import (
"testing" "testing"
i18n "forge.lthn.ai/core/go-i18n" i18n "dappco.re/go/core/i18n"
) )
// TestRoundTrip_ForwardThenReverse — go-i18n composed output → reversal → verify correct tokens // TestRoundTrip_ForwardThenReverse — go-i18n composed output → reversal → verify correct tokens

View file

@ -18,7 +18,7 @@ package reversal
import ( import (
"strings" "strings"
i18n "forge.lthn.ai/core/go-i18n" i18n "dappco.re/go/core/i18n"
) )
// VerbMatch holds the result of a reverse verb lookup. // VerbMatch holds the result of a reverse verb lookup.

View file

@ -3,7 +3,7 @@ package reversal
import ( import (
"testing" "testing"
i18n "forge.lthn.ai/core/go-i18n" i18n "dappco.re/go/core/i18n"
) )
func setup(t *testing.T) { func setup(t *testing.T) {

View file

@ -12,7 +12,7 @@ import (
"sync" "sync"
"sync/atomic" "sync/atomic"
log "forge.lthn.ai/core/go-log" log "dappco.re/go/core/log"
"golang.org/x/text/language" "golang.org/x/text/language"
) )

View file

@ -7,8 +7,8 @@ import (
"fmt" "fmt"
"strings" "strings"
log "dappco.re/go/core/log"
"forge.lthn.ai/core/go-inference" "forge.lthn.ai/core/go-inference"
log "forge.lthn.ai/core/go-log"
) )
// ArticlePair holds a noun and its proposed article for validation. // ArticlePair holds a noun and its proposed article for validation.