@zalom/plastic 1.1.0 → 1.1.2

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 (63) hide show
  1. package/PLASTIC.md +12 -9
  2. package/README.md +3 -3
  3. package/agents/plastic-enforcer.md +8 -4
  4. package/agents/plastic-executor.md +5 -5
  5. package/agents/plastic-future-intent-researcher.md +1 -1
  6. package/agents/plastic-planner.md +15 -11
  7. package/hooks/check-update +1 -1
  8. package/hooks/continue +1 -1
  9. package/package.json +1 -1
  10. package/scripts/dashboard.rb +29 -24
  11. package/scripts/doctor.rb +180 -5
  12. package/scripts/hook-continue +3 -3
  13. package/scripts/install.rb +2 -1
  14. package/scripts/lib/bridge.rb +114 -11
  15. package/scripts/lib/dashboard_banner.rb +8 -9
  16. package/scripts/lib/installer_core.rb +12 -3
  17. package/scripts/lib/legacy_bookend_amnesty.rb +35 -0
  18. package/scripts/lib/release_guard.rb +62 -0
  19. package/scripts/lib/roadmap_queue.rb +285 -0
  20. package/scripts/lib/roadmap_savepoint.rb +213 -0
  21. package/scripts/lib/skill_lint.rb +304 -0
  22. package/scripts/lib/worktree.rb +21 -0
  23. package/scripts/new-intent +1 -0
  24. package/scripts/read-config +3 -3
  25. package/scripts/roadmap-next +44 -0
  26. package/scripts/roadmap-savepoint +64 -0
  27. package/scripts/skill-lint +50 -0
  28. package/skills/auto/SKILL.md +32 -11
  29. package/skills/auto/references/tiers.md +4 -3
  30. package/skills/continuing/SKILL.md +34 -0
  31. package/skills/continuing/evals/evals.json +91 -0
  32. package/skills/dashboard/SKILL.md +17 -14
  33. package/skills/dashboard/references/classification.md +3 -3
  34. package/skills/dashboard/templates/dashboard-global.md +8 -23
  35. package/skills/dashboard/templates/dashboard-project.md +7 -26
  36. package/skills/doctor/SKILL.md +1 -1
  37. package/skills/install/SKILL.md +10 -10
  38. package/skills/intent-continuing/SKILL.md +26 -68
  39. package/skills/intent-continuing/evals/evals.json +26 -26
  40. package/skills/intent-continuing/references/context-management.md +15 -19
  41. package/skills/intent-planning/SKILL.md +11 -11
  42. package/skills/intent-planning/evals/evals.json +20 -5
  43. package/skills/intent-planning/references/plan-format.md +9 -5
  44. package/skills/intent-savepoint/SKILL.md +12 -0
  45. package/skills/intent-starting/evals/evals.json +1 -1
  46. package/skills/project-continuing/SKILL.md +104 -0
  47. package/skills/project-continuing/evals/evals.json +100 -0
  48. package/skills/project-continuing/references/board-fill.md +33 -0
  49. package/skills/releasing/SKILL.md +48 -0
  50. package/skills/releasing/references/release-lines.md +105 -0
  51. package/skills/roadmap/SKILL.md +7 -1
  52. package/skills/roadmap/references/file-format.md +30 -1
  53. package/skills/roadmap/references/operations.md +26 -6
  54. package/skills/roadmap-continuing/SKILL.md +85 -0
  55. package/skills/roadmap-continuing/evals/evals.json +82 -0
  56. package/skills/roadmap-continuing/references/liveness-ranking.md +56 -0
  57. package/skills/skill-evaluating/evals/evals.json +1 -1
  58. package/skills/tutorial/references/track-1-guided.md +5 -4
  59. package/skills/tutorial/references/track-2-auto.md +1 -1
  60. package/skills/uninstall/SKILL.md +2 -2
  61. package/skills/update/SKILL.md +2 -2
  62. package/templates/config.yml +2 -1
  63. package/templates/index.md +4 -1
