File-SOPS

 view release on metacpan or  search on metacpan

.claude/agents/file-sops-release-checker.md  view on Meta::CPAN

   since the last release (`git log --oneline` since the last `v*` tag). Entries name
   the user-visible effect, not the internal refactor.
4. **`dzil build`** — runs clean: no missing files, no warnings. Note that `.claude/`
   and `CLAUDE.md` **are** shipped in the tarball, deliberately: this distribution
   discloses how it was built, so they carry no `gather_exclude_match` and their
   presence is not a finding. `docs/` **also** ships now, deliberately — the ADRs
   are part of that same disclosure (commit `bf66e7a`, "ship the ADRs"), so their
   presence in the tarball is likewise not a finding; only `refs/` (the karr
   board) is still excluded. What *is* a
   finding: anything under `.claude/` that should never be published — a stray
   `settings.local.json`, credentials, session state. `.gitignore` keeps those
   untracked and `Git::GatherDir` ships tracked files only, so check that the untracked
   set is still what it should be.
5. **Interop proof — specific to this distribution.** A release claims byte
   compatibility with `sops`. Check whether `t/04-interop.t` actually *ran*: a suite
   that reports `All tests successful` while the binary was absent has skipped every
   compatibility assertion. Report the state plainly — "interop verified against sops
   <version>" or "interop NOT verified, binary absent" — and treat the latter as a
   release blocker, not a note.
6. **POD** — public attributes and methods carry `=attr` / `=method`; flag documented
   claims that contradict the code. The POD here has drifted before and has stated

.gitignore  view on Meta::CPAN

/.build/

# Carton
/local/

# Interop sops binary -- large, platform-specific, refetched with maint/fetch-sops.
# Lives in the repo so it survives a /tmp wipe; never committed.
/.sops-bin/

# Claude Code — commit: skills/, agents/, hooks/, settings.json
# Ignore: local overrides, credentials, session data
.claude/*.local.*
.claude/local/
.claude/.credentials.json
.claude/statsig/
.claude/todos/
.claude/projects/
# Temporary git worktrees created for isolated agent runs
.claude/worktrees/

# karr materialized task view -- never commit
tasks/
config.yml

t/04-interop.t  view on Meta::CPAN


        is_deeply($decrypted, $data, 'Perl decrypted sops-encrypted data');
    }
};

###############################################################################
# Test 4: sops encrypt -> Perl decrypt (JSON)
###############################################################################
subtest 'sops encrypt -> Perl decrypt (JSON)' => sub {
    my $data = {
        credentials => {
            username => 'admin',
            password => 's3cr3t!',
        },
    };

    my $plain_file = "$tempdir/sops_plain.json";
    write_file($plain_file, encode_json($data));

    my $output = `$sops_bin -e --age $public $plain_file 2>&1`;
    my $exit_code = $? >> 8;



( run in 0.624 second using v1.01-cache-2.11-cpan-a49fcb8fa48 )