Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 15 additions & 1 deletion IMPLEMENTATION_PLAN.md
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ priorities.
synchronize the accepted shared and PowerShell contracts into
`SPEC.md` / `SPEC.POWERSHELL.md` together with source and snapshot tests
so the repository authority never intentionally drifts from the assembly.
- [ ] Correct the lexer-to-resolver provenance boundary before issue #69.
- [x] Correct the lexer-to-resolver provenance boundary before issue #69.
Paired Bash and PowerShell shell-oracle cases must distinguish escaped
literal resolver syntax from expandable syntax even when both decode to
the same string, including standalone, adjacent-token, all-static
Expand Down Expand Up @@ -180,6 +180,20 @@ priorities.
tilde, wildcard, provider, and PSDrive semantics after quote removal;
unknown wildcard cardinality or drive mappings fail closed without
enumeration. Bash redirects instead require exactly one proved target.
The completed correction uses an internal ordered `ShellValue` fragment
model in both front ends and passes an explicit consumer context into
each resolver without changing the public API. Direct lexer tests pin
typed Bash special and multidigit positional parameters, quote-sensitive
`$*` / `$@` cardinality, and PowerShell special, numeric, scoped, braced,
and Unicode variable identity. Paired live-shell oracles cover standalone
and adjacent escapes, static mixed quoting, literal-plus-expandable
composition, runtime parameter forms, incomplete versus escaped braced
interpolation, Bash provider-looking literals, native versus cmdlet
provider and wildcard behavior, `Path` versus `LiteralPath`, adjacent and
wildcard redirects, and PowerShell tilde/provider/PSDrive redirects.
Executable corpus cases preserve the corrected v0.2 compatibility
projection; unknown facts remain `DynamicSkip` or unparseable, while
completely proved mixed fragments resolve exactly.
- [ ] Implement [issue #69](https://github.com/Aaronontheweb/ShellSyntaxTree/issues/69)
against the corrected fragment contract. Preserve raw, decoded, and span
facts plus unaffected classifications; explicitly document only
Expand Down
4 changes: 2 additions & 2 deletions openspec/changes/v0-3-structured-shell-analysis/tasks.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@

## 2. Resolver Provenance Correction and Shared Preparation

- [ ] 2.1 Implement shell-specific lexical fragment provenance that distinguishes literal, typed recognized-expansion, and opaque resolver input; retains transform eligibility, expansion identity, cardinality, and opaque cause; aggregates complete argument and redirect-target fragment runs; and passes explicit Bash-argument, Bash-redirect, PowerShell-native, cmdlet-Path, cmdlet-LiteralPath, and PowerShell-redirect resolver context without changing the public API.
- [ ] 2.2 Add paired Bash and PowerShell shell-oracle regressions for standalone escapes, adjacent escaped values, all-static mixed quoting, within-token escapes, genuine literal-plus-expandable values, adjacent and wildcard redirect targets, runtime special/positional/numeric/Unicode variables, incomplete and escaped-literal braced interpolation, Bash provider-looking literals, and PowerShell native-versus-cmdlet, Path-versus-LiteralPath, and redirect-context divergence; require exact compatibility path results when every fragment, binding fact, and required resolver fact is exact, otherwise fail closed.
- [x] 2.1 Implement shell-specific lexical fragment provenance that distinguishes literal, typed recognized-expansion, and opaque resolver input; retains transform eligibility, expansion identity, cardinality, and opaque cause; aggregates complete argument and redirect-target fragment runs; and passes explicit Bash-argument, Bash-redirect, PowerShell-native, cmdlet-Path, cmdlet-LiteralPath, and PowerShell-redirect resolver context without changing the public API.
- [x] 2.2 Add paired Bash and PowerShell shell-oracle regressions for standalone escapes, adjacent escaped values, all-static mixed quoting, within-token escapes, genuine literal-plus-expandable values, adjacent and wildcard redirect targets, runtime special/positional/numeric/Unicode variables, incomplete and escaped-literal braced interpolation, Bash provider-looking literals, and PowerShell native-versus-cmdlet, Path-versus-LiteralPath, and redirect-context divergence; require exact compatibility path results when every fragment, binding fact, and required resolver fact is exact, otherwise fail closed.
- [ ] 2.3 Implement issue #69's shell-neutral native argument-fragment classifier with explicit Bash and PowerShell adapters that preserve the new provenance.
- [ ] 2.4 Prove raw spelling, decoded logical values, source spans, and unaffected classifications remain unchanged; document each oracle-proved false exact, `Glob`, `Tilde`, provider, path, or avoidable `DynamicSkip` compatibility correction.
- [ ] 2.5 Audit duplicated Bash and PowerShell path-normalization helpers and extract only rules with identical shell semantics.
Expand Down
Loading