Repository navigation
docs(clade): uuid follows the GitHub path, it is not immortal - #88
Conversation
The CLADE status comment said the uuid is immortal. gv-clade-index ADR 0007 (accepted 2026-11-10) makes the uuid follow the forge path: a move or rename mints a new one, and a phase change never does. A prefixed-name (clade code) change still does not remint. Comment-only correction. No data values change. A2ML is retired for new content, but correcting a factually wrong comment in an existing file is an edit, not new content. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0136P7ZmTcNdC1jL1Vp3qW9H
|
No actionable comments were generated in the recent review. Summary
Merge Risk:
|
🔍 Hypatia Security ScanFindings: 31 issues detected
View findings[
{
"reason": "Job `triage` in label-triage.yml has no `timeout-minutes:` declaration. Default is 6 hours — a stuck codeload fetch or runner hang can burn budget. Add `timeout-minutes: 10` (or proportional).",
"type": "missing_timeout_minutes",
"file": ".github/workflows/label-triage.yml",
"level": "epi",
"rule_module": "workflow_audit",
"action": "flag",
"severity": "medium",
"recipe_id": "recipe-add-workflow-timeout-minutes",
"job": "triage",
"evidence": [
{
"span": {
"file": ".github/workflows/label-triage.yml",
"end_line": 0,
"start_line": 0
},
"rule": "workflow_audit/missing_timeout_minutes",
"observations": 1,
"rule_version": "0.1.0"
}
],
"support": {
"kind": "pattern"
}
},
{
"reason": "Job `sync` in labels.yml has no `timeout-minutes:` declaration. Default is 6 hours — a stuck codeload fetch or runner hang can burn budget. Add `timeout-minutes: 10` (or proportional).",
"type": "missing_timeout_minutes",
"file": ".github/workflows/labels.yml",
"level": "epi",
"rule_module": "workflow_audit",
"action": "flag",
"severity": "medium",
"recipe_id": "recipe-add-workflow-timeout-minutes",
"job": "sync",
"evidence": [
{
"span": {
"file": ".github/workflows/labels.yml",
"end_line": 0,
"start_line": 0
},
"rule": "workflow_audit/missing_timeout_minutes",
"observations": 1,
"rule_version": "0.1.0"
}
],
"support": {
"kind": "pattern"
}
},
{
"line": 270,
"reason": "job `scan` in .github/workflows/hypatia-scan.yml references `secrets.*` but does not install `step-security/harden-runner` or declare its egress — review outbound-egress monitoring; it holds the credential next to fetched code (a piped installer or a dependency install/build)",
"type": "RE001",
"file": ".github/workflows/hypatia-scan.yml",
"level": "epi",
"rule_module": "research_extensions",
"action": "report",
"severity": "medium",
"evidence": [
{
"span": {
"file": ".github/workflows/hypatia-scan.yml",
"end_line": 270,
"start_line": 270
},
"rule": "research_extensions/RE001",
"observations": 1,
"rule_version": "0.1.0"
}
],
"support": {
"kind": "pattern"
}
},
{
"line": 44,
"reason": "job `notify` in .github/workflows/push-email-notify.yml references `secrets.*` but does not install `step-security/harden-runner` or declare its egress — review outbound-egress monitoring",
"type": "RE001",
"file": ".github/workflows/push-email-notify.yml",
"level": "epi",
"rule_module": "research_extensions",
"action": "report",
"severity": "medium",
"evidence": [
{
"span": {
"file": ".github/workflows/push-email-notify.yml",
"end_line": 44,
"start_line": 44
},
"rule": "research_extensions/RE001",
"observations": 1,
"rule_version": "0.1.0"
}
],
"support": {
"kind": "pattern"
}
},
{
"line": 47,
"reason": "workflow .github/workflows/label-triage.yml:47 job `triage` has no `timeout-minutes:` — defaults to 360 min on hang",
"type": "WH006",
"file": ".github/workflows/label-triage.yml",
"level": "epi",
"rule_module": "workflow_hardening",
"action": "report",
"severity": "medium",
"evidence": [
{
"span": {
"file": ".github/workflows/label-triage.yml",
"end_line": 47,
"start_line": 47
},
"rule": "workflow_hardening/WH006",
"observations": 1,
"rule_version": "0.1.0"
}
],
"support": {
"kind": "pattern"
}
},
{
"line": 33,
"reason": "workflow .github/workflows/labels.yml:33 job `sync` has no `timeout-minutes:` — defaults to 360 min on hang",
"type": "WH006",
"file": ".github/workflows/labels.yml",
"level": "epi",
"rule_module": "workflow_hardening",
"action": "report",
"severity": "medium",
"evidence": [
{
"span": {
"file": ".github/workflows/labels.yml",
"end_line": 33,
"start_line": 33
},
"rule": "workflow_hardening/WH006",
"observations": 1,
"rule_version": "0.1.0"
}
],
"support": {
"kind": "pattern"
}
},
{
"reason": "Code scanning (Hypatia): hypatia/research_extensions/RE001 -- Hypatia research_extensions: RE001 -- 10 day(s) old",
"type": "CSA001",
"file": ".github/workflows/hypatia-scan.yml",
"level": "epi",
"rule_module": "code_scanning_alerts",
"action": "review",
"severity": "medium",
"evidence": [
{
"span": {
"file": ".github/workflows/hypatia-scan.yml",
"end_line": 0,
"start_line": 0
},
"rule": "code_scanning_alerts/CSA001",
"observations": 1,
"rule_version": "0.1.0"
}
],
"support": {
"kind": "pattern"
}
},
{
"reason": "Code scanning (Scorecard): TokenPermissionsID -- Token-Permissions -- 29 day(s) old [STALE]",
"type": "CSA001",
"file": ".github/workflows/scorecard.yml",
"level": "epi",
"rule_module": "code_scanning_alerts",
"action": "escalate",
"severity": "high",
"evidence": [
{
"span": {
"file": ".github/workflows/scorecard.yml",
"end_line": 0,
"start_line": 0
},
"rule": "code_scanning_alerts/CSA001",
"observations": 1,
"rule_version": "0.1.0"
}
],
"support": {
"kind": "pattern"
}
},
{
"reason": "Code scanning (Hypatia): hypatia/workflow_audit/missing_timeout_minutes -- Hypatia workflow_audit: missing_timeout_minutes -- 40 day(s) old [STALE]",
"type": "CSA001",
"file": ".github/workflows/labels.yml",
"level": "epi",
"rule_module": "code_scanning_alerts",
"action": "update",
"severity": "medium",
"evidence": [
{
"span": {
"file": ".github/workflows/labels.yml",
"end_line": 0,
"start_line": 0
},
"rule": "code_scanning_alerts/CSA001",
"observations": 1,
"rule_version": "0.1.0"
}
],
"support": {
"kind": "pattern"
}
},
{
"reason": "Code scanning (Hypatia): hypatia/workflow_audit/missing_timeout_minutes -- Hypatia workflow_audit: missing_timeout_minutes -- 40 day(s) old [STALE]",
"type": "CSA001",
"file": ".github/workflows/label-triage.yml",
"level": "epi",
"rule_module": "code_scanning_alerts",
"action": "update",
"severity": "medium",
"evidence": [
{
"span": {
"file": ".github/workflows/label-triage.yml",
"end_line": 0,
"start_line": 0
},
"rule": "code_scanning_alerts/CSA001",
"observations": 1,
"rule_version": "0.1.0"
}
],
"support": {
"kind": "pattern"
}
}
]Powered by Hypatia Neurosymbolic CI/CD Intelligence |
The uuid is UUIDv5 over github.com/<owner>/<name> (gv-clade-index ADR 0007), so say "GitHub path" rather than "forge path": a move or rename on GitHub mints a new uuid, a mirror move does not. Scope the "not a phase change" sentence to a prefixed-name change with the GitHub path unchanged. Correcting a factually wrong comment in an existing A2ML file is an edit, not new A2ML content. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0136P7ZmTcNdC1jL1Vp3qW9H
|
🔍 Hypatia Security ScanFindings: 31 issues detected
View findings[
{
"reason": "Job `triage` in label-triage.yml has no `timeout-minutes:` declaration. Default is 6 hours — a stuck codeload fetch or runner hang can burn budget. Add `timeout-minutes: 10` (or proportional).",
"type": "missing_timeout_minutes",
"file": ".github/workflows/label-triage.yml",
"level": "epi",
"rule_module": "workflow_audit",
"action": "flag",
"severity": "medium",
"recipe_id": "recipe-add-workflow-timeout-minutes",
"job": "triage",
"evidence": [
{
"span": {
"file": ".github/workflows/label-triage.yml",
"end_line": 0,
"start_line": 0
},
"rule": "workflow_audit/missing_timeout_minutes",
"observations": 1,
"rule_version": "0.1.0"
}
],
"support": {
"kind": "pattern"
}
},
{
"reason": "Job `sync` in labels.yml has no `timeout-minutes:` declaration. Default is 6 hours — a stuck codeload fetch or runner hang can burn budget. Add `timeout-minutes: 10` (or proportional).",
"type": "missing_timeout_minutes",
"file": ".github/workflows/labels.yml",
"level": "epi",
"rule_module": "workflow_audit",
"action": "flag",
"severity": "medium",
"recipe_id": "recipe-add-workflow-timeout-minutes",
"job": "sync",
"evidence": [
{
"span": {
"file": ".github/workflows/labels.yml",
"end_line": 0,
"start_line": 0
},
"rule": "workflow_audit/missing_timeout_minutes",
"observations": 1,
"rule_version": "0.1.0"
}
],
"support": {
"kind": "pattern"
}
},
{
"line": 270,
"reason": "job `scan` in .github/workflows/hypatia-scan.yml references `secrets.*` but does not install `step-security/harden-runner` or declare its egress — review outbound-egress monitoring; it holds the credential next to fetched code (a piped installer or a dependency install/build)",
"type": "RE001",
"file": ".github/workflows/hypatia-scan.yml",
"level": "epi",
"rule_module": "research_extensions",
"action": "report",
"severity": "medium",
"evidence": [
{
"span": {
"file": ".github/workflows/hypatia-scan.yml",
"end_line": 270,
"start_line": 270
},
"rule": "research_extensions/RE001",
"observations": 1,
"rule_version": "0.1.0"
}
],
"support": {
"kind": "pattern"
}
},
{
"line": 44,
"reason": "job `notify` in .github/workflows/push-email-notify.yml references `secrets.*` but does not install `step-security/harden-runner` or declare its egress — review outbound-egress monitoring",
"type": "RE001",
"file": ".github/workflows/push-email-notify.yml",
"level": "epi",
"rule_module": "research_extensions",
"action": "report",
"severity": "medium",
"evidence": [
{
"span": {
"file": ".github/workflows/push-email-notify.yml",
"end_line": 44,
"start_line": 44
},
"rule": "research_extensions/RE001",
"observations": 1,
"rule_version": "0.1.0"
}
],
"support": {
"kind": "pattern"
}
},
{
"line": 47,
"reason": "workflow .github/workflows/label-triage.yml:47 job `triage` has no `timeout-minutes:` — defaults to 360 min on hang",
"type": "WH006",
"file": ".github/workflows/label-triage.yml",
"level": "epi",
"rule_module": "workflow_hardening",
"action": "report",
"severity": "medium",
"evidence": [
{
"span": {
"file": ".github/workflows/label-triage.yml",
"end_line": 47,
"start_line": 47
},
"rule": "workflow_hardening/WH006",
"observations": 1,
"rule_version": "0.1.0"
}
],
"support": {
"kind": "pattern"
}
},
{
"line": 33,
"reason": "workflow .github/workflows/labels.yml:33 job `sync` has no `timeout-minutes:` — defaults to 360 min on hang",
"type": "WH006",
"file": ".github/workflows/labels.yml",
"level": "epi",
"rule_module": "workflow_hardening",
"action": "report",
"severity": "medium",
"evidence": [
{
"span": {
"file": ".github/workflows/labels.yml",
"end_line": 33,
"start_line": 33
},
"rule": "workflow_hardening/WH006",
"observations": 1,
"rule_version": "0.1.0"
}
],
"support": {
"kind": "pattern"
}
},
{
"reason": "Code scanning (Hypatia): hypatia/research_extensions/RE001 -- Hypatia research_extensions: RE001 -- 10 day(s) old",
"type": "CSA001",
"file": ".github/workflows/hypatia-scan.yml",
"level": "epi",
"rule_module": "code_scanning_alerts",
"action": "review",
"severity": "medium",
"evidence": [
{
"span": {
"file": ".github/workflows/hypatia-scan.yml",
"end_line": 0,
"start_line": 0
},
"rule": "code_scanning_alerts/CSA001",
"observations": 1,
"rule_version": "0.1.0"
}
],
"support": {
"kind": "pattern"
}
},
{
"reason": "Code scanning (Scorecard): TokenPermissionsID -- Token-Permissions -- 29 day(s) old [STALE]",
"type": "CSA001",
"file": ".github/workflows/scorecard.yml",
"level": "epi",
"rule_module": "code_scanning_alerts",
"action": "escalate",
"severity": "high",
"evidence": [
{
"span": {
"file": ".github/workflows/scorecard.yml",
"end_line": 0,
"start_line": 0
},
"rule": "code_scanning_alerts/CSA001",
"observations": 1,
"rule_version": "0.1.0"
}
],
"support": {
"kind": "pattern"
}
},
{
"reason": "Code scanning (Hypatia): hypatia/workflow_audit/missing_timeout_minutes -- Hypatia workflow_audit: missing_timeout_minutes -- 40 day(s) old [STALE]",
"type": "CSA001",
"file": ".github/workflows/labels.yml",
"level": "epi",
"rule_module": "code_scanning_alerts",
"action": "update",
"severity": "medium",
"evidence": [
{
"span": {
"file": ".github/workflows/labels.yml",
"end_line": 0,
"start_line": 0
},
"rule": "code_scanning_alerts/CSA001",
"observations": 1,
"rule_version": "0.1.0"
}
],
"support": {
"kind": "pattern"
}
},
{
"reason": "Code scanning (Hypatia): hypatia/workflow_audit/missing_timeout_minutes -- Hypatia workflow_audit: missing_timeout_minutes -- 40 day(s) old [STALE]",
"type": "CSA001",
"file": ".github/workflows/label-triage.yml",
"level": "epi",
"rule_module": "code_scanning_alerts",
"action": "update",
"severity": "medium",
"evidence": [
{
"span": {
"file": ".github/workflows/label-triage.yml",
"end_line": 0,
"start_line": 0
},
"rule": "code_scanning_alerts/CSA001",
"observations": 1,
"rule_version": "0.1.0"
}
],
"support": {
"kind": "pattern"
}
}
]Powered by Hypatia Neurosymbolic CI/CD Intelligence |



