Skip to content

feat: Issue-key-aware Molecule ids, workspaces, locks and queue (plugins slice 2b-3) (#299) - #302

Merged
DanielNetzer merged 1 commit into
mainfrom
forgecell/issue-299-5138b1dbac7a9d09ab7e48dc
Oct 31, 2026
Merged

DanielNetzer merged 1 commit into
mainfrom
forgecell/issue-299-5138b1dbac7a9d09ab7e48dc

Conversation

@DanielNetzer

Copy link
Copy Markdown
Owner

Implements issue #299.

Molecule: mol-299-59f9d54feba2fc546f3001f0
Formula: forgecell-github-issue
Base: 8b0a3cb561abafe129e04da177a056cde4a9b39f
Delivery: efbcd6dcd76b595170483110bbff6bbd3d55e905

Awaiting exact-commit CI and human review. Harness-reported checks are not independent CI evidence. No merge, deployment or issue closure is authorized.

@DanielNetzer

Copy link
Copy Markdown
Owner Author

Adversarial review (plugins slice 2b-3): no HIGH findings and no GitHub-path drift. I checked:

  • mol-%d-, issue-%d- and the numeric lock format;
  • that plan JSON and digests for numeric Issues are unchanged (Key is omitempty everywhere);
  • that "Implements issue #9." is byte-identical;
  • that keyed identity is the raw Key, never the slug, so ENG-1 and eng_1 can't merge in queue, history or locks;
  • that the slug can't form a path;
  • that RunKeyed refuses Approve.

Two MEDIUMs were fixed in this PR, with one verify pass:

  1. freshIntakeAction keeps its Number >= 1 guard. A keyed blocked Molecule would otherwise show a "Start a fresh intake" action that posts issue: 0.
  2. ParseIssueKey compiles the raw pattern before wrapping it, so ^x)|(y$ is refused rather than turned into a top-level alternation.

Deferred to slice 2b-4, where keyed runs first become reachable:

  • the keyed renderers cli.go:1179 (forgecell run 0 … --approve), cli.go:1890 (repo#0) and ui/projection.go:588 (#0);
  • a keyed freshIntakeAction;
  • wiring issueKeyLockName into any keyed loop.

LOWs:

  • readiness/plan.go:43: key validation (512 bytes, IsControl only) is looser than intake.ValidateIssueKey, and doesn't require a usable slug.
  • Purely numeric keys: a key such as "12" gives mol-12-<nonce>, which looks like a numeric Molecule. It doesn't collide, because of the nonce, and nothing parses ids. Consider a mol-k- prefix.

Integration: I applied this branch to current main (with #300). go vet ./... passes, and every package compiles its tests.

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.

1 participant