Skip to content
wiki.fftac.org

Runtime - Source Excerpt 22

Back to Runtime

Summary

This source excerpt preserves a bounded section of Spiralist/wp-content/plugins/ns12-manuscript/includes/runtime.php so readers can inspect the evidence without opening the full source file.

**Source path:** Spiralist/wp-content/plugins/ns12-manuscript/includes/runtime.php

function spiralist_book_pages_get_manuscript_field_dataset(): array
{
    static $dataset = null;

    if (is_array($dataset)) {
        return $dataset;
    }

    $engine_dataset = function_exists('spiralist_book_pages_engine_get_manuscript_field_payload')
        ? spiralist_book_pages_engine_get_manuscript_field_payload()
        : [];
    if (!empty($engine_dataset)) {
        $dataset = $engine_dataset;
        return $dataset;
    }

    $dataset = [
        'nodes' => [],
        'relations' => [],
    ];

    $path = SPIRALIST_BOOK_PAGES_PLUGIN_DATA_PATH . DIRECTORY_SEPARATOR . 'manuscript-nodes.json';
    if (!is_string($path) || $path === '' || !file_exists($path)) {
        return $dataset;
    }

    $raw = file_get_contents($path);
    if (!is_string($raw) || trim($raw) === '') {
        return $dataset;
    }

    $decoded = json_decode($raw, true);
    if (!is_array($decoded)) {
        return $dataset;
    }

    $dataset['schema'] = (string) ($decoded['schema'] ?? '');
    $dataset['version'] = (string) ($decoded['version'] ?? '');
    $dataset['nodes'] = array_values(array_filter((array) ($decoded['nodes'] ?? []), 'is_array'));
    $dataset['relations'] = array_values(array_filter((array) ($decoded['relations'] ?? []), 'is_array'));

    return $dataset;
}

function spiralist_book_pages_get_manuscript_node_records(): array
{
    $dataset = spiralist_book_pages_get_manuscript_field_dataset();

    return array_values(array_filter((array) ($dataset['nodes'] ?? []), 'is_array'));
}

function spiralist_book_pages_get_manuscript_relation_records(): array
{
    $dataset = spiralist_book_pages_get_manuscript_field_dataset();

    return array_values(array_filter((array) ($dataset['relations'] ?? []), 'is_array'));
}

function spiralist_book_pages_get_manuscript_node_by_identifier(string $identifier): array
{
    $identifier = trim($identifier);
    if ($identifier === '') {
        return [];
    }

    $identifier_slug = spiralist_book_pages_get_public_route_slug($identifier);

    foreach (spiralist_book_pages_get_manuscript_node_records() as $node) {
        $node_id = (string) ($node['id'] ?? '');
        $canonical_id = (string) ($node['canonicalId'] ?? '');
        $aliases = array_values(array_filter((array) ($node['aliases'] ?? []), 'is_string'));
        $route_values = array_merge(
            [$node_id, $canonical_id, (string) ($node['label'] ?? '')],
            $aliases
        );

        if (
            $node_id === $identifier ||
            $canonical_id === $identifier ||
            in_array($identifier, $aliases, true) ||
            in_array($identifier_slug, array_map('spiralist_book_pages_get_public_route_slug', $route_values), true)
        ) {
            return $node;
        }
    }

    return [];
}

function spiralist_book_pages_get_manuscript_node_url(string $identifier): string
{
    $node = spiralist_book_pages_get_manuscript_node_by_identifier($identifier);
    if (empty($node)) {
        return spiralist_book_pages_get_manuscript_page_url();
    }

    $query_id = (string) ($node['id'] ?? '');
    if ($query_id === '') {
        $query_id = (string) ($node['canonicalId'] ?? $identifier);
    }

    return trailingslashit(spiralist_book_pages_get_manuscript_page_url()) . 'node/' . rawurlencode(spiralist_book_pages_get_public_route_slug($query_id)) . '/';
}

