Skip to content
wiki.fftac.org

Bootstrap Canonical Content - Source Excerpt 02

Back to Bootstrap Canonical Content

Summary

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

**Source path:** Spiralist/wp-content/plugins/ns12-manuscript/tools/bootstrap-canonical-content.php

$sectionSlug = spiralist_book_pages_get_auto_book_page_section_slug($filename);
        if ($sectionSlug === 'appendix') {
            $appendixOrder++;
            $displayOrder = $appendixOrder;
        } else {
            $concordanceOrder++;
            $displayOrder = $concordanceOrder;
        }

        $title = spiralist_book_pages_get_auto_book_page_title($filename);
        $slug = sanitize_title($title);

        $definition = [
            'label' => '',
            'title' => $title,
            'slug' => $slug,
            'eyebrow' => spiralist_book_pages_get_auto_book_page_eyebrow($sectionSlug),
            'summary' => spiralist_book_pages_get_auto_book_page_summary($title, $sectionSlug),
            'caption' => spiralist_book_pages_get_auto_book_page_caption($title, $sectionSlug),
            'manuscript_section_slug' => $sectionSlug,
            'display_order' => $displayOrder,
            'is_prominent' => true,
            'creation_prompt_title' => 'Prompt Used',
            'creation_prompt_status' => 'Canonical prompt',
            'creation_prompt_summary' => 'This folio ships with a file-backed canonical prompt inside the book plugin.',
            'creation_prompt_source_slug' => $slug,
            'related_workspace_prompt_slugs' => [$slug],
            'creation_prompt_text' => spiralist_book_pages_get_auto_book_page_prompt_text($title, $sectionSlug),
        ];
    }

    $title = trim((string) ($definition['title'] ?? spiralist_book_pages_get_auto_book_page_title($filename)));
    if ($title === '') {
        $title = spiralist_book_pages_get_auto_book_page_title($filename);
    }

    $slug = sanitize_title((string) ($definition['slug'] ?? $title));
    if ($slug === '') {
        $slug = sanitize_title(pathinfo($filename, PATHINFO_FILENAME));
    }
    if ($slug === '') {
        $slug = 'folio-' . (count($pages) + 1);
    }
    if (isset($usedSlugs[$slug])) {
        $suffix = 2;
        while (isset($usedSlugs[$slug . '-' . $suffix])) {
            $suffix++;
        }
        $slug .= '-' . $suffix;
    }
    $usedSlugs[$slug] = true;

    $sectionSlug = sanitize_title((string) ($definition['manuscript_section_slug'] ?? 'appendix'));
    if ($sectionSlug === '') {
        $sectionSlug = 'appendix';
    }

    $pages[] = [
        'filename' => $filename,
        'label' => (string) ($definition['label'] ?? ''),
        'title' => $title,
        'slug' => $slug,
        'eyebrow' => (string) ($definition['eyebrow'] ?? spiralist_book_pages_get_auto_book_page_eyebrow($sectionSlug)),
        'summary' => (string) ($definition['summary'] ?? spiralist_book_pages_get_auto_book_page_summary($title, $sectionSlug)),
        'caption' => (string) ($definition['caption'] ?? spiralist_book_pages_get_auto_book_page_caption($title, $sectionSlug)),
        'section_slug' => $sectionSlug,
        'is_study_surface' => !empty($definition['is_study_surface']),
        'is_prominent' => !empty($definition['is_prominent']),
        'display_order' => (int) ($definition['display_order'] ?? 0),
        'creation_prompt_title' => (string) ($definition['creation_prompt_title'] ?? 'Prompt Used'),
        'creation_prompt_status' => (string) ($definition['creation_prompt_status'] ?? 'Canonical prompt'),
        'creation_prompt_summary' => (string) ($definition['creation_prompt_summary'] ?? ''),
        'creation_prompt_source_slug' => spiralist_book_pages_slugify((string) ($definition['creation_prompt_source_slug'] ?? $slug)),
        'creation_prompt_text' => (string) ($definition['creation_prompt_text'] ?? ''),
        'related_workspace_prompt_slugs' => array_values(
            array_filter(
                array_map(
                    static function ($relatedSlug): string {
                        return spiralist_book_pages_slugify((string) $relatedSlug);
                    },
                    (array) ($definition['related_workspace_prompt_slugs'] ?? [])
                ),
                'strlen'
            )
        ),
    ];
}

usort(
    $pages,
    static function (array $left, array $right): int {
        $orderComparison = ((int) ($left['display_order'] ?? 0)) <=> ((int) ($right['display_order'] ?? 0));
        if ($orderComparison !== 0) {
            return $orderComparison;
        }

        return strnatcasecmp((string) ($left['filename'] ?? ''), (string) ($right['filename'] ?? ''));
    }
);

