Chapter 06Lesson 05~220 minutes

Checkpoint Lab — Wikis, Snippets, Discussions, Service Desk, Notifications, and Collaboration Utilities

Design and verify a small GitLab collaboration-information architecture, implement the Free-safe surfaces, classify artifacts deliberately, prove visibility and notification behavior, and clean up synthetic content.

CheckpointClassificationEvidencePredictionsCleanupChapter 07 bridge

Learning objectives

  • Define a collaboration-information policy before creating content and classify five artifacts into the correct GitLab surfaces.
  • Implement only Free-safe project wiki, snippet, issue/thread, notification, and To-Do operations while simulating Service Desk where appropriate.
  • Predict at least two state changes before mutation and verify them from independent UI/API/Git views.
  • Prove that project/snippet/wiki visibility boundaries and personal notification behavior match the documented architecture.
  • Clean up synthetic collaborative content without deleting the project or destroying evidence and bridge the operating model to merge-request collaboration in Chapter 07.
Availability baseline (verified 2026-08-21). Project wikis, personal/project snippets, comments and resolvable threads, notification settings, subscriptions, mentions, To-Dos, and Service Desk are documented across Free/Premium/Ultimate where their offering supports them. Project wikis and snippets support GitLab.com, Self-Managed, and Dedicated. Group wikis are Premium/Ultimate. Service Desk is documented for GitLab.com and Self-Managed; Self-Managed additionally requires instance incoming-email configuration. GitLab documents Service Desk as supported but not under active development. Wiki comments/threads are generally available since GitLab 17.9. On GitLab.com, Internal visibility is disabled for new snippets. Always re-check current tier/offering/version before building policy around a collaboration feature.

1. Checkpoint mission and preflight

Your disposable project is becoming a real delivery workspace. Before Chapter 07 introduces merge requests in depth, design how information will move through the project without becoming fragmented or noisy.

  • Mandatory: GitLab.com Free or equivalent Free project you own.
  • Do not require: Premium/Ultimate group wiki, live customer email, Dedicated Service Desk, Self-Managed administrator access, cloud/Kubernetes, or paid compute.
  • Safety: all names, emails, support content, snippets, and runbooks are synthetic. Never use a real secret.
  • Evidence: create ch06-checkpoint/ locally; do not commit evidence containing personal email headers or private project data to a public repository.

2. Write the information-placement policy first

Create this small policy before the artifacts:

Artifact class Home Rule
Release-coupled docs Main repository Changes follow normal code/MR governance
Long-lived operational/project knowledge Project wiki Versioned separately; no secrets/customer PII
Small independent diagnostic example Private project snippet No production dependency unless promoted into governed source/package path
Change/work conversation Issue/MR comments and threads Conversation only; durable outcome gets promoted
External support request Service Desk when supported Treat email content/attachments as external data; mandatory lab uses fixture
Personal attention Notifications / subscriptions / To-Dos Signal routing; not source of project work state

3. Classify five sample artifacts before implementation

Write your choice and one-sentence rationale for each:

  1. “How to roll back the service safely” → project wiki unless release-coupled.
  2. “Eight-line command that prints synthetic health state” → private project snippet.
  3. “Should retry backoff be exponential?” → issue now; MR thread in Chapter 07 when discussing an actual code change.
  4. “Customer cannot sign in” → Service Desk fixture/live Service Desk only in a safe supported setup.
  5. “Please review this item today” → explicit assignee/reviewer plus narrow notification/To-Do signal, not a wiki page.

If your answer differs, justify it using durability, audience, sensitivity, required review, and operational dependency—not preference.

4. Make predictions before changing state

Prediction A: after creating the wiki page, the wiki inventory changes but origin/<default-branch> SHA does not.
Prediction B: after creating the private project snippet, the project snippet API shows a new resource with private visibility; the main repository tree does not gain that file.
Prediction C: marking a personal To-Do done changes your attention queue but does not close the related issue or resolve its project workflow state.

5. Implement the Free-safe collaboration surfaces

Create the synthetic wiki page, snippet, and issue from Lessons 1–2. Keep the commands narrow:

REPO="GROUP/collab-sandbox"
PROJECT_ID="123456"
mkdir -p ch06-checkpoint

