mvanhorn/last30days-skill · error

engine: write sentinel: %w

Error message

engine: write sentinel: %w

What it means

Error "engine: write sentinel: %w" thrown in mvanhorn/last30days-skill.

Source

Thrown at mcp/internal/engine/extract.go:89

func ensureLocked(src fs.FS, cacheDir, version string) error {
	if sentinelMatches(cacheDir, version) {
		return nil
	}
	tmpDir := cacheDir + ".tmp"
	if err := os.RemoveAll(tmpDir); err != nil {
		return fmt.Errorf("engine: clean tmp cache: %w", err)
	}
	if err := os.MkdirAll(tmpDir, 0o755); err != nil {
		return fmt.Errorf("engine: create tmp cache (%s, set %s to override): %w", tmpDir, CacheEnvOverride, err)
	}
	if err := extractAll(src, tmpDir); err != nil {
		_ = os.RemoveAll(tmpDir)
		return err
	}
	sentinel := filepath.Join(tmpDir, SentinelFilename)
	if err := os.WriteFile(sentinel, []byte(version), 0o644); err != nil {
		_ = os.RemoveAll(tmpDir)
		return fmt.Errorf("engine: write sentinel: %w", err)
	}
	if err := os.RemoveAll(cacheDir); err != nil {
		_ = os.RemoveAll(tmpDir)
		return fmt.Errorf("engine: clean old cache: %w", err)
	}
	if err := os.Rename(tmpDir, cacheDir); err != nil {
		_ = os.RemoveAll(tmpDir)
		return fmt.Errorf("engine: promote tmp cache: %w", err)
	}
	return nil
}

func sentinelMatches(cacheDir, version string) bool {
	data, err := os.ReadFile(filepath.Join(cacheDir, SentinelFilename))
	if err != nil {
		return false
	}
	return string(data) == version

View on GitHub (pinned to c7460f6114)

Solutions

  1. Check write permissions on the temporary cache directory and retry.
  2. Free disk space if the filesystem is full; the sentinel write is tiny, so failure usually means a full or read-only filesystem.

When it happens

Trigger: Fires when the engine cannot write the sentinel marker file into the freshly extracted cache, usually a permissions or filesystem error in the cache directory.

Common situations: See trigger scenarios.


AI-assisted analysis of mvanhorn/last30days-skill@c7460f6114 (2026-08-15). Data as JSON: /api/errors/b6905ba823b7103c. Report an issue: GitHub.