@cratis/pi 7.101.0 → 7.103.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (168) hide show
  1. package/package/corpus/harnesses/copilot/instructions/github-actions.instructions.md +17 -0
  2. package/package/corpus/harnesses/copilot/instructions/profiles.instructions.md +10 -1
  3. package/package/corpus/harnesses/copilot/instructions/pull-requests.instructions.md +2 -0
  4. package/package/corpus/harnesses/copilot/instructions/secrets.instructions.md +4 -0
  5. package/package/corpus/hooks/README.md +11 -1
  6. package/package/corpus/hooks/scripts/cratis-check-pr.mjs +12 -1
  7. package/package/corpus/hooks/scripts/cratis-guard-secrets.sh +79 -23
  8. package/package/corpus/hooks/scripts/cratis-guard-writes.sh +145 -40
  9. package/package/corpus/rules/github-actions.md +17 -0
  10. package/package/corpus/rules/profiles.md +10 -1
  11. package/package/corpus/rules/pull-requests.md +2 -0
  12. package/package/corpus/rules/secrets.md +4 -0
  13. package/package/corpus/skills/analyzing-dotnet-performance/LICENSE +23 -0
  14. package/package/corpus/skills/analyzing-dotnet-performance/NOTICE +36 -0
  15. package/package/corpus/skills/analyzing-dotnet-performance/SKILL.md +214 -0
  16. package/package/corpus/skills/analyzing-dotnet-performance/references/async-patterns.md +122 -0
  17. package/package/corpus/skills/analyzing-dotnet-performance/references/collections-and-linq.md +220 -0
  18. package/package/corpus/skills/analyzing-dotnet-performance/references/critical-patterns.md +291 -0
  19. package/package/corpus/skills/analyzing-dotnet-performance/references/io-and-serialization.md +135 -0
  20. package/package/corpus/skills/analyzing-dotnet-performance/references/memory-and-strings.md +219 -0
  21. package/package/corpus/skills/analyzing-dotnet-performance/references/regex-patterns.md +95 -0
  22. package/package/corpus/skills/analyzing-dotnet-performance/references/structural-patterns.md +38 -0
  23. package/package/corpus/skills/binlog-generation/LICENSE +23 -0
  24. package/package/corpus/skills/binlog-generation/NOTICE +22 -0
  25. package/package/corpus/skills/binlog-generation/SKILL.md +129 -0
  26. package/package/corpus/skills/check-bin-obj-clash/LICENSE +23 -0
  27. package/package/corpus/skills/check-bin-obj-clash/NOTICE +27 -0
  28. package/package/corpus/skills/check-bin-obj-clash/SKILL.md +127 -0
  29. package/package/corpus/skills/check-bin-obj-clash/references/common-causes-and-fixes.md +206 -0
  30. package/package/corpus/skills/coverage-analysis/LICENSE +23 -0
  31. package/package/corpus/skills/coverage-analysis/NOTICE +32 -0
  32. package/package/corpus/skills/coverage-analysis/SKILL.md +198 -0
  33. package/package/corpus/skills/coverage-analysis/references/guidelines.md +68 -0
  34. package/package/corpus/skills/coverage-analysis/references/output-format.md +91 -0
  35. package/package/corpus/skills/coverage-analysis/references/report-generation.md +58 -0
  36. package/package/corpus/skills/coverage-analysis/references/setup-discovery.md +307 -0
  37. package/package/corpus/skills/coverage-analysis/scripts/Compute-CrapScores.ps1 +80 -0
  38. package/package/corpus/skills/coverage-analysis/scripts/CoverageData.ps1 +272 -0
  39. package/package/corpus/skills/coverage-analysis/scripts/Extract-MethodCoverage.ps1 +65 -0
  40. package/package/corpus/skills/cratis-ci-pipeline-performance/LICENSE +2 -0
  41. package/package/corpus/skills/cratis-ci-pipeline-performance/SKILL.md +201 -0
  42. package/package/corpus/skills/cratis-ci-pipeline-performance/references/build-once-and-shard.md +158 -0
  43. package/package/corpus/skills/cratis-ci-pipeline-performance/references/caching.md +86 -0
  44. package/package/corpus/skills/cratis-ci-pipeline-performance/references/flaky-and-hung-jobs.md +70 -0
  45. package/package/corpus/skills/cratis-ci-pipeline-performance/references/publish-pipelines.md +67 -0
  46. package/package/corpus/skills/cratis-ci-pipeline-performance/references/required-checks-and-path-filters.md +117 -0
  47. package/package/corpus/skills/cratis-ci-pipeline-performance/references/runner-sizing-and-images.md +65 -0
  48. package/package/corpus/skills/cratis-ci-pipeline-performance/references/security-and-pinning.md +73 -0
  49. package/package/corpus/skills/cratis-ci-pipeline-performance/references/sources.md +33 -0
  50. package/package/corpus/skills/cratis-ci-pipeline-performance/references/test-setup-cost.md +82 -0
  51. package/package/corpus/skills/cratis-ci-pipeline-performance/scripts/ci-timings.sh +356 -0
  52. package/package/corpus/skills/cratis-ci-pipeline-performance/scripts/fixtures/jobs/1003.json +79 -0
  53. package/package/corpus/skills/cratis-ci-pipeline-performance/scripts/fixtures/jobs/1007.json +79 -0
  54. package/package/corpus/skills/cratis-ci-pipeline-performance/scripts/fixtures/jobs/1010.json +79 -0
  55. package/package/corpus/skills/cratis-ci-pipeline-performance/scripts/fixtures/runs.json +102 -0
  56. package/package/corpus/skills/cratis-engineering-local-cross-repo-verification/LICENSE +2 -0
  57. package/package/corpus/skills/cratis-engineering-local-cross-repo-verification/SKILL.md +244 -0
  58. package/package/corpus/skills/cratis-engineering-local-cross-repo-verification/references/docker-images.md +86 -0
  59. package/package/corpus/skills/cratis-engineering-local-cross-repo-verification/references/dotnet-nuget.md +87 -0
  60. package/package/corpus/skills/cratis-engineering-local-cross-repo-verification/references/go-jvm-python-elixir.md +83 -0
  61. package/package/corpus/skills/cratis-engineering-local-cross-repo-verification/references/npm-yarn.md +78 -0
  62. package/package/corpus/skills/cratis-engineering-local-cross-repo-verification/references/other-environments.md +60 -0
  63. package/package/corpus/skills/cratis-engineering-local-cross-repo-verification/references/worked-examples.md +97 -0
  64. package/package/corpus/skills/cratis-engineering-local-cross-repo-verification/scripts/cratis-local-packages.sh +778 -0
  65. package/package/corpus/skills/cratis-engineering-local-cross-repo-verification/scripts/npm-restore-check.cjs +109 -0
  66. package/package/corpus/skills/csharp-refactoring/LICENSE +23 -0
  67. package/package/corpus/skills/csharp-refactoring/NOTICE +22 -0
  68. package/package/corpus/skills/csharp-refactoring/SKILL.md +175 -0
  69. package/package/corpus/skills/csharp-refactoring/references/operation-catalog.md +37 -0
  70. package/package/corpus/skills/directory-build-organization/LICENSE +23 -0
  71. package/package/corpus/skills/directory-build-organization/NOTICE +21 -0
  72. package/package/corpus/skills/directory-build-organization/SKILL.md +205 -0
  73. package/package/corpus/skills/directory-build-organization/references/common-patterns.md +56 -0
  74. package/package/corpus/skills/directory-build-organization/references/multi-level-examples.md +167 -0
  75. package/package/corpus/skills/directory-build-organization/references/targetframework-props-pitfall.md +54 -0
  76. package/package/corpus/skills/dotnet-aot-compat/LICENSE +23 -0
  77. package/package/corpus/skills/dotnet-aot-compat/NOTICE +18 -0
  78. package/package/corpus/skills/dotnet-aot-compat/SKILL.md +265 -0
  79. package/package/corpus/skills/dotnet-aot-compat/references/polyfills.md +43 -0
  80. package/package/corpus/skills/dotnet-trace-collect/LICENSE +23 -0
  81. package/package/corpus/skills/dotnet-trace-collect/NOTICE +65 -0
  82. package/package/corpus/skills/dotnet-trace-collect/SKILL.md +116 -0
  83. package/package/corpus/skills/dotnet-trace-collect/references/dotnet-monitor.md +97 -0
  84. package/package/corpus/skills/dotnet-trace-collect/references/dotnet-trace-collect-linux.md +84 -0
  85. package/package/corpus/skills/dotnet-trace-collect/references/dotnet-trace-collect.md +91 -0
  86. package/package/corpus/skills/dotnet-trace-collect/references/perfcollect.md +200 -0
  87. package/package/corpus/skills/dotnet-trace-collect/references/perfview.md +141 -0
  88. package/package/corpus/skills/dotnet-trace-collect/references/tool-selection.md +160 -0
  89. package/package/corpus/skills/dump-collect/LICENSE +23 -0
  90. package/package/corpus/skills/dump-collect/NOTICE +40 -0
  91. package/package/corpus/skills/dump-collect/SKILL.md +97 -0
  92. package/package/corpus/skills/dump-collect/references/container-dumps.md +412 -0
  93. package/package/corpus/skills/dump-collect/references/coreclr-dumps.md +108 -0
  94. package/package/corpus/skills/dump-collect/references/nativeaot-dumps.md +280 -0
  95. package/package/corpus/skills/eliminate-redundant-restores/LICENSE +23 -0
  96. package/package/corpus/skills/eliminate-redundant-restores/NOTICE +19 -0
  97. package/package/corpus/skills/eliminate-redundant-restores/SKILL.md +112 -0
  98. package/package/corpus/skills/extension-points/LICENSE +23 -0
  99. package/package/corpus/skills/extension-points/NOTICE +18 -0
  100. package/package/corpus/skills/extension-points/SKILL.md +248 -0
  101. package/package/corpus/skills/filter-syntax/LICENSE +23 -0
  102. package/package/corpus/skills/filter-syntax/NOTICE +17 -0
  103. package/package/corpus/skills/filter-syntax/SKILL.md +179 -0
  104. package/package/corpus/skills/including-generated-files/LICENSE +23 -0
  105. package/package/corpus/skills/including-generated-files/NOTICE +17 -0
  106. package/package/corpus/skills/including-generated-files/SKILL.md +139 -0
  107. package/package/corpus/skills/microbenchmarking/LICENSE +23 -0
  108. package/package/corpus/skills/microbenchmarking/NOTICE +36 -0
  109. package/package/corpus/skills/microbenchmarking/SKILL.md +131 -0
  110. package/package/corpus/skills/microbenchmarking/references/bdn-internals-and-tuning.md +143 -0
  111. package/package/corpus/skills/microbenchmarking/references/comparison-strategies.md +200 -0
  112. package/package/corpus/skills/microbenchmarking/references/diagnosers-and-exporters.md +150 -0
  113. package/package/corpus/skills/microbenchmarking/references/project-setup-and-running.md +189 -0
  114. package/package/corpus/skills/microbenchmarking/references/writing-benchmarks.md +310 -0
  115. package/package/corpus/skills/msbuild/LICENSE +23 -0
  116. package/package/corpus/skills/msbuild/NOTICE +55 -0
  117. package/package/corpus/skills/msbuild/SKILL.md +117 -0
  118. package/package/corpus/skills/msbuild/references/antipatterns/additional-antipatterns.md +291 -0
  119. package/package/corpus/skills/msbuild/references/antipatterns/incremental-build-inputs-outputs.md +57 -0
  120. package/package/corpus/skills/msbuild/references/antipatterns/private-assets.md +29 -0
  121. package/package/corpus/skills/msbuild/references/binlog-failure-analysis.md +85 -0
  122. package/package/corpus/skills/msbuild/references/binlog-generation.md +69 -0
  123. package/package/corpus/skills/msbuild/references/build-perf-baseline.md +493 -0
  124. package/package/corpus/skills/msbuild/references/build-perf-diagnostics.md +268 -0
  125. package/package/corpus/skills/msbuild/references/copy-to-output-directory.md +183 -0
  126. package/package/corpus/skills/msbuild/references/eval-performance.md +190 -0
  127. package/package/corpus/skills/msbuild/references/extension-points.md +281 -0
  128. package/package/corpus/skills/msbuild/references/incremental-build.md +365 -0
  129. package/package/corpus/skills/msbuild/references/msbuild-antipatterns.md +401 -0
  130. package/package/corpus/skills/orleans/LICENSE +21 -0
  131. package/package/corpus/skills/orleans/NOTICE +64 -0
  132. package/package/corpus/skills/orleans/SKILL.md +140 -0
  133. package/package/corpus/skills/orleans/references/anti-patterns.md +660 -0
  134. package/package/corpus/skills/orleans/references/configuration-api.md +933 -0
  135. package/package/corpus/skills/orleans/references/examples.md +66 -0
  136. package/package/corpus/skills/orleans/references/grain-api.md +784 -0
  137. package/package/corpus/skills/orleans/references/grains.md +75 -0
  138. package/package/corpus/skills/orleans/references/hosting.md +71 -0
  139. package/package/corpus/skills/orleans/references/implementation.md +591 -0
  140. package/package/corpus/skills/orleans/references/official-docs-index.md +250 -0
  141. package/package/corpus/skills/orleans/references/patterns.md +811 -0
  142. package/package/corpus/skills/orleans/references/persistence-api.md +495 -0
  143. package/package/corpus/skills/orleans/references/primitive-selection.md +35 -0
  144. package/package/corpus/skills/orleans/references/scheduling-and-services.md +295 -0
  145. package/package/corpus/skills/orleans/references/serialization-api.md +299 -0
  146. package/package/corpus/skills/orleans/references/streaming-api.md +396 -0
  147. package/package/corpus/skills/orleans/references/testing-patterns.md +210 -0
  148. package/package/corpus/skills/platform-detection/LICENSE +23 -0
  149. package/package/corpus/skills/platform-detection/NOTICE +17 -0
  150. package/package/corpus/skills/platform-detection/SKILL.md +230 -0
  151. package/package/corpus/skills/platform-detection/references/command-mode.md +27 -0
  152. package/package/corpus/skills/profiling/LICENSE +21 -0
  153. package/package/corpus/skills/profiling/NOTICE +50 -0
  154. package/package/corpus/skills/profiling/SKILL.md +144 -0
  155. package/package/corpus/skills/profiling/references/commands.md +439 -0
  156. package/package/corpus/skills/profiling/references/patterns.md +586 -0
  157. package/package/corpus/skills/profiling/references/profiling.md +190 -0
  158. package/package/corpus/skills/run-tests/LICENSE +23 -0
  159. package/package/corpus/skills/run-tests/NOTICE +19 -0
  160. package/package/corpus/skills/run-tests/SKILL.md +305 -0
  161. package/package/corpus/skills/target-authoring/LICENSE +23 -0
  162. package/package/corpus/skills/target-authoring/NOTICE +17 -0
  163. package/package/corpus/skills/target-authoring/SKILL.md +165 -0
  164. package/package/corpus/skills/vectorization/LICENSE +23 -0
  165. package/package/corpus/skills/vectorization/NOTICE +17 -0
  166. package/package/corpus/skills/vectorization/SKILL.md +189 -0
  167. package/package/profile-catalog.json +87 -1
  168. package/package.json +3 -2
