@bvdm/delano 0.1.7 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/.delano/README.md +7 -0
  2. package/.delano/viewer/README.md +19 -0
  3. package/.delano/viewer/public/app.js +818 -0
  4. package/.delano/viewer/public/explorer.svg +3 -0
  5. package/.delano/viewer/public/index.html +21 -0
  6. package/.delano/viewer/public/markdown.svg +6 -0
  7. package/.delano/viewer/public/styles.css +1042 -0
  8. package/.delano/viewer/public/vscode.svg +24 -0
  9. package/.delano/viewer/server.js +389 -0
  10. package/HANDBOOK.md +65 -45
  11. package/README.md +10 -2
  12. package/assets/install-manifest.json +112 -35
  13. package/assets/payload/.agents/README.md +31 -6
  14. package/assets/payload/.agents/adapters/claude/README.md +22 -3
  15. package/assets/payload/.agents/adapters/codex/README.md +22 -3
  16. package/assets/payload/.agents/adapters/opencode/README.md +22 -3
  17. package/assets/payload/.agents/adapters/pi/README.md +22 -3
  18. package/assets/payload/.agents/common/log-safety.js +55 -0
  19. package/assets/payload/.agents/eval-fixtures/skill-output/invalid/missing-evidence/output.json +6 -0
  20. package/assets/payload/.agents/eval-fixtures/skill-output/valid/summary/output.json +7 -0
  21. package/assets/payload/.agents/fixtures/github/status-snapshot.json +6 -0
  22. package/assets/payload/.agents/fixtures/linear/issue-snapshot.json +6 -0
  23. package/assets/payload/.agents/hooks/bash-worktree-fix.sh +2 -1
  24. package/assets/payload/.agents/hooks/post-tool-logger.js +2 -1
  25. package/assets/payload/.agents/hooks/user-prompt-logger.js +17 -1
  26. package/assets/payload/.agents/logs/delivery-metrics.md +22 -0
  27. package/assets/payload/.agents/logs/schema.md +20 -1
  28. package/assets/payload/.agents/rules/delivery-modes.md +17 -0
  29. package/assets/payload/.agents/schemas/README.md +22 -0
  30. package/assets/payload/.agents/schemas/artifact-scope.json +237 -0
  31. package/assets/payload/.agents/schemas/artifacts/context.schema.json +11 -0
  32. package/assets/payload/.agents/schemas/artifacts/decision_log.schema.json +12 -0
  33. package/assets/payload/.agents/schemas/artifacts/evidence.schema.json +17 -0
  34. package/assets/payload/.agents/schemas/artifacts/plan.schema.json +83 -0
  35. package/assets/payload/.agents/schemas/artifacts/spec.schema.json +101 -0
  36. package/assets/payload/.agents/schemas/artifacts/task.schema.json +121 -0
  37. package/assets/payload/.agents/schemas/artifacts/update.schema.json +12 -0
  38. package/assets/payload/.agents/schemas/artifacts/workstream.schema.json +66 -0
  39. package/assets/payload/.agents/schemas/evidence-map.json +53 -0
  40. package/assets/payload/.agents/schemas/learning/closeout-learning-proposal.schema.json +20 -0
  41. package/assets/payload/.agents/schemas/learning/delivery-metric-event.schema.json +21 -0
  42. package/assets/payload/.agents/schemas/leases/lease.schema.json +39 -0
  43. package/assets/payload/.agents/schemas/metrics/delivery-event.schema.json +29 -0
  44. package/assets/payload/.agents/schemas/metrics/delivery-events.schema.json +49 -0
  45. package/assets/payload/.agents/schemas/operating-modes.json +42 -0
  46. package/assets/payload/.agents/schemas/status-transitions.json +31 -0
  47. package/assets/payload/.agents/schemas/sync/drift-report.schema.json +25 -0
  48. package/assets/payload/.agents/schemas/sync/drift-taxonomy.json +38 -0
  49. package/assets/payload/.agents/schemas/sync/sync-map.schema.json +39 -0
  50. package/assets/payload/.agents/scripts/README.md +1 -0
  51. package/assets/payload/.agents/scripts/audit-context-files.mjs +54 -0
  52. package/assets/payload/.agents/scripts/audit-context-scoring.mjs +14 -0
  53. package/assets/payload/.agents/scripts/build-drift-report.mjs +133 -0
  54. package/assets/payload/.agents/scripts/check-artifact-schemas.mjs +116 -0
  55. package/assets/payload/.agents/scripts/check-closeout-learning-proposals.mjs +23 -0
  56. package/assets/payload/.agents/scripts/check-context-audit.mjs +61 -0
  57. package/assets/payload/.agents/scripts/check-delivery-metric-events.mjs +35 -0
  58. package/assets/payload/.agents/scripts/check-delivery-metrics.mjs +52 -0
  59. package/assets/payload/.agents/scripts/check-evidence-map.mjs +143 -0
  60. package/assets/payload/.agents/scripts/check-github-status-inspection.mjs +93 -0
  61. package/assets/payload/.agents/scripts/check-github-sync.mjs +159 -0
  62. package/assets/payload/.agents/scripts/check-handoff-summaries.mjs +57 -0
  63. package/assets/payload/.agents/scripts/check-lease-conflicts.mjs +24 -0
  64. package/assets/payload/.agents/scripts/check-lease-contracts.mjs +17 -0
  65. package/assets/payload/.agents/scripts/check-linear-issue-inspection.mjs +63 -0
  66. package/assets/payload/.agents/scripts/check-local-sync-map.mjs +151 -0
  67. package/assets/payload/.agents/scripts/check-log-safety.sh +62 -0
  68. package/assets/payload/.agents/scripts/check-operating-modes.mjs +99 -0
  69. package/assets/payload/.agents/scripts/check-path-standards.sh +1 -1
  70. package/assets/payload/.agents/scripts/check-skill-output-evals.mjs +13 -0
  71. package/assets/payload/.agents/scripts/check-status-transitions.mjs +169 -0
  72. package/assets/payload/.agents/scripts/check-strict-fixtures.mjs +140 -0
  73. package/assets/payload/.agents/scripts/check-sync-schemas.mjs +52 -0
  74. package/assets/payload/.agents/scripts/check-text-safety.mjs +158 -0
  75. package/assets/payload/.agents/scripts/check-worktree-health.mjs +100 -0
  76. package/assets/payload/.agents/scripts/fix-path-standards.sh +1 -1
  77. package/assets/payload/.agents/scripts/inspect-github-sync.mjs +108 -0
  78. package/assets/payload/.agents/scripts/lease-manager.mjs +88 -0
  79. package/assets/payload/.agents/scripts/log-event.js +3 -0
  80. package/assets/payload/.agents/scripts/plan-sync-repairs.mjs +66 -0
  81. package/assets/payload/.agents/scripts/pm/validate.sh +656 -2
  82. package/assets/payload/.agents/scripts/propose-closeout-learning.mjs +20 -0
  83. package/assets/payload/.agents/scripts/read-local-sync-map.mjs +135 -0
  84. package/assets/payload/.agents/scripts/select-next-task.mjs +22 -0
  85. package/assets/payload/.agents/scripts/summarize-project-metrics.mjs +15 -0
  86. package/assets/payload/.agents/skills/closeout-skill/SKILL.md +3 -0
  87. package/assets/payload/.agents/skills/closeout-skill/references/runbook.md +5 -2
  88. package/assets/payload/.agents/skills/closeout-skill/templates/closure-checklist.md +2 -0
  89. package/assets/payload/.agents/skills/closeout-skill/templates/learning-proposal.md +21 -0
  90. package/assets/payload/.agents/skills/closeout-skill/templates/learning-proposals.md +25 -0
  91. package/assets/payload/.agents/validation-fixtures/strict/invalid/broken-dependencies/dependency.md +18 -0
  92. package/assets/payload/.agents/validation-fixtures/strict/invalid/broken-dependencies/task.md +24 -0
  93. package/assets/payload/.agents/validation-fixtures/strict/invalid/invalid-transition/task.md +20 -0
  94. package/assets/payload/.agents/validation-fixtures/strict/invalid/missing-evidence/task.md +27 -0
  95. package/assets/payload/.agents/validation-fixtures/strict/invalid/path-leak/task.md +27 -0
  96. package/assets/payload/.agents/validation-fixtures/strict/invalid/stale-context/context.md +9 -0
  97. package/assets/payload/.agents/validation-fixtures/strict/manifest.json +11 -0
  98. package/assets/payload/.agents/validation-fixtures/strict/valid/minimal-project/task.md +27 -0
  99. package/assets/payload/.delano/viewer/README.md +19 -0
  100. package/assets/payload/.delano/viewer/public/app.js +818 -0
  101. package/assets/payload/.delano/viewer/public/explorer.svg +3 -0
  102. package/assets/payload/.delano/viewer/public/index.html +21 -0
  103. package/assets/payload/.delano/viewer/public/markdown.svg +6 -0
  104. package/assets/payload/.delano/viewer/public/styles.css +1042 -0
  105. package/assets/payload/.delano/viewer/public/vscode.svg +24 -0
  106. package/assets/payload/.delano/viewer/server.js +389 -0
  107. package/assets/payload/.project/templates/plan.md +1 -1
  108. package/assets/payload/.project/templates/spec.md +1 -1
  109. package/assets/payload/.project/templates/task.md +1 -0
  110. package/assets/payload/HANDBOOK.md +65 -45
  111. package/package.json +31 -2
  112. package/src/cli/commands/viewer.js +81 -0
  113. package/src/cli/index.js +8 -0
