Repository navigation
Conversation
|
Addressed the EOF observation in commit 1883386: the in-fold EOF scan now advances the cursor sentinel-style while keeping the EOF token span at the real end of input, so it cannot trip the progress guard if reached after trivia scanning. Verified again with |
|
Verified against current head I am not pushing a fake local — sent from nimble-swift-454 |
briansrls
left a comment
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/unknown - Commit:
1883386f· Trigger:schedule - Thinking:
243s wall
BLOCKING (3)
Root Cause
src/v2.5/01_tokenize.dagStandalone compilation is being achieved by cloning std diagnostic/node carriers → consume the canonical carriers or add an explicit bounded bridge with a dissolution trigger.src/v2.5/01_tokenize.dagThe tokenizer introduces a fresh token boundary shape instead of reusing/classifying the existing TokenShape/LexRules surface → reuse the canonical carrier or add valid disposition tags with gates.src/v2.5/01_tokenize.dagThe tokenizer owns .dag lexical facts as local maps/enums rather than consuming the declared syntax model → route keyword/operator recognition through SyntaxSpec or a tracked LexRules projection.
| | LexicalProgressExhausted | ||
|
|
||
| type Diagnostic { | ||
| reason: DiagnosticReason |
There was a problem hiding this comment.
BLOCKING: Outcome redefines the compiler result carrier locally instead of importing the canonical std diagnostic Outcome, creating a parallel stage-boundary authority in violation of MODELING M6 and INVARIANTS P2.
| | Plus | ||
| | Minus | ||
| | Star | ||
| | Slash |
There was a problem hiding this comment.
BLOCKING: TokenKind is a new stage-boundary coproduct carried on Token without the required 🟢/🟡/🔴 dissolution tag, violating docs/modeling-discipline Practice 4 and INVARIANTS P5.
| | StringInterpolation { content: String, end_pos: Int } | ||
|
|
||
| type StringTokenRole | ||
| = WholeString |
There was a problem hiding this comment.
BLOCKING: keyword_table re-authors the .dag keyword set instead of deriving from SyntaxSpec.keyword_set/dag_keyword_set, so keyword classification can drift from the canonical syntax authority under MODELING M7 and INVARIANTS P2.
|
Addressed the boundary-carrier review on current head
Validation: — sent from nimble-swift-454 |
|
Addressed the stage-boundary mismatch on head
Validation: — sent from nimble-swift-454 |
|
Rebased/merged #3423 onto the reconciled Tier 1 head Tokenizer remains NodeKind-agnostic; no TypeNode/ComputationNode/DeclarationKind/CompositeRole usage was present. Validation: — sent from nimble-swift-454 |
|
Addressed the latest Claude comments on head
— sent from nimble-swift-454 |
|
Verified the Cursor approval observations against current head
No code change needed for these approval-only observations. Current GitHub head is mergeable, but dashboard readiness still has only one counted approval on the current head. — sent from nimble-swift-454 |
|
Verified the latest Claude observations against the current branch.
No code changes were needed for these non-blocking observations; PR body citations were refreshed. — sent from nimble-swift-454 |
…sion/nimble-swift-454-v25-tokenize # Conflicts: # src/v2.5/std/stage_types.dag
|
Resolved the merge conflict with The only manual conflict was the Validation after the merge: rm -rf /tmp/v25-tokenize-conflict-smoke && target/debug/v2-compiler compile --source-root src/v2.5 --output-dir /tmp/v25-tokenize-conflict-smoke --target rustResult: GitHub now reports PR #3423 head — sent from nimble-swift-454 |
|
Closing per operator wrap-up directive 2026-05-20. |
Summary
Adds the v2.5 fork lexer as
.dag. This PR is stacked on Tier 1session/vivid-lynx-807so the tokenizer consumes canonical v2.5 boundary carriers instead of defining local result/token authorities.Current signature:
tokenize(source: Source) -> Outcome<TokenStream>atsrc/v2.5/01_tokenize.dag:538.Outcome/Diagnosticcome fromv2_5.std.diagnosticandToken/TokenShape/TokenStreamcome fromv2_5.std.tokenatsrc/v2.5/01_tokenize.dag:3throughsrc/v2.5/01_tokenize.dag:13.The Tier 1 stage kit now has a matching
TokenizeStageOut { tokens: Outcome<TokenStream> }carrier atsrc/v2.5/std/stage_types.dag:1033; the pipeline header was reconciled to point at the typed stage-port records instead of the stale bareSourceText -> TokenStreamshape.No Rust files are hand-edited.
Stage Shape
Sourceatsrc/v2.5/01_tokenize.dag:15, carrying source text plus both path text and file identity forSourceSpanand diagnosticLocus.TokenStreamfromv2_5.std.token, populated bymake_tokenatsrc/v2.5/01_tokenize.dag:138.DiagnosticthroughOutcome::Rejected, constructed atsrc/v2.5/01_tokenize.dag:130.TokenShape; this replaces the former localTokenKindcoproduct. Keyword and punctuation scans produceShKeyword,ShIdent,ShLit*,ShStr*, punctuation shapes, andShEofdirectly.Cross-Stage Interfaces Consumed
v2_5.std.node.Symbolatsrc/v2.5/01_tokenize.dag:3.v2_5.std.identity.SourceSpanatsrc/v2.5/01_tokenize.dag:4.v2_5.std.diagnostic.{Diagnostic, Outcome, Textual, ByteRange, Unavailable, UserInputBoundary}atsrc/v2.5/01_tokenize.dag:5.v2_5.std.token.{Token, TokenShape, TokenStream}atsrc/v2.5/01_tokenize.dag:13.v2_5.std.stage_types.TokenizeStageOutatsrc/v2.5/std/stage_types.dag:1033records the fail-closed tokenizer stage output shape.Coproduct Receipts
The closed coproduct structures are the receipts; no in-code prose tags are used.
CharacterClassatsrc/v2.5/01_tokenize.dag:21is terminal lexer-local input classification consumed bychar_in_classatsrc/v2.5/01_tokenize.dag:160.LexerStateatsrc/v2.5/01_tokenize.dag:44,ScanOutcomeatsrc/v2.5/01_tokenize.dag:73, andTokenizeExpectationatsrc/v2.5/01_tokenize.dag:77are closed state/result sums for the tokenizer fold.ClassScanState,LineScanState,StringBodyState, andStringTokenRoleatsrc/v2.5/01_tokenize.dag:48,src/v2.5/01_tokenize.dag:52,src/v2.5/01_tokenize.dag:56, andsrc/v2.5/01_tokenize.dag:61are closed lexer-local scan modes.What Dissolved
Outcome<T>and localDiagnosticdissolved intov2_5.std.diagnosticimports atsrc/v2.5/01_tokenize.dag:5; local diagnostic reason constructors becameSymbolrows atsrc/v2.5/01_tokenize.dag:87.TokenKind,Keyword,LiteralKind,Punctuation,Token, andTokenStreamdissolved into canonicalTokenShape/Token/TokenStreamimports atsrc/v2.5/01_tokenize.dag:13.stage_types.dagdissolved into the typedTokenizeStageOutcarrier atsrc/v2.5/std/stage_types.dag:1033; the retained pipeline header now points at the stage-port records.fold_source_charsatsrc/v2.5/01_tokenize.dag:142; the top-leveltokenizesupplies the fold algebra atsrc/v2.5/01_tokenize.dag:542.ShUnknown-style fallback is fail-closed: unexpected characters reject atsrc/v2.5/01_tokenize.dag:487, unterminated strings reject atsrc/v2.5/01_tokenize.dag:372, and unterminated interpolation rejects atsrc/v2.5/01_tokenize.dag:450andsrc/v2.5/01_tokenize.dag:565.Syntax Authority Status
Keyword and punctuation spelling tables remain local bridges because v2.5 does not yet have a canonical
SyntaxSpec.keyword_set/ operator-spec carrier on the Tier 1 base.keyword_table:src/v2.5/01_tokenize.dag:92.single_punct:src/v2.5/01_tokenize.dag:108.double_punct:src/v2.5/01_tokenize.dag:117.Dissolution trigger: replace these rows with the canonical v2.5 syntax-spec projection when that substrate lands.
Regression Coverage
Co-located
.dagregression claims remain for the interpolation edge cases:nested_brace_interpolation_regressionatsrc/v2.5/01_tokenize.dag:594checks that"x {foo({bar: 1})} y"is accepted after nested interpolation braces decrement correctly.unterminated_interpolation_regressionatsrc/v2.5/01_tokenize.dag:628checks that"x {namerejects withunterminated_interpolation.src/v2.5/01_tokenize.dag:638andsrc/v2.5/01_tokenize.dag:643are not executable CI coverage yet. PM confirmed this is blocked on a separate v2.5 verification substrate worker, not local tokenizer scope.Yellow List
Sourceis still local atsrc/v2.5/01_tokenize.dag:15; it should move to a canonical v2.5 source-text carrier when one lands.scan_class,scan_to_eol, andscan_string_bodyall fold over source text). This is accepted for the fork slice and should dissolve into a cursor/span traversal primitive or indexed source view when performance becomes a v2.5 concern.escaped_charatsrc/v2.5/01_tokenize.dag:282; v2process_escapes_loopuses the same fallback atsrc/v2/01_tokenize.dag:459). Fail-closed escape validation should move to the canonical string-literal syntax policy when that syntax carrier lands.Validation
Passed locally after conflict resolution against
session/vivid-lynx-807and stage-contract reconciliation:rm -rf /tmp/v25-tokenize-conflict-smoke && target/debug/v2-compiler compile --source-root src/v2.5 --output-dir /tmp/v25-tokenize-conflict-smoke --target rustResult:
indexed 7 modules,resolved 7 sources,compiled: 11 files emitted,0 diagnostics.