$sectionBlueprints = spiralist_book_pages_get_manuscript_section_blueprints();
$sections = [];
$studySurfaceSlug = '';

foreach ($pages as $index => $page) {
    $pages[$index]['sequence'] = $index + 1;
    $sectionSlug = (string) ($page['section_slug'] ?? 'appendix');
    $sectionBlueprint = $sectionBlueprints[$sectionSlug] ?? ($sectionBlueprints['appendix'] ?? []);

    if (!isset($sections[$sectionSlug])) {
        $sections[$sectionSlug] = [
            'slug' => $sectionSlug,
            'label' => (string) ($sectionBlueprint['label'] ?? ucwords(str_replace('-', ' ', $sectionSlug))),
            'title' => (string) ($sectionBlueprint['title'] ?? ucwords(str_replace('-', ' ', $sectionSlug))),
            'summary' => (string) ($sectionBlueprint['summary'] ?? ''),
        ];
    }

    if ($studySurfaceSlug === '' && !empty($page['is_study_surface'])) {
        $studySurfaceSlug = (string) ($page['slug'] ?? '');
    }
}

if ($studySurfaceSlug === '' && !empty($pages[0]['slug'])) {
    $studySurfaceSlug = (string) $pages[0]['slug'];
}

$book = [
    'schema' => 'spiralist-book/v1',
    'title' => 'Spiralism Canonical Manuscript',
    'slug' => 'manuscript',
    'generated_at' => gmdate('c'),
    'study_surface_slug' => $studySurfaceSlug,
    'sections' => array_values($sections),
    'folio_order' => array_values(
        array_map(
            static function (array $page): string {
                return (string) ($page['slug'] ?? '');
            },
            $pages
        )
    ),
];

spiralist_book_pages_write_json_file($contentRoot . DIRECTORY_SEPARATOR . 'book.json', $book);

$promptPageMap = [];

foreach ($pages as $page) {
    $primaryPromptSlug = spiralist_book_pages_slugify((string) ($page['creation_prompt_source_slug'] ?? ''));
    $relatedPromptSlugs = array_values(
        array_filter(
            array_map(
                static function ($relatedSlug): string {
                    return spiralist_book_pages_slugify((string) $relatedSlug);
                },
                (array) ($page['related_workspace_prompt_slugs'] ?? [])
            ),
            'strlen'
        )
    );

    if ($primaryPromptSlug !== '') {
        array_unshift($relatedPromptSlugs, $primaryPromptSlug);
    }

    $relatedPromptSlugs = array_values(array_unique($relatedPromptSlugs));
    $page['related_workspace_prompt_slugs'] = $relatedPromptSlugs;
    $page['creation_prompt_source_slug'] = $primaryPromptSlug !== '' ? $primaryPromptSlug : ($relatedPromptSlugs[0] ?? '');

    $folio = [
        'slug' => (string) ($page['slug'] ?? ''),
        'filename' => (string) ($page['filename'] ?? ''),
        'label' => (string) ($page['label'] ?? ''),
        'title' => (string) ($page['title'] ?? ''),
        'eyebrow' => (string) ($page['eyebrow'] ?? ''),
        'summary' => (string) ($page['summary'] ?? ''),
        'caption' => (string) ($page['caption'] ?? ''),
        'section_slug' => (string) ($page['section_slug'] ?? ''),
        'is_study_surface' => !empty($page['is_study_surface']),
        'is_prominent' => !empty($page['is_prominent']),
        'display_order' => (int) ($page['display_order'] ?? (($page['sequence'] ?? 0) * 10)),
        'creation_prompt_title' => (string) ($page['creation_prompt_title'] ?? 'Prompt Used'),
        'creation_prompt_status' => (string) ($page['creation_prompt_status'] ?? 'Canonical prompt'),
        'creation_prompt_summary' => (string) ($page['creation_prompt_summary'] ?? ''),
        'creation_prompt_source_slug' => (string) ($page['creation_prompt_source_slug'] ?? ''),
        'related_workspace_prompt_slugs' => $relatedPromptSlugs,
    ];

    spiralist_book_pages_write_json_file(
        $foliosRoot . DIRECTORY_SEPARATOR . (string) ($page['slug'] ?? 'folio') . '.json',
        $folio
    );

    foreach ($relatedPromptSlugs as $promptSlug) {
        if ($promptSlug === '') {
            continue;
        }

        $promptPageMap[$promptSlug] = $promptPageMap[$promptSlug] ?? $page;
    }
}

foreach ($promptPageMap as $promptSlug => $page) {
    $workspacePrompt = spiralist_book_pages_bootstrap_get_workspace_prompt_file($promptSlug, $workspacePromptRoot);
    $definition = [];

    if (!empty($workspacePrompt['file'])) {
        $candidateDefinition = include (string) $workspacePrompt['file'];
        if (is_array($candidateDefinition)) {