§717 (2), the status view: it follows the assigner's views by their seats
The status view consumes seat:mesh-wants.views.asks, seat:mesh-wants.views.wants and seat:mesh-module-assigner.views.assignments in place of the three mesh-delivery-assigner.views entries, and its process takes each first view from the tool named for the state; its invokes lose assigner_read_asks and assigner_read_assignments, and its tools program keeps assigner_read_wants for a want's key and history reads (A-300). Builds: design 47 G §717, A-300 Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
This commit is contained in:
@@ -266,12 +266,14 @@ type ReachedEvent struct {
|
||||
}
|
||||
|
||||
// ownersFollowed are the indexer's, the assigner's and the teller's states the view's process follows by their first views, each by its
|
||||
// owner's read tool (as the view's invokes names it) and views family (its events on the shared events stream); the
|
||||
// owner's first-view or read tool (as the view's consumes or invokes names it) and views family (its events on the shared events stream); the
|
||||
// view's tools ask the other six through the owners' read tools on each call.
|
||||
var ownersFollowed = []struct{ owner, state, tool string }{
|
||||
{view.AssignerModule, view.AssignmentsState, view.AssignerModule + ".assigner_read_assignments"},
|
||||
{view.AssignerModule, "wants", view.AssignerModule + ".assigner_read_wants"},
|
||||
{view.AssignerModule, "asks", view.AssignerModule + ".assigner_read_asks"},
|
||||
// The seats mesh-module-assigner's assignments and mesh-wants' wants and asks, each first viewed by the tool named for its
|
||||
// state (design 47 G §717, A-300).
|
||||
{view.AssignerModule, view.AssignmentsState, view.AssignerModule + "." + view.AssignmentsState},
|
||||
{view.AssignerModule, "wants", view.AssignerModule + ".wants"},
|
||||
{view.AssignerModule, "asks", view.AssignerModule + ".asks"},
|
||||
{view.IndexerModule, "candidates", view.IndexerModule + ".indexer_read_candidates"},
|
||||
{view.IndexerModule, "taken", view.IndexerModule + ".indexer_read_taken"},
|
||||
{view.TellerModule, view.AnswersState, view.TellerModule + ".teller_read_answers"},
|
||||
|
||||
@@ -166,7 +166,7 @@ func TestManifestIsTakenAndReadsOnly(t *testing.T) { // 1134/AC7
|
||||
}
|
||||
// The indexer's and the assigner's states are asked of their owners' read tools (design 25 § 12.2), the six the process
|
||||
// follows then heard on their views families (ADR 0615 §1, §5; DLV-M4).
|
||||
if want := []invoke{{Verb: "mesh-delivery-assigner.assigner_read_asks"}, {Verb: "mesh-delivery-assigner.assigner_read_differences"}, {Verb: "mesh-delivery-assigner.assigner_read_assignments"},
|
||||
if want := []invoke{{Verb: "mesh-delivery-assigner.assigner_read_differences"},
|
||||
{Verb: "mesh-delivery-assigner.assigner_read_wants"}, {Verb: "mesh-delivery-indexer.indexer_read_candidates"}, {Verb: "mesh-delivery-indexer.indexer_read_config_candidates"},
|
||||
{Verb: "mesh-delivery-indexer.indexer_read_graph"}, {Verb: "mesh-delivery-indexer.indexer_read_heard"}, {Verb: "mesh-delivery-indexer.indexer_pending"},
|
||||
{Verb: "mesh-delivery-indexer.indexer_read_packages"}, {Verb: "mesh-delivery-indexer.indexer_read_predefined"}, {Verb: "mesh-delivery-indexer.indexer_read_taken"},
|
||||
@@ -194,7 +194,7 @@ func TestManifestIsTakenAndReadsOnly(t *testing.T) { // 1134/AC7
|
||||
if m.Version != "0.1" {
|
||||
t.Errorf("version = %q, want 0.1", m.Version)
|
||||
}
|
||||
if want := []string{"mesh-conditions.findings-asked", "mesh-delivery-assigner.views.asks", "mesh-delivery-assigner.views.assignments", "seat:mesh-module-assigner.views.seat-holders", "mesh-delivery-assigner.views.wants",
|
||||
if want := []string{"mesh-conditions.findings-asked", "seat:mesh-wants.views.asks", "seat:mesh-module-assigner.views.assignments", "seat:mesh-module-assigner.views.seat-holders", "seat:mesh-wants.views.wants",
|
||||
"mesh-catalog.catalog-revision", "mesh-catalog.registration-changed", "mesh-delivery.source-moved", "mesh-catalog.seat-definition-changed", "mesh-catalog.seat-definition-removed", "mesh-delivery-indexer.views.candidates", "mesh-delivery-indexer.views.taken", "mesh-delivery-teller.views.answers",
|
||||
"mesh-wants.wait-held", "mesh-wants.wait-ended", "node-engine.wait-held", "node-engine.wait-ended", "mesh-pipeline-runner.wait-held", "mesh-pipeline-runner.wait-ended",
|
||||
"mesh-grants.wait-held", "mesh-grants.wait-ended", "mesh-delivery-builder.wait-held", "mesh-delivery-builder.wait-ended",
|
||||
@@ -245,11 +245,15 @@ func TestManifestIsTakenAndReadsOnly(t *testing.T) { // 1134/AC7
|
||||
t.Errorf("the view reads %s, its manifest's reads are %v", view.SignersRead, m.Reads)
|
||||
}
|
||||
followed := map[string]string{view.CandidatesBucket: view.IndexerModule + ".views.candidates",
|
||||
view.TakenBucket: view.IndexerModule + ".views.taken", view.AssignmentsBucket: view.AssignerModule + ".views.assignments",
|
||||
view.AssignerWantsBucket: view.AssignerModule + ".views.wants", view.AssignerAsksBucket: view.AssignerModule + ".views.asks",
|
||||
view.TakenBucket: view.IndexerModule + ".views.taken", view.AssignmentsBucket: "seat:mesh-module-assigner.views.assignments",
|
||||
view.AssignerWantsBucket: "seat:mesh-wants.views.wants", view.AssignerAsksBucket: "seat:mesh-wants.views.asks",
|
||||
view.AnswersBucket: view.TellerModule + ".views.answers"}
|
||||
for bucket, family := range followed {
|
||||
if module, state, _ := strings.Cut(family, ".views."); bucket != module+"_"+state {
|
||||
module, state, _ := strings.Cut(family, ".views.")
|
||||
if strings.HasPrefix(module, "seat:") { // a seat's view, said by its holder (design 47 G §717)
|
||||
module = view.AssignerModule
|
||||
}
|
||||
if bucket != module+"_"+state {
|
||||
t.Errorf("the bucket %s is not the state %s of %s", bucket, state, module)
|
||||
}
|
||||
if !slices.Contains(m.Consumes, family) {
|
||||
|
||||
@@ -71,10 +71,10 @@
|
||||
],
|
||||
"consumes": [
|
||||
"mesh-conditions.findings-asked",
|
||||
"mesh-delivery-assigner.views.asks",
|
||||
"mesh-delivery-assigner.views.assignments",
|
||||
"seat:mesh-wants.views.asks",
|
||||
"seat:mesh-module-assigner.views.assignments",
|
||||
"seat:mesh-module-assigner.views.seat-holders",
|
||||
"mesh-delivery-assigner.views.wants",
|
||||
"seat:mesh-wants.views.wants",
|
||||
"mesh-catalog.catalog-revision",
|
||||
"mesh-catalog.registration-changed",
|
||||
"mesh-delivery.source-moved",
|
||||
@@ -97,9 +97,7 @@
|
||||
"mesh-broker.dropped"
|
||||
],
|
||||
"invokes": [
|
||||
"mesh-delivery-assigner.assigner_read_asks",
|
||||
"mesh-delivery-assigner.assigner_read_differences",
|
||||
"mesh-delivery-assigner.assigner_read_assignments",
|
||||
"mesh-delivery-assigner.assigner_read_wants",
|
||||
"mesh-delivery-indexer.indexer_read_candidates",
|
||||
"mesh-delivery-indexer.indexer_read_config_candidates",
|
||||
|
||||
Reference in New Issue
Block a user