duaer-spec 0.27.0 → 0.27.1

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 (51) hide show
  1. package/.claude/rules/agents-workflow.md +2 -0
  2. package/.claude/rules/duaer-spec.md +1 -0
  3. package/.cursor/rules/agents-workflow.mdc +2 -0
  4. package/.cursor/rules/duaer-spec.mdc +1 -0
  5. package/.duaer/active-job.json +3 -3
  6. package/.duaer/specs/270-patch-version/delivery.json +7 -0
  7. package/.duaer/specs/270-patch-version/spec.md +19 -0
  8. package/.duaer/specs/270-patch-version/tasks.md +4 -0
  9. package/.duaer/specs/271-fde04-compat/delivery.json +9 -0
  10. package/.duaer/specs/271-fde04-compat/spec.md +25 -0
  11. package/.duaer/specs/271-fde04-compat/tasks.md +5 -0
  12. package/.duaer/specs/272-fde03-env-check/delivery.json +9 -0
  13. package/.duaer/specs/272-fde03-env-check/spec.md +34 -0
  14. package/.duaer/specs/272-fde03-env-check/tasks.md +5 -0
  15. package/.duaer/specs/273-fde06-data-precheck/delivery.json +9 -0
  16. package/.duaer/specs/273-fde06-data-precheck/spec.md +37 -0
  17. package/.duaer/specs/273-fde06-data-precheck/tasks.md +5 -0
  18. package/.duaer/specs/274-fde05-external-deps/delivery.json +9 -0
  19. package/.duaer/specs/274-fde05-external-deps/spec.md +37 -0
  20. package/.duaer/specs/274-fde05-external-deps/tasks.md +5 -0
  21. package/.duaer/specs/275-release-0271/spec.md +13 -0
  22. package/.duaer/specs/275-release-0271/tasks.md +4 -0
  23. package/AGENTS.md +5 -2
  24. package/CHANGELOG.md +35 -0
  25. package/bin/duaer-live.mjs +117 -12
  26. package/bin/live-deliverables.mjs +12 -0
  27. package/bin/live-modules.mjs +64 -1
  28. package/bin/live-project-chat.mjs +6 -0
  29. package/docs/agent/branching-and-release.md +16 -0
  30. package/docs/agent/e2e-test-plan.md +5 -0
  31. package/docs/agent/live-desk.md +19 -1
  32. package/docs/agent/workflow.md +2 -0
  33. package/package.json +1 -1
  34. package/web/live-dev/app.js +69 -2
  35. package/web/live-dev/baseline.mjs +3 -0
  36. package/web/live-dev/compat-matrix.mjs +38 -0
  37. package/web/live-dev/confirm-card.mjs +3 -0
  38. package/web/live-dev/data-precheck.mjs +35 -0
  39. package/web/live-dev/env-check.mjs +41 -0
  40. package/web/live-dev/external-deps.mjs +35 -0
  41. package/web/live-dev/i18n-de.js +11 -2
  42. package/web/live-dev/i18n-es.js +11 -2
  43. package/web/live-dev/i18n-fr.js +11 -2
  44. package/web/live-dev/i18n-ja.js +11 -2
  45. package/web/live-dev/i18n-ko.js +11 -2
  46. package/web/live-dev/i18n-pt-BR.js +11 -2
  47. package/web/live-dev/i18n-ru.js +11 -2
  48. package/web/live-dev/i18n-vi.js +11 -2
  49. package/web/live-dev/i18n-zh-TW.js +11 -2
  50. package/web/live-dev/i18n.js +22 -4
  51. package/web/live-dev/index.html +21 -3
@@ -50,6 +50,8 @@ cd .worktree/feat-login
50
50
  - Push only when the user explicitly asks (a deploy/hosting ask authorizes
51
51
  the `gh` + push needed for that publish — see `docs/agent/deploy-github.md`)
52
52
  - Promote **`develop` → `main`** only when the user asks to go online
53
+ - Version: fast iteration bumps the **patch** (`0.27.1`, `0.27.2`, …). Next
54
+ after `0.27.1` is `0.27.2`. Do not bump the minor on every ship.
53
55
  - English docs: no Chinese (CJK); Chinese docs may include English terms
