chore(docs): retire the knowledge audit docs in favour of tracked issues - #165
Merged
Merged
Conversation
The audit and its implementation plan have served their purpose: Phases 0 through 3 are closed, and Phase 4 closed everything except the runtime tier. What is left is a handful of independent work items, which are better tracked as issues than as two long documents that go stale between edits — the plan already carried one stale line claiming eight red eval cases that b3d39cc had cleared. The remaining items, with the audit context they need, now live in #160 (L4 runtime oracle), #161 (grounding gate on every generate command, property-honesty reconciliation), #162 (security and data-entity depth), #163 (confirm or close the per-family offline shape check) and #164 (RDL precision design and the form engine extras from the predecessor). Nothing else in the repository linked to either document. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
jackyclever
pushed a commit
to jackyclever/d365fo-cli
that referenced
this pull request
Aug 7, 2026
…ynamics365ninja#164) The `eval` CI job has been red since dynamics365ninja#167 merged: `eval coverage --check` reported COVERAGE_DRIFT because dynamics365ninja#167 added the `form-clone` capability without regenerating eval/COVERAGE.md. (dynamics365ninja#165's red build-test and knowledge-audit were an Actions outage — "Failed to resolve action download info" — not code, and are already green on main.) Writing the missing eval case surfaced a real defect in the capability the stale row was hiding. `--rebind` renamed the datasource and repointed the control-level <DataSource> nodes, but left the design's own <DataSource> and <TitleDataSource> naming the datasource the clone no longer has — a form that compiles and fails at runtime. The cause is that those two are first-level children of <Design>, so they are written as <DataSource xmlns="">, and the pattern was anchored on the bare "<DataSource>"; the control-level ones nest under <Controls xmlns="">, inherit the namespace, appear bare, and so were the only ones matched. <JoinSource> was not handled at all, so a joined datasource kept pointing at its parent's old name. The element list is grounded on the live installation rather than guessed: across 300 shipped ApplicationSuite forms, DataSource, TitleDataSource, WorkflowDataSource, PresenceDataSource and JoinSource are the only elements whose value is a datasource name — the rest of the *DataSource* family is either a container or holds something else ( DataSourceChangeGroupMode is an enum, DataSourceRelation names a relation). Matching now tolerates attributes and backreferences the closing tag, so it cannot bleed from DataSource into DataSourceLinks. The unit fixture's <Design> went straight to <AxFormControl> and so never had the nodes that break — it now carries the design properties and a joined datasource, which is what makes the four new tests fail before the fix. L2-form-clone-basic clones the two-datasource details-transaction form: 19 KB in, and the clone differs on exactly the root <Name> and the class declaration and is byte-identical everywhere else, which is the guarantee worth locking for string surgery over a document this code does not own. It is a plain clone rather than a rebind because MiniAot has only FmVehicle and FmVehicleLine: rebinding the simple form onto FmVehicleLine binds a <DataField>Make</DataField> that table does not have, and the richer form already uses both, so either golden would enshrine a form nobody should ship. The rebind path is covered by the unit tests instead. A fixture table would let it graduate to an eval case; left as follow-up. Verified locally against all four CI jobs: build clean, 1178 tests pass, knowledge audit clean, 52/52 eval cases with `coverage --check` green, and no skills drift. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SuTvn5ymx3HAUtGjsxBuaA
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.
Removes
docs/KNOWLEDGE_AUDIT.mdanddocs/KNOWLEDGE_AUDIT_PLAN.md.The audit was a snapshot of two competencies — the D365FO/X++ knowledge this repo ships, and whether the objects it generates are valid against
Microsoft.Dynamics.AX.Metadata— plus a phased plan to close what it found. Phases 0–3 are closed. Phase 4 closed everything but the runtime tier: the catalog replays in CI,eval verify-buildcompiles all 51 goldens withxppcon a real installation with zero unattributed diagnostics, andeval/COVERAGE.mdreports K ∧ E ∧ T per family.What remains is a handful of independent work items. They are better tracked as issues than as two long documents that go stale between edits — the plan already carried one stale line claiming eight red eval cases that b3d39cc had cleared.
Each issue carries the audit context it needs, so nothing is lost with the files:
No code changes. Nothing else in the repository linked to either document — the only references were the two docs pointing at each other.
🤖 Generated with Claude Code