@deftai/directive-content 0.59.0 → 0.61.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/.githooks/pre-commit +10 -128
- package/.githooks/pre-push +8 -108
- package/Taskfile.yml +48 -58
- package/UPGRADING.md +19 -3
- package/docs/assets/directive-lifecycle-diagram.png +0 -0
- package/docs/directive-lifecycle.md +73 -0
- package/docs/getting-started.md +5 -1
- package/package.json +3 -3
- package/packs/skills/skills-pack-0.1.json +1 -1
- package/packs/strategies/strategies-pack-0.1.json +19 -19
- package/scm/github.md +37 -6
- package/skills/deft-directive-setup/SKILL.md +24 -15
- package/strategies/speckit.md +14 -14
- package/strategies/v0-20-contract.md +12 -1
- package/tasks/change.yml +16 -31
- package/tasks/ci.yml +8 -0
- package/tasks/commit.yml +12 -19
- package/tasks/core.yml +10 -0
- package/tasks/engine.yml +42 -0
- package/tasks/framework.yml +3 -0
- package/tasks/install.yml +20 -19
- package/tasks/migrate.yml +26 -15
- package/tasks/project.yml +26 -0
- package/tasks/toolchain.yml +15 -5
- package/tasks/vbrief.yml +4 -3
- package/tasks/verify.yml +12 -14
- package/templates/agents-entry.md +1 -1
- package/scripts/_agents_md.py +0 -494
- package/scripts/_cache_fetch.py +0 -635
- package/scripts/_cache_quota.py +0 -529
- package/scripts/_cache_refresh.py +0 -163
- package/scripts/_cache_validate.py +0 -209
- package/scripts/_content_root.py +0 -42
- package/scripts/_doctor_state.py +0 -277
- package/scripts/_event_detect.py +0 -305
- package/scripts/_events.py +0 -514
- package/scripts/_lifecycle_hygiene.py +0 -568
- package/scripts/_pathspec.py +0 -91
- package/scripts/_policy_show_cli.py +0 -266
- package/scripts/_precutover.py +0 -92
- package/scripts/_project_context.py +0 -224
- package/scripts/_project_definition_io.py +0 -164
- package/scripts/_relocate_snapshot.py +0 -209
- package/scripts/_relocate_states.py +0 -343
- package/scripts/_resolve_preflight_path.py +0 -152
- package/scripts/_safe_subprocess.py +0 -167
- package/scripts/_session_start_hook.py +0 -205
- package/scripts/_sor_gate_diff.py +0 -365
- package/scripts/_stdio_utf8.py +0 -59
- package/scripts/_triage_bootstrap_gitignore.py +0 -904
- package/scripts/_triage_classify_cli.py +0 -122
- package/scripts/_triage_queue_cli.py +0 -625
- package/scripts/_triage_scope_cli.py +0 -343
- package/scripts/_triage_scope_drift_cli.py +0 -121
- package/scripts/_triage_scope_ignores.py +0 -286
- package/scripts/_triage_scope_milestone.py +0 -432
- package/scripts/_triage_scope_mutations.py +0 -337
- package/scripts/_triage_scope_renderers.py +0 -207
- package/scripts/_triage_smoketest_stages.py +0 -674
- package/scripts/_triage_subscribe_cli.py +0 -140
- package/scripts/_triage_welcome_cli.py +0 -421
- package/scripts/_vbrief_build.py +0 -239
- package/scripts/_vbrief_fidelity.py +0 -479
- package/scripts/_vbrief_legacy.py +0 -589
- package/scripts/_vbrief_reconciliation.py +0 -883
- package/scripts/_vbrief_routing.py +0 -277
- package/scripts/_vbrief_safety.py +0 -778
- package/scripts/_vbrief_sources.py +0 -312
- package/scripts/_vbrief_speckit.py +0 -262
- package/scripts/_vbrief_story_quality.py +0 -353
- package/scripts/_vbrief_validation.py +0 -299
- package/scripts/build_dist.py +0 -412
- package/scripts/cache.py +0 -1078
- package/scripts/cache_scanner.py +0 -745
- package/scripts/candidates_log.py +0 -432
- package/scripts/capacity_backfill.py +0 -680
- package/scripts/capacity_show.py +0 -653
- package/scripts/ci_local.py +0 -689
- package/scripts/code_structure_validate.py +0 -765
- package/scripts/codebase_default_extractor.py +0 -495
- package/scripts/codebase_map.py +0 -304
- package/scripts/codebase_map_fresh.py +0 -104
- package/scripts/codebase_projection_registry.py +0 -94
- package/scripts/codebase_provider.py +0 -582
- package/scripts/doctor.py +0 -2552
- package/scripts/framework_commands.py +0 -505
- package/scripts/gh_rest.py +0 -882
- package/scripts/github_auth_modes.py +0 -437
- package/scripts/github_body.py +0 -292
- package/scripts/ip_risk.py +0 -531
- package/scripts/issue_emit.py +0 -670
- package/scripts/issue_ingest.py +0 -1064
- package/scripts/migrate_preflight.py +0 -418
- package/scripts/migrate_vbrief.py +0 -2677
- package/scripts/monitor_pr.py +0 -401
- package/scripts/pack_migrate_lessons.py +0 -336
- package/scripts/pack_migrate_patterns.py +0 -254
- package/scripts/pack_migrate_rules.py +0 -350
- package/scripts/pack_migrate_skills.py +0 -423
- package/scripts/pack_migrate_strategies.py +0 -311
- package/scripts/pack_migrate_swarm_spec.py +0 -250
- package/scripts/pack_render.py +0 -434
- package/scripts/packs_slice.py +0 -712
- package/scripts/platform_capabilities.py +0 -336
- package/scripts/policy.py +0 -2826
- package/scripts/policy_set.py +0 -324
- package/scripts/pr_check_closing_keywords.py +0 -524
- package/scripts/pr_check_protected_issues.py +0 -267
- package/scripts/pr_merge_readiness.py +0 -1004
- package/scripts/pr_wait_mergeable.py +0 -669
- package/scripts/prd_render.py +0 -159
- package/scripts/preflight_architecture_sor.py +0 -974
- package/scripts/preflight_branch.py +0 -289
- package/scripts/preflight_cache.py +0 -974
- package/scripts/preflight_gh.py +0 -721
- package/scripts/preflight_implementation.py +0 -272
- package/scripts/preflight_story_start.py +0 -838
- package/scripts/preflight_wip_cap.py +0 -149
- package/scripts/probe_session.py +0 -545
- package/scripts/project_render.py +0 -293
- package/scripts/quarantine_ext.py +0 -237
- package/scripts/reconcile_issues.py +0 -1442
- package/scripts/refresh-path.ps1 +0 -107
- package/scripts/release.py +0 -2030
- package/scripts/release_e2e.py +0 -1011
- package/scripts/release_publish.py +0 -486
- package/scripts/release_rollback.py +0 -980
- package/scripts/relocate.py +0 -1034
- package/scripts/resolve_changelog_unreleased.py +0 -667
- package/scripts/resolve_version.py +0 -490
- package/scripts/resume_conditions.py +0 -706
- package/scripts/ritual_sentinel.py +0 -609
- package/scripts/roadmap_render.py +0 -635
- package/scripts/rule_ownership_lint.py +0 -325
- package/scripts/scm.py +0 -591
- package/scripts/scope_audit_log.py +0 -387
- package/scripts/scope_decompose.py +0 -654
- package/scripts/scope_demote.py +0 -509
- package/scripts/scope_lifecycle.py +0 -1126
- package/scripts/scope_undo.py +0 -772
- package/scripts/session_start.py +0 -406
- package/scripts/setup_ghx.py +0 -339
- package/scripts/setup_windows.ps1 +0 -220
- package/scripts/slice_audit.py +0 -585
- package/scripts/slice_record.py +0 -530
- package/scripts/slice_record_existing.py +0 -692
- package/scripts/slug_normalize.py +0 -178
- package/scripts/spec_render.py +0 -477
- package/scripts/spec_validate.py +0 -238
- package/scripts/subagent_monitor.py +0 -658
- package/scripts/swarm_complete_cohort.py +0 -644
- package/scripts/swarm_launch.py +0 -1206
- package/scripts/swarm_readiness.py +0 -554
- package/scripts/swarm_verify_review_clean.py +0 -438
- package/scripts/swarm_worktrees.py +0 -497
- package/scripts/toolchain-check.py +0 -52
- package/scripts/triage_actions.py +0 -871
- package/scripts/triage_bootstrap.py +0 -1153
- package/scripts/triage_bulk.py +0 -630
- package/scripts/triage_classify.py +0 -932
- package/scripts/triage_help.py +0 -1685
- package/scripts/triage_queue.py +0 -1944
- package/scripts/triage_reconcile.py +0 -581
- package/scripts/triage_refresh.py +0 -643
- package/scripts/triage_scope.py +0 -999
- package/scripts/triage_scope_drift.py +0 -575
- package/scripts/triage_smoketest.py +0 -396
- package/scripts/triage_subscribe.py +0 -399
- package/scripts/triage_summary.py +0 -1011
- package/scripts/triage_welcome.py +0 -1178
- package/scripts/ts_check_lane.py +0 -86
- package/scripts/validate-links.py +0 -64
- package/scripts/validate_strategy_output.py +0 -212
- package/scripts/vbrief_activate.py +0 -228
- package/scripts/vbrief_migrate_conformance.py +0 -368
- package/scripts/vbrief_reconcile_graph.py +0 -306
- package/scripts/vbrief_reconcile_labels.py +0 -460
- package/scripts/vbrief_reconcile_umbrellas.py +0 -741
- package/scripts/vbrief_validate.py +0 -1144
- package/scripts/verify-stubs.py +0 -61
- package/scripts/verify_capacity.py +0 -160
- package/scripts/verify_encoding.py +0 -699
- package/scripts/verify_hooks_installed.py +0 -206
- package/scripts/verify_investigation.py +0 -360
- package/scripts/verify_judgment_gates.py +0 -827
- package/scripts/verify_no_task_runtime.py +0 -171
- package/scripts/verify_scm_boundary.py +0 -509
- package/scripts/verify_session_ritual.py +0 -389
- package/scripts/verify_tools.py +0 -426
- package/scripts/verify_vbrief_conformance.py +0 -478
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
"""_triage_classify_cli.py -- argparse shim for ``scripts/triage_classify.py``.
|
|
3
|
-
|
|
4
|
-
Kept in its own module so ``triage_classify.py`` stays under the 1000-line
|
|
5
|
-
MUST cap from ``coding/coding.md``. The CLI surface is intentionally
|
|
6
|
-
narrow: ``--list`` renders the effective rule + hold-marker set;
|
|
7
|
-
``--validate`` runs the schema check against the current
|
|
8
|
-
PROJECT-DEFINITION and exits non-zero on errors (suitable for CI / hook
|
|
9
|
-
use). Dry-run application against a cache is OUT OF SCOPE for D10 --
|
|
10
|
-
that lands with the apply-step integration in a follow-up child.
|
|
11
|
-
|
|
12
|
-
Exit codes (three-state, mirrors ``scripts/preflight_branch.py``):
|
|
13
|
-
|
|
14
|
-
* ``0`` -- success (or no errors when ``--validate`` is the verb).
|
|
15
|
-
* ``1`` -- validation errors found.
|
|
16
|
-
* ``2`` -- usage error or PROJECT-DEFINITION not parseable.
|
|
17
|
-
"""
|
|
18
|
-
|
|
19
|
-
from __future__ import annotations
|
|
20
|
-
|
|
21
|
-
import argparse
|
|
22
|
-
import sys
|
|
23
|
-
from pathlib import Path
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
def _build_parser() -> argparse.ArgumentParser:
|
|
27
|
-
parser = argparse.ArgumentParser(
|
|
28
|
-
prog="triage_classify.py",
|
|
29
|
-
description=(
|
|
30
|
-
"Auto-classification surface (#1129 / D10). Inspect or validate "
|
|
31
|
-
"the effective triageAutoClassify[] + triageHoldMarkers[] config."
|
|
32
|
-
),
|
|
33
|
-
)
|
|
34
|
-
parser.add_argument(
|
|
35
|
-
"--project-root",
|
|
36
|
-
default=".",
|
|
37
|
-
help="Path to the consumer project root (default: current dir).",
|
|
38
|
-
)
|
|
39
|
-
group = parser.add_mutually_exclusive_group(required=False)
|
|
40
|
-
group.add_argument(
|
|
41
|
-
"--list",
|
|
42
|
-
action="store_true",
|
|
43
|
-
dest="do_list",
|
|
44
|
-
help="Print the effective rule + hold-marker set (default action).",
|
|
45
|
-
)
|
|
46
|
-
group.add_argument(
|
|
47
|
-
"--validate",
|
|
48
|
-
action="store_true",
|
|
49
|
-
dest="do_validate",
|
|
50
|
-
help=(
|
|
51
|
-
"Validate plan.policy.triageAutoClassify[] and triageHoldMarkers[] "
|
|
52
|
-
"on the local PROJECT-DEFINITION; exit non-zero on errors."
|
|
53
|
-
),
|
|
54
|
-
)
|
|
55
|
-
return parser
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
def _validate_project(project_root: Path, module: object) -> int:
|
|
59
|
-
"""Run schema validation against the local PROJECT-DEFINITION."""
|
|
60
|
-
data = module._load_project_definition(project_root)
|
|
61
|
-
if data is None:
|
|
62
|
-
# No PROJECT-DEFINITION -- the framework defaults apply with no
|
|
63
|
-
# consumer overrides, which is always valid by construction.
|
|
64
|
-
print(
|
|
65
|
-
"OK: no PROJECT-DEFINITION at "
|
|
66
|
-
f"{project_root / 'vbrief' / 'PROJECT-DEFINITION.vbrief.json'} -- "
|
|
67
|
-
"framework defaults apply with no consumer overrides."
|
|
68
|
-
)
|
|
69
|
-
return 0
|
|
70
|
-
plan = data.get("plan") if isinstance(data, dict) else None
|
|
71
|
-
if not isinstance(plan, dict):
|
|
72
|
-
print(
|
|
73
|
-
"FAIL: PROJECT-DEFINITION.plan is not an object",
|
|
74
|
-
file=sys.stderr,
|
|
75
|
-
)
|
|
76
|
-
return 1
|
|
77
|
-
rel = project_root / "vbrief" / "PROJECT-DEFINITION.vbrief.json"
|
|
78
|
-
classify_errs = module.validate_triage_auto_classify_on_plan(plan, str(rel))
|
|
79
|
-
holder_errs = module.validate_triage_hold_markers_on_plan(plan, str(rel))
|
|
80
|
-
errors = classify_errs + holder_errs
|
|
81
|
-
if errors:
|
|
82
|
-
for err in errors:
|
|
83
|
-
print(f"FAIL: {err}", file=sys.stderr)
|
|
84
|
-
print(f"\n{len(errors)} error(s) found", file=sys.stderr)
|
|
85
|
-
return 1
|
|
86
|
-
rules = module.resolve_classify_rules(project_root)
|
|
87
|
-
markers = module.resolve_hold_markers(project_root)
|
|
88
|
-
print(
|
|
89
|
-
"OK: triageAutoClassify[] + triageHoldMarkers[] valid "
|
|
90
|
-
f"({len(rules)} rules, {len(markers)} hold markers)."
|
|
91
|
-
)
|
|
92
|
-
return 0
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
def _list_project(project_root: Path, module: object) -> int:
|
|
96
|
-
rules = module.resolve_classify_rules(project_root)
|
|
97
|
-
markers = module.resolve_hold_markers(project_root)
|
|
98
|
-
print(module.render_list(rules, hold_markers=markers))
|
|
99
|
-
return 0
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
def run_cli(argv: list[str] | None, module: object) -> int:
|
|
103
|
-
"""Entry-point invoked by :func:`triage_classify.main`.
|
|
104
|
-
|
|
105
|
-
Receives the parent module so the shim doesn't import it via
|
|
106
|
-
``triage_classify`` (which would create a stale alias when the
|
|
107
|
-
module is re-imported under a different name during tests).
|
|
108
|
-
"""
|
|
109
|
-
parser = _build_parser()
|
|
110
|
-
args = parser.parse_args(argv)
|
|
111
|
-
project_root = Path(args.project_root).resolve()
|
|
112
|
-
if not project_root.exists() or not project_root.is_dir():
|
|
113
|
-
print(
|
|
114
|
-
f"ERR: --project-root {project_root} does not exist or is not a "
|
|
115
|
-
"directory.",
|
|
116
|
-
file=sys.stderr,
|
|
117
|
-
)
|
|
118
|
-
return 2
|
|
119
|
-
if args.do_validate:
|
|
120
|
-
return _validate_project(project_root, module)
|
|
121
|
-
# Default action: --list.
|
|
122
|
-
return _list_project(project_root, module)
|