@bvdm/delano 0.1.7 → 0.1.8
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/.delano/README.md +7 -0
- package/.delano/viewer/README.md +19 -0
- package/.delano/viewer/public/app.js +818 -0
- package/.delano/viewer/public/explorer.svg +3 -0
- package/.delano/viewer/public/index.html +21 -0
- package/.delano/viewer/public/markdown.svg +6 -0
- package/.delano/viewer/public/styles.css +1042 -0
- package/.delano/viewer/public/vscode.svg +24 -0
- package/.delano/viewer/server.js +389 -0
- package/HANDBOOK.md +65 -45
- package/README.md +10 -2
- package/assets/install-manifest.json +112 -35
- package/assets/payload/.agents/README.md +31 -6
- package/assets/payload/.agents/adapters/claude/README.md +22 -3
- package/assets/payload/.agents/adapters/codex/README.md +22 -3
- package/assets/payload/.agents/adapters/opencode/README.md +22 -3
- package/assets/payload/.agents/adapters/pi/README.md +22 -3
- package/assets/payload/.agents/common/log-safety.js +55 -0
- package/assets/payload/.agents/eval-fixtures/skill-output/invalid/missing-evidence/output.json +6 -0
- package/assets/payload/.agents/eval-fixtures/skill-output/valid/summary/output.json +7 -0
- package/assets/payload/.agents/fixtures/github/status-snapshot.json +6 -0
- package/assets/payload/.agents/fixtures/linear/issue-snapshot.json +6 -0
- package/assets/payload/.agents/hooks/bash-worktree-fix.sh +2 -1
- package/assets/payload/.agents/hooks/post-tool-logger.js +2 -1
- package/assets/payload/.agents/hooks/user-prompt-logger.js +17 -1
- package/assets/payload/.agents/logs/delivery-metrics.md +22 -0
- package/assets/payload/.agents/logs/schema.md +20 -1
- package/assets/payload/.agents/rules/delivery-modes.md +17 -0
- package/assets/payload/.agents/schemas/README.md +22 -0
- package/assets/payload/.agents/schemas/artifact-scope.json +237 -0
- package/assets/payload/.agents/schemas/artifacts/context.schema.json +11 -0
- package/assets/payload/.agents/schemas/artifacts/decision_log.schema.json +12 -0
- package/assets/payload/.agents/schemas/artifacts/evidence.schema.json +17 -0
- package/assets/payload/.agents/schemas/artifacts/plan.schema.json +83 -0
- package/assets/payload/.agents/schemas/artifacts/spec.schema.json +101 -0
- package/assets/payload/.agents/schemas/artifacts/task.schema.json +121 -0
- package/assets/payload/.agents/schemas/artifacts/update.schema.json +12 -0
- package/assets/payload/.agents/schemas/artifacts/workstream.schema.json +66 -0
- package/assets/payload/.agents/schemas/evidence-map.json +53 -0
- package/assets/payload/.agents/schemas/learning/closeout-learning-proposal.schema.json +20 -0
- package/assets/payload/.agents/schemas/learning/delivery-metric-event.schema.json +21 -0
- package/assets/payload/.agents/schemas/leases/lease.schema.json +39 -0
- package/assets/payload/.agents/schemas/metrics/delivery-event.schema.json +29 -0
- package/assets/payload/.agents/schemas/metrics/delivery-events.schema.json +49 -0
- package/assets/payload/.agents/schemas/operating-modes.json +42 -0
- package/assets/payload/.agents/schemas/status-transitions.json +31 -0
- package/assets/payload/.agents/schemas/sync/drift-report.schema.json +25 -0
- package/assets/payload/.agents/schemas/sync/drift-taxonomy.json +38 -0
- package/assets/payload/.agents/schemas/sync/sync-map.schema.json +39 -0
- package/assets/payload/.agents/scripts/README.md +1 -0
- package/assets/payload/.agents/scripts/audit-context-files.mjs +54 -0
- package/assets/payload/.agents/scripts/audit-context-scoring.mjs +14 -0
- package/assets/payload/.agents/scripts/build-drift-report.mjs +133 -0
- package/assets/payload/.agents/scripts/check-artifact-schemas.mjs +116 -0
- package/assets/payload/.agents/scripts/check-closeout-learning-proposals.mjs +23 -0
- package/assets/payload/.agents/scripts/check-context-audit.mjs +61 -0
- package/assets/payload/.agents/scripts/check-delivery-metric-events.mjs +35 -0
- package/assets/payload/.agents/scripts/check-delivery-metrics.mjs +52 -0
- package/assets/payload/.agents/scripts/check-evidence-map.mjs +143 -0
- package/assets/payload/.agents/scripts/check-github-status-inspection.mjs +93 -0
- package/assets/payload/.agents/scripts/check-github-sync.mjs +159 -0
- package/assets/payload/.agents/scripts/check-handoff-summaries.mjs +57 -0
- package/assets/payload/.agents/scripts/check-lease-conflicts.mjs +24 -0
- package/assets/payload/.agents/scripts/check-lease-contracts.mjs +17 -0
- package/assets/payload/.agents/scripts/check-linear-issue-inspection.mjs +63 -0
- package/assets/payload/.agents/scripts/check-local-sync-map.mjs +151 -0
- package/assets/payload/.agents/scripts/check-log-safety.sh +62 -0
- package/assets/payload/.agents/scripts/check-operating-modes.mjs +99 -0
- package/assets/payload/.agents/scripts/check-path-standards.sh +1 -1
- package/assets/payload/.agents/scripts/check-skill-output-evals.mjs +13 -0
- package/assets/payload/.agents/scripts/check-status-transitions.mjs +169 -0
- package/assets/payload/.agents/scripts/check-strict-fixtures.mjs +140 -0
- package/assets/payload/.agents/scripts/check-sync-schemas.mjs +52 -0
- package/assets/payload/.agents/scripts/check-text-safety.mjs +158 -0
- package/assets/payload/.agents/scripts/check-worktree-health.mjs +100 -0
- package/assets/payload/.agents/scripts/fix-path-standards.sh +1 -1
- package/assets/payload/.agents/scripts/inspect-github-sync.mjs +108 -0
- package/assets/payload/.agents/scripts/lease-manager.mjs +88 -0
- package/assets/payload/.agents/scripts/log-event.js +3 -0
- package/assets/payload/.agents/scripts/plan-sync-repairs.mjs +66 -0
- package/assets/payload/.agents/scripts/pm/validate.sh +656 -2
- package/assets/payload/.agents/scripts/propose-closeout-learning.mjs +20 -0
- package/assets/payload/.agents/scripts/read-local-sync-map.mjs +135 -0
- package/assets/payload/.agents/scripts/select-next-task.mjs +22 -0
- package/assets/payload/.agents/scripts/summarize-project-metrics.mjs +15 -0
- package/assets/payload/.agents/skills/closeout-skill/SKILL.md +3 -0
- package/assets/payload/.agents/skills/closeout-skill/references/runbook.md +5 -2
- package/assets/payload/.agents/skills/closeout-skill/templates/closure-checklist.md +2 -0
- package/assets/payload/.agents/skills/closeout-skill/templates/learning-proposal.md +21 -0
- package/assets/payload/.agents/skills/closeout-skill/templates/learning-proposals.md +25 -0
- package/assets/payload/.agents/validation-fixtures/strict/invalid/broken-dependencies/dependency.md +18 -0
- package/assets/payload/.agents/validation-fixtures/strict/invalid/broken-dependencies/task.md +24 -0
- package/assets/payload/.agents/validation-fixtures/strict/invalid/invalid-transition/task.md +20 -0
- package/assets/payload/.agents/validation-fixtures/strict/invalid/missing-evidence/task.md +27 -0
- package/assets/payload/.agents/validation-fixtures/strict/invalid/path-leak/task.md +27 -0
- package/assets/payload/.agents/validation-fixtures/strict/invalid/stale-context/context.md +9 -0
- package/assets/payload/.agents/validation-fixtures/strict/manifest.json +11 -0
- package/assets/payload/.agents/validation-fixtures/strict/valid/minimal-project/task.md +27 -0
- package/assets/payload/.delano/viewer/README.md +19 -0
- package/assets/payload/.delano/viewer/public/app.js +818 -0
- package/assets/payload/.delano/viewer/public/explorer.svg +3 -0
- package/assets/payload/.delano/viewer/public/index.html +21 -0
- package/assets/payload/.delano/viewer/public/markdown.svg +6 -0
- package/assets/payload/.delano/viewer/public/styles.css +1042 -0
- package/assets/payload/.delano/viewer/public/vscode.svg +24 -0
- package/assets/payload/.delano/viewer/server.js +389 -0
- package/assets/payload/.project/templates/plan.md +1 -1
- package/assets/payload/.project/templates/spec.md +1 -1
- package/assets/payload/.project/templates/task.md +1 -0
- package/assets/payload/HANDBOOK.md +65 -45
- package/package.json +31 -2
- package/src/cli/commands/viewer.js +81 -0
- package/src/cli/index.js +8 -0
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
## First Edition, v3
|
|
4
4
|
|
|
5
|
-
Version: 3.
|
|
6
|
-
Last updated: 2026-04
|
|
5
|
+
Version: 3.2
|
|
6
|
+
Last updated: 2026-05-04
|
|
7
7
|
|
|
8
8
|
---
|
|
9
9
|
|
|
@@ -56,7 +56,7 @@ Its core objective is:
|
|
|
56
56
|
|
|
57
57
|
### 1.1 Primary flow
|
|
58
58
|
|
|
59
|
-
**Outcome ->
|
|
59
|
+
**Outcome -> Planned Spec -> Probe Decision -> Active Spec -> Delivery Project -> Workstreams -> Tasks -> Linear Issues -> PRs -> Release -> Learnings**
|
|
60
60
|
|
|
61
61
|
### 1.2 Design principles
|
|
62
62
|
|
|
@@ -201,7 +201,7 @@ Recommended naming:
|
|
|
201
201
|
|
|
202
202
|
Operational rule:
|
|
203
203
|
|
|
204
|
-
- Every task issue must carry one workstream identifier.
|
|
204
|
+
- Every task issue must carry one workstream identifier in task frontmatter (`workstream: WS-A`) and the corresponding Linear workstream label (`ws-a`).
|
|
205
205
|
|
|
206
206
|
#### 4.2.5 Task -> Issue
|
|
207
207
|
|
|
@@ -296,7 +296,7 @@ A coding agent is Delano-compatible if it can:
|
|
|
296
296
|
name: <project-name>
|
|
297
297
|
slug: <kebab-case>
|
|
298
298
|
owner: <person-or-team>
|
|
299
|
-
status:
|
|
299
|
+
status: planned|active|complete|deferred
|
|
300
300
|
created: <ISO8601 UTC>
|
|
301
301
|
updated: <ISO8601 UTC>
|
|
302
302
|
outcome: <measurable target>
|
|
@@ -325,13 +325,13 @@ Required sections:
|
|
|
325
325
|
|
|
326
326
|
```yaml
|
|
327
327
|
name: <project-name>
|
|
328
|
-
status: planned|
|
|
328
|
+
status: planned|active|done|deferred
|
|
329
329
|
lead: <person>
|
|
330
330
|
created: <ISO8601 UTC>
|
|
331
331
|
updated: <ISO8601 UTC>
|
|
332
332
|
linear_project_id: <id>
|
|
333
333
|
risk_level: low|medium|high
|
|
334
|
-
spec_status_at_plan_time:
|
|
334
|
+
spec_status_at_plan_time: planned|active|complete|deferred
|
|
335
335
|
```
|
|
336
336
|
|
|
337
337
|
Required sections:
|
|
@@ -351,7 +351,8 @@ Required sections:
|
|
|
351
351
|
```yaml
|
|
352
352
|
id: T-001
|
|
353
353
|
name: <task-title>
|
|
354
|
-
status:
|
|
354
|
+
status: ready|in-progress|blocked|done|deferred
|
|
355
|
+
workstream: WS-A
|
|
355
356
|
created: <ISO8601 UTC>
|
|
356
357
|
updated: <ISO8601 UTC>
|
|
357
358
|
linear_issue_id: <id-or-empty>
|
|
@@ -360,8 +361,8 @@ github_pr: <url-or-empty>
|
|
|
360
361
|
depends_on: []
|
|
361
362
|
conflicts_with: []
|
|
362
363
|
parallel: true|false
|
|
363
|
-
priority: low|medium|high
|
|
364
|
-
estimate:
|
|
364
|
+
priority: low|medium|high
|
|
365
|
+
estimate: S|M|L|XL
|
|
365
366
|
```
|
|
366
367
|
|
|
367
368
|
Required sections:
|
|
@@ -376,7 +377,7 @@ Required sections:
|
|
|
376
377
|
|
|
377
378
|
- `created` immutable
|
|
378
379
|
- `updated` real UTC system timestamp
|
|
379
|
-
- probe decision explicit before spec
|
|
380
|
+
- probe decision explicit before spec activation
|
|
380
381
|
- dependency graph acyclic before execution
|
|
381
382
|
- no absolute path leakage in shared output
|
|
382
383
|
|
|
@@ -384,66 +385,71 @@ Required sections:
|
|
|
384
385
|
|
|
385
386
|
## 7) Status models and transition policy
|
|
386
387
|
|
|
387
|
-
### 7.1 Why
|
|
388
|
+
### 7.1 Why compact runtime states exist
|
|
388
389
|
|
|
389
|
-
|
|
390
|
+
The v0.2 runtime uses compact status sets that are enforced by schemas and validation:
|
|
390
391
|
|
|
391
|
-
- `
|
|
392
|
-
- `
|
|
393
|
-
- `
|
|
392
|
+
- `planned` means a spec, plan, or workstream is defined but not actively being executed.
|
|
393
|
+
- `ready` means a task is executable and should not carry unresolved local dependencies.
|
|
394
|
+
- `in-progress` means implementation has started.
|
|
395
|
+
- `blocked` exposes dependency constraints explicitly.
|
|
396
|
+
- `done` and `complete` are terminal success states for delivery plans/tasks and specs respectively.
|
|
397
|
+
- `deferred` is the terminal non-completion state for postponed or canceled work.
|
|
398
|
+
|
|
399
|
+
Idea triage belongs outside executable task files. Review is a gate recorded in evidence, updates, quality notes, or PR state; it is not a canonical v0.2 task status.
|
|
394
400
|
|
|
395
401
|
### 7.2 Lifecycle definitions
|
|
396
402
|
|
|
397
403
|
#### Spec
|
|
398
404
|
|
|
399
|
-
`
|
|
400
|
-
optional terminal: `
|
|
405
|
+
`planned -> active -> complete`
|
|
406
|
+
optional terminal: `deferred`
|
|
401
407
|
|
|
402
|
-
Probe decision rule while spec is `
|
|
408
|
+
Probe decision rule while spec is `planned`:
|
|
403
409
|
|
|
404
|
-
- `probe_required: false` allows
|
|
405
|
-
- `probe_required: true` requires a Prototype Probe and recorded findings before
|
|
410
|
+
- `probe_required: false` allows activation once other discovery gates pass.
|
|
411
|
+
- `probe_required: true` requires a Prototype Probe and recorded findings before activation.
|
|
406
412
|
|
|
407
413
|
#### Delivery Project
|
|
408
414
|
|
|
409
|
-
`planned ->
|
|
410
|
-
optional terminal: `
|
|
415
|
+
`planned -> active -> done`
|
|
416
|
+
optional terminal: `deferred`
|
|
411
417
|
|
|
412
418
|
#### Task
|
|
413
419
|
|
|
414
|
-
`
|
|
415
|
-
optional branches: `blocked`, `
|
|
420
|
+
`ready -> in-progress -> done`
|
|
421
|
+
optional branches: `blocked`, `deferred`
|
|
416
422
|
|
|
417
423
|
### 7.3 Transition policy
|
|
418
424
|
|
|
419
|
-
- No `in-progress` with unmet
|
|
425
|
+
- No `ready`, `in-progress`, or `done` transition with unmet local dependencies.
|
|
420
426
|
- No `done` without evidence completion.
|
|
421
427
|
- No project `done` with unresolved required tasks.
|
|
422
|
-
- No spec `
|
|
423
|
-
- No spec `
|
|
428
|
+
- No spec `active` without explicit probe decision fields.
|
|
429
|
+
- No spec `active` with unresolved required probe findings.
|
|
424
430
|
- No spec `complete` without outcome review.
|
|
425
431
|
|
|
432
|
+
Current artifact scans and proposed transitions are strict for local task dependencies: `ready`, `in-progress`, and `done` tasks fail validation when they depend on unresolved local tasks.
|
|
433
|
+
|
|
426
434
|
### 7.4 Review semantics
|
|
427
435
|
|
|
428
|
-
|
|
436
|
+
Review is a quality gate before closure. It may include one or more:
|
|
429
437
|
|
|
430
438
|
- code review
|
|
431
439
|
- quality gate verification
|
|
432
440
|
- product acceptance for user-visible changes
|
|
433
441
|
|
|
434
|
-
Teams must define exact review semantics in local policy.
|
|
442
|
+
Teams must define exact review semantics in local policy and record the result in evidence, updates, or PR state.
|
|
435
443
|
|
|
436
444
|
### 7.5 Explicit Delano -> Linear status mapping
|
|
437
445
|
|
|
438
446
|
| Delano task status | Preferred Linear state |
|
|
439
447
|
|---|---|
|
|
440
|
-
| backlog | Triage or Backlog |
|
|
441
448
|
| ready | Todo |
|
|
442
449
|
| in-progress | In Progress |
|
|
443
|
-
| review | In Review |
|
|
444
450
|
| done | Done |
|
|
445
451
|
| blocked | Blocked (if exists) or Todo + blocked relation/label |
|
|
446
|
-
|
|
|
452
|
+
| deferred | Canceled, Icebox, or Backlog depending on team policy |
|
|
447
453
|
|
|
448
454
|
If team workflow names differ, maintain this semantic mapping in sync rules.
|
|
449
455
|
|
|
@@ -458,6 +464,17 @@ If team workflow names differ, maintain this semantic mapping in sync rules.
|
|
|
458
464
|
- **Rules**: constraints and policy
|
|
459
465
|
- **Hooks**: runtime tracking and guardrails
|
|
460
466
|
|
|
467
|
+
### 8.8 v0.2 runtime foundation
|
|
468
|
+
|
|
469
|
+
v0.2 adds enforceable local runtime surfaces around the handbook process:
|
|
470
|
+
|
|
471
|
+
- **Operating modes**: Mode 0 patch, Mode 1 scoped change, Mode 2 feature, Mode 3 uncertain feature, and Mode 4 multi-stream. Modes are additive hints for task depth and required proof, not a reason to skip safety gates.
|
|
472
|
+
- **Contract validation**: schemas and validators cover artifact scope, schema shape, operating modes, status transitions, evidence maps, strict fixtures, sync scaffolding, leases, metrics, text safety, context audit, and skill-output evals.
|
|
473
|
+
- **Evidence expectations**: done tasks need checked acceptance criteria plus implementation or validation evidence. v0.2 evidence mapping remains markdown-based; full criterion-to-ledger instance validation is a later maturity gate.
|
|
474
|
+
- **Dry-run sync**: GitHub and Linear sync surfaces inspect, classify drift, and produce repair plans without remote mutation unless a future explicit apply gate is approved.
|
|
475
|
+
- **Lease semantics**: multi-agent work uses leases with conflict zones, lifecycle state, and handoff summaries. Conflict checks must run before overlapping work proceeds.
|
|
476
|
+
- **Release gates**: `npm run build:assets`, package-manifest drift checks, PM validation, and `npm test` are the local release baseline. Formal CI publishing, enterprise state-machine orchestration, and non-mocked Linear behavior remain later maturity gates.
|
|
477
|
+
|
|
461
478
|
### 8.2 Skill contract standard
|
|
462
479
|
|
|
463
480
|
Each skill must define:
|
|
@@ -476,7 +493,7 @@ Each skill must define:
|
|
|
476
493
|
|
|
477
494
|
```yaml
|
|
478
495
|
name: breakdown-skill
|
|
479
|
-
intent: decompose
|
|
496
|
+
intent: decompose active plan into atomic tasks
|
|
480
497
|
inputs:
|
|
481
498
|
- spec_path
|
|
482
499
|
- plan_path
|
|
@@ -549,6 +566,7 @@ script_hooks:
|
|
|
549
566
|
| `query-log.sh` | query change stream |
|
|
550
567
|
| `test-and-log.sh` | capture test execution logs |
|
|
551
568
|
| `check-path-standards.sh` | path/privacy enforcement |
|
|
569
|
+
| `check-text-safety.mjs` | hidden/bidirectional Unicode control enforcement |
|
|
552
570
|
| `fix-path-standards.sh` | path normalization |
|
|
553
571
|
| `git-sparse-download.sh` | sparse external resource retrieval |
|
|
554
572
|
|
|
@@ -598,7 +616,7 @@ This keeps rapid learning without weakening team governance.
|
|
|
598
616
|
|
|
599
617
|
**Goal**
|
|
600
618
|
|
|
601
|
-
- define a measurable outcome,
|
|
619
|
+
- define a measurable outcome, create the planned Spec, and make the probe decision explicit
|
|
602
620
|
|
|
603
621
|
**Entry criteria**
|
|
604
622
|
|
|
@@ -611,7 +629,7 @@ This keeps rapid learning without weakening team governance.
|
|
|
611
629
|
|
|
612
630
|
**Exit artifacts**
|
|
613
631
|
|
|
614
|
-
-
|
|
632
|
+
- planned `spec.md` with uncertainty and probe decision recorded
|
|
615
633
|
|
|
616
634
|
**Gate**
|
|
617
635
|
|
|
@@ -624,11 +642,11 @@ This keeps rapid learning without weakening team governance.
|
|
|
624
642
|
|
|
625
643
|
**Goal**
|
|
626
644
|
|
|
627
|
-
- retire or bound material uncertainty before spec
|
|
645
|
+
- retire or bound material uncertainty before spec activation
|
|
628
646
|
|
|
629
647
|
**Entry criteria**
|
|
630
648
|
|
|
631
|
-
- `spec.md` is still `
|
|
649
|
+
- `spec.md` is still `planned`
|
|
632
650
|
- `probe_required: true`
|
|
633
651
|
|
|
634
652
|
**Primary components**
|
|
@@ -640,14 +658,14 @@ This keeps rapid learning without weakening team governance.
|
|
|
640
658
|
|
|
641
659
|
**Exit artifacts**
|
|
642
660
|
|
|
643
|
-
- updated
|
|
644
|
-
- probe findings and
|
|
661
|
+
- updated planned `spec.md`
|
|
662
|
+
- probe findings and activation recommendation
|
|
645
663
|
|
|
646
664
|
**Gate**
|
|
647
665
|
|
|
648
666
|
- probe findings recorded
|
|
649
667
|
- touched surfaces and footguns explicit
|
|
650
|
-
-
|
|
668
|
+
- activation recommendation clear
|
|
651
669
|
|
|
652
670
|
### Stage C: Planning
|
|
653
671
|
|
|
@@ -657,7 +675,7 @@ This keeps rapid learning without weakening team governance.
|
|
|
657
675
|
|
|
658
676
|
**Entry criteria**
|
|
659
677
|
|
|
660
|
-
- `spec.md`
|
|
678
|
+
- `spec.md` active
|
|
661
679
|
|
|
662
680
|
**Primary components**
|
|
663
681
|
|
|
@@ -980,6 +998,7 @@ Every update should answer:
|
|
|
980
998
|
- immutable creation timestamps
|
|
981
999
|
- UTC timestamp policy
|
|
982
1000
|
- path privacy enforcement
|
|
1001
|
+
- hidden/bidirectional Unicode control enforcement
|
|
983
1002
|
- GitHub remote safety checks
|
|
984
1003
|
|
|
985
1004
|
### 14.2 Default team policy pack
|
|
@@ -1172,7 +1191,7 @@ This section is designed for live planning and execution meetings.
|
|
|
1172
1191
|
name: <project-name>
|
|
1173
1192
|
slug: <kebab-case>
|
|
1174
1193
|
owner: <person-or-team>
|
|
1175
|
-
status:
|
|
1194
|
+
status: planned
|
|
1176
1195
|
created: <ISO8601 UTC>
|
|
1177
1196
|
updated: <ISO8601 UTC>
|
|
1178
1197
|
outcome: <measurable target>
|
|
@@ -1223,7 +1242,7 @@ created: <ISO8601 UTC>
|
|
|
1223
1242
|
updated: <ISO8601 UTC>
|
|
1224
1243
|
linear_project_id:
|
|
1225
1244
|
risk_level: <low|medium|high>
|
|
1226
|
-
spec_status_at_plan_time: <
|
|
1245
|
+
spec_status_at_plan_time: <planned|active|complete|deferred>
|
|
1227
1246
|
---
|
|
1228
1247
|
|
|
1229
1248
|
# Delivery Plan: <project-name>
|
|
@@ -1278,6 +1297,7 @@ updated: <ISO8601 UTC>
|
|
|
1278
1297
|
id: T-001
|
|
1279
1298
|
name: <task-title>
|
|
1280
1299
|
status: ready
|
|
1300
|
+
workstream: WS-A
|
|
1281
1301
|
created: <ISO8601 UTC>
|
|
1282
1302
|
updated: <ISO8601 UTC>
|
|
1283
1303
|
linear_issue_id:
|
|
@@ -1425,7 +1445,7 @@ For each active epic scope:
|
|
|
1425
1445
|
|
|
1426
1446
|
#### Step 4: map statuses
|
|
1427
1447
|
|
|
1428
|
-
- `open` -> `
|
|
1448
|
+
- `open` -> `ready` when executable, or `deferred` when not actionable in the current delivery scope
|
|
1429
1449
|
- `in-progress` -> `in-progress`
|
|
1430
1450
|
- `closed` -> `done`
|
|
1431
1451
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bvdm/delano",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.8",
|
|
4
4
|
"description": "CLI for the Delano delivery runtime.",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"bin": {
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
"bin/",
|
|
15
15
|
"src/",
|
|
16
16
|
"assets/",
|
|
17
|
+
".delano/",
|
|
17
18
|
"README.md",
|
|
18
19
|
"HANDBOOK.md",
|
|
19
20
|
"install-delano.sh"
|
|
@@ -21,6 +22,34 @@
|
|
|
21
22
|
"scripts": {
|
|
22
23
|
"build:assets": "node scripts/build-npm-assets.mjs",
|
|
23
24
|
"prepack": "npm run build:assets",
|
|
24
|
-
"test": "node --test"
|
|
25
|
+
"test": "node --test",
|
|
26
|
+
"viewer": "node .delano/viewer/server.js",
|
|
27
|
+
"check:package-manifest": "node scripts/check-package-manifest-drift.mjs",
|
|
28
|
+
"check:agent-entry-docs": "node scripts/check-agent-entry-docs.mjs",
|
|
29
|
+
"check:artifact-scope": "node scripts/check-artifact-scope.mjs",
|
|
30
|
+
"check:artifact-schemas": "node scripts/check-artifact-schemas.mjs",
|
|
31
|
+
"check:operating-modes": "node scripts/check-operating-modes.mjs",
|
|
32
|
+
"check:status-transitions": "node scripts/check-status-transitions.mjs",
|
|
33
|
+
"check:evidence-map": "node scripts/check-evidence-map.mjs",
|
|
34
|
+
"check:strict-fixtures": "node scripts/check-strict-fixtures.mjs",
|
|
35
|
+
"check:sync-schemas": "node scripts/check-sync-schemas.mjs",
|
|
36
|
+
"check:local-sync-map": "node scripts/read-local-sync-map.mjs",
|
|
37
|
+
"check:github-sync": "node scripts/check-github-sync.mjs",
|
|
38
|
+
"check:github-status": "node scripts/check-github-status-inspection.mjs",
|
|
39
|
+
"check:linear-inspection": "node scripts/check-linear-issue-inspection.mjs",
|
|
40
|
+
"check:drift-report": "node scripts/build-drift-report.mjs",
|
|
41
|
+
"check:repair-plan": "node scripts/plan-sync-repairs.mjs",
|
|
42
|
+
"check:lease-contracts": "node scripts/check-lease-contracts.mjs",
|
|
43
|
+
"check:lease-manager": "node scripts/lease-manager.mjs self-test",
|
|
44
|
+
"check:lease-conflicts": "node scripts/check-lease-conflicts.mjs --zone scripts/lease-manager.mjs --mode exclusive",
|
|
45
|
+
"check:next-task": "node scripts/select-next-task.mjs --project delano-multi-agent-execution --stream default",
|
|
46
|
+
"check:worktree-health": "node scripts/check-worktree-health.mjs",
|
|
47
|
+
"check:text-safety": "node scripts/check-text-safety.mjs",
|
|
48
|
+
"check:delivery-metrics": "node scripts/check-delivery-metrics.mjs",
|
|
49
|
+
"check:handoff-summaries": "node scripts/check-handoff-summaries.mjs --self-test",
|
|
50
|
+
"check:project-metrics": "node scripts/summarize-project-metrics.mjs --json",
|
|
51
|
+
"check:context-audit": "node scripts/check-context-audit.mjs",
|
|
52
|
+
"check:skill-output-evals": "node scripts/check-skill-output-evals.mjs",
|
|
53
|
+
"check:closeout-learning": "node scripts/propose-closeout-learning.mjs --json && node scripts/check-closeout-learning-proposals.mjs"
|
|
25
54
|
}
|
|
26
55
|
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
const path = require("node:path");
|
|
2
|
+
const { spawnSync } = require("node:child_process");
|
|
3
|
+
|
|
4
|
+
const { CliError } = require("../lib/errors");
|
|
5
|
+
const { findDelanoRoot, getPackageRoot } = require("../lib/runtime");
|
|
6
|
+
|
|
7
|
+
function parseViewerArgs(args) {
|
|
8
|
+
const options = {
|
|
9
|
+
target: process.cwd()
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
for (let index = 0; index < args.length; index += 1) {
|
|
13
|
+
const arg = args[index];
|
|
14
|
+
|
|
15
|
+
if (arg === "--target") {
|
|
16
|
+
index += 1;
|
|
17
|
+
if (!args[index]) {
|
|
18
|
+
throw new CliError("Missing value for --target.", 1);
|
|
19
|
+
}
|
|
20
|
+
options.target = args[index];
|
|
21
|
+
continue;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
if (arg.startsWith("--target=")) {
|
|
25
|
+
options.target = arg.slice("--target=".length);
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
throw new CliError(`Unknown viewer option: ${arg}`, 1);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
options.target = path.resolve(options.target);
|
|
33
|
+
return options;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function getViewerHelp() {
|
|
37
|
+
return [
|
|
38
|
+
"Usage:",
|
|
39
|
+
" delano viewer [options]",
|
|
40
|
+
"",
|
|
41
|
+
"Options:",
|
|
42
|
+
" --target <dir> Delano repository to view (default: current directory)",
|
|
43
|
+
" -h, --help Show help",
|
|
44
|
+
"",
|
|
45
|
+
"Environment:",
|
|
46
|
+
" DELANO_VIEWER_PORT or PORT overrides the default port 3977."
|
|
47
|
+
].join("\n");
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
async function runViewer(args) {
|
|
51
|
+
const options = parseViewerArgs(args);
|
|
52
|
+
const delanoRoot = findDelanoRoot(options.target);
|
|
53
|
+
if (!delanoRoot) {
|
|
54
|
+
throw new CliError(
|
|
55
|
+
`Could not find a Delano repository from ${options.target}. Run 'delano install' first or pass --target.`,
|
|
56
|
+
1
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
const serverPath = path.join(getPackageRoot(), ".delano", "viewer", "server.js");
|
|
61
|
+
const result = spawnSync(process.execPath, [serverPath], {
|
|
62
|
+
cwd: delanoRoot,
|
|
63
|
+
stdio: "inherit",
|
|
64
|
+
env: {
|
|
65
|
+
...process.env,
|
|
66
|
+
DELANO_VIEWER_ROOT: delanoRoot
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
if (result.error) {
|
|
71
|
+
throw new CliError(`Failed to launch Delano viewer: ${result.error.message}`, 1);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
return typeof result.status === "number" ? result.status : 1;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
module.exports = {
|
|
78
|
+
getViewerHelp,
|
|
79
|
+
parseViewerArgs,
|
|
80
|
+
runViewer
|
|
81
|
+
};
|
package/src/cli/index.js
CHANGED
|
@@ -5,6 +5,7 @@ const { CliError } = require("./lib/errors");
|
|
|
5
5
|
const { getPackageRoot } = require("./lib/runtime");
|
|
6
6
|
const { getOnboardingHelp, runOnboarding } = require("./commands/onboarding");
|
|
7
7
|
const { runInstall, getInstallHelp } = require("./commands/install");
|
|
8
|
+
const { runViewer, getViewerHelp } = require("./commands/viewer");
|
|
8
9
|
const { createWrapperCommand } = require("./commands/wrapper");
|
|
9
10
|
|
|
10
11
|
const wrapperCommands = {
|
|
@@ -25,6 +26,11 @@ const commands = {
|
|
|
25
26
|
run: runInstall,
|
|
26
27
|
help: getInstallHelp
|
|
27
28
|
},
|
|
29
|
+
viewer: {
|
|
30
|
+
description: "Launch the read-only Delano UI for a local repository.",
|
|
31
|
+
run: runViewer,
|
|
32
|
+
help: getViewerHelp
|
|
33
|
+
},
|
|
28
34
|
init: wrapperCommands.init,
|
|
29
35
|
validate: wrapperCommands.validate,
|
|
30
36
|
status: wrapperCommands.status,
|
|
@@ -92,6 +98,7 @@ function getGeneralHelp() {
|
|
|
92
98
|
"Commands:",
|
|
93
99
|
" onboarding Analyze AGENTS.md with the approval-first onboarding skill",
|
|
94
100
|
" install Install the approved Delano runtime payload",
|
|
101
|
+
" viewer Launch the read-only local UI for .project contracts",
|
|
95
102
|
" init Run .agents/scripts/pm/init.sh in the current Delano repo",
|
|
96
103
|
" validate Run .agents/scripts/pm/validate.sh in the current Delano repo",
|
|
97
104
|
" status Run .agents/scripts/pm/status.sh in the current Delano repo",
|
|
@@ -107,6 +114,7 @@ function getGeneralHelp() {
|
|
|
107
114
|
" delano --yes",
|
|
108
115
|
" delano --target ../my-repo --yes",
|
|
109
116
|
" npx -y @bvdm/delano@latest --yes",
|
|
117
|
+
" delano viewer",
|
|
110
118
|
" delano validate",
|
|
111
119
|
" delano next -- --all",
|
|
112
120
|
"",
|