PROFILE / MIGRATION
RFC3 migration
Implemented comparator alignment: less-than means earlier. Legacy RFC2 meaning is never silently reassigned.
The corrected direction
| RFC3 | Meaning |
|---|---|
| A<B | A precedes B |
| A>B | B precedes A |
| I<TS | I precedes T and S; no T/S order |
| I<T>S | I and S precede T |
| T>IS | Equivalent to I<T>S |
P4:D(I<T)
P4:D(I<TS)
P4:D(I<T>S)
P4:D(T>IS)
P4:D(I<T,T)First occurrence is local to the attached closed scope. The earlier kind must exist; a missing later kind is allowed. Neither present means false. Bare T requires presence. D and U remain separate; braces are not bags. Hidden future pieces are not absent.
Do not guess the version
Tessembly follows Clearra inputs and internal structure. This correction aligns the comparator with positional order and Marfung, not every prose convention. KPCA is the correct reference name; KPCO was a typo.
Normal parsers and binary readers reject explicit RFC2 headers. Rust low-level parse can accept the full RFC2 profile only when explicitly supplied. Package, semantic profile, wire and test protocol versions are different contracts.
Explicit migration
tessembly migrate-rfc2 old.tsm new.tsm
tessembly doc-migrate-rfc2 old.tsmd new.tsmd
tessembly migrate-binary-rfc2 old.tsmb new.tsmb
tessembly doc-migrate-binary-rfc2 old.tsdc new.tsdcconst next = t.migrateRfc2Pattern(oldText);
const doc = t.migrateRfc2Document(oldDocument);
const bytes = t.migrateRfc2PatternBinary(oldBytes);
const documentBytes = t.migrateRfc2DocumentBinary(oldDocumentBytes);RFC2 D(I<T) becomes RFC3 D(T<I). Migration preserves Before/Present, scopes and state. It does not rewrite arbitrary reference strings or reverse already-structured edges. Output files are new files, never overwrites.
Stored data and executable assets
TSMB/TSDC keep structural wire 1 but use semantic byte 3. An RFC2 document must migrate its nested pattern headers as well. Opaque optional metadata requires a separate handler: MIGRATION_REQUIRES_METADATA_HANDLER, not a guessed interpretation. Current Wasm ABI 3 prevents mixing old/new JavaScript and Wasm.
| Scope | D(I<T) |
|---|---|
| IT | true |
| TI | false |
| IOSZ | true |
| TOSZ | false |
| OSZJ | false |
| ITIT | true |
Equal set sizes can hide reversed comparisons. Independent vectors check concrete queues and relationships, and legacy binary fixtures were generated before this change.