tldr-experts 0.3.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.
- package/CHANGELOG.md +913 -0
- package/LICENSE +21 -0
- package/README.md +174 -0
- package/dist/hooks/answer-capture.js +174 -0
- package/dist/hooks/budget-gate.js +173 -0
- package/dist/hooks/chunk-0bt6yb2q.js +88 -0
- package/dist/hooks/chunk-1zwcxd3f.js +66 -0
- package/dist/hooks/chunk-9gb21660.js +66 -0
- package/dist/hooks/chunk-a8p2rc94.js +20 -0
- package/dist/hooks/chunk-ae6bkfs5.js +0 -0
- package/dist/hooks/chunk-azctppjh.js +198 -0
- package/dist/hooks/chunk-g395gk7e.js +503 -0
- package/dist/hooks/chunk-j234zf0t.js +339 -0
- package/dist/hooks/chunk-kw4tffzf.js +139 -0
- package/dist/hooks/chunk-p274ckxv.js +7435 -0
- package/dist/hooks/chunk-sdjnnmzz.js +497 -0
- package/dist/hooks/chunk-t56k6146.js +14 -0
- package/dist/hooks/chunk-t8tdv11p.js +35 -0
- package/dist/hooks/chunk-x98qs959.js +302 -0
- package/dist/hooks/chunk-y0jdr3et.js +627 -0
- package/dist/hooks/claim-sources.js +72 -0
- package/dist/hooks/dod-gate.js +198 -0
- package/dist/hooks/no-reask.js +67 -0
- package/dist/hooks/session-start.js +1348 -0
- package/dist/hooks/statusline.js +116 -0
- package/dist/tldrx.js +34219 -0
- package/env.yml +79 -0
- package/package.json +60 -0
- package/plugin/.claude-plugin/plugin.json +9 -0
- package/plugin/README.md +113 -0
- package/plugin/agents/README.md +22 -0
- package/plugin/hooks/hooks.json +107 -0
- package/plugin/skills/tldrx/SKILL.md +170 -0
- package/stages/build/stage.md +70 -0
- package/stages/build/stage.yml +54 -0
- package/stages/how/stage.md +89 -0
- package/stages/how/stage.yml +53 -0
- package/stages/plan/stage.md +89 -0
- package/stages/plan/stage.yml +48 -0
- package/stages/watch/stage.md +85 -0
- package/stages/watch/stage.yml +61 -0
- package/stages/what/stage.md +89 -0
- package/stages/what/stage.yml +61 -0
- package/templates/budget.yml +17 -0
- package/templates/competencies.yml +14 -0
- package/templates/env.yml +19 -0
- package/templates/epic.md +38 -0
- package/templates/expert.md +51 -0
- package/templates/experts/architect.md +77 -0
- package/templates/experts/delivery.md +76 -0
- package/templates/experts/developer.md +78 -0
- package/templates/experts/operations.md +74 -0
- package/templates/experts/product.md +78 -0
- package/templates/facts.yml +18 -0
- package/templates/handoff.md +63 -0
- package/templates/process.yml +33 -0
- package/templates/questions.md +63 -0
- package/templates/run.yml +24 -0
- package/templates/story.md +55 -0
- package/templates/watcher.md +68 -0
- package/templates/waves.yml +17 -0
- package/templates/workspace.yml +30 -0
- package/workflows/bugfix.yml +26 -0
- package/workflows/docs.yml +23 -0
- package/workflows/feature.yml +22 -0
- package/workflows/hotfix.yml +24 -0
- package/workflows/integration.yml +24 -0
- package/workflows/migration.yml +24 -0
- package/workflows/performance.yml +23 -0
- package/workflows/prototype.yml +24 -0
- package/workflows/refactor.yml +24 -0
- package/workflows/retro.yml +20 -0
- package/workflows/security-patch.yml +23 -0
- package/workflows/spike.yml +23 -0
- package/workflows/upgrade.yml +23 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# schema: draft
|
|
2
|
+
# Written to tldrx-work/<yymmdd>-<slug>/run.yml. Concept §5.
|
|
3
|
+
#
|
|
4
|
+
# THE execution path and the resume point. Together with events.jsonl this is the
|
|
5
|
+
# dashboard's only data source. If it is not in here, it did not happen.
|
|
6
|
+
version: 1
|
|
7
|
+
run_id: "260828-example-slug"
|
|
8
|
+
scope: feature
|
|
9
|
+
workflow: feature
|
|
10
|
+
status: pending # pending | running | awaiting-answer | awaiting-gate | blocked | done | abandoned
|
|
11
|
+
budget_usd: 25
|
|
12
|
+
created_at: null
|
|
13
|
+
|
|
14
|
+
phases:
|
|
15
|
+
- id: "01-what"
|
|
16
|
+
stage: what
|
|
17
|
+
status: pending
|
|
18
|
+
expert: null
|
|
19
|
+
model: null
|
|
20
|
+
cost_usd: 0
|
|
21
|
+
started_at: null
|
|
22
|
+
ended_at: null
|
|
23
|
+
inputs: []
|
|
24
|
+
outputs: []
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
# Written to tldrx-work/<run>/03-plan/stories/<id>.md. Spec §2.13.
|
|
3
|
+
#
|
|
4
|
+
# The front matter is the machine-read half: `dod-gate` and `tldrx approve` read
|
|
5
|
+
# it, and the Build phase cuts `story/<id>` from the epic branch on the strength
|
|
6
|
+
# of it. Everything below the closing `---` is for the human who picks this up
|
|
7
|
+
# cold — except the fenced ```dod block, which is executed, not read.
|
|
8
|
+
version: 1
|
|
9
|
+
id: S1
|
|
10
|
+
epic: E1
|
|
11
|
+
title: "Materialise the leaderboard read model"
|
|
12
|
+
repo: example
|
|
13
|
+
status: todo # todo | in_progress | review | done | blocked
|
|
14
|
+
depends_on: [] # story ids that must be DONE first, e.g. [S2]
|
|
15
|
+
touches:
|
|
16
|
+
- "src/features/leaderboard/"
|
|
17
|
+
acceptance:
|
|
18
|
+
- "Top-50 ranks render from the materialised view, newest hunt first"
|
|
19
|
+
- "A hunt completed while the page is open moves the player within one refresh"
|
|
20
|
+
test_plan:
|
|
21
|
+
- "Unit: rank ordering with ties, empty table, single player"
|
|
22
|
+
- "Integration: HuntCompleted refreshes the view"
|
|
23
|
+
evidence: [] # filled by Build — commands run, files written, PR
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
# S1 · Materialise the leaderboard read model
|
|
27
|
+
|
|
28
|
+
> One repo, one branch, one Definition of Done. If this story needs a change in a
|
|
29
|
+
> second repo, that is a second story with `depends_on` pointing here.
|
|
30
|
+
|
|
31
|
+
## Context
|
|
32
|
+
|
|
33
|
+
Why this story exists, in two or three sentences, each ending in a `[src: …]`
|
|
34
|
+
token. Read it as the only briefing the Build agent gets.
|
|
35
|
+
|
|
36
|
+
## Acceptance criteria
|
|
37
|
+
|
|
38
|
+
Restate the front matter's `acceptance` list here in prose if it helps a reader;
|
|
39
|
+
the front matter is what is checked.
|
|
40
|
+
|
|
41
|
+
## Definition of done
|
|
42
|
+
|
|
43
|
+
**Every command below must equal a `.tldrx/workspace.yml` command verbatim** — a
|
|
44
|
+
story may not invent one — and every one of them must exit `0` before `status:`
|
|
45
|
+
may be written as `done`. `dod-gate` re-runs them; your word for it is not evidence.
|
|
46
|
+
|
|
47
|
+
```dod
|
|
48
|
+
npm run test
|
|
49
|
+
npm run lint
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Evidence
|
|
53
|
+
|
|
54
|
+
Filled by Build. One bullet per proof, each ending in a `[src: …]` token — a
|
|
55
|
+
command source (`$ npm run test → exit 0`) belongs here.
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
---
|
|
2
|
+
# Written to tldrx-work/<run>/05-watch/watchers/<feature>.md. Spec §2.16.
|
|
3
|
+
#
|
|
4
|
+
# One card per SHIPPED feature — one per epic whose stories reached `status: done`.
|
|
5
|
+
# Everything on it is derived from what Build actually instrumented. A signal that
|
|
6
|
+
# would be nice to have is not a signal; it is an `absent:` source and a `draft`
|
|
7
|
+
# card that names what to instrument.
|
|
8
|
+
version: 1
|
|
9
|
+
id: leaderboard # = the file name (leaderboard.md); [a-z0-9-]
|
|
10
|
+
epic: E1 # the epic this feature was built on
|
|
11
|
+
title: "Player leaderboard"
|
|
12
|
+
stories: [S1, S3] # the DONE stories the card was written from
|
|
13
|
+
repos: [api, lab]
|
|
14
|
+
status: draft # draft | verified — verified only when Signal has no `absent:` source
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# leaderboard · Player leaderboard
|
|
18
|
+
|
|
19
|
+
> How anyone would know this still works next month. Every list item under Signal,
|
|
20
|
+
> Where, Healthy baseline and Looks broken when ends with a [src: …] token, and
|
|
21
|
+
> that token points at the BUILT code — `<repo>:<path>:<line>` — at an `F<n>` fact,
|
|
22
|
+
> or, when the code emits nothing at all, at `absent:<what you looked at>`.
|
|
23
|
+
|
|
24
|
+
## Signal
|
|
25
|
+
|
|
26
|
+
> The log line, metric or event that proves the feature works. Not "we should log
|
|
27
|
+
> X" — the line that is in the code, at the line it is on.
|
|
28
|
+
|
|
29
|
+
- `leaderboard.refreshed` is written on every view refresh [src: api:src/Leaderboard/RefreshHandler.cs:64]
|
|
30
|
+
- No counter exists for a refresh that finds zero rows — add one before this is watchable [src: absent:api/src/Leaderboard]
|
|
31
|
+
|
|
32
|
+
## Where
|
|
33
|
+
|
|
34
|
+
> The dashboard, log stream, table or query console this is read in.
|
|
35
|
+
|
|
36
|
+
- Application Insights → `traces`, filtered to the message above [src: F014]
|
|
37
|
+
|
|
38
|
+
## Healthy baseline
|
|
39
|
+
|
|
40
|
+
> A measured number and when it was taken. A guess belongs in Looks broken when as
|
|
41
|
+
> an assumption, or nowhere.
|
|
42
|
+
|
|
43
|
+
- 12–40 refreshes/hour during business hours, measured 2026-08-29 [src: F015]
|
|
44
|
+
|
|
45
|
+
## Looks broken when
|
|
46
|
+
|
|
47
|
+
> What the same signal looks like on the bad day, concretely enough to alert on.
|
|
48
|
+
|
|
49
|
+
- Zero refreshes for 30 minutes while hunts are still completing [src: api:src/Leaderboard/RefreshHandler.cs:64]
|
|
50
|
+
|
|
51
|
+
## Query
|
|
52
|
+
|
|
53
|
+
> Copy-paste, in the query language of the place named under Where. One fenced
|
|
54
|
+
> block, run once before it is written down.
|
|
55
|
+
|
|
56
|
+
```kql
|
|
57
|
+
traces
|
|
58
|
+
| where message == "leaderboard.refreshed"
|
|
59
|
+
| summarize count() by bin(timestamp, 1h)
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Sources
|
|
63
|
+
|
|
64
|
+
> Everything cited above, once, with what it establishes. Free prose is allowed
|
|
65
|
+
> here; the four checked sections above are the ones that must hold sourced items.
|
|
66
|
+
|
|
67
|
+
- `RefreshHandler.cs:64` is the only place the event is emitted.
|
|
68
|
+
- No dashboard exists yet; the query above is what a dashboard would run.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Written to tldrx-work/<run>/03-plan/waves.yml. Spec §2.15.
|
|
2
|
+
#
|
|
3
|
+
# The execution order of the Plan, and the only file that says what may run at the
|
|
4
|
+
# same time. Concept §9: "stories grouped by dependency; wave N+1 starts only when
|
|
5
|
+
# wave N's epic branch is green", and "independent stories in the same wave run as
|
|
6
|
+
# parallel sub-agents in separate worktrees".
|
|
7
|
+
#
|
|
8
|
+
# Both sentences make the same demand, and it is the rule the shape cannot enforce
|
|
9
|
+
# on its own: every story's `depends_on` must land in an EARLIER wave. A dependency
|
|
10
|
+
# inside the same wave is an error, not a warning — those two stories would be
|
|
11
|
+
# handed to parallel agents that overwrite each other.
|
|
12
|
+
#
|
|
13
|
+
# File order IS execution order, so wave ids ascend. A story runs in exactly one wave.
|
|
14
|
+
version: 1
|
|
15
|
+
waves:
|
|
16
|
+
- {id: W1, stories: [S1, S2]}
|
|
17
|
+
- {id: W2, stories: [S3]}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# schema: draft
|
|
2
|
+
# Written by `tldrx init` to .tldrx/workspace.yml. Concept §4.1 and the v0.1
|
|
3
|
+
# workspace-model addendum.
|
|
4
|
+
#
|
|
5
|
+
# mode: single — cwd is itself a git repo
|
|
6
|
+
# mode: multi — cwd contains child dirs that are git repos; those are the repos.
|
|
7
|
+
# One .tldrx/ at the root, always. Shared: memory/, experts/,
|
|
8
|
+
# stages/, workflows/. Per repo: map/<repo>/, conventions/<repo>.md.
|
|
9
|
+
version: 1
|
|
10
|
+
mode: single
|
|
11
|
+
root: "."
|
|
12
|
+
detected_at: null
|
|
13
|
+
|
|
14
|
+
repos:
|
|
15
|
+
- name: example
|
|
16
|
+
path: "."
|
|
17
|
+
languages: []
|
|
18
|
+
frameworks: []
|
|
19
|
+
# Commands are DISCOVERED, never assumed. An empty value means "not found",
|
|
20
|
+
# which is different from "there is none" — say which in the handoff.
|
|
21
|
+
commands:
|
|
22
|
+
install: ""
|
|
23
|
+
build: ""
|
|
24
|
+
test: ""
|
|
25
|
+
lint: ""
|
|
26
|
+
typecheck: ""
|
|
27
|
+
|
|
28
|
+
# Cached from `claude mcp list` at init (it runs live health checks and is slow).
|
|
29
|
+
# .mcp.json is the fast path; this is the verified one.
|
|
30
|
+
mcp_servers: []
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# schema: draft
|
|
2
|
+
# A scope is a workflow preset (concept v0.1 addendum). It biases the facilitator:
|
|
3
|
+
# which stages run, at what depth, on what budget. Adding a scope = adding one yml.
|
|
4
|
+
# The facilitator never hard-codes a scope.
|
|
5
|
+
#
|
|
6
|
+
# stages — run in this order; every name must be a folder under stages/
|
|
7
|
+
# skips — stages deliberately NOT run, so the omission is a decision on record
|
|
8
|
+
# depth — minimal | light | standard | deep
|
|
9
|
+
name: bugfix
|
|
10
|
+
description: "Fix one specific defect, from a report or a log."
|
|
11
|
+
stages: [what, how, plan, build, watch]
|
|
12
|
+
skips: []
|
|
13
|
+
depth: light
|
|
14
|
+
default_budget_usd: 10
|
|
15
|
+
# gates — who closes each stage's gate: `human` waits for `tldrx approve`,
|
|
16
|
+
# `auto` lets the facilitator close it when the five spec §5 conditions
|
|
17
|
+
# hold (checks pass, no open question, spend within ceiling, the stage
|
|
18
|
+
# did not fail, claim-sources clean). Every stage still ENDS at a gate;
|
|
19
|
+
# this only says who signs it. A stage not named here is `human`.
|
|
20
|
+
gates: {what: human, how: auto, plan: human, build: auto, watch: human}
|
|
21
|
+
changes:
|
|
22
|
+
- "What = reproduce it, then find the root cause. A fix without a reproduction is a guess."
|
|
23
|
+
- "How = the minimal change that removes the cause, not the symptom."
|
|
24
|
+
- "Plan is usually a single story."
|
|
25
|
+
- "Watch = a regression watcher for this exact signal."
|
|
26
|
+
- "Market and UX questions are not asked."
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# schema: draft
|
|
2
|
+
# A scope is a workflow preset (concept v0.1 addendum). It biases the facilitator:
|
|
3
|
+
# which stages run, at what depth, on what budget. Adding a scope = adding one yml.
|
|
4
|
+
# The facilitator never hard-codes a scope.
|
|
5
|
+
#
|
|
6
|
+
# stages — run in this order; every name must be a folder under stages/
|
|
7
|
+
# skips — stages deliberately NOT run, so the omission is a decision on record
|
|
8
|
+
# depth — minimal | light | standard | deep
|
|
9
|
+
name: docs
|
|
10
|
+
description: "Write or repair documentation."
|
|
11
|
+
stages: [what, build]
|
|
12
|
+
skips: [how, plan, watch]
|
|
13
|
+
depth: light
|
|
14
|
+
default_budget_usd: 6
|
|
15
|
+
# gates — who closes each stage's gate: `human` waits for `tldrx approve`,
|
|
16
|
+
# `auto` lets the facilitator close it when the five spec §5 conditions
|
|
17
|
+
# hold (checks pass, no open question, spend within ceiling, the stage
|
|
18
|
+
# did not fail, claim-sources clean). Every stage still ENDS at a gate;
|
|
19
|
+
# this only says who signs it. A stage not named here is `human`.
|
|
20
|
+
gates: {what: auto, build: human}
|
|
21
|
+
changes:
|
|
22
|
+
- "Investigate, then write. The gate is a human actually reading it and saying it is right."
|
|
23
|
+
- "Every claim in the docs carries the same source rule as a handoff."
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# schema: draft
|
|
2
|
+
# A scope is a workflow preset (concept v0.1 addendum). It biases the facilitator:
|
|
3
|
+
# which stages run, at what depth, on what budget. Adding a scope = adding one yml.
|
|
4
|
+
# The facilitator never hard-codes a scope.
|
|
5
|
+
#
|
|
6
|
+
# stages — run in this order; every name must be a folder under stages/
|
|
7
|
+
# skips — stages deliberately NOT run, so the omission is a decision on record
|
|
8
|
+
# depth — minimal | light | standard | deep
|
|
9
|
+
name: feature
|
|
10
|
+
description: "Default. New capability, full loop, practical depth."
|
|
11
|
+
stages: [what, how, plan, build, watch]
|
|
12
|
+
skips: []
|
|
13
|
+
depth: standard
|
|
14
|
+
default_budget_usd: 25
|
|
15
|
+
# gates — who closes each stage's gate: `human` waits for `tldrx approve`,
|
|
16
|
+
# `auto` lets the facilitator close it when the five spec §5 conditions
|
|
17
|
+
# hold (checks pass, no open question, spend within ceiling, the stage
|
|
18
|
+
# did not fail, claim-sources clean). Every stage still ENDS at a gate;
|
|
19
|
+
# this only says who signs it. A stage not named here is `human`.
|
|
20
|
+
gates: {what: human, how: auto, plan: human, build: auto, watch: human}
|
|
21
|
+
changes:
|
|
22
|
+
- "No deltas — this is the baseline every other scope is described against."
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# schema: draft
|
|
2
|
+
# A scope is a workflow preset (concept v0.1 addendum). It biases the facilitator:
|
|
3
|
+
# which stages run, at what depth, on what budget. Adding a scope = adding one yml.
|
|
4
|
+
# The facilitator never hard-codes a scope.
|
|
5
|
+
#
|
|
6
|
+
# stages — run in this order; every name must be a folder under stages/
|
|
7
|
+
# skips — stages deliberately NOT run, so the omission is a decision on record
|
|
8
|
+
# depth — minimal | light | standard | deep
|
|
9
|
+
name: hotfix
|
|
10
|
+
description: "Production is bleeding. Ship, then explain."
|
|
11
|
+
stages: [what, build, watch]
|
|
12
|
+
skips: [how, plan]
|
|
13
|
+
depth: minimal
|
|
14
|
+
default_budget_usd: 5
|
|
15
|
+
# gates — who closes each stage's gate: `human` waits for `tldrx approve`,
|
|
16
|
+
# `auto` lets the facilitator close it when the five spec §5 conditions
|
|
17
|
+
# hold (checks pass, no open question, spend within ceiling, the stage
|
|
18
|
+
# did not fail, claim-sources clean). Every stage still ENDS at a gate;
|
|
19
|
+
# this only says who signs it. A stage not named here is `human`.
|
|
20
|
+
gates: {what: auto, build: human, watch: human}
|
|
21
|
+
changes:
|
|
22
|
+
- "What collapses to a ten-line handoff: symptom, blast radius, the one change."
|
|
23
|
+
- "All gates collapse into one human approval."
|
|
24
|
+
- "Retro is MANDATORY at close — this is the scope that skips the most and so owes the most."
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# schema: draft
|
|
2
|
+
# A scope is a workflow preset (concept v0.1 addendum). It biases the facilitator:
|
|
3
|
+
# which stages run, at what depth, on what budget. Adding a scope = adding one yml.
|
|
4
|
+
# The facilitator never hard-codes a scope.
|
|
5
|
+
#
|
|
6
|
+
# stages — run in this order; every name must be a folder under stages/
|
|
7
|
+
# skips — stages deliberately NOT run, so the omission is a decision on record
|
|
8
|
+
# depth — minimal | light | standard | deep
|
|
9
|
+
name: integration
|
|
10
|
+
description: "Wire up an external API."
|
|
11
|
+
stages: [what, how, plan, build, watch]
|
|
12
|
+
skips: []
|
|
13
|
+
depth: standard
|
|
14
|
+
default_budget_usd: 30
|
|
15
|
+
# gates — who closes each stage's gate: `human` waits for `tldrx approve`,
|
|
16
|
+
# `auto` lets the facilitator close it when the five spec §5 conditions
|
|
17
|
+
# hold (checks pass, no open question, spend within ceiling, the stage
|
|
18
|
+
# did not fail, claim-sources clean). Every stage still ENDS at a gate;
|
|
19
|
+
# this only says who signs it. A stage not named here is `human`.
|
|
20
|
+
gates: {what: human, how: auto, plan: human, build: auto, watch: human}
|
|
21
|
+
changes:
|
|
22
|
+
- "What includes vendor-doc verification: fetch the official docs this run and cite the URL."
|
|
23
|
+
- "How = contracts plus the auth story, including what happens when the token expires."
|
|
24
|
+
- "Watch sits on the vendor calls: rate limits, error shapes, latency."
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# schema: draft
|
|
2
|
+
# A scope is a workflow preset (concept v0.1 addendum). It biases the facilitator:
|
|
3
|
+
# which stages run, at what depth, on what budget. Adding a scope = adding one yml.
|
|
4
|
+
# The facilitator never hard-codes a scope.
|
|
5
|
+
#
|
|
6
|
+
# stages — run in this order; every name must be a folder under stages/
|
|
7
|
+
# skips — stages deliberately NOT run, so the omission is a decision on record
|
|
8
|
+
# depth — minimal | light | standard | deep
|
|
9
|
+
name: migration
|
|
10
|
+
description: "Move a runtime, framework, dependency or data set from A to B."
|
|
11
|
+
stages: [what, how, plan, build, watch]
|
|
12
|
+
skips: []
|
|
13
|
+
depth: deep
|
|
14
|
+
default_budget_usd: 60
|
|
15
|
+
# gates — who closes each stage's gate: `human` waits for `tldrx approve`,
|
|
16
|
+
# `auto` lets the facilitator close it when the five spec §5 conditions
|
|
17
|
+
# hold (checks pass, no open question, spend within ceiling, the stage
|
|
18
|
+
# did not fail, claim-sources clean). Every stage still ENDS at a gate;
|
|
19
|
+
# this only says who signs it. A stage not named here is `human`.
|
|
20
|
+
gates: {what: auto, how: auto, plan: auto, build: human, watch: human}
|
|
21
|
+
changes:
|
|
22
|
+
- "What = an inventory plus a compatibility matrix, both derived from the code map."
|
|
23
|
+
- "How = the strategy call: big-bang versus strangler, stated with its rollback."
|
|
24
|
+
- "Plan waves by module, so a half-done migration is still a working system."
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# schema: draft
|
|
2
|
+
# A scope is a workflow preset (concept v0.1 addendum). It biases the facilitator:
|
|
3
|
+
# which stages run, at what depth, on what budget. Adding a scope = adding one yml.
|
|
4
|
+
# The facilitator never hard-codes a scope.
|
|
5
|
+
#
|
|
6
|
+
# stages — run in this order; every name must be a folder under stages/
|
|
7
|
+
# skips — stages deliberately NOT run, so the omission is a decision on record
|
|
8
|
+
# depth — minimal | light | standard | deep
|
|
9
|
+
name: performance
|
|
10
|
+
description: "Make something measurably faster."
|
|
11
|
+
stages: [what, how, build, watch]
|
|
12
|
+
skips: [plan]
|
|
13
|
+
depth: standard
|
|
14
|
+
default_budget_usd: 20
|
|
15
|
+
# gates — who closes each stage's gate: `human` waits for `tldrx approve`,
|
|
16
|
+
# `auto` lets the facilitator close it when the five spec §5 conditions
|
|
17
|
+
# hold (checks pass, no open question, spend within ceiling, the stage
|
|
18
|
+
# did not fail, claim-sources clean). Every stage still ENDS at a gate;
|
|
19
|
+
# this only says who signs it. A stage not named here is `human`.
|
|
20
|
+
gates: {what: human, how: auto, build: auto, watch: human}
|
|
21
|
+
changes:
|
|
22
|
+
- "What = a MEASURED baseline. No baseline, no scope — the run refuses to start."
|
|
23
|
+
- "Watch = the before/after comparison, on the same query, on the same data."
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# schema: draft
|
|
2
|
+
# A scope is a workflow preset (concept v0.1 addendum). It biases the facilitator:
|
|
3
|
+
# which stages run, at what depth, on what budget. Adding a scope = adding one yml.
|
|
4
|
+
# The facilitator never hard-codes a scope.
|
|
5
|
+
#
|
|
6
|
+
# stages — run in this order; every name must be a folder under stages/
|
|
7
|
+
# skips — stages deliberately NOT run, so the omission is a decision on record
|
|
8
|
+
# depth — minimal | light | standard | deep
|
|
9
|
+
name: prototype
|
|
10
|
+
description: "Throwaway. Explicitly not for production."
|
|
11
|
+
stages: [what, how, build]
|
|
12
|
+
skips: [plan, watch]
|
|
13
|
+
depth: minimal
|
|
14
|
+
default_budget_usd: 12
|
|
15
|
+
# gates — who closes each stage's gate: `human` waits for `tldrx approve`,
|
|
16
|
+
# `auto` lets the facilitator close it when the five spec §5 conditions
|
|
17
|
+
# hold (checks pass, no open question, spend within ceiling, the stage
|
|
18
|
+
# did not fail, claim-sources clean). Every stage still ENDS at a gate;
|
|
19
|
+
# this only says who signs it. A stage not named here is `human`.
|
|
20
|
+
gates: {what: auto, how: auto, build: human}
|
|
21
|
+
changes:
|
|
22
|
+
- "Conventions gate is OFF. Definition of Done drops the test requirement."
|
|
23
|
+
- "Every artefact carries a NOT FOR PRODUCTION marker."
|
|
24
|
+
- "If it survives, it is re-run under the feature scope. It is not promoted in place."
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# schema: draft
|
|
2
|
+
# A scope is a workflow preset (concept v0.1 addendum). It biases the facilitator:
|
|
3
|
+
# which stages run, at what depth, on what budget. Adding a scope = adding one yml.
|
|
4
|
+
# The facilitator never hard-codes a scope.
|
|
5
|
+
#
|
|
6
|
+
# stages — run in this order; every name must be a folder under stages/
|
|
7
|
+
# skips — stages deliberately NOT run, so the omission is a decision on record
|
|
8
|
+
# depth — minimal | light | standard | deep
|
|
9
|
+
name: refactor
|
|
10
|
+
description: "Pay down tech debt. Behaviour must not change."
|
|
11
|
+
stages: [what, how, plan, build, watch]
|
|
12
|
+
skips: []
|
|
13
|
+
depth: standard
|
|
14
|
+
default_budget_usd: 20
|
|
15
|
+
# gates — who closes each stage's gate: `human` waits for `tldrx approve`,
|
|
16
|
+
# `auto` lets the facilitator close it when the five spec §5 conditions
|
|
17
|
+
# hold (checks pass, no open question, spend within ceiling, the stage
|
|
18
|
+
# did not fail, claim-sources clean). Every stage still ENDS at a gate;
|
|
19
|
+
# this only says who signs it. A stage not named here is `human`.
|
|
20
|
+
gates: {what: human, how: auto, plan: human, build: auto, watch: human}
|
|
21
|
+
changes:
|
|
22
|
+
- "What = evidence of pain, measured: churn x complexity from map/hotspots.md."
|
|
23
|
+
- "Build gate is behaviour-preserving tests — written BEFORE the refactor, green on both sides."
|
|
24
|
+
- "Watch is optional; drop it when no runtime behaviour changed."
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# schema: draft
|
|
2
|
+
# A scope is a workflow preset (concept v0.1 addendum). It biases the facilitator:
|
|
3
|
+
# which stages run, at what depth, on what budget. Adding a scope = adding one yml.
|
|
4
|
+
# The facilitator never hard-codes a scope.
|
|
5
|
+
#
|
|
6
|
+
# stages — run in this order; every name must be a folder under stages/
|
|
7
|
+
# skips — stages deliberately NOT run, so the omission is a decision on record
|
|
8
|
+
# depth — minimal | light | standard | deep
|
|
9
|
+
name: retro
|
|
10
|
+
description: "Meta scope: read a finished run and propose what to keep."
|
|
11
|
+
stages: []
|
|
12
|
+
skips: [what, how, plan, build, watch]
|
|
13
|
+
depth: minimal
|
|
14
|
+
default_budget_usd: 3
|
|
15
|
+
# gates — retro runs no stage from stages/, so there is no stage gate to place.
|
|
16
|
+
# `tldrx retro <run-id>` is a command a human runs, not a stage.
|
|
17
|
+
changes:
|
|
18
|
+
- "Runs no stage from stages/. Driven by `tldrx retro <run-id>`, which reads events.jsonl."
|
|
19
|
+
- "Proposes three things: facts to remember, practices to change, stages to add."
|
|
20
|
+
- "Proposed stages land in stages/proposed/ and stay INERT until a human accepts them."
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# schema: draft
|
|
2
|
+
# A scope is a workflow preset (concept v0.1 addendum). It biases the facilitator:
|
|
3
|
+
# which stages run, at what depth, on what budget. Adding a scope = adding one yml.
|
|
4
|
+
# The facilitator never hard-codes a scope.
|
|
5
|
+
#
|
|
6
|
+
# stages — run in this order; every name must be a folder under stages/
|
|
7
|
+
# skips — stages deliberately NOT run, so the omission is a decision on record
|
|
8
|
+
# depth — minimal | light | standard | deep
|
|
9
|
+
name: security-patch
|
|
10
|
+
description: "Respond to a CVE or a disclosed vulnerability."
|
|
11
|
+
stages: [what, how, build, watch]
|
|
12
|
+
skips: [plan]
|
|
13
|
+
depth: minimal
|
|
14
|
+
default_budget_usd: 10
|
|
15
|
+
# gates — who closes each stage's gate: `human` waits for `tldrx approve`,
|
|
16
|
+
# `auto` lets the facilitator close it when the five spec §5 conditions
|
|
17
|
+
# hold (checks pass, no open question, spend within ceiling, the stage
|
|
18
|
+
# did not fail, claim-sources clean). Every stage still ENDS at a gate;
|
|
19
|
+
# this only says who signs it. A stage not named here is `human`.
|
|
20
|
+
gates: {what: auto, how: auto, build: human, watch: human}
|
|
21
|
+
changes:
|
|
22
|
+
- "What and How are compressed into one pass: CVE -> affected surface, via the code map."
|
|
23
|
+
- "Build = patch. Watch = verify the surface is actually gone, not that the version string changed."
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# schema: draft
|
|
2
|
+
# A scope is a workflow preset (concept v0.1 addendum). It biases the facilitator:
|
|
3
|
+
# which stages run, at what depth, on what budget. Adding a scope = adding one yml.
|
|
4
|
+
# The facilitator never hard-codes a scope.
|
|
5
|
+
#
|
|
6
|
+
# stages — run in this order; every name must be a folder under stages/
|
|
7
|
+
# skips — stages deliberately NOT run, so the omission is a decision on record
|
|
8
|
+
# depth — minimal | light | standard | deep
|
|
9
|
+
name: spike
|
|
10
|
+
description: "Answer one question. Time-boxed and budget-boxed."
|
|
11
|
+
stages: [what, how]
|
|
12
|
+
skips: [plan, build, watch]
|
|
13
|
+
depth: light
|
|
14
|
+
default_budget_usd: 6
|
|
15
|
+
# gates — who closes each stage's gate: `human` waits for `tldrx approve`,
|
|
16
|
+
# `auto` lets the facilitator close it when the five spec §5 conditions
|
|
17
|
+
# hold (checks pass, no open question, spend within ceiling, the stage
|
|
18
|
+
# did not fail, claim-sources clean). Every stage still ENDS at a gate;
|
|
19
|
+
# this only says who signs it. A stage not named here is `human`.
|
|
20
|
+
gates: {what: auto, how: human}
|
|
21
|
+
changes:
|
|
22
|
+
- "Output is a decision memo, not code. Any code written is thrown away."
|
|
23
|
+
- "The budget ceiling is the point. When it is spent, you write up what you know."
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# schema: draft
|
|
2
|
+
# A scope is a workflow preset (concept v0.1 addendum). It biases the facilitator:
|
|
3
|
+
# which stages run, at what depth, on what budget. Adding a scope = adding one yml.
|
|
4
|
+
# The facilitator never hard-codes a scope.
|
|
5
|
+
#
|
|
6
|
+
# stages — run in this order; every name must be a folder under stages/
|
|
7
|
+
# skips — stages deliberately NOT run, so the omission is a decision on record
|
|
8
|
+
# depth — minimal | light | standard | deep
|
|
9
|
+
name: upgrade
|
|
10
|
+
description: "Bump one dependency. The automatable subset of a migration."
|
|
11
|
+
stages: [what, plan, build, watch]
|
|
12
|
+
skips: [how]
|
|
13
|
+
depth: light
|
|
14
|
+
default_budget_usd: 8
|
|
15
|
+
# gates — who closes each stage's gate: `human` waits for `tldrx approve`,
|
|
16
|
+
# `auto` lets the facilitator close it when the five spec §5 conditions
|
|
17
|
+
# hold (checks pass, no open question, spend within ceiling, the stage
|
|
18
|
+
# did not fail, claim-sources clean). Every stage still ENDS at a gate;
|
|
19
|
+
# this only says who signs it. A stage not named here is `human`.
|
|
20
|
+
gates: {what: auto, plan: auto, build: auto, watch: human}
|
|
21
|
+
changes:
|
|
22
|
+
- "How is skipped: the design is the vendor changelog. Cite it."
|
|
23
|
+
- "What = the breaking-change list for the exact version range being crossed."
|