Repository navigation
2.3 Render authors five toolchain-requirement keys that README §1 gives to 2.2 Plan alone; #1996 deletes the only comment that marked it 'not yet' #1997
Copy link
Copy link
Open
Labels
tech-debtInternal codebase or process debt, not a C-Next language defectInternal codebase or process debt, not a C-Next language defect
Milestone
Description
Activity
- addedtech-debtInternal codebase or process debt, not a C-Next language defectInternal codebase or process debt, not a C-Next language defect
on Oct 11, 2026 - added a commit that references this issue
on Oct 11, 2026 devin-ai-integration commented
on Oct 11, 2026 ContributorMore actionsDecision: (a). Owner direction, 2026-10-11. I proposed that §1 already decides this (its Ownership table gives 2.2 "toolchain requirements", and 2.3 is "formatting only -- no decisions"), so (a) applies unless he said otherwise. He answered "make it so".
Starting work on
refactor/1997-plan-owns-requirements. Approach:- Render no longer records requirements. It reports the form it emitted, as an emission fact: a designated initializer, a compound literal, or an LDREX/STREX loop (with its site). It says nothing about what that form costs.
IEmissionFactsgains those facts plusdebugMode, andEmissionPlan.builddecides each key:baseline-c/baseline-cppfromcppModecpp-designated-initializerandcpp-compound-literalonly in C++ modeoverflow-panic-hosted-libcwhen the plan has clamp helpers and the run is in debug modeatomic-ldrex-cmsis, with its sites
getToolchainRequirements()reads the plan alone.ToolchainRequirements.record,collectand therecordedmap are deleted.- Generated output must be byte-identical. A mutation that drops one migrated key from the plan must turn a banner fixture red, with a fixture not using that key as the control.
- added a commit that references this issue
on Oct 11, 2026 devin-ai-integration commented
on Oct 11, 2026 ContributorMore actionsBox 2 evidence, at
fea657d94onrefactor/1997-plan-owns-requirements:git grep -n 'ToolchainRequirements.record(\|type: "requires"' -- src ':!**/__tests__/**'prints nothing (exit 1).record,collectand therecordedmap are deleted. Render now reports only the form it emitted:emittedDesignatedInitializer,emittedCompoundLiteral, and anldrex-strex-loopsite.EmissionPlan.builddecides each key intoformRequirements.getToolchainRequirements()returnsEmissionPlan.requirements(plan)alone.- Generated output is unchanged on
tests/issue-502(9 passed),tests/atomic(11),tests/issue-522(2) andtests/bit-indexing(13), and the tree is clean afterwards. CI runs the full suite. - Dropping a migrated key from the plan turns banner fixtures red:
- I removed the
cpp-compound-literalpush.tests/issue-502: 7 passed, 2 failed. The banner lostcompound literals in C++. Controltests/bit-indexing: 13 passed. - I made the
atomic-ldrex-cmsisbranch unreachable.tests/atomic: 3 passed, 8 failed. Controltests/issue-502: 9 passed. - No fixture runs in debug mode, so
overflow-panic-hosted-libcis pinned by a unit test inEmissionPlan.test.ts. I made the key ignoredebugMode, and that test failed (1 failed, 219 passed). - After restoring the code, all three directories pass again and the tree is clean.
- I removed the
- added a commit that references this issue
on Oct 11, 2026
Metadata
Metadata
Assignees
Labels
tech-debtInternal codebase or process debt, not a C-Next language defectInternal codebase or process debt, not a C-Next language defect
Projects
- StatusShow more project fieldsWIP
What
docs/architecture/README.md§1, Ownership table, atmain0cd96994b(lines 45-46):After #1928 (PR #1996), 2.2's planned blocks carry their own requirements:
float-assert-c11and the fourcritical-*keys, read off the plan. Every other requirement key is still decided and recorded inside 2.3 Render, at the branch that emits the text:0cd96994b)baseline-c/baseline-cppCodeGenWalker.ts:1593, every file, fromcppModecpp-designated-initializerCodeGenWalker.ts:3262cpp-compound-literalCodeGenWalker.ts:3300overflow-panic-hosted-libcHelperGenerator.ts:57, for the debug clamp helpers that the plan'sclampOpsalready decidesatomic-ldrex-cmsisAtomicGenerator.ts:113, arequireseffect recorded byCodeGenerator.applyEffects(CodeGenerator.ts:160)Until #1996, one comment recorded this gap, on
CodeGenWalker.addGeneratedHelpers: "the banner also carries requirements this plan does not yet own (the mode baseline, C++ initializer forms, atomics)". #1996 deletes that comment, because its first half (the copy) is fixed. Its README edit then describes the split as the design: "which toolchain features a run's Render emitters required (a 2.2 planned block's features are 2.2's decision, read off the plan, #1928)". That edit contradicts §1's table in the same file.This is not a parallel path, because each key has one author. It is an ownership divergence: §1 names 2.2, and the code uses 2.3. No open issue tracked it. I searched all 487 open issues on 2026-10-11 for the key names,
ToolchainRequirements,requireToolchainand "toolchain requirement". Found while reviewing #1996.Reproduction
The first command prints the Render sites in the table above. It also prints
CodeGenWalker.ts:1921(registerPlannedToolchain), which #1996 deletes.Decision needed
Definition of done
git grep -n 'ToolchainRequirements.record(\|type: "requires"' -- src ':!**/__tests__/**'prints no Render site. A mutation that drops one migrated key from the plan turns a banner fixture red.instrumentation/bullet agree on who authors each requirement key.