@@ -0,0 +1,78 @@
1
+ <!-- Copyright (c) Cratis. All rights reserved. -->
2
+ <!-- Licensed under the MIT license. See LICENSE file in the project root for full license information. -->
3
+
4
+ # npm and Yarn
5
+
6
+ ## Pack the package, not a link
7
+
8
+ Requires node, tar and Yarn 4. Run the producer's normal build first. The helper does
9
+ not run a separate build; Yarn's normal pack lifecycle hooks still run.
10
+
11
+ ```bash
12
+ stamp=$(bash "$local" stamp "$producer")
13
+ bash "$local" pack-npm "$producer" "$stamp"
14
+ ```
15
+
16
+ It requires clean tracked workspace manifests, temporarily changes all non-private
17
+ workspace versions and packs actual tarballs. It restores those manifests on
18
+ success and failure; inspect diffs for other lifecycle-generated output. Yarn's
19
+ `%s-%v.tgz` output slugifies a scoped name (`@cratis/foo` becomes `@cratis-foo`).
20
+ Inspect dependency ranges in packed manifests: the helper changes versions, not
21
+ arbitrary inter-package dependency constraints. Include every required workspace
22
+ and verify the consumer resolves the intended tarballs.
23
+
24
+ Do not use `portal:` or `link:` for this proof: filesystem package boundaries can
25
+ create duplicate React instances or mismatched context providers, and may hide
26
+ missing packed files. A tarball exercises what a downstream install receives.
27
+
28
+ ## Consumer overlay
29
+
30
+ ```bash
31
+ bash "$local" use-npm "$consumer" "$stamp"
32
+ cd "$consumer"
33
+ yarn install
34
+ # Run the repository's frontend build, lint, specs and reproducing UI action.
35
+ ```
36
+
37
+ The helper selects every tarball ending in `-<stamp>.tgz` in the npm feed, reads
38
+ each packed manifest for its package name, and adds root `resolutions` using
39
+ absolute `file:` tarball paths. This also overrides transitive packages absent
40
+ from consumer manifests, rather than silently falling back to published versions. It backs
41
+ up root `package.json`, `yarn.lock` if present, and the pre-existing diff in the
42
+ per-worktree session. It refuses another active npm backup. Check the install
43
+ output/lockfile for the selected local versions; a successful install alone is not
44
+ proof that the changed code was exercised.
45
+
46
+ If Vite still serves the old package, stop the dev server and clear only the
47
+ consumer's stale `node_modules/.vite` prebundle, then restart it. Never edit
48
+ `node_modules` files to implement the fix. `use-npm` does not run install or clear
49
+ caches itself. Unique stamps avoid tarball cache collisions.
50
+
51
+ ## Restore without discarding work
52
+
53
+ ```bash
54
+ bash "$local" restore "$consumer"
55
+ bash "$local" check "$consumer"
56
+ ```
57
+
58
+ Restoration compares the manifest with the saved original and overlay. Only the
59
+ overlay's own resolution values may differ; unrelated manifest edits cause a
60
+ refusal. Formatting alone is not a conflict. For Yarn 4 lockfiles, unchanged
61
+ entries, metadata and headers must remain byte-identical. The guard accepts
62
+ entries resolving to the exact overlay tarballs (including Yarn locator/hash
63
+ suffixes) and removal of old entries for those same package names. Those local
64
+ package blocks are treated as overlay-owned, including checksums and dependencies.
65
+ Thus the normal `use-npm` → `yarn install` → `restore` flow puts back both original
66
+ files, including edits that existed before `use-npm`.
67
+
68
+ Unrelated lockfile edits, metadata/install churn, unsupported lockfile syntax, or
69
+ a newly created/deleted lockfile require manual review. The helper restores
70
+ neither file and retains backups on a conflict. Read the saved before-diff and
71
+ files, undo only local overlay changes manually, and retry. Merge later user
72
+ changes instead of replacing them with the backup. Do not blindly checkout the
73
+ consumer manifests. Reinstall released dependencies after restoration, then run
74
+ `check` before any commit/push.
75
+
76
+ Review `clean "$consumer" --stamp "$stamp"` before `--apply`. Passing the consumer
77
+ allows Yarn cache discovery; no consumer or unavailable Yarn yields a reported
78
+ skip. Unresolved backups block cleanup rather than silently losing recovery data.
@@ -0,0 +1,60 @@
1
+ <!-- Copyright (c) Cratis. All rights reserved. -->
2
+ <!-- Licensed under the MIT license. See LICENSE file in the project root for full license information. -->
3
+
4
+ # Other developer machines and agent hosts
5
+
6
+ The corpus has no dependency on a particular home directory, queue runner or
7
+ Docker desktop application. Execute the same helper from the installed skill.
8
+ Use macOS or Linux with bash/git; Windows requires WSL. Add the toolchains selected
9
+ by the recipe and check disk capacity before packing or building images.
10
+
11
+ ## Workspace-local feed
12
+
13
+ On an ephemeral agent host, use an absolute ignored workspace directory:
14
+
15
+ ```bash
16
+ export CRATIS_LOCAL_FEED=/absolute/workspace/.ai-work/local-feed
17
+ # No CRATIS_LOCAL_RUN is needed when this host has no queue wrapper.
18
+ stamp=$(bash "$local" stamp "$producer")
19
+ ```
20
+
21
+ Keep the feed available for the entire consumer restore/test. `use-nuget` and
22
+ `use-npm` record absolute paths, so do not move the workspace halfway through.
23
+ Use the default per-worktree session inside the Git directory, or set
24
+ `CRATIS_LOCAL_SESSION_DIR` to a unique ignored/external directory for that checkout.
25
+ Do not share a session among consumers. Config at
26
+ `${XDG_CONFIG_HOME:-$HOME/.config}/cratis/local-packages.env` is trusted shell code;
27
+ on a host with no config, environment variables suffice. Do not put secrets in it.
28
+
29
+ ## Images and architecture
30
+
31
+ A local tag must be loaded into the daemon used by the consumer tests. A remote
32
+ builder or separate job daemon does not automatically share images. When necessary,
33
+ transfer a task-owned `docker save` archive to the test job and `docker load` it
34
+ there without pushing to a registry. Inspect the loaded tag and architecture,
35
+ then run the actual container spec. Align `linux-arm64` publish with arm64 images,
36
+ or `linux-x64` with amd64. Report any emulation and Release/Debug difference when
37
+ comparing timings. Workspace sharing alone does not share a Docker image store.
38
+
39
+ ## Optional queue adapter
40
+
41
+ `CRATIS_LOCAL_RUN` names an executable accepting `<kind> <label> -- <command...>`.
42
+ The helper sends pack operations through it. A host may choose its own bounded
43
+ queue and execution deadlines; do not copy another machine's process limits.
44
+ Separately wrap consumer builds, Docker builds and container specs according to
45
+ that host's policy. Queue timeout, cancellation and skipped checks are not passes.
46
+ No wrapper is installed or configured by this skill.
47
+
48
+ ## Finish even on a failed proof
49
+
50
+ Run `check` before any consumer commit/push. Restore overlays, unset shell/IDE and
51
+ image selections, reinstall released dependencies where appropriate, then check
52
+ again. Review `clean "$consumer" --stamp "$stamp"` and apply only its expected
53
+ subjects. Stop task-owned containers first. Resolve npm backup conflicts rather
54
+ than bypassing them. Report unreachable Docker/Yarn cleanup as incomplete.
55
+
56
+ If a job is cancelled, preserve its session/backups and record what still needs
57
+ restoration rather than assuming workspace disposal cleaned a shared feed, global
58
+ NuGet cache or remote daemon. Do not delete artifacts another active task needs.
59
+ After successful local proof, the normal authorized producer release and consumer
60
+ released-version pin bump remain necessary.
@@ -0,0 +1,97 @@
1
+ <!-- Copyright (c) Cratis. All rights reserved. -->
2
+ <!-- Licensed under the MIT license. See LICENSE file in the project root for full license information. -->
3
+
4
+ # Worked examples
5
+
6
+ Use absolute producer/consumer paths for your checkouts and the entry point's
7
+ `local` helper variable. These recipes define work to execute, not pre-verified
8
+ results. Substitute actual regression filters and CI commands; stop on a failed
9
+ step. Apply the entry point's check/restore/cleanup sequence to both repositories.
10
+
11
+ ## Chronicle kernel → Studio integration specs
12
+
13
+ 1. Reproduce Studio's integration bug against its released client/kernel. Record
14
+ the regression filter and inspect Studio's CI build/test commands.
15
+ 2. Generate the stamp and pack client packages plus their full dependency closure.
16
+ A client solution filter can omit CodeAnalysis. Include its package explicitly:
17
+
18
+ ```bash
19
+ stamp=$(bash "$local" stamp "$producer")
20
+ bash "$local" pack-nuget "$producer" "$stamp" path/to/client.slnf
21
+ bash "$local" pack-nuget "$producer" "$stamp" \
22
+ Source/Clients/DotNET.CodeAnalysis.Package/DotNET.CodeAnalysis.Package.csproj
23
+ ```
24
+
25
+ Create the filter in ignored scratch space with paths appropriate to that
26
+ Chronicle checkout. Inspect the nuspec dependencies: Contracts and every other
27
+ local dependency must exist in the feed at the same stamp. Do not proceed if a
28
+ required package is missing simply because one pack command passed.
29
+ 3. Publish the Release development kernel for the daemon's RID, build Workbench
30
+ `wwwroot`, and build/inspect `cratis/chronicle:<stamp>-development-slim` as in
31
+ [docker-images.md](docker-images.md). Preserve generated proxy edits.
32
+ 4. Run `use-nuget` with the client IDs Studio needs. Include transitive IDs missing
33
+ from Studio CPM explicitly. Source the printed env and use its generated NuGet
34
+ config when source mapping requires it. Verify local assets after restore.
35
+ 5. Select the image and run Studio's actual solution/spec project:
36
+
37
+ ```bash
38
+ export CHRONICLE_KERNEL_VERSION="$stamp"
39
+ cd "$consumer"
40
+ dotnet build path/to/Studio.slnx -c Release -p:StudioFullBuild=true -warnaserror
41
+ dotnet test Source/Integrations/Specs/Specs.csproj -c Release --no-build \
42
+ --filter '<regression>'
43
+ ```
44
+
45
+ Studio defaults kernel selection to the client version when the environment
46
+ override is absent. Ensure logs show the stamped local image. Local Debug
47
+ Studio builds skip analyzers; use `-p:StudioFullBuild=true` to match CI analyzer
48
+ coverage. Then run all required consumer gates, not only the filtered spec.
49
+ 6. If the bug remains, change Chronicle and repeat with a distinct stamp. If it
50
+ passes, run `check` before commits/pushes, restore, unset overrides, check again,
51
+ stop task-owned containers and review/apply stamp-scoped cleanup. Release the
52
+ producer normally and bump Studio to released pins later; never commit local
53
+ package versions or the local image selector.
54
+
55
+ In run time this loop takes minutes: client packs about 1–2 minutes, kernel
56
+ publish a few minutes, image build seconds with a warm cache, the Studio spec
57
+ project build about 6 minutes, and the spec class itself seconds. When the spec
58
+ fails because the local kernel refuses to start (for example a startup
59
+ requirement the consumer's container setup does not satisfy yet), that is a
60
+ real finding about the consumer, not about the overlay: read the container log
61
+ before changing the producer.
62
+
63
+ ## Fundamentals → Arc
64
+
65
+ For a .NET Fundamentals fix, build/spec the producer, generate its stamp and
66
+ `pack-nuget` the affected projects and dependency closure. In Arc, run `use-nuget`
67
+ with the required Fundamentals package IDs, source the printed env/config, restore,
68
+ then build/spec Arc with its CI configuration. Inspect `project.assets.json` to
69
+ confirm the actual stamp. No image is required unless the reproducer needs one.
70
+
71
+ For a JavaScript Fundamentals fix, run the producer's normal build and
72
+ `pack-npm`, then `use-npm` in Arc and install. Run Arc frontend build/specs and the
73
+ reproducer. Include all affected workspace tarballs so a transitive dependency
74
+ cannot silently remain released. A green producer-only spec is not consumer proof.
75
+ Finish with the entry point's commit checks, restoration and cleanup.
76
+
77
+ ## Components → Studio frontend
78
+
79
+ Build/spec Components using its own package scripts, including any required
80
+ Storybook gate. Then:
81
+
82
+ ```bash
83
+ stamp=$(bash "$local" stamp "$producer")
84
+ bash "$local" pack-npm "$producer" "$stamp"
85
+ bash "$local" use-npm "$consumer" "$stamp"
86
+ cd "$consumer"
87
+ yarn install
88
+ ```
89
+
90
+ Confirm the Components `file:` tarball resolutions. Run Studio's frontend build,
91
+ lint/specs and exercise the broken dialog/page. If Vite serves stale assets, stop
92
+ the dev server, clear only its `.vite` prebundle and restart. Avoid `link:` and
93
+ `portal:` because duplicate React/context instances distort the reproduction.
94
+ Overlay-only lockfile changes from Yarn install are restored automatically.
95
+ Review npm backups if unrelated changes cause `restore` to refuse; preserve
96
+ that work, restore only local changes and retry. Reinstall released packages,
97
+ run `check`, and review/apply cleanup for this stamp.