Sync copilot knowledge base

This commit is contained in:
vczh
2026-06-16 18:06:22 -07:00
parent e4fe74c068
commit 5914c817a3
6 changed files with 71 additions and 12 deletions
+12 -4
View File
@@ -3,11 +3,11 @@
# Orders
- Process staged tasks one by one with verification [15]
- Port fixes from imports to source repositories [7]
- Verify generated artifacts with downstream consumer checks [7]
- Verify generated artifacts with downstream consumer checks [8]
- Port fixes from imports to source repositories [8]
- Crash early instead of adding error-tolerance fallbacks [6]
- Make `Stop()` drain asynchronous work before returning [5]
- Proactively remove code made redundant by refactoring [5]
- Proactively remove code made redundant by refactoring [6]
- Make `Stop()` drain asynchronous work before returning [6]
- Use `WString::IndexOf` with `wchar_t` (not `const wchar_t*`) [4]
- Use `collections::BinarySearchLambda` on contiguous buffers (guard empty) [4]
- Use `vl::Exception` for expected semantic failures and `CHECK_ERROR` for invariants [3]
@@ -95,6 +95,8 @@ Use the platform's final callback boundary when available. For WinHTTP async req
Renderer clients should explicitly stop their network transport before stack-owned channel wrappers are destroyed, so callback shutdown completes before local wrapper storage goes out of scope.
Named-pipe shutdown should cancel pending overlapped pipe I/O before waiting for read callbacks to drain, especially when the remote side closes the pipe first. Channel-client destruction should also avoid stopping an already-disconnected transport connection.
## Port fixes from imports to source repositories
Do not treat files copied into `Import` or generated release files as the source of truth. When a fix affects imported `Vlpp` files, make the upstream change in `Vlpp`, regenerate its release output, and then copy the generated files downstream. When a `.github` instruction or script fix is needed, port it through `Tools/Copilot`.
@@ -105,6 +107,8 @@ When validating GacUI remoting reveals a transport issue, keep the same source-o
For dependency release syncs, copy generated files from the upstream `Release` folder into the downstream `Import` folder and exclude `IncludeOnly` unless the task explicitly requires it. Do not hand-edit the downstream import copy.
When importing multiple dependency releases into GacUI, keep the chain explicit: regenerate and import `VlppOS` and `Workflow` release artifacts, then validate the GacUI remoting scenarios that consume both imported APIs.
If a Workflow task exposes a `VlppReflection` collection-wrapper issue, fix the wrapper behavior in `VlppReflection`, regenerate and verify its release output, then update the Workflow import from that release instead of patching Workflow's imported copy.
## Validate expectations against implementation and existing tests
@@ -201,6 +205,8 @@ When generated RPC JSON values or request/response transcripts are part of the c
When a generator produces runnable sample applications, verify the generated output through the actual app workflow too. For example, generated ChatBot RPC code should be checked by running the server and multiple clients through joins, chat messages, client exit, and server shutdown, not only by confirming generation succeeds.
When a shared dispatcher schema such as `Rpc.d.ts` changes, type-check the shared schema itself as well as generated fixtures so envelope changes are caught even before concrete generated values instantiate every request shape.
## `vl::regex` separator regex: `L"[\\/\\\\]+"`
In `vl::regex::Regex`, both `/` and `\\` are escaping characters, and incorrect escaping inside `[]` can throw errors like `Illegal character set definition.`
@@ -237,6 +243,8 @@ When a destructor only resets `Ptr`, shared-pointer, or similar owning members t
When splitting a monolithic implementation into focused files, delete empty source stubs and duplicate state fields in the same cleanup. Update project metadata and includes immediately so the old file names do not remain as stale references.
For application refactors, remove helper wrappers that only duplicate an already-clear direct call. For example, direct `GetChannels()[WString::Unmanaged(RpcChannel)]` access is preferable to a `GetRpcChannel` helper when the intended behavior is still to fail if the channel is missing.
## Keep design documentation aligned with code after refactoring
When a refactoring changes architecture or behavior, update the corresponding design documents in the same task rather than deferring it. After a structural change, re-read the related documents and reconcile anything that became misaligned (for example, descriptions of a transport path that no longer exists). Treat documentation drift left by a previous refactoring as part of the current cleanup.