package/HANDBOOK.md CHANGED
@@ -2,8 +2,8 @@
2
2
 
3
3
  ## First Edition, v3
4
4
 
5
- Version: 3.1
6
- Last updated: 2026-04-03
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 -> Draft Spec -> Probe Decision -> Approved Spec -> Delivery Project -> Workstreams -> Tasks -> Linear Issues -> PRs -> Release -> Learnings**
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: draft|approved|active|complete|canceled
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|in-progress|done|canceled
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: approved|active
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: backlog|ready|in-progress|review|done|blocked|canceled
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|urgent
364
- estimate: XS|S|M|L|XL
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 approval
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 expanded task states exist
388
+ ### 7.1 Why compact runtime states exist
388
389
 
389
- Expanded states solve execution ambiguity:
390
+ The v0.2 runtime uses compact status sets that are enforced by schemas and validation:
390
391
 
391
- - `backlog` vs `ready` separates unsized ideas from executable work
392
- - `review` enforces handoff before closure
393
- - `blocked` exposes dependency constraints explicitly
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
- `draft -> approved -> active -> complete`
400
- optional terminal: `canceled`
405
+ `planned -> active -> complete`
406
+ optional terminal: `deferred`
401
407
 
402
- Probe decision rule while spec is `draft`:
408
+ Probe decision rule while spec is `planned`:
403
409
 