Summary
Comment-only correction. The CLADE status comment said the uuid is immortal. gv-clade-index ADR 0007 (accepted 2026-11-10) derives the uuid from the GitHub path (UUIDv5 over
github.com/<owner>/<name>): a move or rename on GitHub mints a new one, and a mirror move or a phase change never does.A2ML is retired for new content. Correcting a factually wrong comment in an existing file is an edit, not new content.
Changes
.machine_readable/CLADE.a2ml: "uuid is immortal" → "uuid follows the GitHub path (a move or rename there mints a new one, gv-clade-index ADR 0007; a mirror move or a phase change never does)"; "A rename is NOT a phase change" → "A prefixed-name (clade code) change with the GitHub path unchanged is NOT a phase change". The paragraph is re-wrapped at 80 columns. No data values change. The owner approved this wording for the whole estate. It replaces the earlier "forge path" text, and follow-up PRs bring the repos that merged that text in line.RSR Quality Checklist
Required
just testor equivalent): not run locally. Comment-only change, left to CI.just fmtor equivalent): n/a, no codeunsafeblocks without// SAFETY:comments.envfiles includedTesting
The diff is one comment paragraph in one file. Every line is ≤80 characters. The commit is signed.
🤖 Generated with Claude Code
https://claude.ai/code/session_0136P7ZmTcNdC1jL1Vp3qW9H