Release v1.7.0 - Strengthened Token Foundation¶
Codename: Forge
Tagline: Strengthened Token Foundation
Date: 2025-06-09
Overview¶
This release marks the completion of Task 1: Column Injection Logic from the Global Normalization Plan. It finalizes
the core token abstraction (BaseToken
), adds strong typing and error-handling contracts, and brings our test coverage,
documentation, and code consistency to 100%.
β¨ Highlights¶
-
Column Injection Logic Complete
- Orphan, Qualified, Qualified+Aliased, and ambiguous qualifiers handled by
NewColumn(...)
+BaseToken
- Alias parsing & conflict detection fully centralized in
BaseToken
- Orphan, Qualified, Qualified+Aliased, and ambiguous qualifiers handled by
-
Errorable Contract
- Introduced
Errorable
interface (GetError()
,IsErrored()
,SetError()
) ininternal/core/contract/errorable.go
BaseToken
implementsErrorable
with nil-safe methods- Deprecated
SetErrorWith()
andHasError()
remain for backward compatibility
- Introduced
-
Kindable Contract
- Defined
Kind
enum ininternal/core/contract/kind.go
- Introduced
Kindable
interface (GetKind()
,SetKind()
) ininternal/core/contract/kindable.go
BaseToken
implementsKindable
;String()
now shows tokenβs kind
- Defined
-
BaseToken Refactor & API Enhancements
- Renamed
HasError()
βIsErrored()
,SetErrorWith()
βSetError()
- Added
GetError()
for direct error inspection - Added
SetKind()
/GetKind()
for type classification - Nil-safe everywhere: calling any method on a
nil
token returns safe defaults
- Renamed
-
Documentation & Guides
- Created
base_token.md
βcomplete developer guide forBaseToken
- Updated
token.md
to referenceErrorable
&Kindable
, nil-safe behavior, and generic token cases - Enhanced readability with icons and refined headings
- Created
-
100% Test Coverage
- All new methods and branches covered by unit tests
- Defensive tests for nil receivers, alias conflicts, error propagation, and kind classification
Breaking Changes¶
-
Interface Renames:
GenericToken
now usesIsErrored()
instead ofHasError()
Kinded
renamed toKindable
-
Package Path Changes:
- Contract interfaces moved to
internal/core/contract
- Contract interfaces moved to