404
- - `probe_required: false` allows approval once other discovery gates pass
405
- - `probe_required: true` requires a Prototype Probe and recorded findings before approval
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 -> in-progress -> done`
410
- optional terminal: `canceled`
415
+ `planned -> active -> done`
416
+ optional terminal: `deferred`
411
417
 
412
418
  #### Task
413
419
 
414
- `backlog -> ready -> in-progress -> review -> done`
415
- optional branches: `blocked`, `canceled`
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 hard dependencies.
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 `approved` without explicit probe decision fields.
423
- - No spec `approved` with unresolved required probe findings.
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
- `review` may include one or more:
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
- | canceled | Canceled |
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 approved plan into atomic tasks
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, draft the Spec, and make the probe decision explicit
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
- - drafted `spec.md` with uncertainty and probe decision recorded
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 approval
645
+ - retire or bound material uncertainty before spec activation
628
646
 
629
647
  **Entry criteria**
630
648
 
631
- - `spec.md` is still `draft`
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 draft `spec.md`
644
- - probe findings and approval recommendation
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
- - approval recommendation clear
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` approved
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: draft
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: <approved|active>
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` -> `backlog` or `ready` depending on readiness
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/README.md CHANGED
@@ -10,13 +10,13 @@ Delano is an agent-agnostic delivery runtime. It keeps planning, execution, and
10
10
  - `.claude/` is a compatibility mirror of `.agents/`, not a second runtime.
11
11
  - `.delano/` is an optional UI layer.
12
12
 
13
- The npm package is intentionally thin. It distributes the approved runtime payload and wraps the existing shell-based PM scripts. It does not replace the handbook, the file contracts, or the underlying bash/Python execution layer.
13
+ The npm package is intentionally thin. It distributes the approved runtime payload, includes the read-only viewer UI, and wraps the existing shell-based PM scripts. It does not replace the handbook, the file contracts, or the underlying bash/Python execution layer.
14
14
 
15
15
  ## Delano CLI
16
16
 
17
17
  - Package: `@bvdm/delano`
18
18
  - Binary: `delano`
19
- - Commands: `onboarding`, `install`, `init`, `validate`, `status`, `next`
19
+ - Commands: `onboarding`, `install`, `viewer`, `init`, `validate`, `status`, `next`
20
20
  - Primary v1.1 goal: bootstrap a repo safely, then stay out of the way
21
21
 
22
22
  ## One-command bootstrap
@@ -59,6 +59,7 @@ Typical flow in a repository:
59
59
  ```bash