@@ -0,0 +1,56 @@
1
+ # Liveness Ranking (read time, no new field)
2
+
3
+ Depth reference for "Find the mid-flight roadmap" in `SKILL.md`. This is the full algorithm the
4
+ body summarizes. Since intent 148, this algorithm is IMPLEMENTED in
5
+ `scripts/lib/roadmap_queue.rb` behind the `scripts/roadmap-next` CLI; it is no longer a by-eye
6
+ procedure. This page documents what that reader does, and is the specification the reader
7
+ satisfies.
8
+
9
+ ## Why read-time, not a stored field
10
+
11
+ INDEX.md stays the sole writer of intent status; the roadmap file mirrors it (see
12
+ `plastic-roadmap`'s `references/file-format.md`). Adding a "mid-flight" flag to the roadmap
13
+ file or to INDEX.md would create a second thing to keep in sync for a question that is cheap to
14
+ answer by reading what is already there. So liveness is computed fresh, every call, from the
15
+ tier's live `roadmaps/*.md` files (excluding `roadmaps/archived/`), by `RoadmapQueue` (intent
16
+ 148) rather than by eye.
17
+
18
+ ## The algorithm
19
+
20
+ 1. **Enumerate.** List every `roadmaps/*.md` at the tier (project or global), skipping
21
+ `roadmaps/archived/`.
22
+ 2. **Delivering/blocked wins outright.** If any candidate roadmap has at least one `## Waves`
23
+ entry whose mirrored status token is `delivering` or `blocked`, it is in flight right now.
24
+ That candidate wins the ranking immediately; skip the rest of the ranking for it.
25
+ 3. **Otherwise, newest `## Log` entry wins.** Among the remaining candidates (none have a
26
+ `delivering`/`blocked` entry), read each file's last `## Log` line (append-only, newest at
27
+ the bottom) and rank by that line's `YYYY-MM-DD HH:MM UTC` timestamp. The most recent wins.
28
+ When a candidate's paired `roadmaps/<slug>.savepoint.md` (intent 134) is present, its last
29
+ line is a cheaper, machine-timestamped read of the same fact (the ledger is derived from `##
30
+ Log`, so the two should already agree); reading it first is an optimization, not a second
31
+ source of truth, so a missing or stale ledger never blocks falling back to `## Log` itself.
32
+ 4. **Genuine tie -> present, do not silently pick.** If two or more candidates are equally live
33
+ (for example two roadmaps both idle with `## Log` entries on the same timestamp, or two both
34
+ showing `delivering` entries with no other signal to separate them), do not choose for the
35
+ user. Present both/all tied candidates' state side by side, then let the single "auto or
36
+ guided?" ask (asked once regardless of how many candidates were presented) double as the
37
+ resolution: the user's answer implicitly picks by naming which roadmap to continue, or the
38
+ agent asks a short one-line disambiguation immediately before that same single ask, never a
39
+ second separate prompt.
40
+
41
+ ## What this closes
42
+
43
+ Before this skill existed, nothing resumed a mid-flight roadmap automatically. The `171`
44
+ (consistency-dividend) roadmap handoff had to be resumed by hand: a free-prose "SESSION
45
+ HANDOFF" note written into `171`'s own `## Insights`, because nothing read `## Waves` +
46
+ `## Log` and reconstructed where the batch stood. This ranking, now a deterministic reader
47
+ rather than a by-eye judgment, is the mechanism that replaces that hand-carried note.
48
+
49
+ ## Grammar pointer (do not duplicate)
50
+
51
+ The roadmap file's four sections, entry line shape, and status vocabulary
52
+ (`queued|delivering|delivered|abandoned|blocked`) are owned by `plastic-roadmap`:
53
+ `skills/roadmap/references/file-format.md` for the shape, and
54
+ `skills/roadmap/references/operations.md#read--consume` for how a reader (human or
55
+ coordinator) is meant to walk `## Waves` and `## Log`. This page assumes that grammar and adds
56
+ only the liveness-ranking judgment on top of it.
@@ -1,5 +1,5 @@
1
1
  {
2
- "skill_name": "skill-evaluating",
2
+ "skill_name": "plastic-skill-evaluating",
3
3
  "evals": [
4
4
  {
5
5
  "id": 1,
@@ -71,10 +71,11 @@ an answer given in station 3.
71
71
 
72
72
  Type `/plastic-intent-planning`.
73
73
 
74
- Artifact: `plan.md` and `checklist.md`. At the S tier used here, `actions/` stays empty and
75
- the task rationale lives inline in `plan.md` instead of separate action files; only the L
76
- tier (many independent tasks, dispatched in parallel) gets one `actions/ACTION_N.md` file
77
- per task. `checklist.md` follows a fixed form: tasks start under `## In Progress`, move to
74
+ Artifact: `plan.md`, `checklist.md`, and at least one real `actions/ACTION_N.md`. At the S
75
+ tier used here, the planner consolidates the whole delivery into a single
76
+ `actions/ACTION_1.md` (the ordered steps plus the exact changes); the L tier (many
77
+ independent tasks, dispatched in parallel) instead gets one `actions/ACTION_N.md` file per
78
+ task. `checklist.md` follows a fixed form: tasks start under `## In Progress`, move to
78
79
  `## Completed` as they land, and a `## Session Log` table records what happened each session.
79
80
  A task that depends on an owner decision landing first (a destructive step, a structural
80
81
  ruling) gets an `[ORCHESTRATOR]` prefix and blocks every other item until that decision is
@@ -72,7 +72,7 @@ line.
72
72
 
73
73
  ### 5. Continue and where-was-I after time away
74
74
 
75
- Type `/plastic-intent-continuing`.
75
+ Type `/plastic-continuing`.
76
76
 
77
77
  Artifact: the current state, presented and then the session stops. If a specific intent is
78
78
  named, the agent reads its stage and savepoint and resumes exactly there, rather than
@@ -14,7 +14,7 @@ underlying uninstaller and adds reporting + verification.
14
14
 
15
15
  If Plastic is installed, derive `<channel>` from `~/.plastic/VERSION`: a version containing
16
16
  `-alpha` means `@alpha`, `-beta` means `@beta`, otherwise `@latest`. If not installed,
17
- default to `@beta`. The user can always override with `--alpha` / `--beta` / `--latest`.
17
+ default to `@latest`. The user can always override with `--alpha` / `--beta` / `--latest`.
18
18
 
19
19
  ## Procedure
20
20
 
@@ -74,5 +74,5 @@ Delete it too?
74
74
  ```
75
75
 
76
76
  - **Keep:** "Your data is at ~/.plastic/. Re-install anytime with
77
- `npx -y @zalom/plastic@beta install --claude` (or your channel)."
77
+ `npx -y @zalom/plastic@latest install --claude` (or your channel)."
78
78
  - **Delete:** run `rm -rf ~/.plastic/` and confirm.
@@ -22,7 +22,7 @@ clean no-op. You do not compute the target yourself, the script does.
22
22
 
23
23
  If Plastic is installed, derive `<channel>` from `~/.plastic/VERSION`: a version containing
24
24
  `-alpha` means `@alpha`, `-beta` means `@beta`, otherwise `@latest`. If not installed
25
- (first install), default to `@beta`. The user can always override with
25
+ (first install), default to `@latest`. The user can always override with
26
26
  `--alpha` / `--beta` / `--latest`.
27
27
 
28
28
  ## Flags
@@ -40,7 +40,7 @@ confirmed. To roll **back** to a previously-installed version, use `plastic-roll
40
40
  ## Prerequisites
41
41
 
42
42
  Plastic must be installed (`~/.plastic/VERSION` present). If not, run `plastic-install`
43
- first (or `npx -y @zalom/plastic@beta install --claude` directly).
43
+ first (or `npx -y @zalom/plastic@latest install --claude` directly).
44
44
 
45
45
  ## Procedure
46
46
 
@@ -14,7 +14,8 @@ architect:
14
14
 
15
15
  # Per-agent model override (intent 116). Uncomment and set to a Claude Code
16
16
  # alias (opus, sonnet, haiku) to override the shipped tier for one agent. With
17
- # no entry, the shipped default applies. Never resolves to Fable.
17
+ # no entry, the shipped default applies and never resolves to Fable; naming
18
+ # Fable here is an explicit, sanctioned override, honored as written.
18
19
  # agents:
19
20
  # models:
20
21
  # plastic-executor: sonnet
@@ -1,13 +1,16 @@
1
1
  # Index
2
2
 
3
3
  ## Active
4
+ <!-- Line shape: `- [ID — Title](path)`. The em-dash (U+2014, not a plain hyphen)
5
+ between id and title is load-bearing: Bridge.intent_active? matches only that
6
+ shape, and a plain hyphen there fails the lock gate open (see docs/internals.md). -->
4
7
  (no active intents)
5
8
 
6
9
  ## Future
7
10
  (no future intents)
8
11
 
9
12
  ## Clusters
10
- (clusters emerge as intents accumulate add headings when 3+ intents share a topic)
13
+ (clusters emerge as intents accumulate; add headings when 3+ intents share a topic)
11
14
 
12
15
  ## Completed
13
16
  (links preserved, never deleted)