54
56
 
55
57
  ## GitHub issue / PR intake
@@ -33,6 +33,7 @@ For new behavior, fixes, refactors that change product behavior, or architecture
33
33
  as you go so progress is visible. Do not leave only coarse mega-tasks.
34
34
  7. Merge to **`develop`** when done (hotfix: **`main`**, then back-merge
35
35
  **`develop`**). Promote to **`main`** only if the user asks to go online.
36
+ Version bump is the patch (`0.27.2` next).
36
37
  8. **Handoff (mandatory):** stop processes bound to `.worktree/<id>/`, remove
37
38
  the worktree, then restart services from the primary checkout on `develop`
38
39
  using `.duaer/handoff.json` / `duaer handoff [--run]`. Never leave the user
@@ -53,6 +53,8 @@ cd .worktree/feat-login
53
53
  - Push only when the user explicitly asks (a deploy/hosting ask authorizes
54
54
  the `gh` + push needed for that publish — see `docs/agent/deploy-github.md`)
55
55
  - Promote **`develop` → `main`** only when the user asks to go online
56
+ - Version: fast iteration bumps the **patch** (`0.27.1`, `0.27.2`, …). Next
57
+ after `0.27.1` is `0.27.2`. Do not bump the minor on every ship.
56
58
  - English docs: no Chinese (CJK); Chinese docs may include English terms
57
59
 
58
60
  ## GitHub issue / PR intake
@@ -37,6 +37,7 @@ For new behavior, fixes, refactors that change product behavior, or architecture
37
37
  as you go so progress is visible. Do not leave only coarse mega-tasks.
38
38
  7. Merge to **`develop`** when done (hotfix: **`main`**, then back-merge
39
39
  **`develop`**). Promote to **`main`** only if the user asks to go online.
40
+ Version bump is the patch (`0.27.2` next).
40
41
  8. **Handoff (mandatory):** stop processes bound to `.worktree/<id>/`, remove
41
42
  the worktree, then restart services from the primary checkout on `develop`
42
43
  using `.duaer/handoff.json` / `duaer handoff [--run]`. Never leave the user
@@ -1,5 +1,5 @@
1
1
  {
2
- "feature": "269-release-027",
3
- "branch": "chore/release-027",
4
- "worktree": ".worktree/chore-release-027"
2
+ "feature": "275-release-0271",
3
+ "branch": "feat/release-0271",
4
+ "worktree": ".worktree/feat-release-0271"
5
5
  }
