create-agdf 0.4.5 → 0.4.7

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.
@@ -1723,6 +1723,40 @@ function deriveQualityOutlook(runState, findings = []) {
1723
1723
  return "No additional quality follow-up identified from the current control state.";
1724
1724
  }
1725
1725
 
1726
+ function postApprovalTransition(missingApproval) {
1727
+ const transitions = new Map([
1728
+ ["Approval: UR", {
1729
+ next_gate_after_approval: "Brownfield Review",
1730
+ allowed_after_approval: "Run Brownfield Review and record Mode/Slice Decision before PRD or implementation.",
1731
+ }],
1732
+ ["Approval: PRD", {
1733
+ next_gate_after_approval: "SD",
1734
+ allowed_after_approval: "Draft Solution Design; implementation remains forbidden.",
1735
+ }],
1736
+ ["Approval: SD", {
1737
+ next_gate_after_approval: "TP",
1738
+ allowed_after_approval: "Draft Task/Test Plan; implementation remains forbidden.",
1739
+ }],
1740
+ ["Approval: TP", {
1741
+ next_gate_after_approval: "Brownfield Analysis",
1742
+ allowed_after_approval: "Run implementation-prep Brownfield Analysis before CD+Tests.",
1743
+ }],
1744
+ ["Approval: QA", {
1745
+ next_gate_after_approval: "UAT",
1746
+ allowed_after_approval: "Request UAT when QA has passed; release remains gated.",
1747
+ }],
1748
+ ["Approval: UAT", {
1749
+ next_gate_after_approval: "OR",
1750
+ allowed_after_approval: "Produce OR or delivery closeout; VCS and release actions still require explicit instruction.",
1751
+ }],
1752
+ ]);
1753
+
1754
+ return transitions.get(missingApproval) ?? {
1755
+ next_gate_after_approval: "none",
1756
+ allowed_after_approval: "none",
1757
+ };
1758
+ }
1759
+
1726
1760
  function buildStatusCard({
1727
1761
  status,
1728
1762
  currentGate,
@@ -1735,6 +1769,7 @@ function buildStatusCard({
1735
1769
  findings = [],
1736
1770
  }) {
1737
1771
  const qualityOutlook = deriveQualityOutlook(runState, findings);
1772
+ const postApproval = postApprovalTransition(missingApproval);
1738
1773
  return {
1739
1774
  mode: extractField(runState.content ?? "", "mode") || "unknown",
1740
1775
  status,
@@ -1744,6 +1779,8 @@ function buildStatusCard({
1744
1779
  forbidden_now: forbidden,
1745
1780
  blocking_condition: blockingReason || "none",
1746
1781
  missing_approval: missingApproval || "none",
1782
+ next_gate_after_approval: postApproval.next_gate_after_approval,
1783
+ allowed_after_approval: postApproval.allowed_after_approval,
1747
1784
  evidence: runState.evidence_refs,
1748
1785
  next_skill: nextSkillByGate[currentGate] ?? "gate-check",
1749
1786
  next_step: nextAllowedAction,
@@ -1987,12 +2024,16 @@ function evaluateGateCheck(targetDir) {
1987
2024
  : doctorRevise.next_step;
1988
2025
  }
1989
2026
 
2027
+ const postApproval = postApprovalTransition(missingApproval);
2028
+
1990
2029
  return {
1991
2030
  schema_version: "1",
1992
2031
  status,
1993
2032
  current_gate: currentGate,
1994
2033
  blocking_reason: blockingReason,
1995
2034
  missing_approval: missingApproval,
2035
+ next_gate_after_approval: postApproval.next_gate_after_approval,
2036
+ allowed_after_approval: postApproval.allowed_after_approval,
1996
2037
  allowed,
1997
2038
  forbidden,
1998
2039
  next_allowed_action: nextAllowedAction,
@@ -2029,6 +2070,8 @@ function printGateCheckStatusCard(report) {
2029
2070
  console.log(`Current gate: ${card.current_gate}`);
2030
2071
  console.log(`Blocked by: ${card.blocking_condition}`);
2031
2072
  console.log(`Missing approval: ${card.missing_approval}`);
2073
+ if (card.next_gate_after_approval !== "none") console.log(`Next gate after approval: ${card.next_gate_after_approval}`);
2074
+ if (card.allowed_after_approval !== "none") console.log(`Allowed after approval: ${card.allowed_after_approval}`);
2032
2075
  console.log(`Next skill: ${card.next_skill}`);
2033
2076
  console.log(`Next step: ${card.next_step}`);
2034
2077
  console.log(`Quality outlook: ${card.quality_outlook}`);
@@ -2087,6 +2130,7 @@ function evaluateDeliveryMap(targetDir) {
2087
2130
 
2088
2131
  const qualityOutlook = deriveQualityOutlook(runState, map.findings);
2089
2132
  const nextAllowedAction = isPlaceholderValue(runState.next_allowed_action) ? gateDecision.next_allowed_action : runState.next_allowed_action;
2133
+ const postApproval = postApprovalTransition(gateDecision.missing_approval);
2090
2134
 
2091
2135
  return {
2092
2136
  schema_version: "1",
@@ -2095,6 +2139,8 @@ function evaluateDeliveryMap(targetDir) {
2095
2139
  target_dir: targetDir,
2096
2140
  current_gate: currentGate,
2097
2141
  next_allowed_action: nextAllowedAction,
2142
+ next_gate_after_approval: postApproval.next_gate_after_approval,
2143
+ allowed_after_approval: postApproval.allowed_after_approval,
2098
2144
  quality_outlook: qualityOutlook,
2099
2145
  status_card: buildStatusCard({
2100
2146
  status,
@@ -40,6 +40,8 @@ It must not introduce a second gate model or override `agdf-gate-check`, `delive
40
40
  - `forbidden_now`: outputs or actions currently forbidden
41
41
  - `blocking_condition`: current blocker or `none`
42
42
  - `missing_approval`: exact missing approval formula or `none`
43
+ - `next_gate_after_approval`: the next user gate or internal step unlocked by the missing approval, or `none`
44
+ - `allowed_after_approval`: concise description of what becomes allowed after the missing approval, or `none`
43
45
  - `evidence`: concrete evidence references currently visible
44
46
  - `next_skill`: next AGDF skill or `none`
45
47
  - `next_step`: the single next permissible process action
@@ -52,6 +54,13 @@ It must not introduce a second gate model or override `agdf-gate-check`, `delive
52
54
 
53
55
  `quality_outlook` must not unlock gates, imply QA pass, or substitute for missing evidence.
54
56
 
57
+ `allowed_now` and `allowed_after_approval` are intentionally different:
58
+
59
+ - `allowed_now` is current authority under the active gate.
60
+ - `allowed_after_approval` is the immediate authority unlocked only after the exact `missing_approval` is supplied.
61
+
62
+ `next_gate_after_approval` and `allowed_after_approval` must be `none` when no approval is missing, when the current step is internal, or when the run is in OR/completed handoff. They must not imply implementation, QA, release, commit, push or PR authority unless the existing gate model already allows that authority.
63
+
55
64
  ## Delivery Path Search
56
65
 
57
66
  Delivery Path Search is an optional read-only planning step for high-impact decisions with several materially different next actions.
@@ -69,7 +78,8 @@ reports and automation. Human-facing Markdown must present the same projection
69
78
  with readable labels such as `Current gate`, `Allowed now`, `Blocked by`,
70
79
  `Next step` and `Quality outlook`; do not expose snake_case keys as the visible
71
80
  Run Status Card. Keep that card compact: show `Status`, `Current gate`,
72
- `Allowed now`, `Blocked by`, `Missing approval`, `Next step` and
81
+ `Allowed now`, `Blocked by`, `Missing approval`, `Next gate after approval`
82
+ and `Allowed after approval` when a missing approval exists, `Next step` and
73
83
  `Quality outlook`. Keep mode, forbidden actions, evidence and next-skill detail
74
84
  in the surrounding control artefact when they are relevant.
75
85
 
@@ -40,6 +40,8 @@ It must not introduce a second gate model or override `agdf-gate-check`, `delive
40
40
  - `forbidden_now`: outputs or actions currently forbidden
41
41
  - `blocking_condition`: current blocker or `none`
42
42
  - `missing_approval`: exact missing approval formula or `none`
43
+ - `next_gate_after_approval`: the next user gate or internal step unlocked by the missing approval, or `none`
44
+ - `allowed_after_approval`: concise description of what becomes allowed after the missing approval, or `none`
43
45
  - `evidence`: concrete evidence references currently visible
44
46
  - `next_skill`: next AGDF skill or `none`
45
47
  - `next_step`: the single next permissible process action
@@ -52,6 +54,13 @@ It must not introduce a second gate model or override `agdf-gate-check`, `delive
52
54
 
53
55
  `quality_outlook` must not unlock gates, imply QA pass, or substitute for missing evidence.
54
56
 
57
+ `allowed_now` and `allowed_after_approval` are intentionally different:
58
+
59
+ - `allowed_now` is current authority under the active gate.
60
+ - `allowed_after_approval` is the immediate authority unlocked only after the exact `missing_approval` is supplied.
61
+
62
+ `next_gate_after_approval` and `allowed_after_approval` must be `none` when no approval is missing, when the current step is internal, or when the run is in OR/completed handoff. They must not imply implementation, QA, release, commit, push or PR authority unless the existing gate model already allows that authority.
63
+
55
64
  ## Delivery Path Search
56
65
 
57
66
  Delivery Path Search is an optional read-only planning step for high-impact decisions with several materially different next actions.
@@ -69,7 +78,8 @@ reports and automation. Human-facing Markdown must present the same projection
69
78
  with readable labels such as `Current gate`, `Allowed now`, `Blocked by`,
70
79
  `Next step` and `Quality outlook`; do not expose snake_case keys as the visible
71
80
  Run Status Card. Keep that card compact: show `Status`, `Current gate`,
72
- `Allowed now`, `Blocked by`, `Missing approval`, `Next step` and
81
+ `Allowed now`, `Blocked by`, `Missing approval`, `Next gate after approval`
82
+ and `Allowed after approval` when a missing approval exists, `Next step` and
73
83
  `Quality outlook`. Keep mode, forbidden actions, evidence and next-skill detail
74
84
  in the surrounding control artefact when they are relevant.
75
85
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agdf",
3
- "version": "0.4.5",
3
+ "version": "0.4.7",
4
4
  "description": "Codex-first workflow skills for gated, auditable AI-assisted software delivery.",
5
5
  "author": {
6
6
  "name": "AI-native Governance & Delivery Framework",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "id": "agdf",
4
- "version": "0.4.5",
4
+ "version": "0.4.7",
5
5
  "displayName": "AI Governance & Delivery Framework",
6
6
  "developerName": "AI-native Governance & Delivery Framework",
7
7
  "description": "Codex-first workflow skills for gated, auditable AI-assisted software delivery.",
@@ -40,6 +40,8 @@ It must not introduce a second gate model or override `gate-check`, `delivery-ma
40
40
  - `forbidden_now`: outputs or actions currently forbidden
41
41
  - `blocking_condition`: current blocker or `none`
42
42
  - `missing_approval`: exact missing approval formula or `none`
43
+ - `next_gate_after_approval`: the next user gate or internal step unlocked by the missing approval, or `none`
44
+ - `allowed_after_approval`: concise description of what becomes allowed after the missing approval, or `none`
43
45
  - `evidence`: concrete evidence references currently visible
44
46
  - `next_skill`: next AGDF skill or `none`
45
47
  - `next_step`: the single next permissible process action
@@ -52,6 +54,13 @@ It must not introduce a second gate model or override `gate-check`, `delivery-ma
52
54
 
53
55
  `quality_outlook` must not unlock gates, imply QA pass, or substitute for missing evidence.
54
56
 
57
+ `allowed_now` and `allowed_after_approval` are intentionally different:
58
+
59
+ - `allowed_now` is current authority under the active gate.
60
+ - `allowed_after_approval` is the immediate authority unlocked only after the exact `missing_approval` is supplied.
61
+
62
+ `next_gate_after_approval` and `allowed_after_approval` must be `none` when no approval is missing, when the current step is internal, or when the run is in OR/completed handoff. They must not imply implementation, QA, release, commit, push or PR authority unless the existing gate model already allows that authority.
63
+
55
64
  ## Delivery Path Search
56
65
 
57
66
  Delivery Path Search is an optional read-only planning step for high-impact decisions with several materially different next actions.
@@ -69,7 +78,8 @@ reports and automation. Human-facing Markdown must present the same projection
69
78
  with readable labels such as `Current gate`, `Allowed now`, `Blocked by`,
70
79
  `Next step` and `Quality outlook`; do not expose snake_case keys as the visible
71
80
  Run Status Card. Keep that card compact: show `Status`, `Current gate`,
72
- `Allowed now`, `Blocked by`, `Missing approval`, `Next step` and
81
+ `Allowed now`, `Blocked by`, `Missing approval`, `Next gate after approval`
82
+ and `Allowed after approval` when a missing approval exists, `Next step` and
73
83
  `Quality outlook`. Keep mode, forbidden actions, evidence and next-skill detail
74
84
  in the surrounding control artefact when they are relevant.
75
85
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-agdf",
3
- "version": "0.4.5",
3
+ "version": "0.4.7",
4
4
  "description": "Bootstrap AGDF repository-local plugin files, Copilot/OpenCode instructions, skills, control files and machine-readable checks.",
5
5
  "type": "module",
6
6
  "files": [