@qijenchen/design-system 0.1.0-beta.116 → 0.1.0-beta.117
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/AGENTS.md +5 -5
- package/dist/patterns/element-anatomy/item-anatomy.js +1 -1
- package/ds-canonical/fork/AGENTS.md +44 -61
- package/ds-canonical/fork/common/instruction.md +44 -61
- package/ds-canonical/fork/consumer/lock.json +7 -7
- package/ds-canonical/fork/consumer/managed-files/46f10bc55cdfdf834d0749eebff42ea0bb8576f361b36d2b6ba1851354c50150.blob +7 -1
- package/ds-canonical/fork/governance.lock +4 -4
- package/ds-canonical/fork/manifest.json +10 -10
- package/package.json +1 -1
- package/src/components/AppShell/app-shell.principles.stories.tsx +1 -1
package/AGENTS.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# `@qijenchen/design-system` package scope
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Scoped augmentation only — never a second repository or product-governance SSOT.
|
|
4
4
|
|
|
5
|
-
-
|
|
6
|
-
-
|
|
7
|
-
- Consumer
|
|
8
|
-
-
|
|
5
|
+
- In the monorepo, inherit the root `AGENTS.md`; never restate or override it here. Author governance only in the owners classified by `infra/governance/protected-root-classification.json`, then regenerate the declared build graph.
|
|
6
|
+
- In an installed package, everything under `node_modules/@qijenchen/design-system` is immutable release material: never patch in place; fix upstream, publish an immutable exact version/BOM, upgrade the consumer by governed PR.
|
|
7
|
+
- Consumer governance comes from the authenticated `ds-canonical/fork/manifest.json` snapshot materialized into the consumer repo. This file is navigation only and never substitutes for that snapshot, its lock, adapters, verifier, or protected CI.
|
|
8
|
+
- Same owner/output boundary for rules, hooks, skills, commands, and provider views: `ds-canonical/` is the shipped canonical corpus; generated `.claude`, `.codex`, `.agents` views are rebuildable adapters, not edit targets.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
2
|
import * as React from "react";
|
|
3
3
|
import { cva } from "class-variance-authority";
|
|
4
|
-
import {
|
|
4
|
+
import { cn, lineClampClass } from "../../lib/utils.js";
|
|
5
5
|
import { Avatar } from "../../components/Avatar/avatar.js";
|
|
6
6
|
import { Tooltip, TooltipTrigger, TooltipContent } from "../../components/Tooltip/tooltip.js";
|
|
7
7
|
import { useTruncated } from "../../hooks/use-truncated.js";
|
|
@@ -1,26 +1,24 @@
|
|
|
1
1
|
# Product consumer AI governance (provider-neutral)
|
|
2
2
|
|
|
3
|
-
> **Generated view**: upstream `build-fork-governance.mjs` publishes this
|
|
4
|
-
>
|
|
5
|
-
> AGENTS-compatible agents load it directly.
|
|
3
|
+
> **Generated view**: upstream `build-fork-governance.mjs` publishes this source as `AGENTS.md`; never
|
|
4
|
+
> edit the generated copy. Claude loads it via `CLAUDE.md`, Codex and other agents load it directly.
|
|
6
5
|
|
|
7
6
|
## Authority and trust boundary
|
|
8
7
|
|
|
9
|
-
- This repository builds a product
|
|
10
|
-
`@qijenchen/storybook-config`; it
|
|
11
|
-
- Merge enforcement
|
|
12
|
-
|
|
13
|
-
- Native Claude/Codex hooks are fast feedback only; hookless operation is judged by the same
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
installs the committed lock, verifies signatures, and runs the exact checker; SessionStart only verifies.
|
|
8
|
+
- This repository builds a product against exact versions of `@qijenchen/design-system` and
|
|
9
|
+
`@qijenchen/storybook-config`; it never authors or publishes them.
|
|
10
|
+
- Merge enforcement is protected `main` requiring exactly one `Verify consumer` check, which runs the
|
|
11
|
+
locked install, typecheck, import lint, and build against the exact candidate head.
|
|
12
|
+
- Native Claude/Codex hooks are fast feedback only; hookless operation is judged by the same hooks-off
|
|
13
|
+
checker. Hook commands scrub inherited startup injection before repository launchers, and the provider
|
|
14
|
+
host stays an external trust boundary — hooks never replace protected CI.
|
|
15
|
+
- Run `npm run setup:all` in every fresh local checkout and hosted setup/cache-refresh lifecycle: it
|
|
16
|
+
installs the committed lock, verifies signatures, and runs the exact checker. SessionStart only verifies.
|
|
19
17
|
- `governance/lock.json`, managed provider adapters, and managed skills are generated upstream.
|
|
20
|
-
Product-specific, provider-neutral policy belongs in `governance/overlay.md
|
|
21
|
-
|
|
18
|
+
Product-specific, provider-neutral policy belongs in `governance/overlay.md` (read it when present);
|
|
19
|
+
it may add stricter product rules but never replaces or weakens upstream controls.
|
|
22
20
|
- Never install a mutable tag or semver range for internal packages. Upgrades are reviewed pull
|
|
23
|
-
requests
|
|
21
|
+
requests pinning an exact version with the regenerated lock/adapters.
|
|
24
22
|
<!-- canonical-decision-authority:start -->
|
|
25
23
|
**Decision/Engineering Authority**:user 只拍板產品/UI/UX SSOT 真取捨及可感知/產品語意變更(behavior/interaction/IA/visual/token/layout/content/a11y/canonical rules);核准 = user 在對話中對 exact target + choice 說可(**「我說可以就是可以,就是授權」— user 2026-08-04 verbatim**;最新一則 user 訊息的明確 blanket 授權即核准當下 pending 的 exact 提案)。operation digest 為可選佐證——有引且相符可加強、有引但不符 fail-closed、未引不阻擋(強制引 digest 屬已拆除的 per-PR 簽章同族儀式,835b519e 先例)。引用/條件/舊 scope/跨 target 無效。其餘工程/external writes 皆 Standing Authorization AUTO,含已核准 UI/UX 實作/機械 generation/sync 與 source→commit/PR/merge→canonical `infra/governance/release-workflow.json` 的 `pr-checks → merge → publish → readback → consumer`;依 frozen scope、SSOT、required checks、security、least privilege、rollback/readback 收斂,不逐 milestone 重問。Deep Audit 必須在單一 branch/PR 完成 remediation 與 local/CI candidate validation,禁止把 immutable publish 當 iteration/test loop,每次 audit 最多一次 final release;只有另有 evidence ref 綁定 incident ID、failure class、published version 的 post-publish blocker 或 security incident 才可額外 release。Certification、rollout、staged rollout、preview/canary 與 independent review 是明確要求時的附加 assurance,不得進入標準 five-step release blocking graph;peer 不可用只阻擋明確要求的 independent-review claim。
|
|
26
24
|
|
|
@@ -31,30 +29,24 @@
|
|
|
31
29
|
|
|
32
30
|
## Six working principles
|
|
33
31
|
|
|
34
|
-
1. **World-class, no shortcuts**: visual and interaction decisions must be defensible against at
|
|
35
|
-
|
|
32
|
+
1. **World-class, no shortcuts**: visual and interaction decisions must be defensible against at least
|
|
33
|
+
three relevant systems (Polaris, Material, Atlassian, Ant, Carbon, Apple HIG).
|
|
36
34
|
2. **Consume before inventing**: search the installed public API, nearest component spec, token, and
|
|
37
35
|
pattern before adding a value, wrapper, variant, or layout primitive.
|
|
38
|
-
3. **Change all affected surfaces**: product code, tests/stories, and
|
|
39
|
-
|
|
40
|
-
4. **Use real product scenarios**: examples
|
|
41
|
-
|
|
36
|
+
3. **Change all affected surfaces**: product code, tests/stories, and docs move together. A DS defect is
|
|
37
|
+
reported upstream with a minimal reproduction; never patch `node_modules`.
|
|
38
|
+
4. **Use real product scenarios**: examples show recognizable business work, not Option A/B/C
|
|
39
|
+
placeholders or minimal mocks that conceal composition problems.
|
|
42
40
|
5. **Ask only for a genuine product decision**: first search current product usage and the nearest
|
|
43
|
-
shipped DS spec
|
|
44
|
-
6. **Fix the invariant, not one symptom**: search
|
|
45
|
-
|
|
41
|
+
shipped DS spec; stop only when the remaining choice changes product UX or canonical meaning.
|
|
42
|
+
6. **Fix the invariant, not one symptom**: search sibling occurrences, add a regression proof, and route
|
|
43
|
+
reusable DS/template defects to their canonical upstream owner.
|
|
46
44
|
|
|
47
45
|
## Before changing product UI
|
|
48
46
|
|
|
49
|
-
Record the canonical inputs you inspected:
|
|
50
|
-
|
|
51
|
-
-
|
|
52
|
-
- the nearest shipped `*.spec.md` under
|
|
53
|
-
`node_modules/@qijenchen/design-system/src/`;
|
|
54
|
-
- relevant token docs under
|
|
55
|
-
`node_modules/@qijenchen/design-system/src/tokens/`;
|
|
56
|
-
- a nearest shipped story or a real product precedent;
|
|
57
|
-
- any product-specific exception and its concrete rationale.
|
|
47
|
+
Record the canonical inputs you inspected: public component/pattern exports; the nearest shipped
|
|
48
|
+
`*.spec.md` and token docs under `node_modules/@qijenchen/design-system/src/`; a nearest shipped story
|
|
49
|
+
or real product precedent; and any product-specific exception with its concrete rationale.
|
|
58
50
|
|
|
59
51
|
Only import public package exports. Deep imports, copied DS source, raw primitive reimplementations,
|
|
60
52
|
magic visual values, and undocumented escape markers are governance failures.
|
|
@@ -75,14 +67,10 @@ allowed only when the shipped spec makes it intentional and the exception is nar
|
|
|
75
67
|
|
|
76
68
|
## Verification contract
|
|
77
69
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
2. `npm run typecheck`;
|
|
83
|
-
3. `npm run build`;
|
|
84
|
-
4. product lint/test/a11y scripts when present;
|
|
85
|
-
5. browser or Storybook visual verification for user-visible changes.
|
|
70
|
+
Run every check this product has and report its real outcome. The minimum repository-wide contract is
|
|
71
|
+
`npm run governance:check` (exact installed, hooks-off authority), `npm run typecheck`, `npm run build`,
|
|
72
|
+
product lint/test/a11y scripts when present, and browser or Storybook visual verification for
|
|
73
|
+
user-visible changes.
|
|
86
74
|
|
|
87
75
|
Never replace a check with `true`, an empty script, a notice-only waiver, or an unverified claim.
|
|
88
76
|
Missing required tooling is a failure, not a pass. Evidence must bind the checked source snapshot.
|
|
@@ -93,35 +81,30 @@ Missing required tooling is a failure, not a pass. Evidence must bind the checke
|
|
|
93
81
|
- Native events enter one immutable hook corpus; unsupported events use the exact checker/protected-CI
|
|
94
82
|
fallback and are never presented as native parity.
|
|
95
83
|
- Future providers read `AGENTS.md` and use the same checks; adapters cannot redefine semantics.
|
|
96
|
-
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
84
|
+
- An explicitly requested independent-review deliverable needs a distinct certified peer and immutable
|
|
85
|
+
read-only evidence, or the report claims `REVIEW-BLOCKED`. Peer availability never blocks ordinary
|
|
86
|
+
engineering or the standard five-step release. Product review cannot authorize DS/template/release
|
|
87
|
+
changes; route reusable defects upstream.
|
|
100
88
|
|
|
101
89
|
## Git and release flow
|
|
102
90
|
|
|
103
91
|
- The upstream design-system authority owns the machine-readable release SSOT at
|
|
104
|
-
`infra/governance/release-workflow.json`: `pr-checks → merge → publish → readback → consumer`.
|
|
105
|
-
|
|
106
|
-
|
|
92
|
+
`infra/governance/release-workflow.json`: `pr-checks → merge → publish → readback → consumer`. Every
|
|
93
|
+
engineering step is AUTO; only an unresolved product/UI/UX SSOT choice is ASK. Login, MFA, OAuth, or a
|
|
94
|
+
missing credential reference pauses only the affected action, then execution resumes AUTO.
|
|
107
95
|
- One task uses one working branch and one PR into protected `main`; never direct-push `main`.
|
|
108
|
-
- The required `Verify consumer` check, conversations, and protected-main exact readback must be clear
|
|
109
|
-
|
|
96
|
+
- The required `Verify consumer` check, conversations, and protected-main exact readback must be clear;
|
|
97
|
+
then merge and verify under Standing Authorization — no self-approval or chat trigger. Preview, a11y,
|
|
110
98
|
visual, canary, and independent-peer evidence are scheduled or optional unless the user explicitly
|
|
111
|
-
requests them
|
|
112
|
-
standard release by default.
|
|
99
|
+
requests them, and never block the standard release by default.
|
|
113
100
|
- Product repos never publish the DS; exact-version upgrade PRs merge after `Verify consumer` passes.
|
|
114
101
|
|
|
115
102
|
## Pilot and upstream feedback
|
|
116
103
|
|
|
117
|
-
This product may serve as a canary for the DS/product template. When a failure is reusable:
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
3. fix the canonical owner first;
|
|
122
|
-
4. release an immutable upstream version;
|
|
123
|
-
5. upgrade this product by exact-version PR and rerun the required `Verify consumer` check;
|
|
124
|
-
6. remove any temporary product workaround after the upstream fix lands.
|
|
104
|
+
This product may serve as a canary for the DS/product template. When a failure is reusable: preserve a
|
|
105
|
+
minimal reproduction and evidence; classify the owner as product, DS, template, governance corpus, or
|
|
106
|
+
deployment infrastructure; fix the canonical owner first; release an immutable upstream version;
|
|
107
|
+
upgrade by exact-version PR and rerun `Verify consumer`; then remove any temporary workaround.
|
|
125
108
|
|
|
126
109
|
WM is a pilot consumer, not an alternative governance authority. Its local checks may add product
|
|
127
110
|
coverage but may not replace or weaken the shipped lock/checker/provider surfaces.
|
|
@@ -1,26 +1,24 @@
|
|
|
1
1
|
# Product consumer AI governance (provider-neutral)
|
|
2
2
|
|
|
3
|
-
> **Generated view**: upstream `build-fork-governance.mjs` publishes this
|
|
4
|
-
>
|
|
5
|
-
> AGENTS-compatible agents load it directly.
|
|
3
|
+
> **Generated view**: upstream `build-fork-governance.mjs` publishes this source as `AGENTS.md`; never
|
|
4
|
+
> edit the generated copy. Claude loads it via `CLAUDE.md`, Codex and other agents load it directly.
|
|
6
5
|
|
|
7
6
|
## Authority and trust boundary
|
|
8
7
|
|
|
9
|
-
- This repository builds a product
|
|
10
|
-
`@qijenchen/storybook-config`; it
|
|
11
|
-
- Merge enforcement
|
|
12
|
-
|
|
13
|
-
- Native Claude/Codex hooks are fast feedback only; hookless operation is judged by the same
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
installs the committed lock, verifies signatures, and runs the exact checker; SessionStart only verifies.
|
|
8
|
+
- This repository builds a product against exact versions of `@qijenchen/design-system` and
|
|
9
|
+
`@qijenchen/storybook-config`; it never authors or publishes them.
|
|
10
|
+
- Merge enforcement is protected `main` requiring exactly one `Verify consumer` check, which runs the
|
|
11
|
+
locked install, typecheck, import lint, and build against the exact candidate head.
|
|
12
|
+
- Native Claude/Codex hooks are fast feedback only; hookless operation is judged by the same hooks-off
|
|
13
|
+
checker. Hook commands scrub inherited startup injection before repository launchers, and the provider
|
|
14
|
+
host stays an external trust boundary — hooks never replace protected CI.
|
|
15
|
+
- Run `npm run setup:all` in every fresh local checkout and hosted setup/cache-refresh lifecycle: it
|
|
16
|
+
installs the committed lock, verifies signatures, and runs the exact checker. SessionStart only verifies.
|
|
19
17
|
- `governance/lock.json`, managed provider adapters, and managed skills are generated upstream.
|
|
20
|
-
Product-specific, provider-neutral policy belongs in `governance/overlay.md
|
|
21
|
-
|
|
18
|
+
Product-specific, provider-neutral policy belongs in `governance/overlay.md` (read it when present);
|
|
19
|
+
it may add stricter product rules but never replaces or weakens upstream controls.
|
|
22
20
|
- Never install a mutable tag or semver range for internal packages. Upgrades are reviewed pull
|
|
23
|
-
requests
|
|
21
|
+
requests pinning an exact version with the regenerated lock/adapters.
|
|
24
22
|
<!-- canonical-decision-authority:start -->
|
|
25
23
|
**Decision/Engineering Authority**:user 只拍板產品/UI/UX SSOT 真取捨及可感知/產品語意變更(behavior/interaction/IA/visual/token/layout/content/a11y/canonical rules);核准 = user 在對話中對 exact target + choice 說可(**「我說可以就是可以,就是授權」— user 2026-08-04 verbatim**;最新一則 user 訊息的明確 blanket 授權即核准當下 pending 的 exact 提案)。operation digest 為可選佐證——有引且相符可加強、有引但不符 fail-closed、未引不阻擋(強制引 digest 屬已拆除的 per-PR 簽章同族儀式,835b519e 先例)。引用/條件/舊 scope/跨 target 無效。其餘工程/external writes 皆 Standing Authorization AUTO,含已核准 UI/UX 實作/機械 generation/sync 與 source→commit/PR/merge→canonical `infra/governance/release-workflow.json` 的 `pr-checks → merge → publish → readback → consumer`;依 frozen scope、SSOT、required checks、security、least privilege、rollback/readback 收斂,不逐 milestone 重問。Deep Audit 必須在單一 branch/PR 完成 remediation 與 local/CI candidate validation,禁止把 immutable publish 當 iteration/test loop,每次 audit 最多一次 final release;只有另有 evidence ref 綁定 incident ID、failure class、published version 的 post-publish blocker 或 security incident 才可額外 release。Certification、rollout、staged rollout、preview/canary 與 independent review 是明確要求時的附加 assurance,不得進入標準 five-step release blocking graph;peer 不可用只阻擋明確要求的 independent-review claim。
|
|
26
24
|
|
|
@@ -31,30 +29,24 @@
|
|
|
31
29
|
|
|
32
30
|
## Six working principles
|
|
33
31
|
|
|
34
|
-
1. **World-class, no shortcuts**: visual and interaction decisions must be defensible against at
|
|
35
|
-
|
|
32
|
+
1. **World-class, no shortcuts**: visual and interaction decisions must be defensible against at least
|
|
33
|
+
three relevant systems (Polaris, Material, Atlassian, Ant, Carbon, Apple HIG).
|
|
36
34
|
2. **Consume before inventing**: search the installed public API, nearest component spec, token, and
|
|
37
35
|
pattern before adding a value, wrapper, variant, or layout primitive.
|
|
38
|
-
3. **Change all affected surfaces**: product code, tests/stories, and
|
|
39
|
-
|
|
40
|
-
4. **Use real product scenarios**: examples
|
|
41
|
-
|
|
36
|
+
3. **Change all affected surfaces**: product code, tests/stories, and docs move together. A DS defect is
|
|
37
|
+
reported upstream with a minimal reproduction; never patch `node_modules`.
|
|
38
|
+
4. **Use real product scenarios**: examples show recognizable business work, not Option A/B/C
|
|
39
|
+
placeholders or minimal mocks that conceal composition problems.
|
|
42
40
|
5. **Ask only for a genuine product decision**: first search current product usage and the nearest
|
|
43
|
-
shipped DS spec
|
|
44
|
-
6. **Fix the invariant, not one symptom**: search
|
|
45
|
-
|
|
41
|
+
shipped DS spec; stop only when the remaining choice changes product UX or canonical meaning.
|
|
42
|
+
6. **Fix the invariant, not one symptom**: search sibling occurrences, add a regression proof, and route
|
|
43
|
+
reusable DS/template defects to their canonical upstream owner.
|
|
46
44
|
|
|
47
45
|
## Before changing product UI
|
|
48
46
|
|
|
49
|
-
Record the canonical inputs you inspected:
|
|
50
|
-
|
|
51
|
-
-
|
|
52
|
-
- the nearest shipped `*.spec.md` under
|
|
53
|
-
`node_modules/@qijenchen/design-system/src/`;
|
|
54
|
-
- relevant token docs under
|
|
55
|
-
`node_modules/@qijenchen/design-system/src/tokens/`;
|
|
56
|
-
- a nearest shipped story or a real product precedent;
|
|
57
|
-
- any product-specific exception and its concrete rationale.
|
|
47
|
+
Record the canonical inputs you inspected: public component/pattern exports; the nearest shipped
|
|
48
|
+
`*.spec.md` and token docs under `node_modules/@qijenchen/design-system/src/`; a nearest shipped story
|
|
49
|
+
or real product precedent; and any product-specific exception with its concrete rationale.
|
|
58
50
|
|
|
59
51
|
Only import public package exports. Deep imports, copied DS source, raw primitive reimplementations,
|
|
60
52
|
magic visual values, and undocumented escape markers are governance failures.
|
|
@@ -75,14 +67,10 @@ allowed only when the shipped spec makes it intentional and the exception is nar
|
|
|
75
67
|
|
|
76
68
|
## Verification contract
|
|
77
69
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
2. `npm run typecheck`;
|
|
83
|
-
3. `npm run build`;
|
|
84
|
-
4. product lint/test/a11y scripts when present;
|
|
85
|
-
5. browser or Storybook visual verification for user-visible changes.
|
|
70
|
+
Run every check this product has and report its real outcome. The minimum repository-wide contract is
|
|
71
|
+
`npm run governance:check` (exact installed, hooks-off authority), `npm run typecheck`, `npm run build`,
|
|
72
|
+
product lint/test/a11y scripts when present, and browser or Storybook visual verification for
|
|
73
|
+
user-visible changes.
|
|
86
74
|
|
|
87
75
|
Never replace a check with `true`, an empty script, a notice-only waiver, or an unverified claim.
|
|
88
76
|
Missing required tooling is a failure, not a pass. Evidence must bind the checked source snapshot.
|
|
@@ -93,35 +81,30 @@ Missing required tooling is a failure, not a pass. Evidence must bind the checke
|
|
|
93
81
|
- Native events enter one immutable hook corpus; unsupported events use the exact checker/protected-CI
|
|
94
82
|
fallback and are never presented as native parity.
|
|
95
83
|
- Future providers read `AGENTS.md` and use the same checks; adapters cannot redefine semantics.
|
|
96
|
-
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
84
|
+
- An explicitly requested independent-review deliverable needs a distinct certified peer and immutable
|
|
85
|
+
read-only evidence, or the report claims `REVIEW-BLOCKED`. Peer availability never blocks ordinary
|
|
86
|
+
engineering or the standard five-step release. Product review cannot authorize DS/template/release
|
|
87
|
+
changes; route reusable defects upstream.
|
|
100
88
|
|
|
101
89
|
## Git and release flow
|
|
102
90
|
|
|
103
91
|
- The upstream design-system authority owns the machine-readable release SSOT at
|
|
104
|
-
`infra/governance/release-workflow.json`: `pr-checks → merge → publish → readback → consumer`.
|
|
105
|
-
|
|
106
|
-
|
|
92
|
+
`infra/governance/release-workflow.json`: `pr-checks → merge → publish → readback → consumer`. Every
|
|
93
|
+
engineering step is AUTO; only an unresolved product/UI/UX SSOT choice is ASK. Login, MFA, OAuth, or a
|
|
94
|
+
missing credential reference pauses only the affected action, then execution resumes AUTO.
|
|
107
95
|
- One task uses one working branch and one PR into protected `main`; never direct-push `main`.
|
|
108
|
-
- The required `Verify consumer` check, conversations, and protected-main exact readback must be clear
|
|
109
|
-
|
|
96
|
+
- The required `Verify consumer` check, conversations, and protected-main exact readback must be clear;
|
|
97
|
+
then merge and verify under Standing Authorization — no self-approval or chat trigger. Preview, a11y,
|
|
110
98
|
visual, canary, and independent-peer evidence are scheduled or optional unless the user explicitly
|
|
111
|
-
requests them
|
|
112
|
-
standard release by default.
|
|
99
|
+
requests them, and never block the standard release by default.
|
|
113
100
|
- Product repos never publish the DS; exact-version upgrade PRs merge after `Verify consumer` passes.
|
|
114
101
|
|
|
115
102
|
## Pilot and upstream feedback
|
|
116
103
|
|
|
117
|
-
This product may serve as a canary for the DS/product template. When a failure is reusable:
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
3. fix the canonical owner first;
|
|
122
|
-
4. release an immutable upstream version;
|
|
123
|
-
5. upgrade this product by exact-version PR and rerun the required `Verify consumer` check;
|
|
124
|
-
6. remove any temporary product workaround after the upstream fix lands.
|
|
104
|
+
This product may serve as a canary for the DS/product template. When a failure is reusable: preserve a
|
|
105
|
+
minimal reproduction and evidence; classify the owner as product, DS, template, governance corpus, or
|
|
106
|
+
deployment infrastructure; fix the canonical owner first; release an immutable upstream version;
|
|
107
|
+
upgrade by exact-version PR and rerun `Verify consumer`; then remove any temporary workaround.
|
|
125
108
|
|
|
126
109
|
WM is a pilot consumer, not an alternative governance authority. Its local checks may add product
|
|
127
110
|
coverage but may not replace or weaken the shipped lock/checker/provider surfaces.
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
"schemaVersion": 1,
|
|
4
4
|
"role": "template-consumer",
|
|
5
5
|
"release": {
|
|
6
|
-
"designSystem": "0.1.0-beta.
|
|
7
|
-
"storybookConfig": "0.1.0-beta.
|
|
6
|
+
"designSystem": "0.1.0-beta.117",
|
|
7
|
+
"storybookConfig": "0.1.0-beta.117"
|
|
8
8
|
},
|
|
9
9
|
"upgradeTrust": {
|
|
10
10
|
"schemaVersion": 1,
|
|
@@ -42,13 +42,13 @@
|
|
|
42
42
|
"implementationSha256": "98b74118fb5b410b77ad2994aa9105fa7609c7353822f8c5213cce54d94f0af4"
|
|
43
43
|
},
|
|
44
44
|
"payload": {
|
|
45
|
-
"forkCorpusLockSha256": "
|
|
45
|
+
"forkCorpusLockSha256": "92a7a449773f392fb29ef81c5709e240acd72c96b30343d656fdb63b01af730a",
|
|
46
46
|
"discoveryPolicySha256": "fba289aeeb5a3f11139b9589f7ab08b5e8c8799c7bdf8f0ea57ebfeb8e7c9da6",
|
|
47
47
|
"providerMaterializersSha256": "732e85b01a12e7dd19469e26e4427f0e0cfe5117a78fc9f69c2f0f89702f463a",
|
|
48
|
-
"providerLifecycleSha256": "
|
|
48
|
+
"providerLifecycleSha256": "9a9f921c2dc064d4cf3d0dd0b7fc45e3e322d373ff5c29222bde9e25f33a7223",
|
|
49
49
|
"providerInventorySha256": "00adf1c4f6b3367055a9cc3fdfe658660771b4c9931f696e12761a95076ad92c",
|
|
50
50
|
"executionRuntimeSha256": "d9377cc45308731f287d7b1711b7c38fc4e02ff8f84729bcbbf01bb52d136904",
|
|
51
|
-
"commonInstructionSha256": "
|
|
51
|
+
"commonInstructionSha256": "a72c51a412d6cdb3961d691744013c8362e826626a330cecf4a296a6f4d93a5c",
|
|
52
52
|
"providerArtifactDigests": {
|
|
53
53
|
"claude": {
|
|
54
54
|
"instructionSha256": "f56a44c730506258cc7e2581dbdd31bfd1e6d13d60dc8a8ee8bcc398228453fb",
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
"treeDigests": {}
|
|
58
58
|
},
|
|
59
59
|
"codex": {
|
|
60
|
-
"instructionSha256": "
|
|
60
|
+
"instructionSha256": "a72c51a412d6cdb3961d691744013c8362e826626a330cecf4a296a6f4d93a5c",
|
|
61
61
|
"hookSha256": "de8b8a9739dc9736cfe28004cbbc462dae525485202c871af9265d4dd8049740",
|
|
62
62
|
"skillsSha256": "6411ba088fd09f048caca23083e5ef5367887632dd3c604b11f6a1cab5060466",
|
|
63
63
|
"treeDigests": {}
|
|
@@ -109,7 +109,7 @@
|
|
|
109
109
|
"scripts/lib/closed-tool-execution.mjs": "eacd0cd92c5bff03e40ff4e82c02fae9bf2e6f543f157eef3d41c3ed8b7d3cb6",
|
|
110
110
|
"scripts/lib/consumer-control-plane-policy.mjs": "ea8b11ddc5c964ea742ccba5e6a3bc2f215db5d165afe2cca96192812287750c",
|
|
111
111
|
"scripts/lib/exact-workspace-dependencies.mjs": "3c9453e5228d7eaf1bfef3350585746e1aff1475411cb7cf8696bf9acdb048cf",
|
|
112
|
-
"scripts/lib/governance-dependency-bootstrap.mjs": "
|
|
112
|
+
"scripts/lib/governance-dependency-bootstrap.mjs": "8b37cf68731810ad665e02b7ac4a2a5a4ad55b01c6d9e0cbb37f33f3b00118f3",
|
|
113
113
|
"scripts/lib/provider-lifecycle.mjs": "9aabb2c98efc454b8555308a34830e6590b034b10a63f76f788fbd4cf37ce7e7",
|
|
114
114
|
"scripts/lib/verified-exact-npm-runtime.mjs": "811ed3390a4ff6b4e818a5ce8b5c0ce34e10f48fb443b6177d6e4c8e14fa9670",
|
|
115
115
|
"scripts/lib/workspace-post-create.mjs": "f3ddc6db740d5c4d48b1c6e16c55222325e4d1c16fe6644a455e7b7e5bea0a0d",
|
|
@@ -217,7 +217,13 @@ export function runClosedBootstrapStep(command, args, {
|
|
|
217
217
|
cwd: root,
|
|
218
218
|
env: environment,
|
|
219
219
|
shell: false,
|
|
220
|
-
|
|
220
|
+
// npm progress lines are diagnostics, not program output. Callers such as
|
|
221
|
+
// `sync-all.mjs --json` promise a machine-readable stdout, and an inherited fd 1 would
|
|
222
|
+
// interleave npm chatter with that report (2026-08-06: a consumer upgrade applied
|
|
223
|
+
// cleanly yet its workflow died on `jq: Invalid numeric literal` because `npm warn` and
|
|
224
|
+
// `added 4 packages` landed in the report file). Route child stdout to this process's
|
|
225
|
+
// stderr so the logs stay visible while stdout stays a closed machine channel.
|
|
226
|
+
stdio: ['inherit', 2, 'inherit'],
|
|
221
227
|
timeout: timeoutMs,
|
|
222
228
|
windowsHide: true,
|
|
223
229
|
})
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
{
|
|
8
8
|
"schemaVersion": 1,
|
|
9
9
|
"file": "AGENTS.md",
|
|
10
|
-
"sha256": "
|
|
10
|
+
"sha256": "a72c51a412d6cdb3961d691744013c8362e826626a330cecf4a296a6f4d93a5c",
|
|
11
11
|
"source": "common instruction compatibility alias",
|
|
12
12
|
"classification": null,
|
|
13
13
|
"destination": null
|
|
@@ -271,7 +271,7 @@
|
|
|
271
271
|
{
|
|
272
272
|
"schemaVersion": 1,
|
|
273
273
|
"file": "common/instruction.md",
|
|
274
|
-
"sha256": "
|
|
274
|
+
"sha256": "a72c51a412d6cdb3961d691744013c8362e826626a330cecf4a296a6f4d93a5c",
|
|
275
275
|
"source": "scripts/fork-role-sources/AGENTS.product.md + AGENTS.md#canonical-decision-authority",
|
|
276
276
|
"classification": null,
|
|
277
277
|
"destination": null
|
|
@@ -359,7 +359,7 @@
|
|
|
359
359
|
{
|
|
360
360
|
"schemaVersion": 1,
|
|
361
361
|
"file": "consumer/managed-files/46f10bc55cdfdf834d0749eebff42ea0bb8576f361b36d2b6ba1851354c50150.blob",
|
|
362
|
-
"sha256": "
|
|
362
|
+
"sha256": "8b37cf68731810ad665e02b7ac4a2a5a4ad55b01c6d9e0cbb37f33f3b00118f3",
|
|
363
363
|
"source": "scripts/lib/governance-dependency-bootstrap.mjs",
|
|
364
364
|
"classification": null,
|
|
365
365
|
"destination": "scripts/lib/governance-dependency-bootstrap.mjs"
|
|
@@ -919,7 +919,7 @@
|
|
|
919
919
|
{
|
|
920
920
|
"schemaVersion": 1,
|
|
921
921
|
"file": "manifest.json",
|
|
922
|
-
"sha256": "
|
|
922
|
+
"sha256": "8927ec4334bdd1cbc4c7bc7d41b1153b83db245070e328c2433867270aa7c5ec",
|
|
923
923
|
"source": null,
|
|
924
924
|
"classification": null,
|
|
925
925
|
"destination": null
|
|
@@ -104,20 +104,20 @@
|
|
|
104
104
|
},
|
|
105
105
|
"providerLifecycle": {
|
|
106
106
|
"schemaVersion": 4,
|
|
107
|
-
"releaseVersion": "0.1.0-beta.
|
|
107
|
+
"releaseVersion": "0.1.0-beta.117",
|
|
108
108
|
"immutableHead": {
|
|
109
109
|
"providerInventorySha256": "86e9d0668cb54ad1bf05c36e78b4aa80417d5f468c929dd3ddcf69c1afbf32e4",
|
|
110
|
-
"releaseVersion": "0.1.0-beta.
|
|
111
|
-
"snapshotSha256": "
|
|
110
|
+
"releaseVersion": "0.1.0-beta.116",
|
|
111
|
+
"snapshotSha256": "f022897462d32b7e633c5f9d8e58ee9efe41e641ae42ab52668c4e3f360e2f9d"
|
|
112
112
|
},
|
|
113
|
-
"ledgerSha256": "
|
|
114
|
-
"previousSnapshotSha256": "
|
|
115
|
-
"currentSnapshotSha256": "
|
|
113
|
+
"ledgerSha256": "a3d9e38cc1ed799f058ae771d35d951004158ac2874eba0fddb52b509de33dda",
|
|
114
|
+
"previousSnapshotSha256": "f022897462d32b7e633c5f9d8e58ee9efe41e641ae42ab52668c4e3f360e2f9d",
|
|
115
|
+
"currentSnapshotSha256": "e03b95342944512f9c084c0ac5fe5fba4b688924758ce725f16504eaec8af5a4",
|
|
116
116
|
"currentProviderInventorySha256": "86e9d0668cb54ad1bf05c36e78b4aa80417d5f468c929dd3ddcf69c1afbf32e4",
|
|
117
117
|
"retiredProviders": [],
|
|
118
118
|
"currentSnapshot": {
|
|
119
|
-
"releaseVersion": "0.1.0-beta.
|
|
120
|
-
"previousSnapshotSha256": "
|
|
119
|
+
"releaseVersion": "0.1.0-beta.117",
|
|
120
|
+
"previousSnapshotSha256": "f022897462d32b7e633c5f9d8e58ee9efe41e641ae42ab52668c4e3f360e2f9d",
|
|
121
121
|
"providers": [
|
|
122
122
|
{
|
|
123
123
|
"id": "claude",
|
|
@@ -193,8 +193,8 @@
|
|
|
193
193
|
"retiredProviders": []
|
|
194
194
|
},
|
|
195
195
|
"immutableHeadSnapshot": {
|
|
196
|
-
"releaseVersion": "0.1.0-beta.
|
|
197
|
-
"previousSnapshotSha256": "
|
|
196
|
+
"releaseVersion": "0.1.0-beta.116",
|
|
197
|
+
"previousSnapshotSha256": "25bf1bb5c751623812af2c5b35b8c47bac9a93a718aa2b9222a6b3294296446d",
|
|
198
198
|
"providers": [
|
|
199
199
|
{
|
|
200
200
|
"id": "claude",
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"type": "git",
|
|
5
5
|
"url": "git+https://github.com/ajenchen/design-system.git"
|
|
6
6
|
},
|
|
7
|
-
"version": "0.1.0-beta.
|
|
7
|
+
"version": "0.1.0-beta.117",
|
|
8
8
|
"private": false,
|
|
9
9
|
"description": "World-class design system — components, patterns, tokens, hooks (single source of truth for team distribution).",
|
|
10
10
|
"type": "module",
|
|
@@ -26,7 +26,7 @@ export const UsageGuidance: Story = {
|
|
|
26
26
|
</li>
|
|
27
27
|
<li>
|
|
28
28
|
• 需要右側詳情面板(議題詳情 / inspector / 成員資料)跟 main 並存——如 Linear 點選議題後右側展開詳情。開合行為見{' '}
|
|
29
|
-
<LinkTo kind="Design System/Components/AppShell/設計規格" name="
|
|
29
|
+
<LinkTo kind="Design System/Components/AppShell/設計規格" name="狀態行為"><span className="text-primary hover:text-primary-hover font-medium cursor-pointer">設計規格 → 狀態行為(右側面板開合)</span></LinkTo>
|
|
30
30
|
</li>
|
|
31
31
|
</ul>
|
|
32
32
|
</section>
|