Repository navigation
feat(ui): real human gates — scope approval and draft publication through the engine (#201) - #227
Merged
Merged
Conversation
…ough the engine (#201) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #201.
The first real human gates in
forgecell ui, driven through the engine:POST /api/molecules/{id}/scopetakes the exact plan digest the UI showed. It must equal the latest pending digest, and the engine'sApprovere-validates it. It then runsmolecule.Run(Options{Approve})as a background job, one per Molecule, and the UI polls…/job.POST …/delivery/previewreturns the redacteddelivery.Preview.POST …/delivery/publishsends the exact preview digest, title and acceptUnverified todelivery.Publish. This is a draft PR only; there is no merge, deploy or permission route.Origin(a missing one is refused), andSec-Fetch-Sitesame-origin. The body is capped at 4 KiB, must be JSON, and may not contain unknown fields.Built by Forgecell Molecule
mol-201-37aed06f7794e3a3e329bbc7(plan1ec6d333). On the candidate tree every check passed, including the newgo test -timeout 20m ./...baseline. Hand-delivered: the protected regression runs the baseTestUILabIdentityWithoutAFormula, which asserts the old read-only, no-gates UI. That fails by design, because this slice changes it.Review: one independent adversarial pass. Fixed here (MEDIUM, correctness): a refused publish could show "Committed" when an earlier attempt's receipt was already committed.
jobViewnow requires this job's own outcome, and two new rows inTestUIGatePublishRefusalsReadBackTheReceiptAndNeverRetrypin it. A clean-shellgo test -timeout 25m ./..., vet and gofmt all pass.LOWs (not fixed):
🤖 Generated with Claude Code