@@ -0,0 +1,7 @@
1
+ {
2
+ "status": "accepted",
3
+ "summary": "Fast iteration ships as patch versions. Next release after 0.27.0 is 0.27.1.",
4
+ "verification": {
5
+ "docs": "Policy only; no runtime change. testing.md docs waiver."
6
+ }
7
+ }
@@ -0,0 +1,19 @@
1
+ # Feature Specification: Patch versions for fast iteration
2
+
3
+ ## Goal
4
+
5
+ Ships after 0.27.0 increment the patch number. The next release is 0.27.1.
6
+
7
+ ## In scope
8
+
9
+ - Release docs and agent rules state the default bump is the last number
10
+
11
+ ## Out of scope
12
+
13
+ - Cutting 0.27.1 now
14
+ - Changing npm or GitHub release automation
15
+
16
+ ## Acceptance
17
+
18
+ 1. Branching docs say 0.27.0 is followed by 0.27.1, not 0.28.0
19
+ 2. Agent rules repeat that patch bump
@@ -0,0 +1,4 @@
1
+ # Tasks — 270-patch-version
2
+
3
+ - [x] Document patch bumps (next release 0.27.1)
4
+ - [x] Repeat the rule in agent workflow files
@@ -0,0 +1,9 @@
1
+ {
2
+ "status": "accepted",
3
+ "summary": "Feature device matrix must name two targets, evidence, and a fallback; kickoff schedules the compat check.",
4
+ "verification": {
5
+ "L0": "node --check bin/duaer-live.mjs bin/live-modules.mjs — pass",
6
+ "L1": "npm test — 239 pass",
7
+ "L3": "npm run test:live — pass"
8
+ }
9
+ }
@@ -0,0 +1,25 @@
1
+ # Feature Specification: FDE-04 browser matrix evidence
2
+
3
+ ## Goal
4
+
5
+ A feature confirm card cannot pass with a vague browser line. The device
6
+ matrix must name real targets, point at evidence, and state a fallback.
7
+ Kickoff schedules that check.
8
+
9
+ ## In scope
10
+
11
+ - Local validate on deviceMatrix
12
+ - One FDE-04 task per confirmed module
13
+ - Hint, placeholder, and chat/accept prompts
14
+
15
+ ## Out of scope
16
+
17
+ - Bug desk
18
+ - Running a device lab
19
+
20
+ ## Acceptance
21
+
22
+ 1. "主流浏览器" or a single browser name fails local validate
23
+ 2. Two named targets plus screenshot/cloud evidence plus a fallback passes
24
+ 3. Kickoff adds an FDE-04 compat evidence task
25
+ 4. npm test and npm run test:live pass
@@ -0,0 +1,5 @@
1
+ # Tasks — 271-fde04-compat
2
+
3
+ - [x] Validate the browser matrix as evidence
4
+ - [x] Inject an FDE-04 kickoff task
5
+ - [x] Update hints, prompts, docs, and tests
@@ -0,0 +1,9 @@
1
+ {
2
+ "status": "accepted",
3
+ "summary": "Feature confirm requires a passed DNS/TLS/CORS/auth/third-party checklist, or a no-customer opt-out. Kickoff schedules the probe before implement.",
4
+ "verification": {
5
+ "L0": "node --check bin/duaer-live.mjs bin/live-modules.mjs web/live-dev/app.js web/live-dev/env-check.mjs — pass",
6
+ "L1": "npm test — 242 pass",
7
+ "L3": "npm run test:live — pass"
8
+ }
9
+ }
@@ -0,0 +1,34 @@
1
+ # Feature Specification: FDE-03 environment checklist
2
+
3
+ ## Goal
4
+
5
+ A feature confirm card cannot pass until the environment checklist records
6
+ DNS, TLS, CORS, auth, and third-party reachability as passed. A failed probe
7
+ blocks confirm. Kickoff schedules that probe before implementation.
8
+
9
+ ## In scope
10
+
11
+ - Local validate on envChecklist
12
+ - One FDE-03 task per confirmed module that declares a customer environment,
13
+ placed before that module's implement task
14
+ - Hint, placeholder, and chat/accept prompts
15
+ - Explicit opt-out: no customer environment
16
+
17
+ ## Out of scope
18
+
19
+ - Bug desk
20
+ - Scanning the customer network from the desk
21
+
22
+ ## Assumptions
23
+
24
+ - The desk records the checklist; the digital employee runs the probes.
25
+ - 「无客户联调环境」 / "no customer environment" skips the five probes and
26
+ the kickoff task.
27
+
28
+ ## Acceptance
29
+
30
+ 1. A vague line, a missing probe, or any failed probe fails local validate
31
+ 2. All five probes marked passed, or the no-customer opt-out, passes
32
+ 3. Kickoff adds an FDE-03 env probe before implement when a customer
33
+ environment is declared, and skips it on the opt-out
34
+ 4. npm test and npm run test:live pass
@@ -0,0 +1,5 @@
1
+ # Tasks — 272-fde03-env-check
2
+
3
+ - [x] Validate the environment checklist (five probes passed, or no-customer opt-out)
4
+ - [x] Inject an FDE-03 kickoff task before implement
5
+ - [x] Update hints, prompts, docs, and tests
@@ -0,0 +1,9 @@
1
+ {
2
+ "status": "accepted",
3
+ "summary": "Feature confirm requires a field mapping, an import failure list, and an export, or a no-import opt-out. Kickoff schedules the precheck before implement.",
4
+ "verification": {
5
+ "L0": "node --check bin/duaer-live.mjs bin/live-modules.mjs web/live-dev/app.js web/live-dev/data-precheck.mjs — pass",
6
+ "L1": "npm test — 246 pass",
7
+ "L3": "npm run test:live — pass"
8
+ }
9
+ }
@@ -0,0 +1,37 @@
1
+ # Feature Specification: FDE-06 import precheck
2
+
3
+ ## Goal
4
+
5
+ A feature confirm card cannot pass until it records a field mapping, an
6
+ import precheck failure list, and that the list can be exported for
7
+ cleanup. Kickoff schedules that precheck before implementation.
8
+
9
+ ## In scope
10
+
11
+ - Local validate on dataPrecheck
12
+ - One FDE-06 task per confirmed module that declares an import, placed
13
+ before that module's implement task and after the environment probe
14
+ when both exist
15
+ - Hint, placeholder, and chat/accept prompts
16
+ - Explicit opt-out: no import for this module
17
+
18
+ ## Out of scope
19
+
20
+ - Bug desk
21
+ - Scanning a customer database from the desk
22
+
23
+ ## Assumptions
24
+
25
+ - The desk records the checklist; the digital employee produces the
26
+ mapping, the failure list, and the export.
27
+ - 「本模块无导入」 / "no import" skips the three requirements and the
28
+ kickoff task.
29
+
30
+ ## Acceptance
31
+
32
+ 1. A vague line or a line missing mapping, failure list, or export fails
33
+ local validate
34
+ 2. All three present, or the no-import opt-out, passes
35
+ 3. Kickoff adds an FDE-06 data precheck before implement when an import
36
+ is declared, and skips it on the opt-out
37
+ 4. npm test and npm run test:live pass
@@ -0,0 +1,5 @@
1
+ # Tasks — 273-fde06-data-precheck
2
+
3
+ - [x] Validate the import precheck (mapping, failure list, export, or no-import opt-out)
4
+ - [x] Inject an FDE-06 kickoff task before implement
5
+ - [x] Update hints, prompts, docs, and tests
@@ -0,0 +1,9 @@
1
+ {
2
+ "status": "accepted",
3
+ "summary": "Feature confirm requires a blocker, SLA, backup mock, and parallel path, or a no-dependency opt-out. Kickoff schedules the board before implement.",
4
+ "verification": {
5
+ "L0": "node --check bin/duaer-live.mjs bin/live-modules.mjs web/live-dev/app.js web/live-dev/external-deps.mjs — pass",
6
+ "L1": "npm test — 250 pass",
7
+ "L3": "npm run test:live — pass"
8
+ }
9
+ }
@@ -0,0 +1,37 @@
1
+ # Feature Specification: FDE-05 external dependency board
2
+
3
+ ## Goal
4
+
5
+ A feature confirm card cannot pass until it records a blocker, an SLA, a
6
+ backup mock, and a parallel path for third-party, ERP, or SSO work.
7
+ Kickoff schedules that board before implementation.
8
+
9
+ ## In scope
10
+
11
+ - Local validate on externalDeps
12
+ - One FDE-05 task per confirmed module that declares an external
13
+ dependency, placed before implement and after the env probe and data
14
+ precheck when those exist
15
+ - Hint, placeholder, and chat/accept prompts
16
+ - Explicit opt-out: no external dependency
17
+
18
+ ## Out of scope
19
+
20
+ - Bug desk
21
+ - Calling the vendor or the customer ERP from the desk
22
+
23
+ ## Assumptions
24
+
25
+ - The desk records the board; the digital employee keeps the blocker,
26
+ SLA, mock, and parallel path current.
27
+ - 「本模块无外部依赖」 / "no external dependency" skips the four items
28
+ and the kickoff task.
29
+
30
+ ## Acceptance
31
+
32
+ 1. A vague line or a line missing blocker, SLA, mock, or parallel path
33
+ fails local validate
34
+ 2. All four present, or the no-dependency opt-out, passes
35
+ 3. Kickoff adds an FDE-05 task before implement when a dependency is
36
+ declared, and skips it on the opt-out
37
+ 4. npm test and npm run test:live pass
@@ -0,0 +1,5 @@
1
+ # Tasks — 274-fde05-external-deps
2
+
3
+ - [x] Validate the external dependency board (blocker, SLA, mock, parallel path, or opt-out)
4
+ - [x] Inject an FDE-05 kickoff task before implement
5
+ - [x] Update hints, prompts, docs, and tests
@@ -0,0 +1,13 @@
1
+ # Feature Specification: Release 0.27.1
2
+
3
+ ## Goal
4
+
5
+ Ship 0.27.1: FDE-03 environment checklist, FDE-04 compat evidence, FDE-05
6
+ external dependency board, FDE-06 import precheck, and the patch-version
7
+ policy. Promote develop to main, publish a GitHub Release, and let npm
8
+ Trusted Publishing run.
9
+
10
+ ## Acceptance
11
+
12
+ 1. `package.json` is `0.27.1`; CHANGELOG has `0.27.1` and an empty Unreleased section.
13
+ 2. Tag `v0.27.1` is on `main`; GitHub Release is published.
@@ -0,0 +1,4 @@
1
+ # Tasks — 275-release-0271
2
+
3
+ - [x] Bump 0.27.1 and move changelog notes
4
+ - [ ] Tag v0.27.1 on main and publish the GitHub Release
package/AGENTS.md CHANGED
@@ -294,7 +294,9 @@ After normal development:
294
294
  12. Push only when the user explicitly requested remote publishing for the