60
60
  cd /path/to/repo
61
61
  delano install --yes
62
+ delano viewer
62
63
  delano validate
63
64
  delano init <slug> "<Project Name>" [owner] [lead]
64
65
  ```
@@ -66,6 +67,7 @@ delano init <slug> "<Project Name>" [owner] [lead]
66
67
  Command intent:
67
68
 
68
69
  - `delano install` bootstraps the Delano runtime into the current repository
70
+ - `delano viewer` launches the read-only local UI for `.project` contracts
69
71
  - `delano validate` checks whether the runtime and required assets are in place
70
72
  - `delano init` creates a delivery project inside a repository that already has Delano installed
71
73
 
@@ -96,6 +98,7 @@ If you bootstrap with one-shot `npx`, keep using `npx` for wrapper commands:
96
98
 
97
99
  ```bash
98
100
  npx -y @bvdm/delano@latest onboarding --approve-agents-analysis
101
+ npx -y @bvdm/delano@latest viewer
99
102
  npx -y @bvdm/delano@latest validate
100
103
  npx -y @bvdm/delano@latest status
101
104
  npx -y @bvdm/delano@latest next -- --all
@@ -105,6 +108,7 @@ If the package is installed locally or globally, run these inside the target rep
105
108
 
106
109
  ```bash
107
110
  delano onboarding
111
+ delano viewer
108
112
  delano validate
109
113
  delano status
110
114
  delano next -- --all
@@ -119,6 +123,8 @@ bash .agents/scripts/pm/status.sh
119
123
  bash .agents/scripts/pm/next.sh --all
120
124
  ```
121
125
 
126
+ The viewer is packaged with `@bvdm/delano` and serves the selected repository's `.project` files read-only. It defaults to `http://127.0.0.1:3977`; set `DELANO_VIEWER_PORT` or `PORT` to use another port.
127
+
122
128
  ## Required dependencies
123
129
 
124
130
  Delano v1.1 assumes these tools are available:
@@ -142,6 +148,7 @@ The CLI does not bundle its own shell or Python runtime.
142
148
  - it does not install or overwrite repo-root Git config files such as `.gitignore` or `.gitattributes`
143
149
 
144
150
  The base install payload intentionally excludes top-level adapter entry docs such as `AGENTS.md`, `CLAUDE.md`, `CODEX.md`, `OPENCODE.md`, and `PI.md`. Those remain opt-in only.
151
+ The base install payload includes `.delano/`, including the read-only viewer UI.
145
152
  The installable `.project/context/` pack is seeded from generic templates during packaging; it does not ship Delano's own repo-specific context files into consumer repositories.
146
153
  After install, the recommended first step is `delano onboarding`, which requires explicit approval before it reviews `AGENTS.md`.
147
154
 
@@ -164,6 +171,7 @@ When working in this repository:
164
171
  - use the Delano status model and evidence discipline from `HANDBOOK.md`
165
172
  - keep sync and quality gates aligned with the handbook
166
173
  - use `delano init <slug> "<Project Name>" [owner] [lead]` to scaffold a new delivery project when needed
