@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.
- package/package/corpus/harnesses/copilot/instructions/github-actions.instructions.md +17 -0
- package/package/corpus/harnesses/copilot/instructions/profiles.instructions.md +10 -1
- package/package/corpus/harnesses/copilot/instructions/pull-requests.instructions.md +2 -0
- package/package/corpus/harnesses/copilot/instructions/secrets.instructions.md +4 -0
- package/package/corpus/hooks/README.md +11 -1
- package/package/corpus/hooks/scripts/cratis-check-pr.mjs +12 -1
- package/package/corpus/hooks/scripts/cratis-guard-secrets.sh +79 -23
- package/package/corpus/hooks/scripts/cratis-guard-writes.sh +145 -40
- package/package/corpus/rules/github-actions.md +17 -0
- package/package/corpus/rules/profiles.md +10 -1
- package/package/corpus/rules/pull-requests.md +2 -0
- package/package/corpus/rules/secrets.md +4 -0
- package/package/corpus/skills/analyzing-dotnet-performance/LICENSE +23 -0
- package/package/corpus/skills/analyzing-dotnet-performance/NOTICE +36 -0
- package/package/corpus/skills/analyzing-dotnet-performance/SKILL.md +214 -0
- package/package/corpus/skills/analyzing-dotnet-performance/references/async-patterns.md +122 -0
- package/package/corpus/skills/analyzing-dotnet-performance/references/collections-and-linq.md +220 -0
- package/package/corpus/skills/analyzing-dotnet-performance/references/critical-patterns.md +291 -0
- package/package/corpus/skills/analyzing-dotnet-performance/references/io-and-serialization.md +135 -0
- package/package/corpus/skills/analyzing-dotnet-performance/references/memory-and-strings.md +219 -0
- package/package/corpus/skills/analyzing-dotnet-performance/references/regex-patterns.md +95 -0
- package/package/corpus/skills/analyzing-dotnet-performance/references/structural-patterns.md +38 -0
- package/package/corpus/skills/binlog-generation/LICENSE +23 -0
- package/package/corpus/skills/binlog-generation/NOTICE +22 -0
- package/package/corpus/skills/binlog-generation/SKILL.md +129 -0
- package/package/corpus/skills/check-bin-obj-clash/LICENSE +23 -0
- package/package/corpus/skills/check-bin-obj-clash/NOTICE +27 -0
- package/package/corpus/skills/check-bin-obj-clash/SKILL.md +127 -0
- package/package/corpus/skills/check-bin-obj-clash/references/common-causes-and-fixes.md +206 -0
- package/package/corpus/skills/coverage-analysis/LICENSE +23 -0
- package/package/corpus/skills/coverage-analysis/NOTICE +32 -0
- package/package/corpus/skills/coverage-analysis/SKILL.md +198 -0
- package/package/corpus/skills/coverage-analysis/references/guidelines.md +68 -0
- package/package/corpus/skills/coverage-analysis/references/output-format.md +91 -0
- package/package/corpus/skills/coverage-analysis/references/report-generation.md +58 -0
- package/package/corpus/skills/coverage-analysis/references/setup-discovery.md +307 -0
- package/package/corpus/skills/coverage-analysis/scripts/Compute-CrapScores.ps1 +80 -0
- package/package/corpus/skills/coverage-analysis/scripts/CoverageData.ps1 +272 -0
- package/package/corpus/skills/coverage-analysis/scripts/Extract-MethodCoverage.ps1 +65 -0
- package/package/corpus/skills/cratis-ci-pipeline-performance/LICENSE +2 -0
- package/package/corpus/skills/cratis-ci-pipeline-performance/SKILL.md +201 -0
- package/package/corpus/skills/cratis-ci-pipeline-performance/references/build-once-and-shard.md +158 -0
- package/package/corpus/skills/cratis-ci-pipeline-performance/references/caching.md +86 -0
- package/package/corpus/skills/cratis-ci-pipeline-performance/references/flaky-and-hung-jobs.md +70 -0
- package/package/corpus/skills/cratis-ci-pipeline-performance/references/publish-pipelines.md +67 -0
- package/package/corpus/skills/cratis-ci-pipeline-performance/references/required-checks-and-path-filters.md +117 -0
- package/package/corpus/skills/cratis-ci-pipeline-performance/references/runner-sizing-and-images.md +65 -0
- package/package/corpus/skills/cratis-ci-pipeline-performance/references/security-and-pinning.md +73 -0
- package/package/corpus/skills/cratis-ci-pipeline-performance/references/sources.md +33 -0
- package/package/corpus/skills/cratis-ci-pipeline-performance/references/test-setup-cost.md +82 -0
- package/package/corpus/skills/cratis-ci-pipeline-performance/scripts/ci-timings.sh +356 -0
- package/package/corpus/skills/cratis-ci-pipeline-performance/scripts/fixtures/jobs/1003.json +79 -0
- package/package/corpus/skills/cratis-ci-pipeline-performance/scripts/fixtures/jobs/1007.json +79 -0
- package/package/corpus/skills/cratis-ci-pipeline-performance/scripts/fixtures/jobs/1010.json +79 -0
- package/package/corpus/skills/cratis-ci-pipeline-performance/scripts/fixtures/runs.json +102 -0
- package/package/corpus/skills/cratis-engineering-local-cross-repo-verification/LICENSE +2 -0
- package/package/corpus/skills/cratis-engineering-local-cross-repo-verification/SKILL.md +244 -0
- package/package/corpus/skills/cratis-engineering-local-cross-repo-verification/references/docker-images.md +86 -0
- package/package/corpus/skills/cratis-engineering-local-cross-repo-verification/references/dotnet-nuget.md +87 -0
- package/package/corpus/skills/cratis-engineering-local-cross-repo-verification/references/go-jvm-python-elixir.md +83 -0
- package/package/corpus/skills/cratis-engineering-local-cross-repo-verification/references/npm-yarn.md +78 -0
- package/package/corpus/skills/cratis-engineering-local-cross-repo-verification/references/other-environments.md +60 -0
- package/package/corpus/skills/cratis-engineering-local-cross-repo-verification/references/worked-examples.md +97 -0
- package/package/corpus/skills/cratis-engineering-local-cross-repo-verification/scripts/cratis-local-packages.sh +778 -0
- package/package/corpus/skills/cratis-engineering-local-cross-repo-verification/scripts/npm-restore-check.cjs +109 -0
- package/package/corpus/skills/csharp-refactoring/LICENSE +23 -0
- package/package/corpus/skills/csharp-refactoring/NOTICE +22 -0
- package/package/corpus/skills/csharp-refactoring/SKILL.md +175 -0
- package/package/corpus/skills/csharp-refactoring/references/operation-catalog.md +37 -0
- package/package/corpus/skills/directory-build-organization/LICENSE +23 -0
- package/package/corpus/skills/directory-build-organization/NOTICE +21 -0
- package/package/corpus/skills/directory-build-organization/SKILL.md +205 -0
- package/package/corpus/skills/directory-build-organization/references/common-patterns.md +56 -0
- package/package/corpus/skills/directory-build-organization/references/multi-level-examples.md +167 -0
- package/package/corpus/skills/directory-build-organization/references/targetframework-props-pitfall.md +54 -0
- package/package/corpus/skills/dotnet-aot-compat/LICENSE +23 -0
- package/package/corpus/skills/dotnet-aot-compat/NOTICE +18 -0
- package/package/corpus/skills/dotnet-aot-compat/SKILL.md +265 -0
- package/package/corpus/skills/dotnet-aot-compat/references/polyfills.md +43 -0
- package/package/corpus/skills/dotnet-trace-collect/LICENSE +23 -0
- package/package/corpus/skills/dotnet-trace-collect/NOTICE +65 -0
- package/package/corpus/skills/dotnet-trace-collect/SKILL.md +116 -0
- package/package/corpus/skills/dotnet-trace-collect/references/dotnet-monitor.md +97 -0
- package/package/corpus/skills/dotnet-trace-collect/references/dotnet-trace-collect-linux.md +84 -0
- package/package/corpus/skills/dotnet-trace-collect/references/dotnet-trace-collect.md +91 -0
- package/package/corpus/skills/dotnet-trace-collect/references/perfcollect.md +200 -0
- package/package/corpus/skills/dotnet-trace-collect/references/perfview.md +141 -0
- package/package/corpus/skills/dotnet-trace-collect/references/tool-selection.md +160 -0
- package/package/corpus/skills/dump-collect/LICENSE +23 -0
- package/package/corpus/skills/dump-collect/NOTICE +40 -0
- package/package/corpus/skills/dump-collect/SKILL.md +97 -0
- package/package/corpus/skills/dump-collect/references/container-dumps.md +412 -0
- package/package/corpus/skills/dump-collect/references/coreclr-dumps.md +108 -0
- package/package/corpus/skills/dump-collect/references/nativeaot-dumps.md +280 -0
- package/package/corpus/skills/eliminate-redundant-restores/LICENSE +23 -0
- package/package/corpus/skills/eliminate-redundant-restores/NOTICE +19 -0
- package/package/corpus/skills/eliminate-redundant-restores/SKILL.md +112 -0
- package/package/corpus/skills/extension-points/LICENSE +23 -0
- package/package/corpus/skills/extension-points/NOTICE +18 -0
- package/package/corpus/skills/extension-points/SKILL.md +248 -0
- package/package/corpus/skills/filter-syntax/LICENSE +23 -0
- package/package/corpus/skills/filter-syntax/NOTICE +17 -0
- package/package/corpus/skills/filter-syntax/SKILL.md +179 -0
- package/package/corpus/skills/including-generated-files/LICENSE +23 -0
- package/package/corpus/skills/including-generated-files/NOTICE +17 -0
- package/package/corpus/skills/including-generated-files/SKILL.md +139 -0
- package/package/corpus/skills/microbenchmarking/LICENSE +23 -0
- package/package/corpus/skills/microbenchmarking/NOTICE +36 -0
- package/package/corpus/skills/microbenchmarking/SKILL.md +131 -0
- package/package/corpus/skills/microbenchmarking/references/bdn-internals-and-tuning.md +143 -0
- package/package/corpus/skills/microbenchmarking/references/comparison-strategies.md +200 -0
- package/package/corpus/skills/microbenchmarking/references/diagnosers-and-exporters.md +150 -0
- package/package/corpus/skills/microbenchmarking/references/project-setup-and-running.md +189 -0
- package/package/corpus/skills/microbenchmarking/references/writing-benchmarks.md +310 -0
- package/package/corpus/skills/msbuild/LICENSE +23 -0
- package/package/corpus/skills/msbuild/NOTICE +55 -0
- package/package/corpus/skills/msbuild/SKILL.md +117 -0
- package/package/corpus/skills/msbuild/references/antipatterns/additional-antipatterns.md +291 -0
- package/package/corpus/skills/msbuild/references/antipatterns/incremental-build-inputs-outputs.md +57 -0
- package/package/corpus/skills/msbuild/references/antipatterns/private-assets.md +29 -0
- package/package/corpus/skills/msbuild/references/binlog-failure-analysis.md +85 -0
- package/package/corpus/skills/msbuild/references/binlog-generation.md +69 -0
- package/package/corpus/skills/msbuild/references/build-perf-baseline.md +493 -0
- package/package/corpus/skills/msbuild/references/build-perf-diagnostics.md +268 -0
- package/package/corpus/skills/msbuild/references/copy-to-output-directory.md +183 -0
- package/package/corpus/skills/msbuild/references/eval-performance.md +190 -0
- package/package/corpus/skills/msbuild/references/extension-points.md +281 -0
- package/package/corpus/skills/msbuild/references/incremental-build.md +365 -0
- package/package/corpus/skills/msbuild/references/msbuild-antipatterns.md +401 -0
- package/package/corpus/skills/orleans/LICENSE +21 -0
- package/package/corpus/skills/orleans/NOTICE +64 -0
- package/package/corpus/skills/orleans/SKILL.md +140 -0
- package/package/corpus/skills/orleans/references/anti-patterns.md +660 -0
- package/package/corpus/skills/orleans/references/configuration-api.md +933 -0
- package/package/corpus/skills/orleans/references/examples.md +66 -0
- package/package/corpus/skills/orleans/references/grain-api.md +784 -0
- package/package/corpus/skills/orleans/references/grains.md +75 -0
- package/package/corpus/skills/orleans/references/hosting.md +71 -0
- package/package/corpus/skills/orleans/references/implementation.md +591 -0
- package/package/corpus/skills/orleans/references/official-docs-index.md +250 -0
- package/package/corpus/skills/orleans/references/patterns.md +811 -0
- package/package/corpus/skills/orleans/references/persistence-api.md +495 -0
- package/package/corpus/skills/orleans/references/primitive-selection.md +35 -0
- package/package/corpus/skills/orleans/references/scheduling-and-services.md +295 -0
- package/package/corpus/skills/orleans/references/serialization-api.md +299 -0
- package/package/corpus/skills/orleans/references/streaming-api.md +396 -0
- package/package/corpus/skills/orleans/references/testing-patterns.md +210 -0
- package/package/corpus/skills/platform-detection/LICENSE +23 -0
- package/package/corpus/skills/platform-detection/NOTICE +17 -0
- package/package/corpus/skills/platform-detection/SKILL.md +230 -0
- package/package/corpus/skills/platform-detection/references/command-mode.md +27 -0
- package/package/corpus/skills/profiling/LICENSE +21 -0
- package/package/corpus/skills/profiling/NOTICE +50 -0
- package/package/corpus/skills/profiling/SKILL.md +144 -0
- package/package/corpus/skills/profiling/references/commands.md +439 -0
- package/package/corpus/skills/profiling/references/patterns.md +586 -0
- package/package/corpus/skills/profiling/references/profiling.md +190 -0
- package/package/corpus/skills/run-tests/LICENSE +23 -0
- package/package/corpus/skills/run-tests/NOTICE +19 -0
- package/package/corpus/skills/run-tests/SKILL.md +305 -0
- package/package/corpus/skills/target-authoring/LICENSE +23 -0
- package/package/corpus/skills/target-authoring/NOTICE +17 -0
- package/package/corpus/skills/target-authoring/SKILL.md +165 -0
- package/package/corpus/skills/vectorization/LICENSE +23 -0
- package/package/corpus/skills/vectorization/NOTICE +17 -0
- package/package/corpus/skills/vectorization/SKILL.md +189 -0
- package/package/profile-catalog.json +87 -1
- 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.
|