@metasession.co/devaudit-cli 0.3.10 → 0.3.11

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@metasession.co/devaudit-cli",
3
- "version": "0.3.10",
3
+ "version": "0.3.11",
4
4
  "description": "DevAudit CLI — installs, syncs, and operates the Metasession SDLC across consumer projects.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -33,7 +33,7 @@
33
33
  },
34
34
  "dependencies": {
35
35
  "@clack/prompts": "^0.8.2",
36
- "@metasession.co/devaudit-plugin-sdk": "^0.3.10",
36
+ "@metasession.co/devaudit-plugin-sdk": "^0.3.11",
37
37
  "ajv": "^8.20.0",
38
38
  "commander": "^12.1.0",
39
39
  "consola": "^3.2.3",
@@ -76,6 +76,17 @@ Sync may warn if these are absent; it's a soft check (the CI workflow is the har
76
76
  | `config_keys.optional` | string[] | Keys consumers may define (e.g. an optional database service). |
77
77
  | `config_keys.defaults` | object | Fallback values when a key is absent. |
78
78
 
79
+ ### Runtime contract
80
+
81
+ | Field | Type | Purpose |
82
+ | ----------------------------------------- | ------- | -------------------------------------------------------------------------------------------------------- |
83
+ | `runtime_contract.preferred_web_runtime` | string | Operator-facing guidance for the expected production web runtime shape on this host. |
84
+ | `runtime_contract.forbid_typescript_runtime` | boolean | Whether long-lived production web processes on this host should forbid `tsx`/`ts-node` style execution. |
85
+ | `runtime_contract.prefer_standalone_output` | boolean | Whether frameworks with a standalone/minimal runtime output should prefer it on this host. |
86
+ | `runtime_contract.scheduler_placement` | string | Operator-facing guidance for where scheduled/background jobs should run on this host. |
87
+
88
+ This field is not consumed by templates yet. It exists so host-level runtime-efficiency rules are versioned and schema-validated instead of living as tribal knowledge in issues and comments.
89
+
79
90
  ### Notes
80
91
 
81
92
  | Field | Type | Purpose |
@@ -103,6 +114,12 @@ See the step-by-step walkthrough: **[docs/adding-a-host.md](../docs/adding-a-hos
103
114
  "wait_for_deploy": "for i in $(seq 1 30); do flyctl status --app \"${APP_NAME}\" --json | jq -e '.Deployment.Status == \"successful\"' && break; sleep 10; done",
104
115
  "required_secrets": ["FLY_API_TOKEN", "DEVAUDIT_API_KEY"],
105
116
  "required_env": ["APP_NAME"],
117
+ "runtime_contract": {
118
+ "preferred_web_runtime": "compiled JavaScript or framework standalone output",
119
+ "forbid_typescript_runtime": true,
120
+ "prefer_standalone_output": true,
121
+ "scheduler_placement": "scheduled jobs should run in a separate worker or platform cron, not in the web process"
122
+ },
106
123
  "notes": [
107
124
  "Production URL is resolved at deploy time by flyctl — no GitHub Secret to maintain.",
108
125
  "Deploy step runs `flyctl deploy --remote-only` in the post-deploy workflow; FLY_API_TOKEN is the auth."
package/sdlc/SKILLS.md CHANGED
@@ -112,6 +112,14 @@ node scripts/validate-adapter.cjs sdlc/files/_common/skills/<name>/SKILL.md
112
112
 
113
113
  These delegations are hard contracts — the orchestrator's SKILL.md fails review if it inlines a specialist skill's procedure. The invocation pattern is documented in [docs/adding-a-skill.md §Orchestrator skills](../docs/adding-a-skill.md#orchestrator-skills-calling-other-skills).
114
114
 
115
+ Phase 4 is now more than a one-shot handoff note. When a release PR is blocked or waiting, `sdlc-implementer` can hand execution to the bundled watcher:
116
+
117
+ ```bash
118
+ node SDLC/bin/devaudit-sdlc.js --watch-pr=<number> --repo <owner/name> --once
119
+ ```
120
+
121
+ or, without `--once`, a bounded poll loop that persists retry state in `.sdlc-pr-watch.json`, re-runs likely flaky workflows, and re-runs the Release Approval Gate when the portal is already approved but GitHub has not yet converged. That makes "blocked PR handling" an executable part of the orchestration contract rather than a prose-only reminder.
122
+
115
123
  `sdlc-implementer` is **not** used for trivial / housekeeping changes (docs, formatting, dependency bumps, CI tweaks) — those skip the requirement and the ceremony. See [the change-type matrix](../docs/change-workflows.md) and the [trivial-change walkthrough](./files/_common/implementing-an-sdlc-issue.md#trivial-change-walkthrough).
116
124
 
117
125
  ### The SoT-alignment skill family
@@ -32,6 +32,10 @@ concurrency:
32
32
  group: ${{ github.workflow }}-${{ github.ref }}
33
33
  cancel-in-progress: true
34
34
 
35
+ permissions:
36
+ contents: read
37
+ statuses: write
38
+
35
39
  jobs:
36
40
  quality-gates:
37
41
  name: Quality Gates
@@ -84,6 +84,37 @@
84
84
  },
85
85
  "description": "sdlc-config.json keys this host adapter consumes. `required` keys must be present; `optional` are tolerated; `defaults` provides fallback values."
86
86
  },
87
+ "runtime_contract": {
88
+ "type": "object",
89
+ "additionalProperties": false,
90
+ "required": [
91
+ "preferred_web_runtime",
92
+ "forbid_typescript_runtime",
93
+ "prefer_standalone_output",
94
+ "scheduler_placement"
95
+ ],
96
+ "properties": {
97
+ "preferred_web_runtime": {
98
+ "type": "string",
99
+ "minLength": 1,
100
+ "description": "Operator-facing guidance for how production web services on this host should execute (for example: compiled JS or framework standalone output, not tsx/ts-node)."
101
+ },
102
+ "forbid_typescript_runtime": {
103
+ "type": "boolean",
104
+ "description": "Whether long-lived production web processes on this host should forbid tsx/ts-node style runtime transpilation."
105
+ },
106
+ "prefer_standalone_output": {
107
+ "type": "boolean",
108
+ "description": "Whether frameworks that support a minimal standalone runtime (for example Next.js standalone output) should prefer it on this host."
109
+ },
110
+ "scheduler_placement": {
111
+ "type": "string",
112
+ "minLength": 1,
113
+ "description": "Operator-facing guidance for where scheduled/background jobs should run on this host."
114
+ }
115
+ },
116
+ "description": "Host-level runtime-efficiency contract. Not consumed by templates yet, but validated so the lean-production guidance stays explicit and versioned."
117
+ },
87
118
  "notes": {
88
119
  "type": "array",
89
120
  "items": { "type": "string", "minLength": 1 },
@@ -24,9 +24,16 @@
24
24
  "runner": "ubuntu-latest"
25
25
  }
26
26
  },
27
+ "runtime_contract": {
28
+ "preferred_web_runtime": "compiled JavaScript or framework standalone output",
29
+ "forbid_typescript_runtime": true,
30
+ "prefer_standalone_output": true,
31
+ "scheduler_placement": "scheduled and background jobs should run in a separate worker, cron, or function rather than inside the long-lived web process"
32
+ },
27
33
  "notes": [
28
34
  "Railway auto-deploys on push to main; no explicit deploy step needed in CI.",
29
35
  "Production URL is set as a repo secret (name configured per-project via production_url_secret in sdlc-config.json).",
30
- "Test-time database services are declared per-project (database_service, database_image, database_port, database_env) so CI can spin up a matching container alongside the app container."
36
+ "Test-time database services are declared per-project (database_service, database_image, database_port, database_env) so CI can spin up a matching container alongside the app container.",
37
+ "For long-lived production web services on Railway, do not run tsx/ts-node in production; use compiled JS or a framework's standalone runtime output."
31
38
  ]
32
39
  }
package/sdlc/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@metasession.co/devaudit-sdlc",
3
- "version": "0.3.10",
3
+ "version": "0.3.11",
4
4
  "description": "DevAudit SDLC CLI Engine — cross-agent terminal-driven SDLC orchestrator.",
5
5
  "bin": {
6
6
  "devaudit-sdlc": "./src/bin/devaudit-sdlc.js"