Skip to content

Track technical feature selections in deployment packages - #25

Merged
JTNing merged 56 commits into
mvpfrom
feature/technical-features-track
Jul 28, 2026
Merged

Track technical feature selections in deployment packages#25
JTNing merged 56 commits into
mvpfrom
feature/technical-features-track

Conversation

@JTNing

@JTNing JTNing commented Jul 26, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Preserve database and CI-provider technical selections through the configurator and artifact export flow, and enforce and visualize alternative feature groups.
  • Derive IDE profiles and local Docker stacks from those selections, with selection-aware metadata and runtime validation.
  • Add usable LocalVC/integrated-code-lifecycle configuration and secret-safe Jenkins package configuration and diagnostics.

Branch scope

This branch builds on feature/local-ide-artifacts-generation, which already includes feature/automated-feature-extraction. Extraction and local IDE artifact changes visible in the diff against mvp are inherited; the technical-selection tracking and selection-aware package generation above are the functionality introduced by this branch.

JTNing added 30 commits July 16, 2026 04:34
Slim the authored guided-workflow.json to decision structure and teacher
prose: remove option requiresCapabilities and artifactImpacts, the dead
option consequences and decision reviewGroupId, the hand-pinned
featureModelId and featureModelVersion, and review group featureIds.
A new GuidedWorkflowAssembler repopulates the removed wiring from the
active feature model at serve time, so the served DTO keeps its shape:
capabilities become the union of the selected features' requirements,
artifact impacts restate toggle mappings, review group members are the
referenced group node children, and the model pin is stamped from the
active model. CapabilityResolutionService sources feature capabilities
from the model only, and review groups are validated by group node
reference instead of copied member lists.
Add a warning channel next to the hard integrity checks: a new
GuidedWorkflowDiagnosticsService surfaces selectable functional features
without guided coverage, model groups without a review group, capability
ids no known deployment profile provides, template select/deselect
conflicts, a default template that presets selections, and scaffold TODO
prose. Findings are logged by the guided workflow serve path and by the
profile availability path and never fail a request; hard reference
errors keep throwing. The same finding logic is reused by the extraction
pipeline in the generated-model validation.
…ifest

Re-include the deferred technical candidates as the first technical
features: database with mysql xor postgresql, ci-provider with
integrated-code-lifecycle xor jenkins, and the mandatory localvc
baseline, all maintainer-only. The manifest schema gains the generation
semantics code cannot express: category, default state, relation order,
declared artifact-mapping hints mirroring the curated mapping shapes,
alternative group types for xor groups, and a constraints section that
declares apollon-requires-modeling and the two exclusivity constraints.
The loader validates the new fields statically and the curation step
carries them into the resolved scope.
Add the E3 generation stage to the extraction pipeline. The assembler
turns include entries and conceptual nodes into a complete feature model
through the same domain records the bundled model uses: manifest-ordered
hierarchy, i18n names with manifest overrides, kind and category based
role defaults, auto-derived enabled-key mappings plus declared hints,
anchor-grade evidence references, and deterministic depth-first output.
The catalog assembler regenerates the config-key catalog from the
overlay mappings and scanned YAML defaults and diffs it against the
curated catalog. The validator reuses the shared model and guided
workflow integrity services, enforces the technical role-visibility
rule, cross-checks provided capabilities against the bundled profile,
and reports guided coverage findings with an automation status. The
diff service classifies every generated-versus-curated difference as
intentional-curation, missing-manifest-entry, artemis-drift, or
extractor-gap. The writer emits the four new outputs plus an importable
snapshot folder, and the catalog domain records no longer serialize
derived accessors or null optionals so the generated JSON keeps the
curated schema shape.
…tion with tests

StaticConfigValidationService keeps the curated classpath catalog as its
default but gains a catalog-location property, so a maintainer can point
static validation at a regenerated catalog from the extraction output
explicitly. Add the generation-stage unit tests: assembler hierarchy,
kind defaults, mapping derivation, evidence merging and ordering on
fixtures, catalog regeneration with type derivation and diff, validator
rules for role visibility, capability cross-check, hard workflow errors
and coverage findings, diff classification per class, and loader
coverage for the new manifest fields.
Add an opt-in end-to-end proof on the real checkout: run the full
generation pipeline, import the produced snapshot folder through the
snapshot subsystem, activate it, and spot-check API parity between the
curated and the generated model on the curated intersection. The
generated snapshot serves every curated feature with matching defaults,
its own default selection validates against the mandatory and xor
constraints, the served guided workflow carries identical derived
wiring, guided option availability is unchanged, and every technical
feature stays outside the teacher surface. The smoke test counts follow
the technical include entries.
Add the explicitly invoked syncGuidedWorkflowScaffold Gradle task that
keeps the authored guided workflow structurally in sync with the
manifest include set while never touching prose: a newly included
functional feature gains a stub option with filled wiring and TODO
prose in the decision covering its model group plus a derived review
group entry, an orphan reference is flagged but never deleted, and a
single id rename is rewritten mechanically across all reference lists.
The writer reproduces the authored file style byte-identically on a
no-change run, which the round-trip test pins, and the current bundled
workflow syncs with zero changes. The task stays outside the automatic
drift scan because it writes to a curated resource.
JTNing added 26 commits July 19, 2026 16:16
The regenerated catalog has the same 26-key set and types. Re-baseline only the expected pin-dependent package surface: README verification line, package manifest runtime info, static validation metadata, runtime-check text, and ZIP hash.
@JTNing
JTNing merged commit 4a82165 into mvp Jul 28, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant