devrites 3.0.3 → 3.0.5

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.
Files changed (59) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/README.md +55 -43
  3. package/SECURITY.md +72 -58
  4. package/docs/adr/0001-go-engine-as-control-plane.md +43 -0
  5. package/docs/adr/0002-dual-host-harness.md +34 -0
  6. package/docs/adr/0003-gate-model-hitl-pause.md +38 -0
  7. package/docs/adr/0004-state-schema-phases-sections.md +6 -3
  8. package/docs/adr/0005-hooks-as-engine-subcommands.md +39 -0
  9. package/docs/adr/0006-clock-seam-and-engine-ci-gates.md +50 -0
  10. package/docs/adr/0007-canonical-live-workspace-filenames.md +36 -0
  11. package/docs/adr/0008-sanctioned-engine-network-boundary.md +33 -0
  12. package/docs/adr/README.md +58 -0
  13. package/docs/agents/issue-driven-rites.md +5 -5
  14. package/docs/architecture.md +61 -45
  15. package/docs/capability-surface-selection.md +3 -1
  16. package/docs/cli.md +9 -2
  17. package/docs/command-map.md +6 -2
  18. package/docs/engine/agent-contract.md +5 -3
  19. package/docs/engine/commands.md +27 -14
  20. package/docs/engine/state-schema.md +14 -9
  21. package/docs/engine/workspace-schema.md +5 -4
  22. package/docs/flow.md +18 -7
  23. package/docs/porting-to-a-new-harness.md +6 -2
  24. package/docs/release.md +10 -9
  25. package/docs/skills.md +1 -1
  26. package/docs/templates/CRITIC_REVIEW_PACKET_TEMPLATE.md +35 -0
  27. package/docs/usage.md +26 -16
  28. package/engine/internal/lib/packageexistence.go +729 -52
  29. package/engine/internal/lib/packageexistence_test.go +343 -0
  30. package/engine/internal/lib/util.go +1 -1
  31. package/engine/internal/migrate/migrate.go +16 -11
  32. package/engine/internal/migrate/migrate_test.go +26 -4
  33. package/engine/internal/state/feature.go +28 -14
  34. package/engine/internal/state/schema.go +20 -8
  35. package/engine/internal/state/state_test.go +6 -6
  36. package/engine/tests/budget_test.go +2 -2
  37. package/engine/tests/meta_test.go +3 -3
  38. package/engine/tests/migrate_cli_test.go +24 -22
  39. package/pack/.claude/skills/devrites-lib/SKILL.md +7 -9
  40. package/pack/.claude/skills/devrites-lib/reference/reply-contract.md +11 -3
  41. package/pack/.claude/skills/devrites-lib/reference/standards/development-workflow.md +2 -3
  42. package/pack/.claude/skills/rite/SKILL.md +6 -7
  43. package/pack/.claude/skills/rite/reference/menu.md +5 -5
  44. package/pack/.claude/skills/rite-adopt/SKILL.md +2 -3
  45. package/pack/generated/claude/skills/devrites-lib/SKILL.md +7 -9
  46. package/pack/generated/claude/skills/devrites-lib/reference/reply-contract.md +11 -3
  47. package/pack/generated/claude/skills/devrites-lib/reference/standards/development-workflow.md +2 -3
  48. package/pack/generated/claude/skills/rite/SKILL.md +6 -7
  49. package/pack/generated/claude/skills/rite/reference/menu.md +5 -5
  50. package/pack/generated/claude/skills/rite-adopt/SKILL.md +2 -3
  51. package/pack/generated/codex/skills/devrites-lib/SKILL.md +7 -9
  52. package/pack/generated/codex/skills/devrites-lib/reference/reply-contract.md +11 -3
  53. package/pack/generated/codex/skills/devrites-lib/reference/standards/development-workflow.md +2 -3
  54. package/pack/generated/codex/skills/rite/SKILL.md +6 -7
  55. package/pack/generated/codex/skills/rite/reference/menu.md +5 -5
  56. package/pack/generated/codex/skills/rite-adopt/SKILL.md +2 -3
  57. package/package.json +2 -1
  58. package/scripts/skills-inventory.mjs +18 -0
  59. package/scripts/validate-workflow-security.py +3 -8
@@ -4,9 +4,8 @@
4
4
  DevRites' publish (release.yml) and auto-merge paths are high-value targets, so this
5
5
  gate fails CI when a workflow:
6
6
 
7
- - uses a THIRD-PARTY action not pinned to a full 40-char commit SHA — a moving tag
8
- like `@v2` lets a compromised upstream inject code into the pipeline (GitHub-owned
9
- `actions/*` and `github/*` tags are tolerated);
7
+ - uses any non-local action not pinned to a full 40-char commit SHA — a moving
8
+ tag like `@v2` lets a compromised upstream inject code into the pipeline;
10
9
  - declares no `permissions:` scope anywhere — the default token is broad;
11
10
  - uses `permissions: write-all` (over-broad);
12
11
  - uses `pull_request_target`, except for a Dependabot-only workflow that never
@@ -19,7 +18,6 @@ import os
19
18
  import re
20
19
  import sys
21
20
 
22
- FIRST_PARTY = {"actions", "github"} # GitHub-owned; major-tag refs tolerated
23
21
  SHA_RE = re.compile(r"^[0-9a-f]{40}$")
24
22
  USES_RE = re.compile(r"^\s*-?\s*uses:\s*([^\s#]+)")
25
23
  DEPENDABOT_ONLY_RE = re.compile(
@@ -61,13 +59,10 @@ def scan_text(path, text):
61
59
  ref = m.group(1)
62
60
  if ref.startswith("./") or ref.startswith("."):
63
61
  continue # local action
64
- owner = ref.split("/", 1)[0]
65
- if owner in FIRST_PARTY:
66
- continue
67
62
  at = ref.rsplit("@", 1)
68
63
  pin = at[1] if len(at) == 2 else ""
69
64
  if not SHA_RE.match(pin):
70
- findings.append("%s:%d: third-party action '%s' not pinned to a full commit "
65
+ findings.append("%s:%d: action '%s' not pinned to a full commit "
71
66
  "SHA — pin it (a moving tag is a supply-chain risk)"
72
67
  % (path, i, ref))
73
68
  return findings