295
295
  current request
296
296
  13. Promote **`develop` → `main`** only when the user explicitly asks to ship /
297
- go online (see [branching-and-release](docs/agent/branching-and-release.md))
297
+ go online (see [branching-and-release](docs/agent/branching-and-release.md)).
298
+ Fast iteration: bump the **patch** (`0.27.1`, `0.27.2`, …). Do not bump
299
+ the minor on every ship. The next release after `0.27.1` is `0.27.2`.
298
300
 
299
301
  **Production hotfix:** base and merge into **`main`**, then merge the fix into
300
302
  **`develop`** so integration does not regress. Then clean up the worktree.
@@ -350,7 +352,8 @@ git worktree prune
350
352
  13. Stop worktree services; remove worktree; delete short branch; **handoff**
351
353
  restart on `develop` (`duaer handoff [--run]` / `.duaer/handoff.json`)
352
354
  14. Push only when explicitly requested
353
- 15. Promote **`develop` → `main`** only when the user explicitly asks to go online
355
+ 15. Promote **`develop` → `main`** only when the user explicitly asks to go online.
356
+ Version bump is the patch (`0.27.2` next); see branching-and-release.
354
357
 
355
358
  Development must not begin before isolation steps 1–3 are complete.
356
359
 
package/CHANGELOG.md CHANGED
@@ -2,6 +2,41 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 0.27.1 — 2026-09-21
6
+
7
+ ### Feat: FDE-05 external dependency board before kickoff
8
+
9
+ - Feature confirm requires a blocker, SLA, backup mock, and parallel path,
10
+ or an explicit no-dependency opt-out
11
+ - Kickoff adds that board before implement when a third party, ERP, or SSO
12
+ is declared
13
+
14
+ ### Feat: FDE-06 import precheck before kickoff
15
+
16
+ - Feature confirm requires a field mapping, an import failure list, and an
17
+ export for cleanup, or an explicit no-import opt-out
18
+ - Kickoff adds a data-precheck task before implement when an import is
19
+ declared
20
+
21
+ ### Feat: FDE-03 environment checklist before kickoff
22
+
23
+ - Feature confirm requires DNS, TLS, CORS, auth, and third-party reachability
24
+ recorded as passed, or an explicit no-customer opt-out
25
+ - A failed probe blocks confirm
26
+ - Kickoff adds an environment-probe task before implement when a customer
27
+ environment is declared
28
+
29
+ ### Feat: FDE-04 browser matrix must include evidence
30
+
31
+ - Device matrix needs two named browsers or domestic clients, screenshot or
32
+ cloud evidence, and a polyfill or fallback
33
+ - Kickoff adds a compat-evidence task per confirmed module
34
+
35
+ ### Docs: fast iteration uses patch versions
36
+
37
+ - Default ship bump is the last number (`0.27.1`, `0.27.2`, …)
38
+ - Next release after `0.27.0` is `0.27.1`; do not jump the minor on every ship
39
+
5
40
  ## 0.27.0 — 2026-09-21
6
41
 
7
42
  ### Feat: FDE-07 UAT pack on confirm