Skip to content

docs(clade): uuid follows the GitHub path, it is not immortal - #88

Merged
hyperpolymath merged 2 commits into
mainfrom
docs/clade-uuid-follows-forge-path
Nov 10, 2026
Merged

hyperpolymath merged 2 commits into
mainfrom
docs/clade-uuid-follows-forge-path

Conversation

@hyperpolymath

@hyperpolymath hyperpolymath commented Nov 10, 2026 •

Copy link
Copy Markdown
Owner

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

  • Tests pass (just test or equivalent): not run locally. Comment-only change, left to CI.
  • Code is formatted (just fmt or equivalent): n/a, no code
  • Linter is clean (no new warnings or errors): n/a, no code
  • No banned language patterns
  • No unsafe blocks without // SAFETY: comments
  • No banned functions
  • SPDX license headers present on all new/modified source files (not touched)
  • No secrets, credentials, or .env files included

Testing

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

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
@coderabbitai

coderabbitai Bot commented Nov 10, 2026 •

Copy link
Copy Markdown
Contributor

Explain Change →

No actionable comments were generated in the recent review.

Summary

Summary by CodeRabbit

  • Documentation
    • Clarified how UUIDs behave when an item is moved or renamed, and how renamed items retain their UUID and phase while the previous name is recorded as an alias.

The lifecycle comment now describes when a UUID changes and how a prefixed-name change affects aliases[] and phase.

Changes: Lifecycle comment clarification

Layer / File(s) Summary
UUID and alias rules
.machine_readable/CLADE.a2ml
The comment states that a move or rename mints a new UUID. A prefixed-name change adds the old name to aliases[] and preserves the UUID and phase.

Estimated code review effort: 1 (Trivial) | ~3 minutes

Change: Other

Merge Risk: Minimal · up to 738e6

The clarification introduces no identified merge-blocking risk.

Pre-merge checks: Passed 4

Check name Status Explanation
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Title check Passed The title clearly describes the main change: the UUID follows the GitHub path and is not permanent.
Description check Passed The description includes the required Summary, Changes, RSR Quality Checklist and Testing sections. It explains the correction and notes that tests were not run locally. The optional Screenshots secti…
Full details: Description check

Explanation

The description includes the required Summary, Changes, RSR Quality Checklist and Testing sections. It explains the correction and notes that tests were not run locally. The optional Screenshots section is not needed for this comment-only change.

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

Recent review info

Run configuration

  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: 33462817-d7de-484c-98a4-c70ed4dcc27d
Commits

Reviewing files that changed from the base of the PR and between 22c4849 and 738e672.

Files selected for processing: 1

  • .machine_readable/CLADE.a2ml

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.

Recent review details

Context from checks skipped due to timeout: 3

  • GitHub Check: CodeRabbit
  • GitHub Check: Hypatia Neurosymbolic Analysis
  • GitHub Check: analyze (actions, none)
Additional context used

Code guidelines: 1

.github/copilot-instructions.md — auto-discovered
Path-based instructions: 2

Source excerpt: State files (.a2ml) live in `.machine_readable/` ONLY, never the root.

CodeRabbit inference engine (.github/copilot-instructions.md)

Files:

  • .machine_readable/CLADE.a2ml
Source excerpt: Annotate and document all files.

CodeRabbit inference engine (.github/copilot-instructions.md)

Files:

  • .machine_readable/CLADE.a2ml
Additional comments: 2

.machine_readable/CLADE.a2ml: 2

32-34: Data Integrity & Integration

The records currently agree. The comment-only change does not establish a workflow that omits the old name or leaves the records inconsistent.

29-30: Data Integrity & Integration

The inspected sources do not establish that a move workflow leaves the fields unchanged. The revised comment states an identity rule; it does not claim to automate the updates.

@linear-code
linear-code Bot marked this pull request as ready for review November 10, 2026 23:18
@github-actions

Copy link
Copy Markdown

🔍 Hypatia Security Scan

Findings: 31 issues detected

Severity Count
🔴 Critical 0
🟠 High 9
🟡 Medium 22
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
@sonarqubecloud

Copy link
Copy Markdown

@github-actions

Copy link
Copy Markdown

🔍 Hypatia Security Scan

Findings: 31 issues detected

Severity Count
🔴 Critical 0
🟠 High 9
🟡 Medium 22
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

@hyperpolymath hyperpolymath changed the title docs(clade): uuid follows the forge path, it is not immortal docs(clade): uuid follows the GitHub path, it is not immortal Nov 10, 2026
@hyperpolymath
hyperpolymath merged commit 075ea11 into main Nov 10, 2026
8 checks passed
@hyperpolymath
hyperpolymath deleted the docs/clade-uuid-follows-forge-path branch November 10, 2026 23:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants