Skip to content

fix: an example in a contract shows the form of the value, and a form sent back is refused by name - #145

Merged
rodrigoteamx merged 2 commits into
mainfrom
fix/examples-are-forms
Oct 7, 2026
Merged

rodrigoteamx merged 2 commits into
mainfrom
fix/examples-are-forms

Conversation

@rodrigoteamx

Copy link
Copy Markdown
Contributor

A contract is read by every session before it knows what it will be
asked to build. Where make and artifact:contract showed an argument
with a real name (an entity, a route, a list of fields) the contract
had chosen a domain, and whoever was later asked for that domain had
been handed part of the answer. Each example now shows the form of the
value: <Entity>, /<path>, <name>:string. So do the two refusals
that say what a page needs.

An example is copied letter for letter, so a form can come back as it
was shown. make answers that by name, before anything is scaffolded:
which argument, and what to write where the placeholder is. Two forms
used to get through: fields named <name> died later as "class not
found", and domain:verb became an operation.

The rule is tested positively and holds no list of names to avoid:
across every operation's contract, what follows an example is made of
placeholders, or is a name this package can vouch for. With the
contracts as they were, that test is red.

The second commit keeps tests/ out of the archive Composer installs.
Only tests/: the workflows and the tools stay, because the message
gate's action is fetched from this repository as an archive.

… sent back is refused by name

A contract is read by every session before it knows what it will be
asked to build. Where `make` and `artifact:contract` showed an argument
with a real name — an entity, a route, a list of fields — the contract
had chosen a domain. Each example now shows the form of the value:
<Entity>, /<path>, <name>:string. So do the two refusals that say what
a page needs.

An example is copied letter for letter, so a form can come back as it
was shown. `make` answers that by name, before anything is scaffolded:
which argument, and what to write where the placeholder is. Two forms
used to get through: fields named <name> died later as "class not
found", and domain:verb became an operation.

The rule is tested positively and holds no list of names to avoid:
across every operation's contract, what follows an example is made of
placeholders, or is a name this package can vouch for.
A house that installs this package received its tests too: as many
bytes as the code it runs, and never run there. They are marked out of
the archive Composer downloads. Nothing else is: the tools and the
workflows of a package can be read by others from that same archive.
@rodrigoteamx
rodrigoteamx merged commit 82c902c into main Oct 7, 2026
2 checks passed
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