@ikon85/agent-workflow-kit 0.43.0 → 0.44.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/.agents/skills/grill-me/SKILL.md +3 -1
- package/.agents/skills/grill-with-docs/SKILL.md +3 -1
- package/.agents/skills/kit-update/SKILL.md +9 -11
- package/.agents/skills/orchestrate-wave/SKILL.md +8 -8
- package/.agents/skills/setup-workflow/SKILL.md +20 -18
- package/.agents/skills/setup-workflow/board-sync.md +4 -1
- package/.agents/skills/setup-workflow/workflow-advisories.md +3 -2
- package/.agents/skills/setup-workflow/worktree-lifecycle.md +36 -31
- package/.agents/skills/to-issues/SKILL.md +43 -0
- package/.agents/skills/wrapup/SKILL.md +98 -54
- package/.claude/skills/grill-me/SKILL.md +3 -1
- package/.claude/skills/grill-me-codex/SKILL.md +3 -1
- package/.claude/skills/grill-with-docs/SKILL.md +3 -1
- package/.claude/skills/grill-with-docs-codex/SKILL.md +3 -1
- package/.claude/skills/kit-update/SKILL.md +9 -11
- package/.claude/skills/orchestrate-wave/SKILL.md +8 -8
- package/.claude/skills/setup-workflow/SKILL.md +20 -18
- package/.claude/skills/setup-workflow/board-sync.md +4 -1
- package/.claude/skills/setup-workflow/workflow-advisories.md +3 -2
- package/.claude/skills/setup-workflow/worktree-lifecycle.md +36 -31
- package/.claude/skills/to-issues/SKILL.md +43 -0
- package/.claude/skills/wrapup/SKILL.md +98 -54
- package/README.md +249 -7
- package/agent-workflow-kit.package.json +42 -42
- package/package.json +16 -12
- package/scripts/marker_lib.py +3 -0
- package/scripts/profile_globs.py +26 -45
- package/scripts/release-delta-guard.mjs +26 -9
- package/scripts/worktree-lifecycle/README.md +57 -160
- package/scripts/worktree-lifecycle/capabilities.json +2 -3
- package/scripts/worktree-lifecycle/classify.py +480 -0
- package/scripts/worktree-lifecycle/cleanup.py +9 -29
- package/scripts/worktree-lifecycle/core.py +68 -1429
- package/scripts/worktree-lifecycle/ignore_seed.py +1 -1
- package/scripts/worktree-lifecycle/profile.py +46 -29
- package/scripts/worktree-lifecycle/setup.py +7 -19
- package/scripts/wrapup-land.py +1292 -545
- package/src/consumer-migrations.json +1 -16
- package/src/lib/bundle.mjs +31 -1
- package/docs/adr/0001-consumer-divergence-policy.md +0 -53
- package/docs/adr/0002-capability-gated-orchestration.md +0 -70
- package/docs/adr/0003-kit-core-and-project-extension-lifecycle.md +0 -63
- package/docs/adr/0004-release-intent-is-a-version-tag.md +0 -64
- package/docs/adr/0005-to-issues-is-the-planning-facade.md +0 -42
- package/docs/adr/0006-routing-knowledge-access-and-policy-are-separate.md +0 -95
- package/docs/adr/0007-session-teardown-requires-provenance-bound-ownership.md +0 -88
- package/docs/adr/0008-planning-ignore-rules-are-offered-never-installed.md +0 -84
- package/docs/adr/0009-teardown-authority-is-stateless-repository-classification.md +0 -101
- package/docs/adr/0010-model-roster-replaces-the-optimization-dial.md +0 -87
- package/docs/agents/board-sync.md +0 -74
- package/docs/agents/code-review.md +0 -14
- package/docs/agents/workflow-capabilities.json +0 -28
- package/docs/research/agent-task-taxonomy-benchmark-coverage.md +0 -451
- package/docs/research/benchlm-routing-source.md +0 -198
- package/docs/research/consumer-owned-protocol-files.md +0 -238
- package/docs/research/frontend-agent-benchmarks.md +0 -282
- package/docs/research/model-effort-routing-benchmarks.md +0 -261
- package/docs/research/provider-neutral-agent-routing.md +0 -207
- package/docs/research/wave-152-consumer-acceptance.md +0 -98
- package/docs/research/wave-43-script-hook-census.md +0 -128
- package/scripts/build-kit.mjs +0 -117
- package/scripts/build-kit.test.mjs +0 -207
- package/scripts/census/census.test.mjs +0 -252
- package/scripts/census/state.test.mjs +0 -15
- package/scripts/census/transaction.test.mjs +0 -103
- package/scripts/census-contract.test.mjs +0 -227
- package/scripts/check-kit-staleness.mjs +0 -45
- package/scripts/check-kit-staleness.test.mjs +0 -19
- package/scripts/codex-exec-scenarios/fake-codex.mjs +0 -165
- package/scripts/codex-exec.test.mjs +0 -871
- package/scripts/grill-census-wiring-guard.mjs +0 -87
- package/scripts/grill-census-wiring-guard.test.mjs +0 -107
- package/scripts/kit-release.test.mjs +0 -273
- package/scripts/kit-update-pr.test.mjs +0 -151
- package/scripts/lib/audit-refs.mjs +0 -146
- package/scripts/lib/scrub.mjs +0 -113
- package/scripts/lib/scrub.test.mjs +0 -187
- package/scripts/memory-lifecycle/memory-lifecycle.test.mjs +0 -170
- package/scripts/portability_profile_scan.py +0 -53
- package/scripts/release-delta-guard.test.mjs +0 -174
- package/scripts/release-parity.test.mjs +0 -90
- package/scripts/release-state.test.mjs +0 -360
- package/scripts/test_anchor_table.py +0 -69
- package/scripts/test_board_bootstrap.py +0 -348
- package/scripts/test_board_sync.py +0 -208
- package/scripts/test_board_sync_create_idempotency.py +0 -117
- package/scripts/test_board_sync_wave_title.py +0 -120
- package/scripts/test_census_backstop.py +0 -712
- package/scripts/test_census_forward_contract.py +0 -91
- package/scripts/test_census_update_contract.test.mjs +0 -454
- package/scripts/test_codex_adapter_sync_contract.py +0 -169
- package/scripts/test_dist_kit_smoke.py +0 -220
- package/scripts/test_drift_guard_diagnostics.py +0 -295
- package/scripts/test_issue_claim_contract.py +0 -169
- package/scripts/test_kit_docs_language_census.py +0 -178
- package/scripts/test_marker_lib.py +0 -162
- package/scripts/test_orchestrate_wave_contract.py +0 -381
- package/scripts/test_pr_body_check.py +0 -264
- package/scripts/test_profile_globs.py +0 -280
- package/scripts/test_program_planning_contract.py +0 -133
- package/scripts/test_release_authorization_contract.py +0 -101
- package/scripts/test_render_anchor.py +0 -267
- package/scripts/test_retro_wrapup_contract.py +0 -153
- package/scripts/test_skill_code_review_seed.py +0 -89
- package/scripts/test_skill_codex_exec_lifecycle.py +0 -123
- package/scripts/test_skill_frontmatter_lint.py +0 -234
- package/scripts/test_skill_gh_lint.py +0 -124
- package/scripts/test_skill_language_census.py +0 -254
- package/scripts/test_skill_optional_readiness.py +0 -171
- package/scripts/test_skill_portability_lint.py +0 -866
- package/scripts/test_skill_precommit_template.py +0 -30
- package/scripts/test_skill_publish_audit.py +0 -358
- package/scripts/test_skill_readiness_contract.py +0 -264
- package/scripts/test_skill_readiness_preflight.py +0 -180
- package/scripts/test_skill_required_readiness.py +0 -233
- package/scripts/test_skill_selfcontainment_lint.py +0 -255
- package/scripts/test_skill_setup_workflow_seeds.py +0 -691
- package/scripts/test_skill_stale_name_lint.py +0 -126
- package/scripts/test_skill_surface_refs.py +0 -300
- package/scripts/test_skill_trailing_artifact_lint.py +0 -71
- package/scripts/test_tdd_contract.py +0 -78
- package/scripts/test_worktree_ignore_seed.py +0 -320
- package/scripts/test_worktree_setup_base_guard.py +0 -140
- package/scripts/test_worktree_wrapup_contract.py +0 -1737
- package/scripts/test_wrapup_land.py +0 -428
- package/scripts/worktree-lifecycle/session.py +0 -1857
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
# Teardown authority is stateless repository classification
|
|
2
|
-
|
|
3
|
-
Status: accepted (2026-07-27, #320) — supersedes
|
|
4
|
-
[ADR-0007](./0007-session-teardown-requires-provenance-bound-ownership.md)
|
|
5
|
-
|
|
6
|
-
ADR-0007 derived teardown authority from persisted lifecycle evidence:
|
|
7
|
-
ownership-proof refs acquired in atomic git transactions, frozen
|
|
8
|
-
landing-attempt journals, baseline digests, no-follow identity binding, and a
|
|
9
|
-
post-merge reload of the canonical cleanup policy. Every piece was locally
|
|
10
|
-
justified, and the aggregate failed in practice: fifteen teardown/cleanup
|
|
11
|
-
issues in two weeks (#245–#319), ~5,600 lines of lifecycle code, two recovery
|
|
12
|
-
flags for the machinery's own bookkeeping, a legacy receipt contract, and
|
|
13
|
-
refusals that did not name their cause (#319: 68,856 paths, 7.4 MB, zero
|
|
14
|
-
actionable lines). The protection was aimed at narrow races between assessment
|
|
15
|
-
and deletion; the cost was that ordinary sessions could no longer finish.
|
|
16
|
-
|
|
17
|
-
We decided that teardown authority comes from the repository's **current
|
|
18
|
-
state**, read at the moment of action, and from nothing else:
|
|
19
|
-
|
|
20
|
-
1. **Git's own classification is the file taxonomy.** A tracked modification
|
|
21
|
-
blocks teardown. An untracked, non-ignored file blocks with a bounded
|
|
22
|
-
report (count plus top directories — never an unbounded path dump). An
|
|
23
|
-
ignored file is Scratch: the repository declared it not-work, and it is
|
|
24
|
-
deletable. "Ignored" means git's standard exclude sources
|
|
25
|
-
(`--exclude-standard`: repository `.gitignore` files, `.git/info/exclude`,
|
|
26
|
-
the global excludes file) — whatever the repository's own tooling treats as
|
|
27
|
-
ignored is deletion authority here too.
|
|
28
|
-
2. **One hardcoded exception: `.env*` (basename glob).** Ignored yet
|
|
29
|
-
potentially irreplaceable. Before removal each `.env*` regular file is
|
|
30
|
-
compared byte-wise with its counterpart at the same relative path in the
|
|
31
|
-
main checkout, both opened no-follow: identical → derived copy, deletable;
|
|
32
|
-
divergent, absent in the main checkout, or either side not a regular file →
|
|
33
|
-
block with the exact files named. The check is a present-state comparison,
|
|
34
|
-
not a receipt.
|
|
35
|
-
3. **The platform PR record authorizes branch deletion.** Force-deletion
|
|
36
|
-
requires exactly one PR matching the full tuple — this repository as base
|
|
37
|
-
repo, head repository equal to the base repo (no fork heads), head ref
|
|
38
|
-
equal to the branch name, base ref equal to the configured protected
|
|
39
|
-
branch, state merged — whose head SHA equals the branch tip OID; the OID
|
|
40
|
-
is re-read immediately before deletion, and zero matches, multiple
|
|
41
|
-
matches, an open PR on the same head, or any drift retains the branch.
|
|
42
|
-
Ancestry-merged branches (against a freshly fetched configured protected
|
|
43
|
-
branch — stale ancestry stops rather than guesses) delete normally. A
|
|
44
|
-
branch with neither stays and is reported. Without platform access this
|
|
45
|
-
degrades to ancestry-only, reported honestly.
|
|
46
|
-
4. **Idempotency by re-check, not journal.** An interrupted landing is resumed
|
|
47
|
-
by re-running it; every step verifies present state (PR exists? merged?
|
|
48
|
-
worktree present?) and skips or proceeds. There is no persisted attempt
|
|
49
|
-
state to validate, archive, or recover.
|
|
50
|
-
5. **A direct `/wrapup` invocation is the teardown authorization.** It lands
|
|
51
|
-
and tears down the worktree it runs in — including worktrees created by
|
|
52
|
-
external tools under foreign names and paths. The kit never conditions
|
|
53
|
-
teardown on its own naming or location conventions; the four classification
|
|
54
|
-
rules above are the only protection.
|
|
55
|
-
6. **Deletion policy has exactly one configuration surface: the ignore
|
|
56
|
-
mechanism.** The consumer profile keeps structural facts only (worktree
|
|
57
|
-
root, templates, protected branches, sweep opt-in). `scratchPatterns` and
|
|
58
|
-
`landingGeneratedArtifactPatterns` are removed without migration —
|
|
59
|
-
including the shipped consumer migration that seeded them; making a file
|
|
60
|
-
deletable means ignoring it (ADR-0008's offered seeding remains the
|
|
61
|
-
supported way; its consequence about deriving `scratchPatterns` from the
|
|
62
|
-
seeded rules is obsolete with this decision).
|
|
63
|
-
|
|
64
|
-
## Considered options
|
|
65
|
-
|
|
66
|
-
- **Keep ADR-0007's provenance machinery:** rejected on empirical grounds. The
|
|
67
|
-
races it closes (a foreign file occupying an assessed path between
|
|
68
|
-
assessment and deletion, a same-name branch created concurrently) are rare
|
|
69
|
-
and low-harm next to the observed failure mode: routine teardown becoming
|
|
70
|
-
impossible and each repair adding machinery. The branch race is additionally
|
|
71
|
-
closed cheaper by the tip-SHA/PR comparison.
|
|
72
|
-
- **Shipping default scratch patterns:** rejected. A default allowlist of the
|
|
73
|
-
deletable restarts the pattern catalog and its seeding, sync, and dialect
|
|
74
|
-
problems; `.gitignore` already encodes the same fact with universal
|
|
75
|
-
tooling.
|
|
76
|
-
- **Migrating existing profiles and receipts:** rejected. The green-slate cut
|
|
77
|
-
is deliberate (#320): old keys are ignored, journaled attempts are inert
|
|
78
|
-
files, and no code path reads either. Maintaining both models would preserve
|
|
79
|
-
the complexity this decision removes.
|
|
80
|
-
- **Location heuristic for externally created worktrees (land, don't tear
|
|
81
|
-
down):** rejected by the user. `/wrapup` means tear down; splitting the
|
|
82
|
-
outcome by worktree origin reintroduces an ownership notion.
|
|
83
|
-
|
|
84
|
-
## Consequences
|
|
85
|
-
|
|
86
|
-
- A worktree whose only untracked content is ignored dependency or build
|
|
87
|
-
output is removable with zero configuration. #319's failure class cannot
|
|
88
|
-
occur.
|
|
89
|
-
- Refusals are bounded and name their cause; the fix is always visible
|
|
90
|
-
(commit the tracked change, handle the named `.env*`, ignore or remove the
|
|
91
|
-
named untracked files).
|
|
92
|
-
- The accepted residual risk is explicit: between assessment and deletion a
|
|
93
|
-
file could in principle be replaced; a valuable file a consumer keeps
|
|
94
|
-
gitignored outside `.env*` is deletable at teardown. We trade these narrow
|
|
95
|
-
windows for a lifecycle that ordinary sessions can actually complete.
|
|
96
|
-
- Planning sessions stop being a special case: durable content lands through
|
|
97
|
-
wrapup's Content route as ordinary work, scratch dies with the worktree,
|
|
98
|
-
and worktree creation binds to implementation, not planning.
|
|
99
|
-
- The lifecycle implementation shrinks from a transaction protocol to a
|
|
100
|
-
classification function plus plumbing; its tests shift from race
|
|
101
|
-
choreography to classification truth tables.
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
# A Model roster replaces the optimization dial
|
|
2
|
-
|
|
3
|
-
Status: accepted (2026-07-27, Program #287, Welle 18 / #294) — supersedes the
|
|
4
|
-
Routing-policy clause of
|
|
5
|
-
[ADR-0006](./0006-routing-knowledge-access-and-policy-are-separate.md)
|
|
6
|
-
|
|
7
|
-
ADR-0006 made "optimization goals and optional advanced overrides" inputs of
|
|
8
|
-
the Routing policy, and setup asked the user to pick Balanced, Quality, or
|
|
9
|
-
Cost. That dial cannot be made to work. The goal is always the right model for
|
|
10
|
-
the job, and a cheap-but-weak model can cost more per completed task than a
|
|
11
|
-
strong one — so a Cost dial does not express a preference the resolver can act
|
|
12
|
-
on without knowing cost per *completed* task, which no benchmark owner
|
|
13
|
-
publishes. Meanwhile the dial was never read: `readRoutingProfile` has zero
|
|
14
|
-
callers and `resolveRoute` always returns `routing-infrastructure-missing`.
|
|
15
|
-
|
|
16
|
-
We decided the user control is a **Model roster** — a positive list of
|
|
17
|
-
model-and-effort pairs the user authorizes — plus three **Standard routes**
|
|
18
|
-
that decide when no decisive evidence covers the resolved Routing intent.
|
|
19
|
-
|
|
20
|
-
1. **The optimization dial is removed everywhere it appears, not only from the
|
|
21
|
-
Routing policy.** The Routing intent loses its optimization goal too. What a
|
|
22
|
-
user is willing to spend is a Routing profile choice, not a property of the
|
|
23
|
-
work; leaving the field in the intent while the resolver ignores it would
|
|
24
|
-
leave a dead concept in the domain language. The glossary entry and the
|
|
25
|
-
intent schema both drop it.
|
|
26
|
-
2. **`unreachable` and `missingInfrastructure` are kept.** They are unrelated to
|
|
27
|
-
the dial, and the resolver's fallback semantics depend on them.
|
|
28
|
-
3. **Transport authorization belongs to the Routing profile.** Selecting Claude
|
|
29
|
-
Code and Codex does not authorize either to drive the other's CLI. ADR-0006
|
|
30
|
-
is already explicit that a detected transport is not an approved one; this
|
|
31
|
-
ADR names where the approval is stored — the global profile document, as its
|
|
32
|
-
own interview answer, narrowable per project by intersection only.
|
|
33
|
-
4. **The Routing policy is derived, not stored.** The profile is the stored
|
|
34
|
-
personal choice and carries no revision. The policy is the constraint object
|
|
35
|
-
derived from profile plus inventory for one dispatch, and it carries the
|
|
36
|
-
composed revision so a Dispatch receipt can prove which constraints applied.
|
|
37
|
-
5. **Cost is displayed and used as a tiebreak inside a cohort of identical
|
|
38
|
-
currency and unit — never as the ranking motor.** This is what the Cost dial
|
|
39
|
-
was reaching for, at the only altitude where it is honest.
|
|
40
|
-
6. **The Kit ships no opinion about which models are good.** Excluding a model
|
|
41
|
-
is one user's preference under one subscription, not a default truth. The
|
|
42
|
-
inventory stays unfiltered per ADR-0006; the roster authorizes.
|
|
43
|
-
|
|
44
|
-
## `inherit` is retained, and the condition that would have removed it
|
|
45
|
-
|
|
46
|
-
This ADR was drafted to remove `inherit` entirely if verify-spike 18c (#296)
|
|
47
|
-
could not prove that the session-default model-and-effort pair is readable back
|
|
48
|
-
and identifiable against the roster. **The spike came back positive, so
|
|
49
|
-
`inherit` is retained** in the constrained form: inheritance is permitted only
|
|
50
|
-
when the session-default pair is attested *and* inside the effective roster,
|
|
51
|
-
and otherwise blocks.
|
|
52
|
-
|
|
53
|
-
The condition under which `inherit` is removed entirely therefore stands as a
|
|
54
|
-
standing test, not a settled negative: **if the session-default pair ceases to
|
|
55
|
-
be readable back on a surface, `inherit` is removed for that surface rather
|
|
56
|
-
than left as an unprovable path.** A receipt that cannot name the pair it
|
|
57
|
-
inherited is not proof of anything.
|
|
58
|
-
|
|
59
|
-
The spike qualifies the retention with an identification requirement. One and
|
|
60
|
-
the same Claude Code session reports its default model under three different
|
|
61
|
-
identifiers — `opus[1m]` in `~/.claude/settings.json`, `claude-opus-5[1m]` in
|
|
62
|
-
the session's init event, and `claude-opus-5` in the server-returned
|
|
63
|
-
`message.model`. The attested channel is the one that drops the context
|
|
64
|
-
variant. Roster identification therefore requires an explicit normalization
|
|
65
|
-
rule and a decision on whether the context variant is part of pair identity;
|
|
66
|
-
until that rule exists, "identified against the roster" is not a check a
|
|
67
|
-
receipt may claim to have made.
|
|
68
|
-
|
|
69
|
-
## Consequences
|
|
70
|
-
|
|
71
|
-
- ADR-0006's Routing-policy clause (item 3, "optimization goals and optional
|
|
72
|
-
advanced overrides") and its closing sentence "Model preferences and
|
|
73
|
-
optimization overrides remain optional advanced settings" no longer describe
|
|
74
|
-
the system. The rest of ADR-0006 — the separation of Evidence catalog, Access
|
|
75
|
-
graph, and Routing policy; detection is not authorization; the surface
|
|
76
|
-
adapter capability declaration; the Dispatch receipt requirement — stands
|
|
77
|
-
unchanged and remains the foundation this ADR builds on.
|
|
78
|
-
- `advanced.optimization` is removed from the Routing profile schema, and
|
|
79
|
-
`optimization` from the Routing policy schema, each with a deterministic
|
|
80
|
-
version-aware decoder that records the drop rather than silently discarding a
|
|
81
|
-
choice the user made.
|
|
82
|
-
- Setup's Balanced / Quality / Cost prompt is replaced by roster admission and
|
|
83
|
-
Standard-route nomination.
|
|
84
|
-
- Model-and-effort is pair identity. Effort domains are per model — some models
|
|
85
|
-
support an effort level others do not, and some carry no effort axis at all —
|
|
86
|
-
so a pair is authorized as a pair, never as a model with an effort attached
|
|
87
|
-
afterwards.
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
<!-- setup-workflow: state=filled; mode=github-projects-v2 -->
|
|
2
|
-
# Board sync — GitHub Projects field IDs
|
|
3
|
-
|
|
4
|
-
The workflow board is [Agent Workflow Kit](https://github.com/users/iKon85/projects/3). Board-managed skills address it through the profile below and `scripts/board-sync.py`.
|
|
5
|
-
|
|
6
|
-
<!-- board-sync:profile -->
|
|
7
|
-
```json
|
|
8
|
-
{
|
|
9
|
-
"repo": "iKon85/agent-workflow-kit",
|
|
10
|
-
"project": {
|
|
11
|
-
"number": 3,
|
|
12
|
-
"owner": "iKon85",
|
|
13
|
-
"nodeId": "PVT_kwHOAuH31M4BdM5V"
|
|
14
|
-
},
|
|
15
|
-
"fields": {
|
|
16
|
-
"status": {
|
|
17
|
-
"id": "PVTSSF_lAHOAuH31M4BdM5VzhXwFOk",
|
|
18
|
-
"options": {
|
|
19
|
-
"Idea": "357a9b54",
|
|
20
|
-
"Triaged": "463d3f21",
|
|
21
|
-
"Spec": "1cd0343b",
|
|
22
|
-
"In Progress": "35e6c509",
|
|
23
|
-
"Review": "51f16b28",
|
|
24
|
-
"Done": "491150b6"
|
|
25
|
-
},
|
|
26
|
-
"roles": {
|
|
27
|
-
"idea": "Idea",
|
|
28
|
-
"triaged": "Triaged",
|
|
29
|
-
"spec": "Spec",
|
|
30
|
-
"inProgress": "In Progress",
|
|
31
|
-
"review": "Review",
|
|
32
|
-
"done": "Done"
|
|
33
|
-
}
|
|
34
|
-
},
|
|
35
|
-
"wave": "PVTF_lAHOAuH31M4BdM5VzhXwFWg",
|
|
36
|
-
"cluster": "PVTF_lAHOAuH31M4BdM5VzhXwFWk",
|
|
37
|
-
"specPath": "PVTF_lAHOAuH31M4BdM5VzhXwFWo",
|
|
38
|
-
"planPath": "PVTF_lAHOAuH31M4BdM5VzhXwFWs",
|
|
39
|
-
"phase": {
|
|
40
|
-
"id": "PVTSSF_lAHOAuH31M4BdM5VzhXwFWw",
|
|
41
|
-
"options": {
|
|
42
|
-
"P1": "9c8c93e0",
|
|
43
|
-
"P2": "cf741bec",
|
|
44
|
-
"P3": "8a69a61e"
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
},
|
|
48
|
-
"labels": {
|
|
49
|
-
"readyForAgent": "ready-for-agent",
|
|
50
|
-
"typePrefix": "type:",
|
|
51
|
-
"clusterType": "type:cluster",
|
|
52
|
-
"waveStub": "wave-stub",
|
|
53
|
-
"programType": "type:program"
|
|
54
|
-
},
|
|
55
|
-
"branchPrefixes": ["feat", "fix", "chore", "docs"],
|
|
56
|
-
"prMarkers": {
|
|
57
|
-
"partOf": "Part of",
|
|
58
|
-
"retroMarker": "**Retro:**",
|
|
59
|
-
"retroValues": ["ran", "skipped"]
|
|
60
|
-
},
|
|
61
|
-
"headings": {
|
|
62
|
-
"vorBau": "Clarify Before Build"
|
|
63
|
-
},
|
|
64
|
-
"titles": {
|
|
65
|
-
"wavePrefix": "Welle"
|
|
66
|
-
},
|
|
67
|
-
"wrapup": {
|
|
68
|
-
"remoteBranchSweep": true
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
The Program route uses phases `P1`, `P2`, and `P3`. Saved board views remain a GitHub UI concern; the machine profile above is the workflow SSOT.
|
|
74
|
-
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
<!-- setup-workflow: state=filled -->
|
|
2
|
-
# Code-review project layer
|
|
3
|
-
|
|
4
|
-
## Standards sources in this repo
|
|
5
|
-
|
|
6
|
-
- `CLAUDE.md` and `AGENTS.md`
|
|
7
|
-
- `docs/conventions/`
|
|
8
|
-
- The originating issue or PRD for the Spec axis
|
|
9
|
-
|
|
10
|
-
## Adjacent review tooling
|
|
11
|
-
|
|
12
|
-
- `spec-self-critique` reviews plans before code exists; it does not replace diff review.
|
|
13
|
-
- Security audits and simplification passes remain narrower complementary checks.
|
|
14
|
-
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"worktreeLifecycle": {
|
|
3
|
-
"enabled": true,
|
|
4
|
-
"worktreeRoot": ".worktrees",
|
|
5
|
-
"branchTemplate": "{type}/{issue}-{slug}",
|
|
6
|
-
"pathTemplate": "{issue}-{slug}",
|
|
7
|
-
"branchRegex": "^(?:feat|fix|chore|docs)/(?P<issue>\\d+)-",
|
|
8
|
-
"mainBranches": ["main"],
|
|
9
|
-
"protectedBranches": ["main"],
|
|
10
|
-
"scratchPatterns": [
|
|
11
|
-
"PLAN.md",
|
|
12
|
-
"PLAN-REVIEW-LOG.md",
|
|
13
|
-
".claude/logs/**"
|
|
14
|
-
],
|
|
15
|
-
"setupEntry": "python3 scripts/worktree-lifecycle/setup.py",
|
|
16
|
-
"setupSteps": [],
|
|
17
|
-
"riskyCommandPatterns": [
|
|
18
|
-
"\\b(?:npm|pnpm|yarn)\\s+(?:run\\s+)?(?:test|typecheck|build)\\b",
|
|
19
|
-
"\\bgit\\s+(?:commit|push)\\b"
|
|
20
|
-
]
|
|
21
|
-
},
|
|
22
|
-
"wrapup": {
|
|
23
|
-
"landingGeneratedArtifactPatterns": [
|
|
24
|
-
"dist-kit/**",
|
|
25
|
-
"**/__pycache__/**"
|
|
26
|
-
]
|
|
27
|
-
}
|
|
28
|
-
}
|