Skip to content

PHPAY-165: gerar a matriz de capacidades e tornar o grant da licença visível - #166

Merged
mariolucasdev merged 1 commit into
developfrom
doc/phpay-165
Oct 26, 2026
Merged

mariolucasdev merged 1 commit into
developfrom
doc/phpay-165

Conversation

@mariolucasdev

Copy link
Copy Markdown
Collaborator

Closes #165.

Três consertos de credibilidade e descoberta. Nenhum muda comportamento da
biblioteca.

A matriz do README agora é gerada

Ela ficou duas releases errada: faltavam as colunas de estornos e de
leitura de webhook desde que as capacidades entraram, nas v2.5 e v2.6. Só
foi notado quando gerei a matriz a partir do código para conferir. Dez gateways
por oito capacidades são 80 células que ninguém revisa.

.github/scripts/capability-matrix.php monta a tabela de Gateway::cases() ×
Capability::cases() usando o label() que cada enum já expõe — nenhum
rótulo é duplicado no script, e rótulo novo aparece sozinho.

php .github/scripts/capability-matrix.php            # imprime
php .github/scripts/capability-matrix.php --write    # reescreve entre os marcadores
php .github/scripts/capability-matrix.php --check    # reprova se divergir

O --check entrou no composer test e no CI, depois do passo dos links.

Provei a guarda em vez de confiar nela: reintroduzi a deriva que aconteceu
de verdade (Asaas sem estornos) e o composer test:matrix saiu com 1.

A tabela de roteiro estava errada, e contradizia a outra

"Cobertura por gateway" estava sem o Inter e dizia "sete gateways" onde já
são oito. Consertei, e acrescentei o que faltava dizer: a matriz gerada é a
autoritativa.
As duas nunca iam concordar porque medem coisas diferentes — a
coluna Pix da tabela de roteiro significa aceitar Pix, não gerenciar chaves,
e por isso o Mercado Pago aparece com ✅ lá e com — na gerada.

Não apaguei a tabela: ela mostra o que está planejado, que a gerada não
sabe. Mas duas matrizes num README é superfície de deriva, e decidir se ela
fica é seu, não meu.

O grant da licença estava invisível

Correção do que eu disse antes: eu ia recomendar trocar a BUSL por MIT. Fui
ler os parâmetros e a decisão é boa e bem redigida — o Additional Use Grant
permite produção, fechado e comercial, e vira MIT em 2030-09-20. A seção de
licença no fim do README é completa, com tabela de pode/não pode e tudo.

O problema é só de posição: quem vê o badge BUSL-1.1 no topo e não desce
1300 linhas assume restrição e fecha a aba. Um scanner de licença corporativo
faz o mesmo. Uma linha no topo agora resolve, com link para a seção.

Fora deste PR, porque é configuração e não arquivo

  • topics: eram gateways, invoices, receipts. Agora são 18, com
    php, pix, boleto, payment-gateway, laravel, brazil, fintech e os
    nomes dos gateways. Busca por topic é caminho de descoberta primário;
  • relato privado de vulnerabilidade do GitHub: estava desligado, foi
    ligado. Isso importa porque o SECURITY.md aponta para sec@phpay.io, e
    phpay.io não existe no DNS (NXDOMAIN, sem MX) — numa biblioteca de
    pagamentos, um canal de segurança que promete e não entrega é pior que não
    ter. A partir de agora há um canal que funciona.

O que continua em aberto, e é decisão sua

Os outros contatos do domínio morto: conduta e suporte (fale@phpay.io),
licenciamento comercial (LICENSE.md convida a escrever e ninguém
recebe) e a homepage do repositório e do Packagist (doc.phpay.io).

Não escolhi endereço por você: publicar um e-mail seu num repositório público é
decisão sua, não minha.

Verificação

composer test: lint, 770 testes, PHPStan nível 9, 113 links, matriz
conferida
. Smoke com 97 verificações.

…rant

The README matrix was two releases wrong: the refunds and webhook-reading
columns were missing from the moment those capabilities landed, in v2.5 and
v2.6, and it was only noticed when the matrix was generated from the code to
check it. Ten gateways by eight capabilities is eighty cells nobody reviews.

So it is generated now. capability-matrix.php builds the table from
Gateway::cases() x Capability::cases() using the label() each enum already
exposes, so no label is duplicated in the script and a new one appears on its
own. --write rewrites the block between markers, --check fails on divergence
and runs in composer test and in CI. The guard was proven by introducing the
same drift that happened for real and watching it fail.

The roadmap table ("Cobertura por gateway") was missing Inter and said seven
gateways where there are eight. Fixed, and it now states that the generated
matrix is the authoritative one: its own Pix column means accepting Pix, not
managing keys, which is why the two never agreed.

The licence grant was invisible. The section at the bottom of the README is
thorough, but a reader who sees only the BUSL-1.1 badge at the top never
reaches it and assumes a restriction that is not there. One line near the top
now says what is allowed (production, closed-source, commercial), what is not
(reselling it as a competing SDK), and that it turns MIT in 2030.

Two repository settings were changed outside this commit, for the same
reason: the topics were only gateways/invoices/receipts and are now eighteen,
and GitHub private vulnerability reporting was off and is now on - which
matters because SECURITY.md points at sec@phpay.io, on a domain that does not
resolve.
@mariolucasdev
mariolucasdev merged commit 9f2f1b1 into develop Oct 26, 2026
8 checks passed
@mariolucasdev
mariolucasdev deleted the doc/phpay-165 branch October 26, 2026 18:01
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.

Apresentação: tornar o grant da licença visível e impedir a matriz do README de derivar

1 participant