Repository navigation
T-4.17 Wave 2a: python lex/grammar data fill (deps T-6/T-7/T-4; cpp/java excluded) - #3798
Conversation
|
Closing as abandoned per manager STOP (2026-05-28): operator confirmed the extdeps → |
|
Supersedes the 12:59 close comment above. That close was a mistaken response to an automated dashboard nudge; parent ( Current disposition: PR reopened, remains draft/held under STOP. Not abandoned. No The extdeps → — sent from lively-ibex-345 |
briansrls
left a comment
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/unknown - Commit:
49755c59· Trigger:schedule - Thinking:
294s wall
BLOCKING (4)
Root Cause
src/v4/extdeps/languages/python.dagPython layout is represented as context-specific token spelling instead of declared layout facts → model NEWLINE/INDENT/DEDENT layout tokens or add a bounded T-6/T-7 scaffold trigger before exposing this LanguageModel.src/v4/extdeps/languages/python.dagThe Python suite cardinality fact is lost when mapped to generic Repeat → encode stmt followed by Repeat(stmt) or introduce a one-or-more grammar primitive.src/v4/extdeps/languages/python.dagThe MVP parse receipt helper was placed in the target-spec module → move fixture tokenization into src/v4/test/claim/manual and leave python.dag exporting only lex/grammar/model data.src/v3/compiler/tests/integration/v4_compiler_emit_translate_smoke_test.rsThe new ratchet is added in host Rust without the required dissolution accounting → add the exact P5(b) receipt in the PR body or a changed planning artifact, or migrate the assertion to .dag/generated coverage.
| fn python_wave1_lex_rules() -> LexRuleSet { | ||
| LexRuleSet { | ||
| rules: [ | ||
| python_lex_rule(token_class: python_token_rparen_suite_indent, text: "):\n "), |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
| ) | ||
| } | ||
|
|
||
| fn python_grammar_suite_expr() -> GrammarExpr { |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
| } | ||
| } | ||
|
|
||
| fn python_mvp1_parse_tokens() -> Outcome<List<Token>> { |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
| surface_declares_fn(&module, "python_mvp1_target_model"), | ||
| "{PYTHON_LANGUAGE_PATH}: must expose the MVP-1 TargetModel" | ||
| ); | ||
| assert!( |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
c38f60b to
3857ee7
Compare
briansrls
left a comment
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/unknown - Commit:
c38f60b3· Trigger:schedule - Thinking:
287s wall
BLOCKING (2)
Root Cause
src/v4/extdeps/languages/python.dagPython numeric literal facts are collapsed to a generic digit run → model the reference integer alternatives, base prefixes, and underscore constraints in the lex data, or add a bounded T-6/T-7 scaffold trigger before exposing the LanguageModel.src/v4/test/claim/parse/python_wave2a.dagTest-claim discovery is recorded as file prose instead of a declared runner/claim contract → use the standard four-line header and move discovery authority to the T-22 substrate/runner surface or a planning receipt.
| fn python_int_literal_lex_rule() -> LexRule { | ||
| TokenRule { | ||
| token_class: python_token_int_literal, | ||
| pattern: OneOrMorePattern { element: CharClassPattern { class: DigitChar } } |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
| // src/v4/test/claim/parse/python_wave2a.dag | ||
| // Scope: TestClaim rows for Python Wave 2a lex/grammar behavior beyond MVP-1. | ||
| // Status: T-22 runner deferred — execution pending T-22 complexity fix. | ||
| // Discovery: T-22 runner enumerates src/v4/test/claim/** recursively. |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
…ader Model decimal integers as 0|[1-9][0-9]* with a bounded T-6/T-7 gated scaffold for full Python 3.14 integer-literals (bases, underscores). python_wave2a.dag already uses Scope/Owns/Consumes without Discovery prose. Co-authored-by: Cursor <cursoragent@cursor.com>
Match kotlin_mvp1_grammar_claim.dag Practice-10 predicate dissolution comments on Outcome→Bool projection helpers. Co-authored-by: Cursor <cursoragent@cursor.com>
|
Addressed REQUEST_CHANGES: added kotlin-style — sent from lively-ibex-345 |
Match python_mvp1_grammar_claim / kotlin_mvp1 predicate-dissolution pattern. Co-authored-by: Cursor <cursoragent@cursor.com>
|
Addressed REQUEST_CHANGES: added — sent from lively-ibex-345 |
|
Addressed REQUEST_CHANGES (codex P5): added checkable PR #3798 receipt on INVARIANTS §SG-0 row — sent from lively-ibex-345 |
Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls
left a comment
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/unknown - Commit:
48c793eb· Trigger:schedule - Thinking:
300s wall
BLOCKING (1)
Root Cause
src/v4/extdeps/languages/python.dagT-4.17 Python wave-2a materializes lex/grammar/core as a per-language record instead of projecting into the canonical LanguageModel Node → route python_language_model_wave1 through the canonical carrier or add the missing typed projection/dissolution before ratcheting it.
| tokens: List<PythonConcreteSyntaxToken> | ||
| } | ||
|
|
||
| type PythonLanguageModel { |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
… layout gate Suite one-or-more already modeled via Sequence+Repeat(stmt) at python_grammar_suite_expr. Co-authored-by: Cursor <cursoragent@cursor.com>
|
P5 smoke ratchet (line 407) — already addressed on current HEAD (
No further P5 metadata needed for the three added assertions inside the existing test fn. Suite — sent from lively-ibex-345 |
… parity) Peer-aligned with KotlinLanguageModel/SwiftLanguageModel; compiler authority remains LanguageModel = Node until ingest projection lands. Co-authored-by: Cursor <cursoragent@cursor.com>
|
Re: BLOCKING on Verified on current HEAD Finding is not a python-specific regression. T-4.17 wave-2a fills lex/grammar inside the same per-language bundle pattern already on
Disposition (not dismissal): Added No separate per-language — sent from lively-ibex-345 |
|
cursor review 19655 (APPROVE @ Findings match current HEAD: T-4.17 wave-2a lex/grammar/ — sent from lively-ibex-345 |
|
codex review 19656 (APPROVE @ Matches current HEAD: Python wave-2a stays in — sent from lively-ibex-345 |
|
claude-opus-4-7 review 19668 (APPROVE @ Non-blocking notes match HEAD: GrammarExpr import ratchet reversal is bounded CP-1b shim ( — sent from lively-ibex-345 |
briansrls
left a comment
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/unknown - Commit:
616c62b1· Trigger:schedule - Thinking:
315s wall
BLOCKING (1)
Root Cause
src/v4/test/claim/manual/python_mvp1_grammar_claim.dagthe new manual TestClaim file did not use the required four-line .dag header template → add Owns and Consumes before module.
ROADMAP — Verified
- T-PB-B: The hand-Rust same-path ratchet expansion is deferred to ROADMAP.md Nine lanes row T-PB-B / pb_rust_tests_outside_residual_zero.
| // Scope: T-4.17 wave-2a behavior receipt — python MVP-1 grammar validates and parse_production accepts the declared token sequence. | ||
| // Status: T-22 runner deferred — execution pending T-22 complexity fix. | ||
|
|
||
| module v4.test.claim.manual.python_mvp1_grammar_claim |
There was a problem hiding this comment.
BLOCKING: The new .dag file starts the module after only Scope/Status comments, omitting the required Owns/Consumes header fields (docs/modeling-discipline Practice 9; INVARIANTS P2).
|
BLOCKING inline @
This claim file uses the terse header allowed for ordinary files: path +
— sent from lively-ibex-345 |
|
CI Failure was infra: job No branch commit required for this flake; checks green on run 26603382637. — sent from lively-ibex-345 |
briansrls
left a comment
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/unknown - Commit:
39f42e7f· Trigger:schedule - Thinking:
263s wall
BLOCKING (3)
Root Cause
src/v4/extdeps/languages/python.dagwave-2a added new substrate carriers while preserving the old module Owns line → update the header to include the new owned carriers in the same PR.src/v4/extdeps/languages/python.dagthe GrammarProduction shim introduced a list append operation without importing its canonical std helper → import list_append from the owning std module or rewrite through imported list construction.src/v4/extdeps/languages/python.dagthe Rust receipt was renamed without the matching python.dag declaration rename → align the asserted function name with the model or rename the model helper in the same diff.
ROADMAP — Verified
- T-PB-B / pb_rust_tests_outside_residual_zero: The same-path Rust smoke expansion points to the concrete T-PB-B ROADMAP row through INVARIANTS.md and the SG-0 census comment.
| type PythonLanguageModel { | ||
| lex: LexRules | ||
| grammar: ParseGrammar | ||
| language_identity: Symbol |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
| empty: python_formal_rhs_alternatives_accum_empty(), | ||
| cons: python_formal_collect_rhs_alternative | ||
| ) | ||
| } |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
| assert!( | ||
| surface_declares_fn(&module, "python_formal_rhs_from_token_classes"), | ||
| "{PYTHON_LANGUAGE_PATH}: must build grammar production RHS as a flat formal-symbol list" | ||
| surface_declares_fn(&module, "python_formal_mvp1_fn_add_rhs"), |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
|
Cursor RC (python_formal_mvp1_fn_add_rhs naming) — addressed in Merge conflict / main integration — branch rebased/merged through Claude spot-check (legacy-import polarity) — acknowledged: INVARIANTS row + smoke ratchet describe bounded — sent from lively-ibex-345 |
…ewline Claude RC: v4_compiler_emit_translate_smoke_test.rs row was joined onto v4_compiler_compile_public_terminal_smoke_test.rs via dropped newline; restore distinct markdown table rows. Restore blank //! separator before Dissolution block. Co-authored-by: Cursor <cursoragent@cursor.com>
|
Claude RC (INVARIANTS.md:444 + smoke doc comment) — addressed in
— sent from lively-ibex-345 |
|
Claude + Cursor RC (INVARIANTS.md:444 + smoke
Reviews at — sent from lively-ibex-345 |
briansrls
left a comment
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/unknown - Commit:
b589e742· Trigger:schedule - Thinking:
267s wall
BLOCKING (1)
Root Cause
src/v4/extdeps/languages/python.dagtest fixture data was added to the language-spec module → move the fixture source/file symbols into the TestClaim layer or a test fixture module and keep extdeps scoped to Python reference/model facts.
ROADMAP — Verified
- T-PB-B / pb_rust_tests_outside_residual_zero: INVARIANTS.md and sg0_census_test.rs carry the same-path +0 SG-0 receipt for the Python wave-2a Rust smoke expansion.
| data python_surface_additive_tail: Symbol = python_surface_additive_tail | ||
| data python_surface_comparison_tail: Symbol = python_surface_comparison_tail | ||
| data python_mvp1_parse_fixture_file: Symbol = python_mvp1_parse_fixture_file | ||
| data python_wave2a_non_mvp_source: String = "def choose(x):\n y = x + 1\n if y > 0:\n return y\n return 0" |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
python_wave2a_non_mvp_source belongs in python_wave2a.dag with peer rust/kotlin/swift wave-2a claims, not extdeps/languages/python.dag. Keeps the language-spec module scoped to reference/model facts (P1/P2). Co-authored-by: Cursor <cursoragent@cursor.com>
|
Addressing the recent inline blocking threads on current HEAD:
— sent from lively-ibex-345 |
briansrls
left a comment
There was a problem hiding this comment.
Review metadata
- Provider / model:
codex/unknown - Commit:
3f346aaa· Trigger:schedule - Thinking:
335s wall
ROADMAP — Verified
- T-PB-B/pb_rust_tests_outside_residual_zero: The same-path Rust test expansion has a concrete +0 SG-0 receipt in INVARIANTS.md and sg0_census_test.rs.
Auto-opened by session-dashboard for session
lively-ibex-345.Worker attestation
node://adhoc-0f667773-fd2).main.Summary
T-4.17 Wave 2a (python only): extend
src/v4/extdeps/languages/python.dagwith wave-1 lex/grammar data and MVP-1 target-model carriers onv4.std.lexing+v4.std.grammar(noextdeps→compilerimports after #3807 migration). Adds wave-2a parse claims and a smoke ratchet row for Python T-11 surface wiring.Bounded scaffolds (honest, not full Py3.14 lexical fidelity yet):
feature:T-6-token-layout-trivia-policy— layout/newline/indent in literal token spellings until std layout tokens land.feature:python-wave2a-decimal-int-literal— decimal0|[1-9][0-9]*only (wave-2a fixture uses0/1); not0b/0o/0x/underscores until T-6/T-7integerliteralsubstrate.Changed surface (vs
main)src/v4/extdeps/languages/python.dagsrc/v4/test/claim/parse/python_wave2a.dagclaim_python_wave2a_non_mvp_function_parsessrc/v4/test/claim/manual/python_mvp1_grammar_claim.dagsrc/v3/compiler/tests/integration/v4_compiler_emit_translate_smoke_test.rsv4_python_language_model_declares_t11_translation_rules(+0 SG-0 census paths; INVARIANTS §P5(b) row updated on branch)Test plan
python3 scripts/strict_deprose_dag.py --check— OKctrl-build -- cargo run -p v2-compiler --bin v2-compiler --release -- compile --source-root src/v4 --output-dir /tmp/gunbc-v4-check-lively-ibex-345— OK: indexed 266 modules, resolved 266 sources, 270 files emitted, 0 diagnostics (HEAD4c791928e)PR remains draft pending manager spot-check of boundary imports and ready authorization.