Partial rendering with spec change detection#221
Merged
Conversation
NejcS
commented
Jun 15, 2026
Contributor
Author
|
@kaja-s I took the liberty of making some TUI design decisions. What do you think of the example screenshot above? |
41417a7 to
b091fc3
Compare
Contributor
|
"Render from functionality 6..." > "Render from changed functionality 6..." Mogoče to bolje skomunicira zakaj obstaja ta možnost. |
Replace the coarse "spec changed -> re-render the whole affected module" behavior with functionality-level change detection. On re-render, each module's current functional specs are diffed against the set rendered last time and classified (added / removed / edited / moved); rendering resumes from the earliest affected functionality, keeping the unchanged prefix instead of rebuilding from scratch. - Persist the rendered functionality list per module in .codeplain/module_metadata.json, committed per-FRID so an interrupted render still has an accurate baseline (storing raw FR markdown so code-variable FRs are not falsely flagged as edited). - change_detection.py computes the earliest affected FRID; non-functional changes (definitions, impl reqs) and missing baselines fall back to a full re-render. - get_render_choices offers the optimized "render from changed functionality" as the default, alongside full-rebuild and reset options; a functionality appended past the render frontier is treated as a normal continue. - TUI defaults to the fastest (least-work) choice. Remove the obsolete --smart flag. Backward compatible: builds without the new metadata fall back to a full re-render. Covered by tests in test_change_detection.py, test_partial_rendering.py, and test_plain_modules.py.
63fad66 to
805fa1e
Compare
pedjaradenkovic
approved these changes
Jun 19, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Replace the coarse "spec changed -> re-render the whole affected module"
behavior with functionality-level change detection. On re-render, each module's
current functional specs are diffed against the set rendered last time and
classified (added / removed / edited / moved); rendering resumes from the
earliest affected functionality, keeping the unchanged prefix instead of
rebuilding from scratch.
.codeplain/module_metadata.json, committed per-FRID so an interrupted render
still has an accurate baseline (storing raw FR markdown so code-variable FRs
are not falsely flagged as edited).
changes (definitions, impl reqs) and missing baselines fall back to a full
re-render.
as the default, alongside full-rebuild and reset options; a functionality
appended past the render frontier is treated as a normal continue.
flag.
Backward compatible: builds without the new metadata fall back to a full
re-render. Covered by tests in test_change_detection.py, test_partial_rendering.py,
and test_plain_modules.py.