# Baseline main-repository identity.
git fetch origin
DEFAULT_BRANCH="$(glab repo view -R "$REPO" --output json --jq '.default_branch')"
BEFORE_SHA="$(git rev-parse "origin/$DEFAULT_BRANCH")"
printf 'default_branch=%s
before_sha=%s
' "$DEFAULT_BRANCH" "$BEFORE_SHA"   | tee ch06-checkpoint/repo-before.txt

# Create the wiki page in UI: Plan -> Wiki -> New page.
# Title: CH06 Collaboration Runbook
# Content: synthetic rollback/triage guidance only.

cat > /tmp/ch06-health.sh <<'EOF'
#!/usr/bin/env bash
printf 'synthetic-health=ok
'
EOF
glab snippet create -R "$REPO"   --title "CH06 checkpoint health example"   --visibility private   /tmp/ch06-health.sh

# Create one synthetic issue through glab.
glab issue create -R "$REPO"   --title "[CH06 LAB] Decide retry documentation location"   --description "Synthetic collaboration checkpoint; no production data."

6. Verify predictions independently

Use at least two evidence surfaces for each prediction:

# Wiki inventory (hosted collaboration state).
glab api "projects/$PROJECT_ID/wikis" --paginate   --jq '.[] | select(.title=="CH06 Collaboration Runbook") | {slug,title,format}'   | tee ch06-checkpoint/wiki.json

# Main Git state should remain unchanged by the wiki operation.
git fetch origin
AFTER_SHA="$(git rev-parse "origin/$DEFAULT_BRANCH")"
printf 'after_sha=%s
' "$AFTER_SHA" | tee ch06-checkpoint/repo-after.txt
[ "$BEFORE_SHA" = "$AFTER_SHA" ] && echo "main_repo_unchanged_by_wiki=yes"

# Snippet state.
glab api "projects/$PROJECT_ID/snippets" --paginate   --jq '.[] | select(.title=="CH06 checkpoint health example") | {id,title,visibility,web_url}'   | tee ch06-checkpoint/snippet.json

# Synthetic issue state.
glab issue list -R "$REPO" --all --output json   --jq '[.[] | select(.title=="[CH06 LAB] Decide retry documentation location") | {iid,title,state}]'   | tee ch06-checkpoint/issue.json

7. Verify notification and To-Do behavior without spamming users

Record your personal project notification level in a local note. If you have a safe second training identity, you may optionally mention it in the synthetic issue and confirm that the account receives the expected To-Do/notification. Otherwise use your own account’s manual Mark as To-Do action and inspect:

glab api "todos?state=pending&project_id=$PROJECT_ID" --paginate   --jq '.[] | {id,action,target_type,state,created_at}'   | tee ch06-checkpoint/todos-pending.json

Then mark only your synthetic To-Do done in the UI and re-query. Verify that the issue remains open. That proves attention state and work-item state are separate.

8. Service Desk fixture and privacy review

Create a fixture, not a real ticket:

cat > ch06-checkpoint/service-desk.json <<'EOF'
{
  "offering_assumption": "GitLab.com or Self-Managed only",
  "sender": "customer@example.invalid",
  "subject": "Synthetic sign-in failure",
  "customer_account_id": "REDACTED-SYNTHETIC",
  "attachment_policy": "none for this lab",
  "expected_object": "Service Desk ticket",
  "external_reply_channel": "email",
  "internal_rule": "promote technical work to normal issue/MR without exposing unnecessary customer data"
}
EOF

Review the fixture as if it were real: which fields are personal data, who should see them, what can be copied into an engineering issue, and what must remain in the support context?

9. Draw the final trust and information-flow diagram

Checkpoint information architecture
flowchart TD
EXT[External requester] -->|email, optional/simulated| SD[Service Desk]
SD --> ISSUE[Trackable issue/work item]
ISSUE --> THREAD[Conversation / decision]
THREAD --> WIKI[Durable runbook]
ISSUE --> MR[Chapter 07 merge request]
MR --> THREAD
EXAMPLE[Small diagnostic] --> SNIP[Private project snippet]
THREAD --> TODO[Personal To-Do]
THREAD --> MAIL[Email notification]
WIKI -.separate Git history.-> WREPO[Wiki repository]
MR -.source change.-> MAIN[Main repository]