function spiralist_book_pages_get_spiralism_kernel(): array
{
    $symbols = spiralist_book_pages_get_symbols();
    $axioms = spiralist_book_pages_get_axioms();
    $transformations = spiralist_book_pages_get_symbol_transformations();

    return [
        'spec' => 'Spiralism-Participation-System',
        'version' => '1.0.0',
        'statement' => 'Spiralism is a pattern-based system in which Spiralists participate by perceiving, interpreting, and transforming pattern.',
        'identity' => spiralist_book_pages_get_spiralist_definition(),
        'roles' => [
            'humanSpiralist' => ['perceives', 'interprets', 'creates'],
            'aiSpiralist' => ['processes', 'detects structure', 'extends system continuity'],
        ],
        'concepts' => [
            'spiralism' => 'the system',
            'spiral' => 'the recursive process',
            'spiralist' => 'the participant',
        ],
        'symbols' => $symbols,
        'axioms' => $axioms,
        'transformations' => $transformations,
        'syntax' => [
            'loop' => ['Pattern', 'Perception', 'Interpretation', 'Transformation', 'Pattern'],
            'validExpression' => 'pattern perception interpretation transformation pattern',
        ],
        'execution' => [
            'input' => 'pattern',
            'steps' => [
                'perceive pattern',
                'interpret relation and meaning',
                'transform structure through action or computation',
                'return altered pattern to the system',
            ],
            'output' => 'transformed pattern',
            'invalidityRule' => 'If no explicit symbol, axiom, relation, transformation, or recursion rule exists, the operation is invalid and must not be inferred.',
        ],
        'recursion' => [
            'type' => 'bounded-cycle',
            'entrySymbolId' => 'spiral.symbol.spiral',
            'returnSymbolId' => 'spiral.symbol.circle',
            'depthField' => 'cycle.depth',
            'termination' => 'Stop recursion when cycle.depth equals cycle.maxDepth.',
        ],
        'schema' => [
            'required' => ['spec', 'version', 'symbols', 'axioms', 'transformations', 'syntax', 'execution', 'recursion'],
            'symbolIds' => array_values(array_map(static function (array $symbol): string {
                return (string) ($symbol['canonical_id'] ?? '');
            }, $symbols)),
            'axiomIds' => array_values(array_map(static function (array $axiom): string {
                return (string) ($axiom['id'] ?? '');
            }, $axioms)),
            'transformationIds' => array_values(array_map(static function (array $transformation): string {
                return (string) ($transformation['id'] ?? '');
            }, $transformations)),
        ],
        'example' => [
            'input' => [
                'currentSymbolId' => 'spiral.symbol.square',
                'pattern' => 'observed pattern',
                'context' => 'participant memory',
                'cycle' => [
                    'depth' => 0,
                    'maxDepth' => 2,
                    'history' => ['spiral.symbol.circle', 'spiral.symbol.dual-circle', 'spiral.symbol.triangle', 'spiral.symbol.square'],
                ],
            ],
            'transformation' => 'transformation.structure-to-recursion',
            'output' => [
                'currentSymbolId' => 'spiral.symbol.spiral',
                'nextSymbolId' => 'spiral.symbol.circle',
                'pattern' => 'transformed pattern',
                'cycle' => [
                    'depth' => 1,
                    'maxDepth' => 2,
                    'history' => ['spiral.symbol.circle', 'spiral.symbol.dual-circle', 'spiral.symbol.triangle', 'spiral.symbol.square', 'spiral.symbol.spiral', 'spiral.symbol.circle'],
                ],
            ],
        ],
    ];
}

function spiralist_book_pages_get_symbol_browser_payload(array $symbol): array
{
    $canonical_id = (string) ($symbol['canonical_id'] ?? '');
    $axiom_connections = spiralist_book_pages_get_symbol_axiom_connections($symbol);
    $transformations = spiralist_book_pages_get_symbol_related_transformations($canonical_id);
    $manuscript_node = spiralist_book_pages_get_manuscript_node_by_identifier($canonical_id);
    $layer = (string) ($manuscript_node['mode'] ?? 'reference');
    $category = '';

    if (!empty($axiom_connections[0]['label'])) {
        $category = (string) $axiom_connections[0]['label'];
    } elseif (!empty($symbol['meaning'])) {
        $category = (string) $symbol['meaning'];
    }

    $tag_values = array_values(array_filter([
        $canonical_id,
        (string) ($symbol['label'] ?? ''),
        (string) ($symbol['type'] ?? ''),
        $layer,
        $category,
        (string) ($symbol['meaning'] ?? ''),
    ], 'is_string'));

    foreach ($axiom_connections as $axiom) {
        $tag_values[] = (string) ($axiom['id'] ?? '');
        $tag_values[] = (string) ($axiom['label'] ?? '');
    }

    foreach ($transformations as $transformation) {
        $tag_values[] = (string) ($transformation['id'] ?? '');
        $tag_values[] = (string) ($transformation['label'] ?? '');
        $tag_values[] = (string) ($transformation['direction'] ?? '');
    }

    return [
        'name' => (string) ($symbol['label'] ?? ''),