The CRM image build carries the file its analyzers are handed - #31
Open
nguyenngothuong wants to merge 1 commit into
Open
nguyenngothuong wants to merge 1 commit into
nguyenngothuong wants to merge 1 commit into
Conversation
`Directory.Build.props` declares `SonarLint.xml` as an `AdditionalFiles` for every project, and `samples/crm/Dockerfile` assembles its build context by hand — global.json, Directory.Build.props, FlowX.slnx, .editorconfig — without it. The analyzers are then handed a path that does not exist, and the build does not degrade to "no Sonar rules": `dotnet publish` fails with `CS2001` for the missing source file and one `AD0001` per rule that tried to read it. So `docker compose up --build`, which the repository root and samples/crm/README.md both give as the way to run this sample end to end, cannot succeed on a clean checkout. CI never sees it: every workflow starts from `actions/checkout`, so the file is simply there. A hand-assembled context is the only place it can go missing, and there is one. Verified by building the `build` stage to completion against this change. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Signed-off-by: nguyenngothuong <nguyenthuongtb12@gmail.com>
nguyenngothuong
added a commit
to diginno-net/FlowX
that referenced
this pull request
Aug 8, 2026
`custom_field_option` has carried a `label` since migration 0005, `crm.custom.field` writes one for every option, and nothing has ever read it back: `FieldsForEntity` aggregates `o.value` and stops there, so describe answered with values only. Every picklist on every screen therefore showed the identifier. An administrator who typed "Mid-market" into the option box got `mid_market` on the edit form, in the setup detail column, in the filter picker and in the validation-rule value list. A client cannot repair that from its side — it has no way to know the value was ever called anything else, and a transcription in the client is the second copy of a vocabulary, which is the defect `10ba635` removed for built-in enums. `DescribedOption(Value, Label)` carries both, zipped on the server rather than sent as two arrays: a client lining them up by index would line them up wrongly the first time a field had one and not the other. An option whose label was never written is called by its value, which is what every client did for all of them until now. The values stay values. Validation asks whether a written value is a member of the set, which is a question about values, and a label that changed would otherwise invalidate rows that were correct when they were written. Also on this branch, because the fork has to build: `global.json` rolls forward by feature band (votrongdao#32 — no published SDK image satisfies the pin) and the CRM Dockerfile copies `SonarLint.xml` (votrongdao#31). Neither belongs in this commit's argument; both are here because without them nothing compiles. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Signed-off-by: nguyenngothuong <nguyenthuongtb12@gmail.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.
docker compose up --buildcannot succeed on a clean checkout.What happens
Directory.Build.propsdeclaresSonarLint.xmlas anAdditionalFilesfor every project.samples/crm/Dockerfileassembles its build context by hand —global.json,Directory.Build.props,FlowX.slnx,.editorconfig— and does not copy it.The analyzers are then handed a path that does not exist, and the build does not degrade to “no Sonar rules”. It fails:
…one
AD0001per rule that tried to read it, and theCS2001behind them.Both the repository root and
samples/crm/README.mdgivedocker compose up --buildas the way to run this sample end to end, so this is the first thing a new reader does.Why CI never sees it
Every workflow starts from
actions/checkout, so the file is simply there. A hand-assembled build context is the only place it can go missing, and the repository has exactly one.The change
One entry on the
COPYline, and a comment saying why it belongs there so it does not get tidied away again.Verified by building the
buildstage to completion against this change.Separately
On a clean checkout
dotnet restorefails before reaching this, with exit 155:global.jsonpins SDK10.0.110withrollForward: latestPatch, and no publishedmcr.microsoft.com/dotnet/sdkimage provides a10.0.1xxat or above that —10.0.100-nobleexists and is lower,10.0.200/301/302-nobleexist and are a different feature band. Sosdk:10.0-noblecan never satisfy it.That is a policy call rather than a bug, and it is yours to make, so it is not in this PR — I will open an issue with the tag survey unless you would rather it came as a patch.
Signed off under the DCO.