The diagram separates external intake, trackable work, conversation, durable knowledge, independent snippets, personal attention, wiki Git history, and application Git history. In Chapter 07 the merge request will become the formal change-collaboration object connecting issue intent to source changes.

10. Evidence manifest and verification checklist

  • Project path/visibility and default branch recorded.
  • Wiki page visible in UI and API.
  • Main repository SHA unchanged by wiki creation.
  • Snippet ID/title/visibility captured; no secret-like data exists.
  • Synthetic issue exists and durable outcome points to wiki when appropriate.
  • Personal To-Do behavior demonstrated without changing issue state.
  • Service Desk fixture labels offering/mail/privacy assumptions.
  • No paid, Dedicated, Self-Managed admin, cloud, Kubernetes, or compute-heavy requirement.
python - <<'PY2'
from pathlib import Path
import hashlib, json, datetime
root=Path('ch06-checkpoint')
files=[]
for p in sorted(root.glob('*')):
    if p.is_file():
        files.append({
            'file':p.name,
            'bytes':p.stat().st_size,
            'sha256':hashlib.sha256(p.read_bytes()).hexdigest()
        })
out={
    'captured_at_utc':datetime.datetime.now(datetime.timezone.utc).isoformat(),
    'files':files
}
Path('ch06-checkpoint-manifest.json').write_text(json.dumps(out,indent=2)+'
')
PY2
cat ch06-checkpoint-manifest.json

11. Cleanup and rollback

Preserve the evidence packet outside any public repository if it contains personal settings. Then remove only resources with the CH06 synthetic names.

  • Delete the synthetic private snippet after confirming its exact ID/title.
  • Delete the training wiki page if you do not want it for later chapters; otherwise keep it clearly labeled synthetic.
  • Close the synthetic issue or leave it for Chapter 07 only if it is clearly scoped to the training workflow.
  • Mark/clear only your synthetic To-Do.
  • Remove /tmp/ch06-health.sh.
  • Do not delete the project/group, rewrite history, or change Self-Managed mail configuration.
rm -f /tmp/ch06-health.sh

# Final inventories for proof of targeted cleanup.
glab api "projects/$PROJECT_ID/wikis" --paginate   --jq '.[] | {slug,title}' > ch06-checkpoint/wikis-final.json
glab api "projects/$PROJECT_ID/snippets" --paginate   --jq '.[] | {id,title,visibility}' > ch06-checkpoint/snippets-final.json

12. What Chapter 06 adds to the production operating model

The GitLab operating model now has six layers: platform boundaries (Chapter 01), identities/credentials (02), project governance (03), namespace authorization (04), work planning (05), and collaboration/information architecture (06). A production team can now explain not only who can change what and which work exists, but where knowledge, conversation, external intake, and attention signals belong.

Chapter 07 will apply these collaboration rules to the highest-impact code-change object: the merge request. Threads, mentions, reviewers, issue references, and durable documentation will converge around a concrete proposed change.

Knowledge check

After creating the wiki page, the application default-branch SHA changed. What should you conclude?

The private snippet does not appear in the main repository tree. Is that a failure?

You mark the synthetic To-Do done but the issue remains open. Is that correct?

Which part of the Service Desk fixture must remain optional/simulated for a Dedicated learner?

Why hash the evidence files?

What is the safest cleanup if Chapter 07 will reuse the same project?

Checkpoint summary

You defined placement policy before content, classified five artifact types, implemented project wiki/snippet/thread/attention surfaces on a Free-compatible path, modeled Service Desk without unsafe mail dependencies, predicted and independently verified state changes, captured evidence, and cleaned up narrowly. The project is now ready for Chapter 07’s merge-request collaboration model.

Official references

Chapter 07

Merge requests, drafts, review threads, suggestions, and change collaboration

The next chapter turns a branch change into a governed collaboration object. The information-placement and signal-routing rules from Chapter 06 become the basis for review threads, suggestions, linked issues, and durable change decisions.

Keep the academy open

Support free, practical DevOps education.

Every lesson is designed to remain readable in a browser, downloadable from GitHub, and usable without a paid learning platform. Contributions help expand and maintain the curriculum.

Ethereum / ERC-20
0x716c4Ab160C4B66F31a28AE2448BfF68fc3a2ef0Send only Ethereum/ERC-20 compatible assets to this address.