174
+ - use `delano viewer` to inspect `.project/` through the read-only local UI
167
175
  ```
168
176
 
169
177
  ## v1.1 boundaries
@@ -1,32 +1,88 @@
1
1
  {
2
2
  "version": 2,
3
3
  "files": [
4
+ ".agents/README.md",
4
5
  ".agents/adapters/claude/README.md",
5
6
  ".agents/adapters/codex/README.md",
6
7
  ".agents/adapters/opencode/README.md",
7
8
  ".agents/adapters/pi/README.md",
8
9
  ".agents/common/README.md",
10
+ ".agents/common/log-safety.js",
11
+ ".agents/eval-fixtures/skill-output/invalid/missing-evidence/output.json",
12
+ ".agents/eval-fixtures/skill-output/valid/summary/output.json",
13
+ ".agents/fixtures/github/status-snapshot.json",
14
+ ".agents/fixtures/linear/issue-snapshot.json",
15
+ ".agents/hooks/README.md",
9
16
  ".agents/hooks/bash-worktree-fix.sh",
10
17
  ".agents/hooks/post-tool-logger.js",
11
- ".agents/hooks/README.md",
12
18
  ".agents/hooks/session-tracker.js",
13
19
  ".agents/hooks/user-prompt-logger.js",
14
20
  ".agents/logs/.gitkeep",
21
+ ".agents/logs/delivery-metrics.md",
15
22
  ".agents/logs/schema.md",
16
- ".agents/README.md",
23
+ ".agents/rules/README.md",
17
24
  ".agents/rules/agent-coordination.md",
18
25
  ".agents/rules/datetime.md",
26
+ ".agents/rules/delivery-modes.md",
19
27
  ".agents/rules/frontmatter-operations.md",
20
28
  ".agents/rules/github-operations.md",
21
29
  ".agents/rules/path-standards.md",
22
- ".agents/rules/README.md",
23
30
  ".agents/rules/test-execution.md",
24
31
  ".agents/rules/worktree-operations.md",
32
+ ".agents/schemas/README.md",
33
+ ".agents/schemas/artifact-scope.json",
34
+ ".agents/schemas/artifacts/context.schema.json",
35
+ ".agents/schemas/artifacts/decision_log.schema.json",
36
+ ".agents/schemas/artifacts/evidence.schema.json",
37
+ ".agents/schemas/artifacts/plan.schema.json",
38
+ ".agents/schemas/artifacts/spec.schema.json",
39
+ ".agents/schemas/artifacts/task.schema.json",
40
+ ".agents/schemas/artifacts/update.schema.json",
41
+ ".agents/schemas/artifacts/workstream.schema.json",
42
+ ".agents/schemas/evidence-map.json",
43
+ ".agents/schemas/learning/closeout-learning-proposal.schema.json",
44
+ ".agents/schemas/learning/delivery-metric-event.schema.json",
45
+ ".agents/schemas/leases/lease.schema.json",
46
+ ".agents/schemas/metrics/delivery-event.schema.json",
47
+ ".agents/schemas/metrics/delivery-events.schema.json",
48
+ ".agents/schemas/operating-modes.json",
49
+ ".agents/schemas/status-transitions.json",
50
+ ".agents/schemas/sync/drift-report.schema.json",
51
+ ".agents/schemas/sync/drift-taxonomy.json",
52
+ ".agents/schemas/sync/sync-map.schema.json",
53
+ ".agents/scripts/README.md",
54
+ ".agents/scripts/audit-context-files.mjs",
55
+ ".agents/scripts/audit-context-scoring.mjs",
56
+ ".agents/scripts/build-drift-report.mjs",
57
+ ".agents/scripts/check-artifact-schemas.mjs",
58
+ ".agents/scripts/check-closeout-learning-proposals.mjs",
59
+ ".agents/scripts/check-context-audit.mjs",
60
+ ".agents/scripts/check-delivery-metric-events.mjs",
61
+ ".agents/scripts/check-delivery-metrics.mjs",
62
+ ".agents/scripts/check-evidence-map.mjs",
63
+ ".agents/scripts/check-github-status-inspection.mjs",
64
+ ".agents/scripts/check-github-sync.mjs",
65
+ ".agents/scripts/check-handoff-summaries.mjs",
66
+ ".agents/scripts/check-lease-conflicts.mjs",
67
+ ".agents/scripts/check-lease-contracts.mjs",
68
+ ".agents/scripts/check-linear-issue-inspection.mjs",
69
+ ".agents/scripts/check-local-sync-map.mjs",
70
+ ".agents/scripts/check-log-safety.sh",
71
+ ".agents/scripts/check-operating-modes.mjs",
25
72
  ".agents/scripts/check-path-standards.sh",
73
+ ".agents/scripts/check-skill-output-evals.mjs",
74
+ ".agents/scripts/check-status-transitions.mjs",
75
+ ".agents/scripts/check-strict-fixtures.mjs",
76
+ ".agents/scripts/check-sync-schemas.mjs",
77
+ ".agents/scripts/check-text-safety.mjs",
78
+ ".agents/scripts/check-worktree-health.mjs",
26
79
  ".agents/scripts/fix-path-standards.sh",
27
80
  ".agents/scripts/git-sparse-download.sh",
81
+ ".agents/scripts/inspect-github-sync.mjs",
82
+ ".agents/scripts/lease-manager.mjs",
28
83
  ".agents/scripts/log-event.js",
29
84
  ".agents/scripts/log-event.sh",
85
+ ".agents/scripts/plan-sync-repairs.mjs",
30
86
  ".agents/scripts/pm/blocked.sh",
31
87
  ".agents/scripts/pm/epic-list.sh",
32
88
  ".agents/scripts/pm/in-progress.sh",
@@ -37,56 +93,87 @@
37
93
  ".agents/scripts/pm/standup.sh",
38
94
  ".agents/scripts/pm/status.sh",
39
95
  ".agents/scripts/pm/validate.sh",
96
+ ".agents/scripts/propose-closeout-learning.mjs",
40
97
  ".agents/scripts/query-log.sh",
41
- ".agents/scripts/README.md",
98
+ ".agents/scripts/read-local-sync-map.mjs",
99
+ ".agents/scripts/select-next-task.mjs",
100
+ ".agents/scripts/summarize-project-metrics.mjs",
42
101
  ".agents/scripts/test-and-log.sh",
43
102
  ".agents/skills/.gitkeep",
44
- ".agents/skills/breakdown-skill/references/runbook.md",
103
+ ".agents/skills/README.md",
45
104
  ".agents/skills/breakdown-skill/SKILL.md",
105
+ ".agents/skills/breakdown-skill/references/runbook.md",
46
106
  ".agents/skills/breakdown-skill/templates/ambiguity-report.md",
47
107
  ".agents/skills/breakdown-skill/templates/task-batch-summary.md",
48
- ".agents/skills/closeout-skill/references/runbook.md",
49
108
  ".agents/skills/closeout-skill/SKILL.md",
109
+ ".agents/skills/closeout-skill/references/runbook.md",
50
110
  ".agents/skills/closeout-skill/templates/closure-checklist.md",
111
+ ".agents/skills/closeout-skill/templates/learning-proposal.md",
112
+ ".agents/skills/closeout-skill/templates/learning-proposals.md",
51
113
  ".agents/skills/closeout-skill/templates/outcome-review.md",
52
- ".agents/skills/manage-context/references/context-audit-checklist.md",
53
- ".agents/skills/manage-context/references/runbook.md",
54
- ".agents/skills/manage-context/SKILL.md",
55
- ".agents/skills/manage-context/templates/context-debt-report.md",
56
- ".agents/skills/manage-context/templates/context-refresh-summary.md",
57
- ".agents/skills/onboarding/references/agents-md-best-practices.md",
58
- ".agents/skills/onboarding/SKILL.md",
59
- ".agents/skills/discovery-skill/references/runbook.md",
60
114
  ".agents/skills/discovery-skill/SKILL.md",
115
+ ".agents/skills/discovery-skill/references/runbook.md",
61
116
  ".agents/skills/discovery-skill/templates/clarification-questions.md",
62
117
  ".agents/skills/discovery-skill/templates/discovery-summary.md",
63
- ".agents/skills/prototype-skill/references/probe-design-checklist.md",
64
- ".agents/skills/prototype-skill/references/runbook.md",
65
- ".agents/skills/prototype-skill/SKILL.md",
66
- ".agents/skills/prototype-skill/templates/probe-approval-recommendation.md",
67
- ".agents/skills/prototype-skill/templates/probe-findings.md",
68
- ".agents/skills/execution-skill/references/runbook.md",
69
118
  ".agents/skills/execution-skill/SKILL.md",
119
+ ".agents/skills/execution-skill/references/runbook.md",
70
120
  ".agents/skills/execution-skill/templates/blocker-update.md",
71
121
  ".agents/skills/execution-skill/templates/stream-update.md",
72
- ".agents/skills/learning-skill/references/runbook.md",
73
122
  ".agents/skills/learning-skill/SKILL.md",
123
+ ".agents/skills/learning-skill/references/runbook.md",
74
124
  ".agents/skills/learning-skill/templates/improvement-backlog.md",
75
125
  ".agents/skills/learning-skill/templates/retrospective.md",
76
- ".agents/skills/planning-skill/references/runbook.md",
126
+ ".agents/skills/manage-context/SKILL.md",
127
+ ".agents/skills/manage-context/references/context-audit-checklist.md",
128
+ ".agents/skills/manage-context/references/runbook.md",
129
+ ".agents/skills/manage-context/templates/context-debt-report.md",
130
+ ".agents/skills/manage-context/templates/context-refresh-summary.md",
131
+ ".agents/skills/onboarding/SKILL.md",
132
+ ".agents/skills/onboarding/references/agents-md-best-practices.md",
77
133
  ".agents/skills/planning-skill/SKILL.md",
134
+ ".agents/skills/planning-skill/references/runbook.md",
78
135
  ".agents/skills/planning-skill/templates/architecture-decision.md",
79
136
  ".agents/skills/planning-skill/templates/workstream-definition.md",
80
- ".agents/skills/quality-skill/references/runbook.md",
137
+ ".agents/skills/prototype-skill/SKILL.md",
138
+ ".agents/skills/prototype-skill/references/probe-design-checklist.md",
139
+ ".agents/skills/prototype-skill/references/runbook.md",
140
+ ".agents/skills/prototype-skill/templates/probe-approval-recommendation.md",
141
+ ".agents/skills/prototype-skill/templates/probe-findings.md",
81
142
  ".agents/skills/quality-skill/SKILL.md",
143
+ ".agents/skills/quality-skill/references/runbook.md",
82
144
  ".agents/skills/quality-skill/templates/gate-decision.md",
83
145
  ".agents/skills/quality-skill/templates/quality-evidence.md",
84
- ".agents/skills/README.md",
85
- ".agents/skills/sync-skill/references/runbook.md",
86
146
  ".agents/skills/sync-skill/SKILL.md",
147
+ ".agents/skills/sync-skill/references/runbook.md",
87
148
  ".agents/skills/sync-skill/templates/conflict-resolution-actions.md",
88
149
  ".agents/skills/sync-skill/templates/drift-report.md",
150
+ ".agents/validation-fixtures/strict/invalid/broken-dependencies/dependency.md",
151
+ ".agents/validation-fixtures/strict/invalid/broken-dependencies/task.md",
152
+ ".agents/validation-fixtures/strict/invalid/invalid-transition/task.md",
153
+ ".agents/validation-fixtures/strict/invalid/missing-evidence/task.md",
154
+ ".agents/validation-fixtures/strict/invalid/path-leak/task.md",
155
+ ".agents/validation-fixtures/strict/invalid/stale-context/context.md",
156
+ ".agents/validation-fixtures/strict/manifest.json",
157
+ ".agents/validation-fixtures/strict/valid/minimal-project/task.md",
89
158
  ".delano/README.md",
159
+ ".delano/viewer/README.md",
160
+ ".delano/viewer/server.js",
161
+ ".delano/viewer/public/app.js",
162
+ ".delano/viewer/public/explorer.svg",
163
+ ".delano/viewer/public/index.html",
164
+ ".delano/viewer/public/markdown.svg",
165
+ ".delano/viewer/public/vscode.svg",
166
+ ".delano/viewer/public/styles.css",
167
+ ".project/projects/.gitkeep",
168
+ ".project/registry/linear-map.json",
169
+ ".project/registry/migration-map.json",
170
+ ".project/templates/completion-summary.md",
171
+ ".project/templates/plan.md",
172
+ ".project/templates/progress-update.md",
173
+ ".project/templates/spec.md",
174
+ ".project/templates/task.md",
175
+ ".project/templates/workstream.md",
176
+ "HANDBOOK.md",
90
177
  {
91
178
  "source": "assets/templates/context/gui-testing.md",
92
179
  "target": ".project/context/gui-testing.md"
@@ -127,16 +214,6 @@
127
214
  "source": "assets/templates/context/tech-context.md",
128
215
  "target": ".project/context/tech-context.md"
129
216
  },
130
- ".project/projects/.gitkeep",
131
- ".project/registry/linear-map.json",
132
- ".project/registry/migration-map.json",
133
- ".project/templates/completion-summary.md",
134
- ".project/templates/plan.md",
135
- ".project/templates/progress-update.md",
136
- ".project/templates/spec.md",
137
- ".project/templates/task.md",
138
- ".project/templates/workstream.md",
139
- "HANDBOOK.md",
140
217
  "install-delano.sh"
141
218
  ]
142
219
  }
@@ -2,11 +2,36 @@
2
2
 
3
3
  Canonical shared runtime for Delano.
4
4
 
5
- - `scripts/`, `rules/`, `hooks/`, `skills/`, `logs/` -> shared Delano runtime assets
6
- - `adapters/claude/` -> Claude adapter notes
7
- - `adapters/codex/` -> Codex adapter notes
8
- - `adapters/opencode/` -> OpenCode adapter notes
9
- - `adapters/pi/` -> Pi adapter notes
10
- - `common/` -> shared adapter docs/policies
5
+ ## Source-of-truth map
6
+
7
+ - Root agent workflow and boundaries: `AGENTS.md`
8
+ - Process and operator handbook: `HANDBOOK.md`
9
+ - Delivery contracts and evidence: `.project/`
10
+ - Runtime scripts: `.agents/scripts/`
11
+ - Shared rules: `.agents/rules/`
12
+ - Hooks: `.agents/hooks/`
13
+ - Skills: `.agents/skills/`
14
+ - Logs: `.agents/logs/`
15
+ - Shared adapter utilities: `.agents/common/`
16
+ - Agent-specific adapter notes: `.agents/adapters/<agent>/`
11
17
 
12
18
  The compatibility path `.claude/` may mirror this runtime for agents that still expect Claude-style paths.
19
+
20
+ ## Required first-turn behavior
21
+
22
+ Every adapter should start from `AGENTS.md`, inspect the relevant `.project` contract and current git state, then use the adapter note only for runtime-specific differences.
23
+
24
+ ## Core validation commands
25
+
26
+ - `bash .agents/scripts/pm/validate.sh`
27
+ - `npm test`
28
+ - `npm run build:assets`
29
+ - `npm run check:package-manifest`
30
+
31
+ ## Completion rule
32
+
33
+ Do not report a task as done until the change is present, evidence is recorded, validation has passed or been explicitly marked not run, and blockers are named.
34
+
35
+ ## Safety boundaries
36
+
37
+ Keep logs privacy-safe, avoid absolute path leaks in docs/contracts/hook output, and do not perform destructive git or remote-write operations without an explicit task instruction.
@@ -1,5 +1,24 @@
1
1
  # Claude adapter
2
2
 
3
- - Start from `AGENTS.md`
4
- - Shared runtime is in `.agents/` (available at `.claude/` via symlink)
5
- - Keep Claude-specific behavior in `CLAUDE.md` and this adapter folder
3
+ ## Start here
4
+
5
+ 1. Read root `AGENTS.md` first.
6
+ 2. Use this note only for Claude-specific path behavior.
7
+ 3. Inspect `git status --short --branch` and the assigned `.project` contract before editing.
8
+
9
+ ## Runtime paths
10
+
11
+ - Canonical runtime: `.agents/`
12
+ - Claude compatibility path: `.claude/` mirrors `.agents/` where available
13
+ - Delivery contracts: `.project/`
14
+
15
+ ## Commands
16
+
17
+ - `bash .agents/scripts/pm/validate.sh`
18
+ - `npm test`
19
+ - `npm run build:assets`
20
+ - `npm run check:package-manifest`
21
+
22
+ ## Completion and safety
23
+
24
+ Record evidence in the task or update log before marking work done. Do not rely on `.claude/` as a separate source of truth, do not commit unsafe logs, and do not leak local absolute paths in output.