Skip to content

Add Apache 2.0 license#1

Open
so0k wants to merge 1 commit into
mainfrom
add-apache-license
Open

Add Apache 2.0 license#1
so0k wants to merge 1 commit into
mainfrom
add-apache-license

Conversation

@so0k
Copy link
Copy Markdown
Contributor

@so0k so0k commented May 24, 2026

Adds an Apache-2.0 LICENSE file (canonical text from apache.org).

🤖 Generated with Claude Code

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
so0k added a commit that referenced this pull request May 26, 2026
…igin String, scope todo rule

Resolve the three real bugs from the Qodo PR review (#2/#3/#4); #1 dismissed as
a false positive with an AGENTS.md clarification.

- #2 FindProjectConfig now returns (string, bool, error): a non-fs.ErrNotExist
  stat failure (e.g. permission denied on an ancestor .skillrig dir) is surfaced
  as fatal instead of masked as "not found"; ResolveOrigin fails fast. Closes
  the discovery-stage gap symmetric to Load's I/O-fatal path.
- #3 Origin.String() returns "" for the zero Origin (the SourceNone sentinel)
  instead of a misleading "/"; precedence test compares directly.
- #4 gitRoot returns (string, error); ProjectWriteTarget falls back to cwd ONLY
  for expected cases (git absent / not a repo) and propagates unexpected errors
  (context cancellation/timeout, exec failures), so init never writes config to
  the wrong directory.
- #1 (markdown checkbox rule violation): false positive — the cited checkboxes
  are /specledger in-document spec/plan checklists, not work tracking. AGENTS.md
  reworded to scope the rule to work-item tracking and explicitly allow them.

Tests (TDD, real fixtures): zero-origin String, permission-denied walk-up fatal,
cancelled-ctx write-target fatal, non-repo cwd fallback preserved. Gate green:
go test ./... · gofmt · go vet · golangci-lint (0 issues).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
so0k added a commit that referenced this pull request May 30, 2026
Resolve the bugs and one rule violation from the automated Qodo review on PR #5
(see specledger/002-skillcore-verify/reviews/002-review.md):

- Path traversal (#5): validate the skill name as a single safe path segment
  before any FS op, so `add ../x` can't escape .agents/skills/ or os.RemoveAll an
  arbitrary dir. New *InvalidSkillNameError + tests.
- Symlinks (#6): reject any symlink in the origin skill subtree (would let
  copy/compare follow outside it and break byte-identical/git-canonical
  vendoring). New *SymlinkUnsupportedError + test; policy noted in cli.md
  (preserve-as-symlink is a future relaxation).
- Verify error class (#8): pathInHead now propagates a *GitError only when git
  cannot run or "not a git repository"; every other rev-parse failure (absent
  path, unborn HEAD) stays "not in tree" — honoring the Verify SDK contract
  without breaking the dirty/missing verdicts. Tests for both.
- rev-parse option injection (#7): refuse a revision beginning with '-' (git
  rev-parse echoes --/--end-of-options, so a guard is the right fix). Test.
- %q rule (#1): quote path strings in mapAddError's user-facing messages.

Declined: verify-report-on-stdout (the report is data; exit code is the signal;
contract requires `verify --json 2>/dev/null | jq`) and the //go:build
integration tag (project separates integration by ./test/ dir) — PR replies
posted. Skipped: unchecked strings.Builder writes (never error).

Gate: golangci-lint 0 issues; go test -cover -count=1 ./... green (skillcore
80.7%, internal/cli 51.6%).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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