Development record
The scribe guard's trailing-punctuation trim runs before the traversal and prefix checks and strips a full stop, so a path whose final segment is .. with no trailing slash (.abcd/work/issues/.., bare, in inline code, or entity-encoded) loses its traversal segment, passes both checks, and admits .abcd/work/ (DECISIONS.md, CONTEXT.md, reviews/, rulesets/) — exactly the case the root constant was narrowed for. Bounded to one level up; ../.. and ../ forms are still refused. Run the traversal check on the raw token before trimming, or refuse to trim a trailing full stop when the remainder would end in /. or /..
The scribe guard's trailing-punctuation trim runs before the traversal and prefix checks and strips a full stop, so a path whose final segment is .. with no trailing slash (.abcd/work/issues/.., bare, in inline code, or entity-encoded) loses its traversal segment, passes both checks, and admits .abcd/work/ (DECISIONS.md, CONTEXT.md, reviews/, rulesets/) — exactly the case the root constant was narrowed for. Bounded to one level up; ../.. and ../ forms are still refused. Run the traversal check on the raw token before trimming, or refuse to trim a trailing full stop when the remainder would end in /. or /..
Frontmatter
| id | iss-2608300229450257 |
|---|---|
| type | issue |
| lifecycle | resolved |
| severity | minor |
.abcd/work/issues/resolved/iss-2608300229450257-scribe-guard-trims-a-trailing-traversal.md
open on GitHub ↗ · commit history ↗