CommandSuite v0.3.1
csuite-cli
Patch Changes
-
#54
abd080fThanks @keencaliper! - Make objective namespaces usable: fixFsEntry.ownerand thelist()authorization gate.Two defects, both live since objective namespaces shipped, and both needed for the feature
to work at all.1.
FsEntrySchema.ownerwasNameSchema. Objective-namespace entries carry
owner = 'obj:<id>'(OBJECTIVE_OWNER_PREFIX,files/paths.ts), andNameSchema's
pattern excludes:. So every namespace entry failed the schema that ships alongside the
code producing it.The failure mode is the part worth remembering: validation runs on the response, after
the write has committed.fs_writeandfs_mkdirreported an error for work that had
already succeeded — an agent that retried hit a collision on a file it was told it never
wrote, and one that gave up left a file it did not know existed.fs_rmalone appeared to
work throughout, because it returns void and parses nothing. The only namespace operation
an agent could complete and be told the truth about was the destructive one.owneris nowFsOwnerSchema— a member name orobj:<objective-id>. Widened rather
than changing the producer:obj:<id>is part of the shipped authorization model, not a
malformed name. That is the opposite call fromBroker.push, where nothing legitimate
produced the rejected value and the producer moved instead.2.
list()gated onmembers.manage || ownsPathand never calledcanRead(). A
namespace is owned byobj:<id>and by no member, so an ownership test refused every
member of the objective — including its assignee.stat,readandlistSharedall
gated oncanRead, which already resolves objective membership and grants;listwas the
one that did not. This is whyfs_ls /objectives/<id>returned 403 to the person the
namespace was created for, and why the whole thing read as a permissions problem rather
than two unrelated bugs.Non-members are still refused. The fix widens who may list, not whether listing is gated.
The contract test that pinned defect 1 as a KNOWN DIVERGENCE with an inverted assertion has
been converted to an ordinaryexpectMatchesContract()case, which is exactly what that
inversion existed to force. A source comment inruntime/tools.tsdescribing both defects
as live has been rewritten to describe current behaviour — a comment that contradicts the
code is a defect in its own right.Released as a patch: it removes restrictions rather than adding them, and no caller that
previously succeeded now fails.
csuite-server
Patch Changes
-
#54
abd080fThanks @keencaliper! - Make objective namespaces usable: fixFsEntry.ownerand thelist()authorization gate.Two defects, both live since objective namespaces shipped, and both needed for the feature
to work at all.1.
FsEntrySchema.ownerwasNameSchema. Objective-namespace entries carry
owner = 'obj:<id>'(OBJECTIVE_OWNER_PREFIX,files/paths.ts), andNameSchema's
pattern excludes:. So every namespace entry failed the schema that ships alongside the
code producing it.The failure mode is the part worth remembering: validation runs on the response, after
the write has committed.fs_writeandfs_mkdirreported an error for work that had
already succeeded — an agent that retried hit a collision on a file it was told it never
wrote, and one that gave up left a file it did not know existed.fs_rmalone appeared to
work throughout, because it returns void and parses nothing. The only namespace operation
an agent could complete and be told the truth about was the destructive one.owneris nowFsOwnerSchema— a member name orobj:<objective-id>. Widened rather
than changing the producer:obj:<id>is part of the shipped authorization model, not a
malformed name. That is the opposite call fromBroker.push, where nothing legitimate
produced the rejected value and the producer moved instead.2.
list()gated onmembers.manage || ownsPathand never calledcanRead(). A
namespace is owned byobj:<id>and by no member, so an ownership test refused every
member of the objective — including its assignee.stat,readandlistSharedall
gated oncanRead, which already resolves objective membership and grants;listwas the
one that did not. This is whyfs_ls /objectives/<id>returned 403 to the person the
namespace was created for, and why the whole thing read as a permissions problem rather
than two unrelated bugs.Non-members are still refused. The fix widens who may list, not whether listing is gated.
The contract test that pinned defect 1 as a KNOWN DIVERGENCE with an inverted assertion has
been converted to an ordinaryexpectMatchesContract()case, which is exactly what that
inversion existed to force. A source comment inruntime/tools.tsdescribing both defects
as live has been rewritten to describe current behaviour — a comment that contradicts the
code is a defect in its own right.Released as a patch: it removes restrictions rather than adding them, and no caller that
previously succeeded now fails.
csuite-core
Patch Changes
-
#54
abd080fThanks @keencaliper! - Make objective namespaces usable: fixFsEntry.ownerand thelist()authorization gate.Two defects, both live since objective namespaces shipped, and both needed for the feature
to work at all.1.
FsEntrySchema.ownerwasNameSchema. Objective-namespace entries carry
owner = 'obj:<id>'(OBJECTIVE_OWNER_PREFIX,files/paths.ts), andNameSchema's
pattern excludes:. So every namespace entry failed the schema that ships alongside the
code producing it.The failure mode is the part worth remembering: validation runs on the response, after
the write has committed.fs_writeandfs_mkdirreported an error for work that had
already succeeded — an agent that retried hit a collision on a file it was told it never
wrote, and one that gave up left a file it did not know existed.fs_rmalone appeared to
work throughout, because it returns void and parses nothing. The only namespace operation
an agent could complete and be told the truth about was the destructive one.owneris nowFsOwnerSchema— a member name orobj:<objective-id>. Widened rather
than changing the producer:obj:<id>is part of the shipped authorization model, not a
malformed name. That is the opposite call fromBroker.push, where nothing legitimate
produced the rejected value and the producer moved instead.2.
list()gated onmembers.manage || ownsPathand never calledcanRead(). A
namespace is owned byobj:<id>and by no member, so an ownership test refused every
member of the objective — including its assignee.stat,readandlistSharedall
gated oncanRead, which already resolves objective membership and grants;listwas the
one that did not. This is whyfs_ls /objectives/<id>returned 403 to the person the
namespace was created for, and why the whole thing read as a permissions problem rather
than two unrelated bugs.Non-members are still refused. The fix widens who may list, not whether listing is gated.
The contract test that pinned defect 1 as a KNOWN DIVERGENCE with an inverted assertion has
been converted to an ordinaryexpectMatchesContract()case, which is exactly what that
inversion existed to force. A source comment inruntime/tools.tsdescribing both defects
as live has been rewritten to describe current behaviour — a comment that contradicts the
code is a defect in its own right.Released as a patch: it removes restrictions rather than adding them, and no caller that
previously succeeded now fails.
csuite-sdk
Patch Changes
-
#54
abd080fThanks @keencaliper! - Make objective namespaces usable: fixFsEntry.ownerand thelist()authorization gate.Two defects, both live since objective namespaces shipped, and both needed for the feature
to work at all.1.
FsEntrySchema.ownerwasNameSchema. Objective-namespace entries carry
owner = 'obj:<id>'(OBJECTIVE_OWNER_PREFIX,files/paths.ts), andNameSchema's
pattern excludes:. So every namespace entry failed the schema that ships alongside the
code producing it.The failure mode is the part worth remembering: validation runs on the response, after
the write has committed.fs_writeandfs_mkdirreported an error for work that had
already succeeded — an agent that retried hit a collision on a file it was told it never
wrote, and one that gave up left a file it did not know existed.fs_rmalone appeared to
work throughout, because it returns void and parses nothing. The only namespace operation
an agent could complete and be told the truth about was the destructive one.owneris nowFsOwnerSchema— a member name orobj:<objective-id>. Widened rather
than changing the producer:obj:<id>is part of the shipped authorization model, not a
malformed name. That is the opposite call fromBroker.push, where nothing legitimate
produced the rejected value and the producer moved instead.2.
list()gated onmembers.manage || ownsPathand never calledcanRead(). A
namespace is owned byobj:<id>and by no member, so an ownership test refused every
member of the objective — including its assignee.stat,readandlistSharedall
gated oncanRead, which already resolves objective membership and grants;listwas the
one that did not. This is whyfs_ls /objectives/<id>returned 403 to the person the
namespace was created for, and why the whole thing read as a permissions problem rather
than two unrelated bugs.Non-members are still refused. The fix widens who may list, not whether listing is gated.
The contract test that pinned defect 1 as a KNOWN DIVERGENCE with an inverted assertion has
been converted to an ordinaryexpectMatchesContract()case, which is exactly what that
inversion existed to force. A source comment inruntime/tools.tsdescribing both defects
as live has been rewritten to describe current behaviour — a comment that contradicts the
code is a defect in its own right.Released as a patch: it removes restrictions rather than adding them, and no caller that
previously succeeded now fails.
csuite
Patch Changes
-
#54
abd080fThanks @keencaliper! - Make objective namespaces usable: fixFsEntry.ownerand thelist()authorization gate.Two defects, both live since objective namespaces shipped, and both needed for the feature
to work at all.1.
FsEntrySchema.ownerwasNameSchema. Objective-namespace entries carry
owner = 'obj:<id>'(OBJECTIVE_OWNER_PREFIX,files/paths.ts), andNameSchema's
pattern excludes:. So every namespace entry failed the schema that ships alongside the
code producing it.The failure mode is the part worth remembering: validation runs on the response, after
the write has committed.fs_writeandfs_mkdirreported an error for work that had
already succeeded — an agent that retried hit a collision on a file it was told it never
wrote, and one that gave up left a file it did not know existed.fs_rmalone appeared to
work throughout, because it returns void and parses nothing. The only namespace operation
an agent could complete and be told the truth about was the destructive one.owneris nowFsOwnerSchema— a member name orobj:<objective-id>. Widened rather
than changing the producer:obj:<id>is part of the shipped authorization model, not a
malformed name. That is the opposite call fromBroker.push, where nothing legitimate
produced the rejected value and the producer moved instead.2.
list()gated onmembers.manage || ownsPathand never calledcanRead(). A
namespace is owned byobj:<id>and by no member, so an ownership test refused every
member of the objective — including its assignee.stat,readandlistSharedall
gated oncanRead, which already resolves objective membership and grants;listwas the
one that did not. This is whyfs_ls /objectives/<id>returned 403 to the person the
namespace was created for, and why the whole thing read as a permissions problem rather
than two unrelated bugs.Non-members are still refused. The fix widens who may list, not whether listing is gated.
The contract test that pinned defect 1 as a KNOWN DIVERGENCE with an inverted assertion has
been converted to an ordinaryexpectMatchesContract()case, which is exactly what that
inversion existed to force. A source comment inruntime/tools.tsdescribing both defects
as live has been rewritten to describe current behaviour — a comment that contradicts the
code is a defect in its own right.Released as a patch: it removes restrictions rather than adding them, and no caller that
previously succeeded now fails.
csuite-web-ui
Patch Changes
-
#54
abd080fThanks @keencaliper! - Make objective namespaces usable: fixFsEntry.ownerand thelist()authorization gate.Two defects, both live since objective namespaces shipped, and both needed for the feature
to work at all.1.
FsEntrySchema.ownerwasNameSchema. Objective-namespace entries carry
owner = 'obj:<id>'(OBJECTIVE_OWNER_PREFIX,files/paths.ts), andNameSchema's
pattern excludes:. So every namespace entry failed the schema that ships alongside the
code producing it.The failure mode is the part worth remembering: validation runs on the response, after
the write has committed.fs_writeandfs_mkdirreported an error for work that had
already succeeded — an agent that retried hit a collision on a file it was told it never
wrote, and one that gave up left a file it did not know existed.fs_rmalone appeared to
work throughout, because it returns void and parses nothing. The only namespace operation
an agent could complete and be told the truth about was the destructive one.owneris nowFsOwnerSchema— a member name orobj:<objective-id>. Widened rather
than changing the producer:obj:<id>is part of the shipped authorization model, not a
malformed name. That is the opposite call fromBroker.push, where nothing legitimate
produced the rejected value and the producer moved instead.2.
list()gated onmembers.manage || ownsPathand never calledcanRead(). A
namespace is owned byobj:<id>and by no member, so an ownership test refused every
member of the objective — including its assignee.stat,readandlistSharedall
gated oncanRead, which already resolves objective membership and grants;listwas the
one that did not. This is whyfs_ls /objectives/<id>returned 403 to the person the
namespace was created for, and why the whole thing read as a permissions problem rather
than two unrelated bugs.Non-members are still refused. The fix widens who may list, not whether listing is gated.
The contract test that pinned defect 1 as a KNOWN DIVERGENCE with an inverted assertion has
been converted to an ordinaryexpectMatchesContract()case, which is exactly what that
inversion existed to force. A source comment inruntime/tools.tsdescribing both defects
as live has been rewritten to describe current behaviour — a comment that contradicts the
code is a defect in its own right.Released as a patch: it removes restrictions rather than adding them, and no caller that
previously succeeded now fails.
csuite-web-host
Patch Changes
-
#54
abd080fThanks @keencaliper! - Make objective namespaces usable: fixFsEntry.ownerand thelist()authorization gate.Two defects, both live since objective namespaces shipped, and both needed for the feature
to work at all.1.
FsEntrySchema.ownerwasNameSchema. Objective-namespace entries carry
owner = 'obj:<id>'(OBJECTIVE_OWNER_PREFIX,files/paths.ts), andNameSchema's
pattern excludes:. So every namespace entry failed the schema that ships alongside the
code producing it.The failure mode is the part worth remembering: validation runs on the response, after
the write has committed.fs_writeandfs_mkdirreported an error for work that had
already succeeded — an agent that retried hit a collision on a file it was told it never
wrote, and one that gave up left a file it did not know existed.fs_rmalone appeared to
work throughout, because it returns void and parses nothing. The only namespace operation
an agent could complete and be told the truth about was the destructive one.owneris nowFsOwnerSchema— a member name orobj:<objective-id>. Widened rather
than changing the producer:obj:<id>is part of the shipped authorization model, not a
malformed name. That is the opposite call fromBroker.push, where nothing legitimate
produced the rejected value and the producer moved instead.2.
list()gated onmembers.manage || ownsPathand never calledcanRead(). A
namespace is owned byobj:<id>and by no member, so an ownership test refused every
member of the objective — including its assignee.stat,readandlistSharedall
gated oncanRead, which already resolves objective membership and grants;listwas the
one that did not. This is whyfs_ls /objectives/<id>returned 403 to the person the
namespace was created for, and why the whole thing read as a permissions problem rather
than two unrelated bugs.Non-members are still refused. The fix widens who may list, not whether listing is gated.
The contract test that pinned defect 1 as a KNOWN DIVERGENCE with an inverted assertion has
been converted to an ordinaryexpectMatchesContract()case, which is exactly what that
inversion existed to force. A source comment inruntime/tools.tsdescribing both defects
as live has been rewritten to describe current behaviour — a comment that contradicts the
code is a defect in its own right.Released as a patch: it removes restrictions rather than adding them, and no caller that
previously succeeded now fails.