Repository navigation
refactor(cli): one path-confinement helper and one atomic writer - #77
Merged
Merged
Conversation
… and archive refusal A term is marked once per file by an emphasized link to its page under docs/specs/glossary/, and the tag resolves to the page's address in the ontology. The validator reports an undefined, draft, legacy, unemphasized, or stale-page term, with delta twins. rune spec glossary writes one page per term and an index and checks the bytes. rune spec fix adds draft terms for unresolved links and rewrites the legacy italics form across a repository. rune spec archive refuses a change that links to a draft or an undefined term. The default name floor is four words. The three term-model changes and the cli's own specifications and records carry the link form. Co-Authored-By: Martin Zeman <N4M3Z@users.noreply.github.com>
…s, nothing archived The 115 requirements of the seventeen later changes say what happens and who does it (validator, assembler, generator, deployer, fixer, signer, archiver), and every command, flag, hook id, and diagnostic moves into a Commands table in each change's design. Two changes are new: specifications in plain language, and edge cases that accompany specs with MUST, SHOULD, and MAY as the keyword levels. The two delta specifications over 150 lines split into five capabilities: the owner's key marks a draft ready, the review scorecard admits the merge, every seal gets verified, the queue holds signing requests, and a mutex protects signing. Review scorecard replaces ledger in prose. Every change id and capability name has at least four words, the four archived changes are active again, two empty templates are gone, and the init skill schema matches the deck's. Co-Authored-By: Martin Zeman <N4M3Z@users.noreply.github.com>
Adopt, deploy, and doctor share the hardened confinement walk that refuses symlink escapes, parent segments, and absolute paths outside the root. Every writer that replaces an existing file goes through the atomic write, the review record and the bench writers included. Closes the last two tasks of the cross-vendor review fixes. Co-Authored-By: Martin Zeman <N4M3Z@users.noreply.github.com>
|
review/correctness stood down on |
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.
Draft for
fable/spec-roles: the session agent fills this body beforerune sign open.Plan
Why this shape, one or two sentences.
Changes
Testing
Release Notes
Note
Consolidate path confinement and atomic writes into shared services
The repo had many local copies of path-confinement checks and temporary-file-then-rename write logic. This PR moves both into shared modules and migrates all callers.
write_atomic, which writes to an exclusive temporary file, preserves permissions, refuses symlink destinations, and renames over the target. CLI, TUI, manifest, bench, proof, adopt, deploy, and copy writers now delegate to it.Violationvariants andis_plain_relativein confine.rs, replacing string errors and local canonicalize/prefix checks in plugin, deploy, dashboard, provenance, and adopt code.rune spec fixcan rewrite links and create draft terms.Terms::loadandTermSourcein terms.rs);rune spec glossaryoutputs a directory of pages; archive now refuses changes with draft or undefined term links (refuse_unsettled_termsin commands.rs); symlink destinations are now refused bywrite_atomicwhere previous callers allowed them.Macroscope summarized eb6cec3.