Conversation
…ection (#324) Parsing is now presence-based instead of gated by variant: - All sections (imports, implementations, filters, requirements) are parsed unconditionally based on their presence in the YAML - variant field is optional in JSON Schema and domain model - Cycle detection added to import traversal (CircularImportError) - parsing_graph edges now carry edge_type ('import'/'implementation') - Filter processor uses edge_type instead of variant to skip implementation edges - Removed model_is_external utility and all variant assertions/match blocks Signed-off-by: Jimisola Laursen <jimisola@users.noreply.github.com> Signed-off-by: Jimisola Laursen <jimisola@jimisola.com>
Member
Author
Traversal Design DecisionFrom any initial URN's perspective:
Example (4-layer graph, C1 as initial)
Decisions
See |
11 tasks
- Add test_circular_import_raises with fixture data (node-a ↔ node-b cycle) - Add Q3 answer to PLAN_remove_variants.md (presence-based parsing for all URNs) Signed-off-by: Jimisola Laursen <jimisola@users.noreply.github.com>
…se cleanup (closes #73, closes #324) - Implementation chains are now traversed recursively (library-uses-library model) replacing the flat leaf-node approach - Add CircularImplementationError with cycle detection for implementation chains - Add DatabaseFilterProcessor._remove_implementation_requirements() to exclude implementation-child requirement rows via post-parse SQL DELETE + CASCADE - Add docs/DESIGN.md capturing traversal architecture and key decisions - Update CLAUDE.md with Design Decisions section and corrected architecture description - Update docs/modules/ROOT/pages/how_it_works.adoc to reflect SQLite pipeline and two-phase traversal - Update docs/PLAN_remove_variants.md: revise Q1/Q2, add Q4-Q6 Signed-off-by: Jimisola Laursen <jimisola@users.noreply.github.com>
datamodel-codegen no longer needs a RootModel wrapper after the variant field became optional in 5c052a2.
Design decisions are now documented in CLAUDE.md and DESIGN.md. Signed-off-by: Jimisola Laursen <jimisola@jimisola.com>
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.
Summary
variant(system/microservice/external) as a behavioral gate — parsing is now presence-based (closes feat: investigate removing variant (system/microservice/external) #324)_remove_implementation_requirements()inDatabaseFilterProcessordeletes out-of-scope requirement rows via SQL DELETE + CASCADECircularImplementationErrorand cycle detection for implementation chains (independent visited set, mirrorsCircularImportError)docs/DESIGN.mdas a permanent architectural referenceCLAUDE.mdwith a Design Decisions section capturing 7 architectural rulesdocs/modules/ROOT/pages/how_it_works.adocto reflect current SQLite pipeline and two-phase traversalDesign decisions
requirements.ymlalways fully parsedTest plan
test_circular_import_raises— node-a → node-b → node-a cycle raisesCircularImportErrortest_circular_implementation_raises— lib-a → lib-b → lib-a cycle raisesCircularImplementationErrortest_implementation_traversal_recursive— root → lib-a → lib-b → lib-c, all 4 URNs in raw_datasets, correct graph edgeshatch run dev:pytest tests/unit)Closes
Closes #73
Closes #324